]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
authorjfa <jfa@opencascade.com>
Fri, 7 Mar 2008 07:44:13 +0000 (07:44 +0000)
committerjfa <jfa@opencascade.com>
Fri, 7 Mar 2008 07:44:13 +0000 (07:44 +0000)
757 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0755]
ChangeLog [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [deleted file]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
adm_local/Makefile.am [new file with mode: 0644]
adm_local/Makefile.in [deleted file]
adm_local/unix/Makefile.am [new file with mode: 0644]
adm_local/unix/config_files/Makefile.am [new file with mode: 0644]
adm_local/unix/config_files/check_GUI.m4
adm_local/unix/config_files/check_QxGraphViewer.m4 [new file with mode: 0644]
adm_local/unix/config_files/check_corba_in_GUI.m4
adm_local/unix/config_files/check_opengl.m4
adm_local/unix/config_files/check_pyqt.m4
adm_local/unix/config_files/check_qt.m4
adm_local/unix/config_files/check_sip.m4
adm_local/unix/config_files/check_vtk.m4
adm_local/unix/make_commence.in [deleted file]
adm_local/unix/make_common_starter.am [new file with mode: 0644]
adm_local/unix/make_conclude.in
adm_local/unix/make_omniorb.in [deleted file]
bin/Makefile.am [new file with mode: 0644]
bin/runLightSalome.csh
bin/runLightSalome.sh
build_configure
clean_configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
configure.in.base [deleted file]
doc/Makefile.am [new file with mode: 0644]
doc/Makefile.in [deleted file]
doc/salome/Makefile.am [new file with mode: 0644]
doc/salome/Makefile.in [deleted file]
doc/salome/gui/GUI/closestudy.png [deleted file]
doc/salome/gui/GUI/cshdat_robohelp.htm [deleted file]
doc/salome/gui/GUI/cshdat_webhelp.htm [deleted file]
doc/salome/gui/GUI/default.css [deleted file]
doc/salome/gui/GUI/default_ns.css [deleted file]
doc/salome/gui/GUI/doxyfile.in [new file with mode: 0755]
doc/salome/gui/GUI/dump_study.htm [deleted file]
doc/salome/gui/GUI/ehelp.xml [deleted file]
doc/salome/gui/GUI/ehlpdhtm.js [deleted file]
doc/salome/gui/GUI/geom_preferences.htm [deleted file]
doc/salome/gui/GUI/i_blue.jpg [deleted file]
doc/salome/gui/GUI/image54.jpg [deleted file]
doc/salome/gui/GUI/image65.gif [deleted file]
doc/salome/gui/GUI/image67.gif [deleted file]
doc/salome/gui/GUI/image68.gif [deleted file]
doc/salome/gui/GUI/image69.gif [deleted file]
doc/salome/gui/GUI/image70.gif [deleted file]
doc/salome/gui/GUI/image71.gif [deleted file]
doc/salome/gui/GUI/image72.gif [deleted file]
doc/salome/gui/GUI/image73.gif [deleted file]
doc/salome/gui/GUI/image75.gif [deleted file]
doc/salome/gui/GUI/image94.gif [deleted file]
doc/salome/gui/GUI/images/batchmode.png [new file with mode: 0644]
doc/salome/gui/GUI/images/cataloggenerator.png [new file with mode: 0755]
doc/salome/gui/GUI/images/choicepage.png [new file with mode: 0644]
doc/salome/gui/GUI/images/clipping.png [new file with mode: 0644]
doc/salome/gui/GUI/images/closestudy.png [new file with mode: 0755]
doc/salome/gui/GUI/images/copy-paste.jpg [new file with mode: 0755]
doc/salome/gui/GUI/images/dumpstudy.png [new file with mode: 0755]
doc/salome/gui/GUI/images/geomview-alt.png [new file with mode: 0755]
doc/salome/gui/GUI/images/graduatedaxes1.png [new file with mode: 0644]
doc/salome/gui/GUI/images/icon_about.png [new file with mode: 0755]
doc/salome/gui/GUI/images/image100.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image102.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image103.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image105.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image106.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image108.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image109.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image157.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image54.jpg [new file with mode: 0755]
doc/salome/gui/GUI/images/image65.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image67.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image69.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image70.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image72.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image73.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image75.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image77.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image86.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image88.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image89.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image91.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image94.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/image95.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image96.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image97.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image98.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/image99.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/import.png [new file with mode: 0755]
doc/salome/gui/GUI/images/intropage.png [new file with mode: 0644]
doc/salome/gui/GUI/images/loadscript.png [new file with mode: 0755]
doc/salome/gui/GUI/images/loadstudy2.png [new file with mode: 0755]
doc/salome/gui/GUI/images/lockedstudy.png [new file with mode: 0755]
doc/salome/gui/GUI/images/neo-view2.png [new file with mode: 0755]
doc/salome/gui/GUI/images/newsticn.jpg [new file with mode: 0755]
doc/salome/gui/GUI/images/note1.gif [new file with mode: 0755]
doc/salome/gui/GUI/images/objectbrowser1.png [new file with mode: 0755]
doc/salome/gui/GUI/images/objectbrowser2.png [new file with mode: 0755]
doc/salome/gui/GUI/images/open.jpg [new file with mode: 0755]
doc/salome/gui/GUI/images/plot2d_clone.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_legend.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_lines.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_logarithmic_horizontal.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_logarithmic_vertical.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_points.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_settings.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_splines.gif [new file with mode: 0644]
doc/salome/gui/GUI/images/plot2d_view_settings.png [new file with mode: 0644]
doc/salome/gui/GUI/images/ppref1.png [new file with mode: 0755]
doc/salome/gui/GUI/images/ppref2.png [new file with mode: 0755]
doc/salome/gui/GUI/images/ppref3.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref11.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref12.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref13.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref14.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref15.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref21.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref22.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref23.png [new file with mode: 0644]
doc/salome/gui/GUI/images/pref24.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref31.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref33.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref34.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref37.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref38.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref39.png [new file with mode: 0755]
doc/salome/gui/GUI/images/pref40.png [new file with mode: 0755]
doc/salome/gui/GUI/images/productpage.png [new file with mode: 0644]
doc/salome/gui/GUI/images/productpage1.png [new file with mode: 0644]
doc/salome/gui/GUI/images/productpage2.png [new file with mode: 0644]
doc/salome/gui/GUI/images/progresspage.png [new file with mode: 0644]
doc/salome/gui/GUI/images/progresspage1.png [new file with mode: 0644]
doc/salome/gui/GUI/images/readmepage.png [new file with mode: 0644]
doc/salome/gui/GUI/images/registry1.png [new file with mode: 0755]
doc/salome/gui/GUI/images/registry3.png [new file with mode: 0755]
doc/salome/gui/GUI/images/registry4.png [new file with mode: 0755]
doc/salome/gui/GUI/images/save.jpg [new file with mode: 0755]
doc/salome/gui/GUI/images/selectcolor.png [new file with mode: 0755]
doc/salome/gui/GUI/images/selectfont.png [new file with mode: 0755]
doc/salome/gui/GUI/images/set_rotation_point_dialog1.png [new file with mode: 0644]
doc/salome/gui/GUI/images/set_rotation_point_dialog2.png [new file with mode: 0644]
doc/salome/gui/GUI/images/studyproperties.png [new file with mode: 0755]
doc/salome/gui/GUI/images/updaterate.png [new file with mode: 0755]
doc/salome/gui/GUI/images/urbutton.png [new file with mode: 0755]
doc/salome/gui/GUI/images/view2.png [new file with mode: 0755]
doc/salome/gui/GUI/images/view_rotation_point.png [new file with mode: 0644]
doc/salome/gui/GUI/index.htm [deleted file]
doc/salome/gui/GUI/index_csh.htm [deleted file]
doc/salome/gui/GUI/index_rhc.htm [deleted file]
doc/salome/gui/GUI/input/about_salome.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/creating_new_study.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/displaying_studies.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/editing_studies.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/geometry_preferences.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/getting_started.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/gui_module_chapter.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/index.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/installing_salome.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/intro_to_salome.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/introduction.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/introduction_to_gui.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/mesh_preferences.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/occ_3d_viewer.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/opening_studies.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/plot2d_viewer.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/postpro_preferences.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/running_salome.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/salome_architecture.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/salome_desktop.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/salome_preferences.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/saving_and_closing_studies.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/select_color_and_font.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/setting_preferences.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/setting_preferences_chapter.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/setting_study_properties.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/study_management_chapter.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/using_catalog_generator.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/using_object_browser.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/using_registry_tool.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/viewers_chapter.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/vtk_3d_viewer.doc [new file with mode: 0644]
doc/salome/gui/GUI/input/working_with_python_scripts.doc [new file with mode: 0644]
doc/salome/gui/GUI/introduction_to_gui.htm [deleted file]
doc/salome/gui/GUI/kernel.log [deleted file]
doc/salome/gui/GUI/kernel/application.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/batchmode.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/choicepage.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/introduction.bak [new file with mode: 0644]
doc/salome/gui/GUI/kernel/intropage.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/logocorp.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/productpage.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/productpage1.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/productpage2.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/progresspage.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/progresspage1.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/readme.html
doc/salome/gui/GUI/kernel/readmepage.png [new file with mode: 0644]
doc/salome/gui/GUI/kernel/running_salome_pro.htm
doc/salome/gui/GUI/mesh_preferences.htm [deleted file]
doc/salome/gui/GUI/note1.gif [deleted file]
doc/salome/gui/GUI/pics/clipping.png [new file with mode: 0644]
doc/salome/gui/GUI/pics/graduatedaxes1.png [new file with mode: 0644]
doc/salome/gui/GUI/pics/icon_about.png
doc/salome/gui/GUI/pics/image100.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image102.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image103.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image105.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image106.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image108.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image109.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image157.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image77.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image86.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image88.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image89.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image91.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image95.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image96.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image97.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image98.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/image99.gif [new file with mode: 0644]
doc/salome/gui/GUI/pics/ppref1.png [new file with mode: 0755]
doc/salome/gui/GUI/pics/ppref2.png [new file with mode: 0755]
doc/salome/gui/GUI/pics/ppref3.png [new file with mode: 0755]
doc/salome/gui/GUI/pics/pref15.png
doc/salome/gui/GUI/pics/pref33.png
doc/salome/gui/GUI/pics/set_rotation_point_dialog1.png [new file with mode: 0644]
doc/salome/gui/GUI/pics/set_rotation_point_dialog2.png [new file with mode: 0644]
doc/salome/gui/GUI/pics/view_rotation_point.png [new file with mode: 0644]
doc/salome/gui/GUI/post-pro_preferences.htm [deleted file]
doc/salome/gui/GUI/robohhre.lng [deleted file]
doc/salome/gui/GUI/select_color_and_font.htm [deleted file]
doc/salome/gui/GUI/setting_preferences.htm [deleted file]
doc/salome/gui/GUI/ss_btn_related_topics.gif [deleted file]
doc/salome/gui/GUI/static/footer.html [new file with mode: 0755]
doc/salome/gui/GUI/static/header.html [new file with mode: 0755]
doc/salome/gui/GUI/texture_horiz_ltbluebubbles.jpg [deleted file]
doc/salome/gui/GUI/tip1.gif [deleted file]
doc/salome/gui/GUI/webhelp.cab [deleted file]
doc/salome/gui/GUI/webhelp.jar [deleted file]
doc/salome/gui/GUI/whcsh_home.htm [deleted file]
doc/salome/gui/GUI/whcshdata.htm [deleted file]
doc/salome/gui/GUI/whd_dpns.htm [deleted file]
doc/salome/gui/GUI/whd_hide0.gif [deleted file]
doc/salome/gui/GUI/whd_hide1.gif [deleted file]
doc/salome/gui/GUI/whd_hide2.gif [deleted file]
doc/salome/gui/GUI/whd_next0.gif [deleted file]
doc/salome/gui/GUI/whd_next1.gif [deleted file]
doc/salome/gui/GUI/whd_next2.gif [deleted file]
doc/salome/gui/GUI/whd_nvp10.htm [deleted file]
doc/salome/gui/GUI/whd_nvp20.htm [deleted file]
doc/salome/gui/GUI/whd_prev0.gif [deleted file]
doc/salome/gui/GUI/whd_prev1.gif [deleted file]
doc/salome/gui/GUI/whd_prev2.gif [deleted file]
doc/salome/gui/GUI/whd_show0.gif [deleted file]
doc/salome/gui/GUI/whd_show1.gif [deleted file]
doc/salome/gui/GUI/whd_show2.gif [deleted file]
doc/salome/gui/GUI/whd_sync0.gif [deleted file]
doc/salome/gui/GUI/whd_sync1.gif [deleted file]
doc/salome/gui/GUI/whd_sync2.gif [deleted file]
doc/salome/gui/GUI/whd_tab0.gif [deleted file]
doc/salome/gui/GUI/whd_tab1.gif [deleted file]
doc/salome/gui/GUI/whd_tab2.gif [deleted file]
doc/salome/gui/GUI/whd_tab3.gif [deleted file]
doc/salome/gui/GUI/whd_tab4.gif [deleted file]
doc/salome/gui/GUI/whd_tab5.gif [deleted file]
doc/salome/gui/GUI/whd_tab6.gif [deleted file]
doc/salome/gui/GUI/whd_tab7.gif [deleted file]
doc/salome/gui/GUI/whd_tab8.gif [deleted file]
doc/salome/gui/GUI/whd_tabs.htm [deleted file]
doc/salome/gui/GUI/whd_toc1.gif [deleted file]
doc/salome/gui/GUI/whd_toc2.gif [deleted file]
doc/salome/gui/GUI/whd_toc3.gif [deleted file]
doc/salome/gui/GUI/whd_toc4.gif [deleted file]
doc/salome/gui/GUI/whd_topic.xml [deleted file]
doc/salome/gui/GUI/whd_wbsh0.gif [deleted file]
doc/salome/gui/GUI/whd_wbsh1.gif [deleted file]
doc/salome/gui/GUI/whd_wbsh2.gif [deleted file]
doc/salome/gui/GUI/whdata/whftdata0.htm
doc/salome/gui/GUI/whdata/whfwdata0.htm
doc/salome/gui/GUI/whdata/whtdata0.htm
doc/salome/gui/GUI/whfbody.htm [deleted file]
doc/salome/gui/GUI/whfdhtml.htm [deleted file]
doc/salome/gui/GUI/whfform.htm [deleted file]
doc/salome/gui/GUI/whfhost.js [deleted file]
doc/salome/gui/GUI/whform.js [deleted file]
doc/salome/gui/GUI/whframes.js [deleted file]
doc/salome/gui/GUI/whgbody.htm [deleted file]
doc/salome/gui/GUI/whgdef.htm [deleted file]
doc/salome/gui/GUI/whgdhtml.htm [deleted file]
doc/salome/gui/GUI/whghost.js [deleted file]
doc/salome/gui/GUI/whhost.js [deleted file]
doc/salome/gui/GUI/whibody.htm [deleted file]
doc/salome/gui/GUI/whidhtml.htm [deleted file]
doc/salome/gui/GUI/whiform.htm [deleted file]
doc/salome/gui/GUI/whihost.js [deleted file]
doc/salome/gui/GUI/whlang.js [deleted file]
doc/salome/gui/GUI/whmozemu.js [deleted file]
doc/salome/gui/GUI/whmsg.js [deleted file]
doc/salome/gui/GUI/whnjs.htm [deleted file]
doc/salome/gui/GUI/whphost.js [deleted file]
doc/salome/gui/GUI/whproj.htm [deleted file]
doc/salome/gui/GUI/whproj.js [deleted file]
doc/salome/gui/GUI/whproj.xml [deleted file]
doc/salome/gui/GUI/whproxy.js [deleted file]
doc/salome/gui/GUI/whres.xml [deleted file]
doc/salome/gui/GUI/whskin_blank.htm [deleted file]
doc/salome/gui/GUI/whskin_homepage.htm [deleted file]
doc/salome/gui/GUI/whskin_info.htm [deleted file]
doc/salome/gui/GUI/whskin_pickup.htm [deleted file]
doc/salome/gui/GUI/whskin_tw.htm [deleted file]
doc/salome/gui/GUI/whstart.js [deleted file]
doc/salome/gui/GUI/whstub.js [deleted file]
doc/salome/gui/GUI/whtdhtml.htm [deleted file]
doc/salome/gui/GUI/whthost.js [deleted file]
doc/salome/gui/GUI/whtopic.js [deleted file]
doc/salome/gui/GUI/whutils.js [deleted file]
doc/salome/gui/GUI/whver.js [deleted file]
doc/salome/gui/GUI/whxdata/whftdata0.xml
doc/salome/gui/GUI/whxdata/whfwdata0.xml
doc/salome/gui/GUI/whxdata/whtdata0.xml
doc/salome/gui/Makefile.am [new file with mode: 0644]
doc/salome/gui/Makefile.in [deleted file]
doc/salome/tui/GUI/sources/doxygen.css
doc/salome/tui/Makefile.am [new file with mode: 0644]
doc/salome/tui/Makefile.in [deleted file]
idl/Makefile.am [new file with mode: 0644]
resources/Makefile.am [new file with mode: 0644]
resources/copy.png
resources/help.png
resources/paste.png
resources/plot2d_fitall.png
resources/plot2d_fitarea.png
resources/plot2d_pan.png
resources/plot2d_zoom.png
src/CAF/CAF_Study.cxx
src/CAF/Makefile.am [new file with mode: 0755]
src/CAF/Makefile.in [deleted file]
src/CAM/CAM_Application.cxx
src/CAM/CAM_Module.cxx
src/CAM/CAM_Module.h
src/CAM/CAM_Study.cxx
src/CAM/Makefile.am [new file with mode: 0755]
src/CAM/Makefile.in [deleted file]
src/CASCatch/CASCatch.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_CatchSignals.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_CatchSignals.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.hxx [new file with mode: 0644]
src/CASCatch/Makefile.am [new file with mode: 0644]
src/DDS/DDS_DicGroup.cxx
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.am [new file with mode: 0755]
src/DDS/Makefile.in [deleted file]
src/Event/Makefile.am [new file with mode: 0755]
src/Event/Makefile.in [deleted file]
src/Event/SALOME_Event.hxx
src/GLViewer/GLViewer_BaseObjects.cxx
src/GLViewer/GLViewer_Drawer.cxx
src/GLViewer/GLViewer_Object.cxx
src/GLViewer/GLViewer_Object.h
src/GLViewer/GLViewer_Tools.cxx
src/GLViewer/GLViewer_ViewManager.cxx
src/GLViewer/GLViewer_ViewManager.h
src/GLViewer/GLViewer_ViewPort2d.cxx
src/GLViewer/Makefile.am [new file with mode: 0644]
src/GLViewer/Makefile.in [deleted file]
src/GLViewer/resources/GLViewer_msg_en.po
src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Application.h
src/LightApp/LightApp_DataModel.cxx
src/LightApp/LightApp_DataOwner.cxx
src/LightApp/LightApp_DataOwner.h
src/LightApp/LightApp_DataSubOwner.cxx
src/LightApp/LightApp_DataSubOwner.h
src/LightApp/LightApp_Dialog.h
src/LightApp/LightApp_Displayer.h
src/LightApp/LightApp_EventFilter.cxx [new file with mode: 0644]
src/LightApp/LightApp_EventFilter.h [new file with mode: 0644]
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_OBSelector.cxx
src/LightApp/LightApp_OCCSelector.cxx
src/LightApp/LightApp_OCCSelector.h
src/LightApp/LightApp_PreferencesDlg.cxx
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_VTKSelector.cxx
src/LightApp/LightApp_VTKSelector.h
src/LightApp/Makefile.am [new file with mode: 0755]
src/LightApp/Makefile.in [deleted file]
src/LightApp/resources/LightApp.ini
src/LightApp/resources/LightApp.xml
src/LightApp/resources/LightApp_msg_en.po
src/LightApp/resources/icon_about.png
src/LogWindow/Makefile.am [new file with mode: 0755]
src/LogWindow/Makefile.in [deleted file]
src/Makefile.am [new file with mode: 0755]
src/Makefile.in [deleted file]
src/OBJECT/Makefile.am [new file with mode: 0755]
src/OBJECT/Makefile.in [deleted file]
src/OCCViewer/Makefile.am [new file with mode: 0755]
src/OCCViewer/Makefile.in [deleted file]
src/OCCViewer/OCCViewer_ClippingDlg.cxx
src/OCCViewer/OCCViewer_ClippingDlg.h
src/OCCViewer/OCCViewer_CreateRestoreViewDlg.cxx
src/OCCViewer/OCCViewer_SetRotationPointDlg.cxx [new file with mode: 0644]
src/OCCViewer/OCCViewer_SetRotationPointDlg.h [new file with mode: 0644]
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_ViewSketcher.cxx [new file with mode: 0755]
src/OCCViewer/OCCViewer_ViewSketcher.h [new file with mode: 0755]
src/OCCViewer/OCCViewer_ViewWindow.cxx
src/OCCViewer/OCCViewer_ViewWindow.h
src/OCCViewer/resources/OCCViewer_images.po
src/OCCViewer/resources/OCCViewer_msg_en.po
src/OCCViewer/resources/view_rotation_point.png [new file with mode: 0755]
src/ObjBrowser/Makefile.am [new file with mode: 0755]
src/ObjBrowser/Makefile.in [deleted file]
src/ObjBrowser/OB_Browser.cxx
src/ObjBrowser/OB_Browser.h
src/ObjBrowser/OB_FindDlg.cxx [new file with mode: 0644]
src/ObjBrowser/OB_FindDlg.h [new file with mode: 0644]
src/ObjBrowser/OB_ListItem.cxx
src/ObjBrowser/OB_ListView.cxx
src/ObjBrowser/OB_ObjSearch.cxx [new file with mode: 0644]
src/ObjBrowser/OB_ObjSearch.h [new file with mode: 0644]
src/ObjBrowser/resources/OB_msg_en.po
src/Plot2d/Makefile.am [new file with mode: 0755]
src/Plot2d/Makefile.in [deleted file]
src/Plot2d/Plot2d_Curve.cxx
src/Plot2d/Plot2d_Curve.h
src/Plot2d/Plot2d_SetupCurveDlg.h
src/Plot2d/Plot2d_SetupViewDlg.cxx
src/Plot2d/Plot2d_SetupViewDlg.h
src/Plot2d/Plot2d_ToolTip.cxx [new file with mode: 0644]
src/Plot2d/Plot2d_ToolTip.h [new file with mode: 0644]
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_ViewWindow.cxx
src/Plot2d/Plot2d_ViewWindow.h
src/Plot2d/resources/Plot2d_msg_en.po
src/Plot2d/resources/plot2d_rotate.png [deleted file]
src/Prs/Makefile.am [new file with mode: 0755]
src/Prs/Makefile.in [deleted file]
src/PyInterp/Makefile.am [new file with mode: 0755]
src/PyInterp/Makefile.in [deleted file]
src/PyInterp/PyInterp.h
src/PyInterp/PyInterp_base.cxx
src/PyInterp/PyInterp_base.h
src/PythonConsole/Makefile.am [new file with mode: 0755]
src/PythonConsole/Makefile.in [deleted file]
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/QDS/Makefile.am [new file with mode: 0755]
src/QDS/Makefile.in [deleted file]
src/QDS/QDS.cxx
src/QDS/QDS.h
src/QDS/QDS_CheckBox.cxx
src/QDS/QDS_ComboBox.cxx
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_SpinBoxDbl.cxx
src/QDS/QDS_Table.cxx [new file with mode: 0644]
src/QDS/QDS_Table.h [new file with mode: 0644]
src/QDS/QDS_TextEdit.cxx
src/QDS/QDS_Validator.cxx
src/QDS/QDS_Validator.h
src/Qtx/Makefile.am [new file with mode: 0755]
src/Qtx/Makefile.in [deleted file]
src/Qtx/Qtx.cxx
src/Qtx/Qtx.h
src/Qtx/QtxAction.cxx
src/Qtx/QtxAction.h
src/Qtx/QtxActionMenuMgr.cxx
src/Qtx/QtxDblValidator.h
src/Qtx/QtxDialog.cxx
src/Qtx/QtxDockWindow.cxx
src/Qtx/QtxListAction.cxx
src/Qtx/QtxListResourceEdit.cxx
src/Qtx/QtxResourceEdit.h
src/Qtx/QtxResourceMgr.cxx
src/Qtx/QtxResourceMgr.h
src/Qtx/QtxSplash.cxx
src/Qtx/QtxSplash.h
src/Qtx/QtxWorkstack.cxx
src/QxGraph/Makefile.am [new file with mode: 0755]
src/QxGraph/QxGraph.h [new file with mode: 0644]
src/QxGraph/QxGraph_ActiveItem.h [new file with mode: 0644]
src/QxGraph/QxGraph_Canvas.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_Canvas.h [new file with mode: 0644]
src/QxGraph/QxGraph_CanvasView.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_CanvasView.h [new file with mode: 0644]
src/QxGraph/QxGraph_Def.h [new file with mode: 0644]
src/QxGraph/QxGraph_Prs.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_Prs.h [new file with mode: 0644]
src/QxGraph/QxGraph_ViewManager.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_ViewManager.h [new file with mode: 0644]
src/QxGraph/QxGraph_ViewModel.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_ViewModel.h [new file with mode: 0644]
src/QxGraph/QxGraph_ViewWindow.cxx [new file with mode: 0644]
src/QxGraph/QxGraph_ViewWindow.h [new file with mode: 0644]
src/QxGraph/resources/QxGraph_images.po [new file with mode: 0644]
src/QxGraph/resources/QxGraph_msg_en.po [new file with mode: 0644]
src/QxGraph/resources/view_fitall.png [new file with mode: 0755]
src/QxGraph/resources/view_fitarea.png [new file with mode: 0755]
src/QxGraph/resources/view_glpan.png [new file with mode: 0755]
src/QxGraph/resources/view_pan.png [new file with mode: 0644]
src/QxGraph/resources/view_reset.png [new file with mode: 0644]
src/QxGraph/resources/view_zoom.png [new file with mode: 0755]
src/RegistryDisplay/HelpWindow.hxx
src/RegistryDisplay/IntervalWindow.hxx
src/RegistryDisplay/Makefile.am [new file with mode: 0755]
src/RegistryDisplay/Makefile.in [deleted file]
src/RegistryDisplay/RegWidget.cxx
src/RegistryDisplay/RegWidget.h
src/ResExporter/Makefile.am [new file with mode: 0755]
src/ResExporter/Makefile.in [deleted file]
src/ResExporter/ResourceExporter.cxx
src/SALOME_PY/Makefile.am [new file with mode: 0755]
src/SALOME_PY/Makefile.in [deleted file]
src/SALOME_PY/SalomePy.cxx
src/SALOME_PYQT/Makefile.am [new file with mode: 0755]
src/SALOME_PYQT/Makefile.in [deleted file]
src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.am [new file with mode: 0644]
src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in [deleted file]
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h
src/SALOME_PYQT/SalomePyQt/Makefile.am [new file with mode: 0644]
src/SALOME_PYQT/SalomePyQt/Makefile.in [deleted file]
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/Help.py [new file with mode: 0755]
src/SALOME_SWIG/Makefile.am [new file with mode: 0755]
src/SALOME_SWIG/Makefile.in [deleted file]
src/SALOME_SWIG/PyInterp.py [new file with mode: 0755]
src/SALOME_SWIG/SALOMEGUI_Swig.cxx
src/SALOME_SWIG/SALOMEGUI_Swig.hxx
src/SALOME_SWIG/SALOMEGUI_Swig.i
src/SALOME_SWIG/salome.py [new file with mode: 0755]
src/SALOME_SWIG/supervisionexample.py [deleted file]
src/SALOME_SWIG/supervisionexample.py.in
src/SALOME_SWIG/supervisiongeomexample.py [deleted file]
src/SALOME_SWIG/testattr.py [deleted file]
src/SOCC/Makefile.am [new file with mode: 0755]
src/SOCC/Makefile.in [deleted file]
src/SOCC/SOCC_Prs.cxx
src/SOCC/SOCC_ViewModel.cxx
src/SOCC/SOCC_ViewWindow.cxx
src/SPlot2d/Makefile.am [new file with mode: 0644]
src/SPlot2d/Makefile.in [deleted file]
src/SPlot2d/SPlot2d_ViewModel.cxx
src/SPlot2d/SPlot2d_ViewModel.h
src/SPlot2d/SPlot2d_ViewWindow.cxx [new file with mode: 0644]
src/SPlot2d/SPlot2d_ViewWindow.h [new file with mode: 0644]
src/SPlot2d/SPlot2d_msg_en.po [deleted file]
src/SPlot2d/resources/SPlot2d_msg_en.po [new file with mode: 0644]
src/STD/Makefile.am [new file with mode: 0755]
src/STD/Makefile.in [deleted file]
src/STD/STD_Application.cxx
src/STD/STD_Application.h
src/STD/STD_CloseDlg.cxx [deleted file]
src/STD/STD_CloseDlg.h [deleted file]
src/STD/resources/STD_msg_en.po
src/SUIT/Makefile.am [new file with mode: 0755]
src/SUIT/Makefile.in [deleted file]
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Application.h
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_MsgDlg.cxx [new file with mode: 0644]
src/SUIT/SUIT_MsgDlg.h [new file with mode: 0644]
src/SUIT/SUIT_PopupClient.h
src/SUIT/SUIT_ResourceMgr.cxx
src/SUIT/SUIT_SelectionFilter.h
src/SUIT/SUIT_Session.cxx
src/SUIT/SUIT_Session.h
src/SUIT/SUIT_Study.cxx
src/SUIT/SUIT_Study.h
src/SUIT/SUIT_TreeSync.h
src/SUIT/SUIT_ViewManager.cxx
src/SUIT/SUIT_ViewManager.h
src/SUIT/SUIT_ViewWindow.cxx
src/SUIT/SUIT_ViewWindow.h
src/SUITApp/Makefile.am [new file with mode: 0644]
src/SUITApp/Makefile.in [deleted file]
src/SUITApp/SUITApp.cxx
src/SUITApp/SUITApp_Application.cxx
src/SUPERVGraph/Makefile.am [new file with mode: 0755]
src/SUPERVGraph/Makefile.in [deleted file]
src/SUPERVGraph/SUPERVGraph_ViewFrame.h
src/SVTK/Makefile.am [new file with mode: 0755]
src/SVTK/Makefile.in [deleted file]
src/SVTK/SALOME_Actor.cxx
src/SVTK/SALOME_Actor.h
src/SVTK/SVTK_Actor.cxx
src/SVTK/SVTK_Actor.h
src/SVTK/SVTK_CubeAxesActor2D.h
src/SVTK/SVTK_DeviceActor.cxx
src/SVTK/SVTK_DeviceActor.h
src/SVTK/SVTK_Event.h
src/SVTK/SVTK_Extension.cxx [new file with mode: 0755]
src/SVTK/SVTK_Extension.h [new file with mode: 0755]
src/SVTK/SVTK_FontWidget.h
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_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_Selector.cxx
src/SVTK/SVTK_Selector.h
src/SVTK/SVTK_SelectorDef.h
src/SVTK/SVTK_SetRotationPointDlg.cxx [new file with mode: 0755]
src/SVTK/SVTK_SetRotationPointDlg.h [new file with mode: 0755]
src/SVTK/SVTK_SpaceMouse.cxx
src/SVTK/SVTK_SpaceMouse.h
src/SVTK/SVTK_Trihedron.cxx
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_ViewWindow.cxx
src/SVTK/SVTK_ViewWindow.h
src/SVTK/resources/SVTK_msg_en.po
src/SalomeApp/Makefile.am [new file with mode: 0755]
src/SalomeApp/Makefile.in [deleted file]
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_Application.h
src/SalomeApp/SalomeApp_DataModel.cxx
src/SalomeApp/SalomeApp_DataObject.cxx
src/SalomeApp/SalomeApp_Displayer.cxx [deleted file]
src/SalomeApp/SalomeApp_Displayer.h [deleted file]
src/SalomeApp/SalomeApp_ExceptionHandler.cxx
src/SalomeApp/SalomeApp_ExitDlg.cxx [new file with mode: 0644]
src/SalomeApp/SalomeApp_ExitDlg.h [new file with mode: 0644]
src/SalomeApp/SalomeApp_Module.h
src/SalomeApp/SalomeApp_Study.cxx
src/SalomeApp/SalomeApp_Study.h
src/SalomeApp/SalomeApp_VisualState.cxx
src/SalomeApp/Test/Makefile.am [new file with mode: 0644]
src/SalomeApp/Test/Makefile.in [deleted file]
src/SalomeApp/resources/SalomeApp.ini
src/SalomeApp/resources/SalomeApp.xml
src/SalomeApp/resources/SalomeApp_msg_en.po
src/Session/InquireServersQThread.h
src/Session/Makefile.am [new file with mode: 0755]
src/Session/Makefile.in [deleted file]
src/Session/SALOME_Session.hxx [new file with mode: 0755]
src/Session/SALOME_Session_Server.cxx
src/Session/SalomeApp_Engine_i.hxx
src/Session/Session_ServerCheck.cxx
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/runSession [deleted file]
src/Style/Makefile.am [new file with mode: 0644]
src/Style/Makefile.in [deleted file]
src/Style/SalomeStyle.cxx
src/Style/SalomeStyle.h
src/TOOLSGUI/Makefile.am [new file with mode: 0755]
src/TOOLSGUI/Makefile.in [deleted file]
src/TOOLSGUI/ToolsGUI_HelpWindow.h
src/TOOLSGUI/ToolsGUI_IntervalWindow.h
src/TOOLSGUI/ToolsGUI_RegWidget.cxx
src/TOOLSGUI/ToolsGUI_RegWidget.h
src/VTKViewer/Makefile.am [new file with mode: 0755]
src/VTKViewer/Makefile.in [deleted file]
src/VTKViewer/VTKViewer.cxx
src/VTKViewer/VTKViewer_Actor.cxx
src/VTKViewer/VTKViewer_Actor.h
src/VTKViewer/VTKViewer_AppendFilter.cxx
src/VTKViewer/VTKViewer_AppendFilter.h
src/VTKViewer/VTKViewer_CellLocationsArray.h
src/VTKViewer/VTKViewer_CellRectPicker.cxx [deleted file]
src/VTKViewer/VTKViewer_CellRectPicker.h [deleted file]
src/VTKViewer/VTKViewer_ConvexTool.cxx
src/VTKViewer/VTKViewer_ConvexTool.h
src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.cxx
src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h
src/VTKViewer/VTKViewer_GeometryFilter.cxx
src/VTKViewer/VTKViewer_GeometryFilter.h
src/VTKViewer/VTKViewer_InteractorStyle.h
src/VTKViewer/VTKViewer_PassThroughFilter.cxx
src/VTKViewer/VTKViewer_PassThroughFilter.h
src/VTKViewer/VTKViewer_RectPicker.cxx [deleted file]
src/VTKViewer/VTKViewer_RectPicker.h [deleted file]
src/VTKViewer/VTKViewer_ShrinkFilter.cxx
src/VTKViewer/VTKViewer_ShrinkFilter.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_ViewWindow.cxx
src/VTKViewer/resources/VTKViewer_images.po
src/VTKViewer/resources/VTKViewer_msg_en.po
src/VTKViewer/resources/view_rotation_point.png [new file with mode: 0755]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/COPYING b/COPYING
new file mode 100755 (executable)
index 0000000..b1e3f5a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..62e21b1
--- /dev/null
@@ -0,0 +1,56 @@
+#  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)
+# Date : 28/06/2001
+# $Header$
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+if GUI_ENABLE_CORBA
+    IDLDIR = idl
+else !GUI_ENABLE_CORBA
+    IDLDIR =
+endif
+
+SUBDIRS = $(IDLDIR) adm_local resources src doc bin 
+
+DIST_SUBDIRS = idl adm_local resources src doc bin 
+
+DISTCLEANFILES = a.out aclocal.m4 configure
+
+salomeinclude_DATA=GUI_version.h
+
+EXTRA_DIST+= \
+       build_configure \
+       clean_configure \
+       LICENCE
+
+dist-hook:
+       rm -rf `find $(distdir) -name CVS`
+
+usr_docs:
+       (cd doc && $(MAKE) $(AM_MAKEFLAGS) usr_docs)
+
+docs:usr_docs
+
+dev_docs:
+       (cd doc && $(MAKE) $(AM_MAKEFLAGS) dev_docs)
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644 (file)
index 81a618a..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-#  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)
-# Date : 28/06/2001
-# $Header$
-#
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=.
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-SUBDIRS = src doc adm_local
-
-RESOURCES_FILES = \
-back.xpm \
-cascade.png \
-close.png \
-default.png \
-dl_delete.png \
-dl_insert.png \
-dl_moveup.png \
-dl_movedown.png \
-forward.xpm \
-help.png \
-home.xpm \
-new.png \
-open.png \
-print.png \
-reset.png \
-save.png \
-select1.png \
-tile.png \
-Tools_en.xml \
-view_back.png \
-view_bottom.png \
-view_camera_dump.png \
-view_fitall.png \
-view_fitarea.png \
-view_front.png \
-view_glpan.png \
-view_left.png \
-view_pan.png \
-view_reset.png \
-view_right.png \
-view_rotate.png \
-view_top.png \
-view_triedre.png \
-view_zoom.png \
-copy.png \
-paste.png \
-plot2d_dump.png \
-plot2d_fitall.png \
-plot2d_fitarea.png \
-plot2d_legend.png \
-plot2d_linear.png \
-plot2d_linear_y.png \
-plot2d_lines.png \
-plot2d_log.png \
-plot2d_log_y.png \
-plot2d_pan.png \
-plot2d_points.png \
-plot2d_settings.png \
-plot2d_splines.png \
-plot2d_zoom.png \
-uc_add.png \
-uc_current.png \
-uc_del.png \
-uc_new.png \
-uc_clear.png \
-channel.cfg \
-
-BIN_SCRIPT= VERSION \
-runLightSalome.csh \
-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)
-       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) ../../$< $@
-
-# test if SALOMEconfig.h has changed (contents)
-salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
-       @if ! [ -a $@ ]; then \
-         cp -p $< $@;        \
-       fi;                   \
-       if ! cmp $< $@; then  \
-         cp -p $< $@;        \
-       fi;                   \
-
-include/salome/config.h: salome_adm/unix/config.h
-       -$(RM) $@
-       $(LN_S) ../../$< $@
-
-include/salome/sstream: salome_adm/unix/sstream
-       -$(RM) $@
-       $(LN_S) ../../$< $@
-
-include/salome/GUI_version.h: GUI_version.h
-       -$(RM) $@
-       $(LN_S) ../../$< $@
-
-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:
-#      (cd doc && $(MAKE) $@) || exit 1
-
-# Install make_commence make_conclude ... for other modules
-install-make:
-       ($(INSTALL) -d  $(incmakedir) || exit 1);
-       (sed 's/^prefix=/#prefix=/' $(top_builddir)/adm_local/unix/make_commence > $(incmakedir)/make_commence || exit 1);
-
-
-install-end:
-# finish libtool install
-#      @$(LT) --mode=finish $(libdir)
-
-install-include: $(include_list)
-       $(INSTALL) -d  $(includedir)
-       @for f in X $(include_list); do                         \
-          if test $$f != X; then                               \
-            (cp -p $$f $(includedir) || exit 1);               \
-          fi;                                                  \
-       done
-
-# install script in $(bindir) :
-install-bin: $(BIN_SCRIPT)
-       $(INSTALL) -d  $(bindir)
-       $(INSTALL_PROGRAM) $^ $(bindir)
-
-uninstall:
-#uninstall: uninstall-idl
-#uninstall-idl:
-#      $(RM) $(idldir)/*.idl
-
-distclean: distclean-other
-
-distclean-other:
-       -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
-       -$(RM) salome_adm/unix/make_* 
-       -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h salome_adm/unix/config.h 
-       -$(RM) config.cache config.log config.status 
-
-@MODULE@
-
-install: install-bin install-include install-make install-end
-
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/adm_local/Makefile.am b/adm_local/Makefile.am
new file mode 100644 (file)
index 0000000..7ae83a6
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+SUBDIRS = unix
diff --git a/adm_local/Makefile.in b/adm_local/Makefile.in
deleted file mode 100644 (file)
index 23b57e7..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#  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=..
-srcdir=@srcdir@
-VPATH=.:$(srcdir)/adm_local
-
-
-all: resources
-
-install:
-       cp -rf @top_srcdir@/adm_local @prefix@
-
-bin:
-
-resources :
-       cp -rf @top_srcdir@/adm_local $(top_builddir)
-
-inc:
-
-lib:
-
-depend:
-
-depend_idl:
-
-install-end:
-
-install-include:
-
-install-bin:
-
-uninstall:
-
-uninstall-idl:
-
-distclean:
-
-clean:
-
-tests:
-
-distclean-other:
-
diff --git a/adm_local/unix/Makefile.am b/adm_local/unix/Makefile.am
new file mode 100644 (file)
index 0000000..f9243d2
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = config_files
+
+# this is for LIGHT module compatibility
+dist_admlocalunix_DATA=make_conclude.in
\ No newline at end of file
diff --git a/adm_local/unix/config_files/Makefile.am b/adm_local/unix/config_files/Makefile.am
new file mode 100644 (file)
index 0000000..de8790b
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+dist_admlocalm4_DATA=\
+check_disable_Corba.m4 \
+check_GLViewer.m4 \
+check_GUI.m4 \
+check_msg2qm.m4 \
+check_OCCViewer.m4 \
+check_opengl.m4 \
+check_Plot2dViewer.m4 \
+check_PyConsole.m4 \
+check_pyqt.m4 \
+check_qt.m4 \
+check_qwt.m4 \
+check_SalomeObject.m4 \
+check_sip.m4 \
+check_SupervGraphViewer.m4 \
+check_vtk.m4 \
+check_VTKViewer.m4 \
+check_corba_in_GUI.m4 \
+check_QxGraphViewer.m4 \
+README
index ff090e7b9b843f8e6b63eb3e3fb934fcf5e5a0b8..e0b0e24ae518b443656bf99cf25bbc9c1279b6bb 100755 (executable)
@@ -27,14 +27,14 @@ if test "x${SALOME_GUI_DIR}" = "x" ; then
     # search Salome binaries in PATH variable
     AC_PATH_PROG(TEMP, $1)
     if test "x${TEMP}" != "x" ; then
-      AC_MSG_RESULT(libLightApp.so was found at : ${TEMP})
+      AC_MSG_RESULT($1 was found at : ${TEMP})
       SALOME_BIN_DIR=`dirname ${TEMP}`
       SALOME_GUI_DIR=`cd ${SALOME_BIN_DIR}/../..; pwd`
     fi
   fi
 fi
 
-if test -f ${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome/$1 ; then
+if test -f ${SALOME_GUI_DIR}/bin/salome/$1 ; then
   SalomeGUI_ok=yes
   AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR})
 
@@ -58,6 +58,6 @@ AC_MSG_RESULT(for $2: ${SalomeGUI_ok})
 ])dnl
 
 AC_DEFUN([CHECK_SALOME_GUI],[
-  CHECK_GUI([libLightApp.so],
+  CHECK_GUI([SUITApp],
             [SALOME GUI])
-])dnl
\ No newline at end of file
+])dnl
diff --git a/adm_local/unix/config_files/check_QxGraphViewer.m4 b/adm_local/unix/config_files/check_QxGraphViewer.m4
new file mode 100644 (file)
index 0000000..1ef9f73
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# Check configure option --disable-qxGraphViewer=[yes|no|DIR] taking into account that
+# DISABLE_QXGRAPHVIEWER may be already set during build_configure,
+# Set DISABLE_QXGRAPHVIEWER to yes|no
+#
+# Author : Edawrd AGAPOV (OCC, 2005)
+#
+
+AC_DEFUN([CHECK_QXGRAPHVIEWER],[
+
+AC_ARG_WITH(qxGraphViewer,
+           [  --disable-qxGraphViewer default=no ],
+           disable_qxGraphViewer="$withval",disable_qxGraphViewer="${DISABLE_QXGRAPHVIEWER}")
+
+case $disable_qxGraphViewer in
+  yes)
+#         AC_MSG_RESULT(************************************************)
+#         AC_MSG_RESULT(*******   DISABLE QxGraphViewer configuration   ********)
+#         AC_MSG_RESULT(************************************************)
+        DISABLE_QXGRAPHVIEWER="yes"
+        AC_SUBST(DISABLE_QXGRAPHVIEWER)
+esac
+
+])dnl
index 20be4514f656afa19b0dd366bb2319877be80a2d..381bf3b7d43a38255fe368820e1d57bf78141469 100755 (executable)
@@ -4,7 +4,7 @@
 #------------------------------------------------------------
 
 AC_DEFUN([CHECK_CORBA_IN_GUI],[
-  CHECK_GUI([libSalomeApp.so],
+  CHECK_GUI([SALOME_Session_Server],
             [CORBA SALOME GUI])
   CORBA_IN_GUI=${SalomeGUI_ok}
   AC_SUBST(CORBA_IN_GUI)
index 8a56e0f54841b65eaedaf5ad1de9f2657ed7cdcf..a1eb48ee2ab54bd59ae81f021a7f60d31a88721a 100644 (file)
@@ -162,6 +162,40 @@ if test "x${OpenGL_libs_ok}" = "xyes" ; then
       break
     fi
   done
+
+  # workaround a problem with libGL library location
+  for idir in $dirs; do
+    if test -r "${idir}/libGLU.la"; then
+      GLU_LA_PATH="${idir}/libGLU.la"
+      GL_LA_PATH_TO_CHECK=`cat ${GLU_LA_PATH} | awk '{ for(i=1;i<NF;i++){ if(gsub("libGL.la","&",$i)>0) print $i } }'`
+      if test -z ${GL_LA_PATH_TO_CHECK} || test -r ${GL_LA_PATH_TO_CHECK}; then
+        # nothing to do
+        break
+      fi
+      for jdir in $dirs; do
+        if test -r "${jdir}/libGL.la"; then
+          GL_LA_PATH="${jdir}/libGL.la"
+          # copy the libGLU.la file and set correct libGL.la path in it
+          NEW_GLU_LA_PATH=${ROOT_BUILDDIR}
+          NEW_GLU_LA_FILE="${NEW_GLU_LA_PATH}/libGLU.la"
+          sed -e "s%${GL_LA_PATH_TO_CHECK}%${GL_LA_PATH}%" ${GLU_LA_PATH} > "${NEW_GLU_LA_FILE}"
+          chmod -f --reference=${GLU_LA_PATH} "${NEW_GLU_LA_FILE}"
+          # set a new libGLU.la path
+          GLU_LIB_PATH="-L${NEW_GLU_LA_PATH}"
+          # create a simbolic link to libGLU.so
+          for kdir in $dirs; do
+            if test -r "${kdir}/libGLU.so"; then
+              cp -fs "${kdir}/libGLU.so" "${NEW_GLU_LA_PATH}/libGLU.so"
+              break
+            fi
+          done
+          break
+        fi
+      done
+      break
+    fi
+  done
+
   LDFLAGS_old="${LDFLAGS}"
   LDFLAGS="${LDFLAGS} ${OGL_LIBS} ${GLU_LIB_PATH}"
   AC_CHECK_LIB([GLU],
@@ -193,3 +227,4 @@ AC_SUBST(OGL_LIBS)
 AC_LANG_RESTORE
 
 ])dnl
+
index 7be124e24b4a5f2d68c2ade5bfefc10cb0f36845..f63479879dce7340981677009dc6f17d9a52b3a8 100644 (file)
@@ -49,6 +49,16 @@ if test "x$pyqt_uic_ok" == "xno"; then
     fi
   fi   
 fi
+if test "x$pyqt_uic_ok" == "xno"; then
+  dnl try in $PATH
+  AC_PATH_PROG(PYUIC, pyuic)
+  if test "x$PYUIC" != x; then
+    PYQTDIR=$PYUIC
+    PYQTDIR=`dirname $PYQTDIR`
+    PYQTDIR=`dirname $PYQTDIR`
+    pyqt_uic_ok=yes
+  fi
+fi
 if test "x$pyqt_uic_ok" == "xno"; then
   dnl try ${SIPDIR}
   if test "x${SIPDIR}" != "x"; then
@@ -106,8 +116,8 @@ if test "x${PYQTDIR}" != "x"; then
     fi
   fi
   if test "x$pyqt_lib_ok" == "xno"; then
-    dnl try {PYQTDIR}/lib
-    if test -d {PYQTDIR}/lib; then
+    dnl try ${PYQTDIR}/lib
+    if test -d ${PYQTDIR}/lib; then
       AC_CHECK_FILE(${PYQTDIR}/lib/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
       if test "x$pyqt_lib_ok" == "xyes"; then
         PYQT_LIBS="-L${PYQTDIR}/lib -lqtcmodule"
@@ -120,8 +130,8 @@ if test "x${PYQTDIR}" != "x"; then
     fi
   fi
   if test "x$pyqt_lib_ok" == "xno"; then
-    dnl try {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
-    if test -d {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages; then
+    dnl try ${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+    if test -d ${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages; then
       AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
       if test "x$pyqt_lib_ok" == "xyes"; then
         PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
@@ -220,6 +230,17 @@ if test "x$pyqt_sips_ok" == "xno"; then
     fi
   fi
 fi
+if test "x$pyqt_sips_ok" == "xno"; then
+  dnl try ${PYQTDIR}/share/sip/qt
+  if test "x${PYQTDIR}" != "x"; then
+    if test -d ${PYQTDIR}/share/sip/qt ; then
+      AC_CHECK_FILE(${PYQTDIR}/share/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+      if test "x$pyqt_sips_ok" == "xyes"; then
+        PYQT_SIPS="${PYQTDIR}/share/sip/qt"
+      fi
+    fi
+  fi
+fi
 if test "x$pyqt_sips_ok" == "xno"; then
   dnl try ${SIPDIR}/sip
   if test "x${SIPDIR}" != "x"; then
@@ -291,12 +312,16 @@ else
   CXXFLAGS=$CXXFLAGS_old
   LIBS=$LIBS_old
 fi
+# get latest Qt version supported
+QT_VERS=`grep -e "[[[:space:]]]*Qt_[[[:digit:]_]]\+}" ${PYQT_SIPS}/versions.sip | sed -e "s/\(.*\)[[[:space:]]]*\(Qt_[[[:digit:]_]]\+\)}/\2/g"`
+AC_MSG_RESULT(Latest Qt version supported by PyQt is $QT_VERS)
 
 AC_SUBST(PYQT_INCLUDES)
 AC_SUBST(PYQT_LIBS)
 AC_SUBST(PYQT_SIPS)
 AC_SUBST(PYUIC)
 AC_SUBST(PYQT_SIPFLAGS)
+AC_SUBST(QT_VERS)
 
 AC_LANG_RESTORE
 
index ab5348319f74ebd2bcf6e7cfd168e4f63b5791bd..1aea9c3a2b121c0789a0a0a02181cbd8a3edc0da 100644 (file)
@@ -48,9 +48,8 @@ else
    qt_inc_ok=no
    QTINC=""
    AC_CHECK_FILE(${QTDIR}/include/qt3/qglobal.h,QTINC="/qt3",QTINC="")
-   QT_VERS=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/qglobal.h | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\"%%g'`
-   AC_MSG_RESULT(Qt version is $QT_VERS)
-   QT_VERS="Qt_"`echo $QT_VERS | sed -e 's%\"%%g' -e 's%\.%_%g'`
+   QT_VERSION=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/qglobal.h | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\"%%g'`
+   AC_MSG_RESULT(Qt version is $QT_VERSION)
 fi
 
 if  test "x$qt_ok" = "xyes"
@@ -169,7 +168,7 @@ AC_SUBST(QT_INCLUDES)
 AC_SUBST(QT_MT_INCLUDES)
 AC_SUBST(QT_LIBS)
 AC_SUBST(QT_MT_LIBS)
-AC_SUBST(QT_VERS)
+AC_SUBST(QT_VERSION)
 
 AC_LANG_RESTORE
 
index 83af9a907589fbcec47688ccca5c3218a82b25c9..88cbe5951156f9c55b4c5d7e6bb20a42784ca54f 100644 (file)
@@ -44,11 +44,26 @@ else
            SIP_VERS=v4_old ;;
          4.2*)
            SIP_VERS=v4_new ;;
+         4.3*)
+           SIP_VERS=v4_new ;;
+         4.4*)
+           SIP_VERS=v4_new ;;
+         4.5*)
+           SIP_VERS=v4_new ;;
+        4.6*)
+           SIP_VERS=v4_new ;;
+        4.7*)
+           SIP_VERS=v4_new ;;
          *)
            AC_MSG_RESULT(sip version $version not supported)
            SIP_VERS=unsupported ;;
     esac
 
+    if test "x$SIPDIR" = "x" ; then
+        SIPDIR=`dirname $SIP`
+        SIPDIR=`dirname $SIPDIR`
+    fi
+
     sip_ok=no
     dnl Search sip.h file
     if test "x$SIPDIR" != "x" ; then
@@ -163,6 +178,9 @@ AC_SUBST(SIP_INCLUDES)
 AC_SUBST(SIP_LIBS)
 AC_SUBST(SIP_VERS)
 
+AM_CONDITIONAL(IS_SIP_V4, [test $SIP_VERS == v4_old || test $SIP_VERS == v4_new])
+AM_CONDITIONAL(IS_SIP_NEW, [test $SIP_VERS == v3_new || test $SIP_VERS == v4_new])
+
 AC_MSG_RESULT(for sip: $sip_ok)
 
 ])dnl
index a0733ebc35f45fbb17b929c86fd4bd588085e2bc..5e4fc444ea5325f5e88ee5ccdb860f418f72bbcc 100644 (file)
@@ -20,13 +20,34 @@ dnl
 dnl
 dnl
 
-AC_DEFUN([CHECK_VTK],[
+dnl
+dnl  OPTIONS_VTK
+dnl  ------------------------------------------------------------------------
+dnl  Adds the --with-vtk=path and --with-vtk-version configure options
+dnl
+AC_DEFUN([OPTIONS_VTK], [
+  AC_ARG_WITH([vtk],
+              [AC_HELP_STRING([--with-vtk], [The prefix where VTK is installed (default "" means taking from environment variable)])],
+              [with_vtk=$withval], [with_vtk=""])
+
+  AC_ARG_WITH([vtk-version],
+              [AC_HELP_STRING([--with-vtk-version], [VTK include directory name is vtk-suffix, e.g. vtk-5.0/. What is the suffix? (Default "yes" means taking from environment variable)])],
+              [vtk_suffix=$withval], [vtk_suffix="yes"])
+])
+
+dnl
+dnl  CHECK_VTK
+dnl  ------------------------------------------------------------------------
+dnl
+AC_DEFUN([CHECK_VTK], [
 AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_PROG_CXX])dnl
 AC_REQUIRE([AC_PROG_CPP])dnl
 AC_REQUIRE([AC_PROG_CXXCPP])dnl
 AC_REQUIRE([AC_LINKER_OPTIONS])dnl
 
+AC_REQUIRE([OPTIONS_VTK])dnl
+
 AC_CHECKING(for VTK)
 
 AC_LANG_SAVE
@@ -59,34 +80,80 @@ then
    LXLIB=""
 fi
 
-if test "x$x_libraries" = "x/usr/lib"
-then
-   LXLIB=""
-fi
-
-if test "x$x_libraries" = "x/usr/lib"
+if test "x$x_libraries" = "x/usr/lib${LIB_LOCATION_SUFFIX}"
 then
    LXLIB=""
 fi
 
 LOCAL_INCLUDES="$OGL_INCLUDES"
-LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid $OGL_LIBS $LXLIB -lX11 -lXt"
+LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid -lvtkParallel -lvtkWidgets $OGL_LIBS $LXLIB -lX11 -lXt"
 TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS $LXLIB -lX11 -lXt"
 
-if test -z $VTKHOME
-then 
-   AC_MSG_WARN(undefined VTKHOME variable which specify where vtk was compiled)
-   if test -f /usr/include/vtk/vtkPlane.h ; then
-      AC_MSG_RESULT(trying /usr)
-      VTKHOME="/usr"
-   fi
+dnl VTK version suffix
+if test -z $vtk_suffix ; then
+  vtk_suffix="yes"
+fi
+if test "x$vtk_suffix" == "xno" ; then
+  dnl in case user wrote --with-vtk-version=no, use empty suffix
+  vtk_suffix=""
+fi
+if test "x$vtk_suffix" != "xyes" ; then
+  VTKSUFFIX="$vtk_suffix"
+else
+  dnl in case user wrote --with-vtk-version=yes, get the suffix from env
+  if test -z $VTKSUFFIX ; then
+    VTKSUFFIX="-5.0"
+  fi
 fi
 
-if test ! -z $VTKHOME
-then
-   LOCAL_INCLUDES="-I$VTKHOME/include/vtk $LOCAL_INCLUDES"
-   LOCAL_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $LOCAL_LIBS"
-   TRY_LINK_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $TRY_LINK_LIBS"
+dnl VTK install dir
+if test -z $with_vtk ; then
+  with_vtk=""
+fi
+if test "x$with_vtk" = "xyes" ; then
+  dnl in case user wrote --with-vtk=yes
+  with_vtk=""
+fi
+if test "x$with_vtk" = "xno" ; then
+  dnl in case user wrote --with-vtk=no
+  with_vtk=""
+  AC_MSG_WARN(Value "no", specified for option --with-vtk, is not supported)
+fi
+
+if test "x$with_vtk" != "x" ; then
+  VTKHOME="$with_vtk"
+else
+  if test -z $VTKHOME ; then
+    AC_MSG_WARN(undefined VTKHOME variable which specify where vtk was compiled)
+    for d in /usr/local /usr ; do
+      if test -f ${d}/include/vtk${VTKSUFFIX}/vtkPlane.h ; then
+        AC_MSG_RESULT(trying ${d})
+        VTKHOME="${d}"
+        break
+      else
+        if test -f ${d}/include/vtk-5.0/vtkPlane.h ; then
+          AC_MSG_RESULT(trying ${d})
+          VTKHOME="${d}"
+          VTKSUFFIX="-5.0"
+          break
+        else
+          if test -f ${d}/include/vtk/vtkPlane.h ; then
+            AC_MSG_RESULT(trying ${d})
+            VTKHOME="${d}"
+            VTKSUFFIX=""
+            break
+          fi
+        fi
+      fi
+    done
+  fi
+fi
+
+LOCAL_INCLUDES="-I$VTKHOME/include/vtk${VTKSUFFIX} $LOCAL_INCLUDES"
+LOCAL_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk${VTKSUFFIX} $LOCAL_LIBS"
+TRY_LINK_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX} -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk${VTKSUFFIX} $TRY_LINK_LIBS"
+if test "x$VTKHOME" != "x/usr" ; then
+  LOCAL_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX} $LOCAL_LIBS"
 fi
 
 dnl vtk headers
@@ -95,34 +162,34 @@ CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES"
 
 AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no")
 
- CPPFLAGS="$CPPFLAGS_old"
+CPPFLAGS="$CPPFLAGS_old"
 
- if  test "x$vtk_ok" = "xyes"
- then
+if test "x$vtk_ok" = "xyes"
+then
    VTK_INCLUDES="$LOCAL_INCLUDES"
 
- dnl vtk libraries
  dnl vtk libraries
 
    AC_MSG_CHECKING(linking VTK library)
 
-  LIBS_old="$LIBS"
-#  LIBS="$LIBS $TRY_LINK_LIBS"
-  LIBS="$LIBS $LOCAL_LIBS"
-  CPPFLAGS_old="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS $VTK_INCLUDES"
+   LIBS_old="$LIBS"
+   LIBS="$LIBS $TRY_LINK_LIBS"
+   #LIBS="$LIBS $LOCAL_LIBS"
+   CPPFLAGS_old="$CPPFLAGS"
+   CPPFLAGS="$CPPFLAGS $VTK_INCLUDES"
 
dnl  VTKPY_MODULES="$VTKHOME/python"
  dnl VTKPY_MODULES="$VTKHOME/python"
 
    AC_CACHE_VAL(salome_cv_lib_vtk,[
-     AC_TRY_LINK([#include "vtkPlane.h"],
+     AC_TRY_LINK([#include "vtkPlane.h"
+                 ],
                 [vtkPlane::New()],
                 [salome_cv_lib_vtk=yes],
                 [salome_cv_lib_vtk=no])
-  ])
-  vtk_ok="$salome_cv_lib_vtk"
-  LIBS="$LIBS_old"
-  CPPFLAGS="$CPPFLAGS_old"
-
+   ])
+   vtk_ok="$salome_cv_lib_vtk"
+   LIBS="$LIBS_old"
+   CPPFLAGS="$CPPFLAGS_old"
 fi
 
 if  test "x$vtk_ok" = "xno"
@@ -142,4 +209,4 @@ AC_LANG_RESTORE
 # Save cache
 AC_CACHE_SAVE
 
-])dnl
\ No newline at end of file
+])dnl
diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in
deleted file mode 100644 (file)
index 0a5de34..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-# 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
-
-# header missing
-
-HAVE_SSTREAM=@HAVE_SSTREAM@
-
-
-LIBS=@LIBS@ 
-LIBSFORBIN=@LIBS@
-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++
-
-CP=@CP@
-
-# CPP
-
-CPP=@CPP@
-CXXCPP=@CXXCPP@
-CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
-
-# C
-
-CC = @CC@
-CFLAGS = @CFLAGS@
-C_DEPEND_FLAG = @C_DEPEND_FLAG@
-
-# C++
-
-CXX = @CXX@
-CXXFLAGS = @CXXFLAGS@
-CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
-
-# BOOST Library
-
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-
-# JAVA
-
-JAVA_INCLUDES = @JAVA_INCLUDES@
-JAVA_LIBS = @JAVA_LIBS@
-JAVA_LDPATH = @JAVA_LDPATH@
-
-# PYTHON
-
-PYTHON = @PYTHON@
-PYTHONHOME = @PYTHONHOME@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_VERSION = @PYTHON_VERSION@
-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@
-QT_INCLUDES = @QT_INCLUDES@
-QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT
-QT_LIBS = @QT_LIBS@
-QT_MT_LIBS = @QT_MT_LIBS@
-QT_VERS = @QT_VERS@
-
-MOC = @MOC@
-UIC = @UIC@
-
-# msg2qm
-MSG2QM = @MSG2QM@
-
-#QWT
-
-QWT_INCLUDES=@QWT_INCLUDES@
-QWT_LIBS=@QWT_LIBS@
-
-# SIP
-SIP = @SIP@
-SIP_INCLUDES = @SIP_INCLUDES@
-SIP_LIBS = @SIP_LIBS@
-SIP_VERS = @SIP_VERS@
-
-# PYQT
-PYQT_SIPS = @PYQT_SIPS@
-PYQT_LIBS = @PYQT_LIBS@
-PYQT_INCLUDES = @PYQT_INCLUDES@
-PYUIC = @PYUIC@
-PYQT_SIPFLAGS = @PYQT_SIPFLAGS@
-
-# openGL
-OGL_INCLUDES=@OGL_INCLUDES@
-OGL_LIBS=@OGL_LIBS@
-
-# VTK
-VTK_INCLUDES=@VTK_INCLUDES@
-VTK_LIBS=@VTK_LIBS@
-
-# HDF5
-
-HDF5_INCLUDES=@HDF5_INCLUDES@
-HDF5_LIBS=@HDF5_LIBS@
-HDF5_MT_LIBS=@HDF5_MT_LIBS@
-
-# OpenCasCade
-
-OCC_INCLUDES=@CAS_CPPFLAGS@
-OCC_CXXFLAGS=@CAS_CXXFLAGS@
-
-CAS_KERNEL=@CAS_KERNEL@
-CAS_MATH=@CAS_MATH@
-CAS_OCAF=@CAS_OCAF@
-CAS_OCAFVIS=@CAS_OCAFVIS@
-CAS_TKTopAlgo=@CAS_TKTopAlgo@
-CAS_VIEWER=@CAS_VIEWER@
-CAS_MODELER=@CAS_MODELER@
-CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
-CAS_LDPATH=@CAS_LDPATH@
-
-# MPICH
-
-MPICH_INCLUDES=@MPICH_INCLUDES@
-MPICH_LIBS=@MPICH_LIBS@
-
-# Swig C++ Python
-
-SWIG       = @SWIG@
-SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
-
-# OMNIORB
-
-OMNIORB_ROOT        = @OMNIORB_ROOT@
-OMNIORB_INCLUDES    = @OMNIORB_INCLUDES@
-OMNIORB_LIBS        = @OMNIORB_LIBS@
-OMNIORB_CXXFLAGS    = @OMNIORB_CXXFLAGS@
-
-OMNIORB_IDL         = @OMNIORB_IDL@
-OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
-OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome
-
-OMNIORB_IDL_CLN_H   = @OMNIORB_IDL_CLN_H@
-OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
-OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
-
-OMNIORB_IDL_SRV_H   = @OMNIORB_IDL_SRV_H@
-OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
-OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
-
-# Default ORB
-
-CORBA_ROOT        = @CORBA_ROOT@
-CORBA_INCLUDES    = @CORBA_INCLUDES@
-CORBA_LIBS        = @CORBA_LIBS@
-CORBA_CXXFLAGS    = @CORBA_CXXFLAGS@
-
-IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome
-IDLPYFLAGS  = @IDLPYFLAGS@
-
-IDL = @IDL@
-
-IDL_CLN_H   = @IDL_CLN_H@
-IDL_CLN_CXX = @IDL_CLN_CXX@
-IDL_CLN_OBJ = @IDL_CLN_OBJ@
-
-IDL_SRV_H   = @IDL_SRV_H@
-IDL_SRV_CXX = @IDL_SRV_CXX@
-IDL_SRV_OBJ = @IDL_SRV_OBJ@
-
-CPPFLAGS+= $(CORBA_INCLUDES) 
-CXXFLAGS+= $(CORBA_CXXFLAGS)
-
-DOXYGEN = @DOXYGEN@
-DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@
-DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@
-
-## Shared libraries
-LT_STATIC_EXEC=@LT_STATIC_EXEC@
-DYNAMIC_DIRS=@DYNAMIC_DIRS@
-LT_LIB=libtool
-LT=$(top_builddir)/libtool
-LT_COMPILE=$(LT) --mode=compile $(CC)
-LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir)
-LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS)
-LT_RUN=$(LT) --mode=execute
-LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM)
-LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA)
-LT_UNINSTALL=$(LT) --mode=uninstall $(RM)
-
-INSTALL=@INSTALL@
-INSTALL_PROGRAM=@INSTALL_PROGRAM@
-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=@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=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
-incmakedir=${prefix}/salome_adm/unix
-
-docdir=${prefix}/doc/salome
-
-#
-# begin of package rules
-#
-
-.PHONY: all lib bin inc resources data docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
-
-.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
-
-all:
-       $(MAKE) inc
-       $(MAKE) depend_idl
-       $(MAKE) depend
-       $(MAKE) lib
-       $(MAKE) bin
-       $(MAKE) resources
-
-#
-# add target to build administrative files
-#
-
-Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in
-       cd $(top_builddir) ; ./config.status
-
-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 :-)
-ifneq ($(top_srcdir),$(srcdir))
-configure: $(top_srcdir)/configure
-endif
-
-$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4
-       cd $(top_srcdir) ; autoconf
-
-$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base
-       cd $(top_srcdir) && ./build_configure
-
-
-ACLOCAL_SRC = \
-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/adm_local/unix/make_common_starter.am b/adm_local/unix/make_common_starter.am
new file mode 100644 (file)
index 0000000..16a5054
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# ============================================================
+# This file defines the common definitions used in several
+# Makefile. This file must be included, if needed, by the file
+# Makefile.am.
+# ============================================================
+#
+
+# Standard directory for installation
+salomeincludedir   = $(includedir)/@PACKAGE@
+libdir             = $(prefix)/lib@LIB_LOCATION_SUFFIX@/@PACKAGE@
+bindir             = $(prefix)/bin/@PACKAGE@
+salomescriptdir    = $(bindir)
+
+# Directory for installing idl files
+salomeidldir       = $(prefix)/idl/@PACKAGE@
+
+# Directory for installing resource files
+salomeresdir       = $(prefix)/share/@PACKAGE@/resources/@MODULE_NAME@
+
+# Directories for installing admin files
+admlocaldir       = $(prefix)/adm_local
+admlocalunixdir     = $(admlocaldir)/unix
+admlocalm4dir        = $(admlocaldir)/unix/config_files
+
+# Shared modules installation directory
+sharedpkgpythondir =$(pkgpythondir)/shared_modules
+
+# Documentation directory
+docdir             = $(datadir)/doc/@PACKAGE@
+
+# common rules
+
+# moc-files generation
+%_moc.cxx: %.h
+       $(MOC) $< -o $@
+
+# qm-files generation
+%.qm: resources/%.po
+       $(MSG2QM) $< $@
+
+EXTRA_DIST=$(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=resources/%.po)
+
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx
+       rm -f @builddir@/*.qm
+
+# tests
+tests: unittest
+
+unittest: $(UNIT_TEST_PROG)
+       @if test "x$(UNIT_TEST_PROG)" != "x"; then \
+           $(UNIT_TEST_PROG);                     \
+       fi;
index 897154a7acadc30f0265068902d417b9c4aea010..da7a678e1e498f5528128fe1b016f209292e23bf 100644 (file)
@@ -191,11 +191,11 @@ RESOURCES_FILES ?= $(RESOURCES_FILES_ALL)
 
 resources: resources-po resources-cp 
 
-resources-po: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+resources-po: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
 
-resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
+resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%)
 
-$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
+$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%): $(top_builddir)/share/salome/resources/$(MODULE_NAME)/% : %
        cp -fr $< $@;
 
 # Make installation directories if they don't exist.
@@ -255,19 +255,19 @@ $(EXPORT_SHAREDPYSCRIPTS:%=install-%): install-%: %
 
 # generic rule to install .qm files :
 install-qm: resources
-       $(INSTALL) -d $(datadir)/resources
-       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \
+       $(INSTALL) -d $(datadir)/resources/$(MODULE_NAME)
+       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm); do \
           if test $$f != X; then                                                        \
-            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/$(MODULE_NAME)/. || exit 1);                      \
           fi;                                                                           \
        done
 
 # generic rule to install resources files (png, ini ...):
 install-res: resources
-       $(INSTALL) -d $(datadir)/resources
-       @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \
+       $(INSTALL) -d $(datadir)/resources/$(MODULE_NAME)
+       @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%); do \
           if test $$f != X; then                                                        \
-            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/$(MODULE_NAME)/. || exit 1);                      \
           fi;                                                                           \
        done  
 
@@ -318,7 +318,7 @@ uninstall:
 # Uninstall qm files
        @for f in X $(PO_FILES:%.po=%.qm); do         \
           if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(datadir)/resources/$$f ;                       \
+            $(LT_UNINSTALL) $(datadir)/resources/$(MODULE_NAME)/$$f ;                        \
           fi;                                                                \
        done
 
@@ -363,7 +363,7 @@ clean: mostlyclean
 #
 distclean: clean
        #remove qm file !
-       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
        #remove include files
        -$(RM) $(DEST_HEADERS)
        -$(RM) $(DISTCLEAN) *.bak *.old *.new .dep*
@@ -410,7 +410,7 @@ distclean: clean
 %_wrap.cxx : %.i
        $(SWIG) $(SWIG_FLAGS) -o $@ $<
 
-$(top_builddir)/share/salome/resources/%.qm: %.po
+$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm: %.po
        $(MSG2QM) $< $@ ; \
 
 #------------------------------------------------------------------------------
diff --git a/adm_local/unix/make_omniorb.in b/adm_local/unix/make_omniorb.in
deleted file mode 100644 (file)
index b65865e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#=======================================================================
-# Begin specific part to omniorb 
-# (include from file adm/unix/make_omniorb generated by 
-# adm/unix/make_omniorb.in)
-#=======================================================================
-# -* Makefile *- 
-#
-#
-
-# Client and server object are the same with omniorb
-# There are one header file and one source file generate
-
-#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
-
-# dependancies between idl and it's generated files
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_srcdir}/idl/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-# dependncies between idl files
-depend_idl: .depidl
-
-# we use cpp to generate dependencies between idl files.
-# we change cpp output to keep only idl file and transform it to get a suitable rule
-.depidl: $(IDL_FILES)
-       @touch $@
-       @for dep in $? dummy; do \
-         if [ $$dep != "dummy" ]; then \
-           echo Building dependencies for $$dep; \
-           basedep=`basename $$dep .idl`; \
-           header="$$basedep"$(IDL_CLN_H); \
-           sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
-           $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \
-           sed `echo "s%$$basedep\\.idl%$$header:%g"` | \
-           sed 's% $(srcdir)/% %g' | \
-           sed 's% $(top_srcdir)/% %g' | \
-           sed 's% $(top_builddir)/% %g' | \
-           sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \
-           sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \
-           echo ''  >>$@; \
-         fi; \
-       done ;
-
--include .depidl
-
-#=======================================================================
-# End specific part to omniorb 
-#=======================================================================
diff --git a/bin/Makefile.am b/bin/Makefile.am
new file mode 100644 (file)
index 0000000..a0f5c84
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# 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 : Guillaume Boulant (CSSI)
+# Module : KERNEL
+# $Header$
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# These files are data, module or lib files
+nodist_salomescript_DATA= VERSION
+
+EXTRA_DIST+= VERSION.in
+
+# These files are executable scripts
+dist_salomescript_SCRIPTS=\
+       runLightSalome.csh \
+       runLightSalome.sh
index 85675de23c5bee7924b6558a806d12c2c543e887..3a751e9933f9f2292b8b19bb7c1d69f11ffdfa86 100755 (executable)
@@ -1,9 +1,7 @@
 #!/bin/csh -f
 
-if ( ! $?SUITRoot )          setenv SUITRoot ${GUI_ROOT_DIR}/share/salome
-
 # this variable necessary for loading .ini or .xml file
-if ( ! $?LightAppConfig )    setenv LightAppConfig ${GUI_ROOT_DIR}/share/salome/resources
-if ( ! $?LightAppResources ) setenv LightAppResources ${GUI_ROOT_DIR}/share/salome/resources
+if ( ! $?LightAppConfig )    setenv LightAppConfig ${GUI_ROOT_DIR}/share/salome/resources/gui
+if ( ! $?LightAppResources ) setenv LightAppResources ${GUI_ROOT_DIR}/share/salome/resources/gui
 
 SUITApp LightApp -style salome $* &
index b2f67d65e897c594273abe6e8ab4ee762e19cbf8..df19ca7ba30d005bc9f87eb78b51cf0dfcbb36cb 100755 (executable)
 #
 #!/bin/bash -f
 
-if [ -z "$SUITRoot" ] ; then          
-  export SUITRoot=${GUI_ROOT_DIR}/share/salome
-fi
 # this variable necessary for loading .ini or .xml file
 if [ -z "$LightAppConfig" ] ; then
-  export LightAppConfig=${GUI_ROOT_DIR}/share/salome/resources
+  export LightAppConfig=${GUI_ROOT_DIR}/share/salome/resources/gui
 fi
 if [ -z "$LightAppResources" ] ; then
-  export LightAppResources=${GUI_ROOT_DIR}/share/salome/resources
+  export LightAppResources=${GUI_ROOT_DIR}/share/salome/resources/gui
 fi
 
 SUITApp LightApp -style salome $* &
index b36fde32a040f9410efa03b56cda2d0a4a048cfc..733a8cea69bde22bdb1fcec1f67a5be6fd7dfb71 100755 (executable)
 #!/bin/bash
 
 #
-# Tool for updating list of .in file for the SALOME project 
+# Tool for updating list of .in file for the SALOME project
 # and regenerating configure script
 #
 # Author : Marc Tajchman - CEA
 # Date : 10/10/2002
 # $Header$
 #
+# 26/10/2006: Mikhail PONIKAROV - OCN
+# Reorganization for uage of autotools
 
 ORIG_DIR=`pwd`
 CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
 
-########################################################################
+# ____________________________________________________________________
 # Test if the KERNEL_ROOT_DIR is set correctly
 if test ! -d "${KERNEL_ROOT_DIR}"; then
     echo "failed : KERNEL_ROOT_DIR variable is not correct !"
     exit
 fi
 
-# Test if the KERNEL_SRC is set correctly
-
-#if test ! -d "${KERNEL_SRC}"; then
-#    echo "failed : KERNEL_SRC variable is not correct !"
-#    exit
-#fi
-########################################################################
-# find_in - utility function
-#
-# usage :  
-#    find_in directory filename 
-#
-# Finds files following the *.in pattern, recursively in the
-# directory (first argument).
-# Results are appended into the file (second argument)
-#
-# Difference from the standard unix find is that files are tested
-# before directories
-# 
-
-find_in()
-{
-  local i
-  local f=$2
-
-# if the first argument is not a directory, returns
-
-  if [ ! -d "$1" ] ; then 
-     return 
-  fi
-
-# dont look in the CVS directories
-
-  case $1 in
-    */CVS) return ;;
-    */adm_local/*) return ;;
-    *) ;;
-  esac
-
-# for each regular file contained in the directory
-# test if it's a .in file
-
-  for i in "$1"/*
-  do
-     if [ -f "$i" ] ; then
-       case $i in 
-         *.in) echo "  "$i" \\" >> $f;;
-         *) ;;
-        esac
-     fi
-  done
-
-# for each subdirectory of the first argument, proceeds recursively
-
-  for i in "$1"/*
-  do
-     if [ -d "$i" ] ; then
-        find_in "$i" "$f"
-     fi
-  done
-}
-
-
-#######################################################################
-# Generate list of .in files (Makefile.in, config.h.in, etc)
-# appending it in file configure.in
-
 cd ${CONF_DIR}
 ABS_CONF_DIR=`pwd`
 
-#
-# Common part of the configure.in file
-#
-chmod u+w configure.in.base
-if ! \cp -f configure.in.base configure.in_tmp1 
-then
-       echo
-       echo "error : can't create files in" ${CONF_DIR}
-       echo "aborting ..."
-        chmod u-w configure.in.base 
-       exit
-fi
-chmod u-w configure.in.base 
-
-if [ -e "${CONF_DIR}/salome_adm" ] ; then
-    \rm -rf ${CONF_DIR}/salome_adm
-fi
-
-# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in  files
-echo "" >> configure.in_tmp1
-echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/.' >> configure.in_tmp1
-
-echo  "" >> configure.in_tmp1
-echo "AC_OUTPUT([ \\" >> configure.in_tmp1
-
-#
-# List of .in files in the adm/unix directory
-# These files MUST be on top of AC_OUTPUT list so we
-# put them "manually"
-#
-
-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:${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:${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
-touch configure.in_tmp2
-find_in . configure.in_tmp2
-sed -e '/^...salome_adm/d' configure.in_tmp2 >  configure.in_tmp3
-sed -e '/^...adm_local.unix.make_omniorb/d' configure.in_tmp3 > configure.in_tmp2
-sed -e '/^...adm_local.unix.make_commence/d' configure.in_tmp2 > configure.in_tmp3
-sed -e '/configure.in/d' configure.in_tmp3 >  configure.in_tmp2
-sed -e 's/.in / /' configure.in_tmp2 >>  configure.in_tmp1
-#sed '/^.salome_adm/d' configure.in_tmp2 >  configure.in_tmp3
-#sed '/configure.in/d' configure.in_tmp3 >  configure.in_tmp2
-#sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
-
-echo  "])" >> configure.in_tmp1
-
-# delete the link created for AC_OUTPUT
-echo "" >> configure.in_tmp1
-#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1
-\mv configure.in_tmp1 configure.in_new
-\rm  -f configure.in_tmp2 configure.in_tmp3
-
-
-########################################################################
-# Create new (or replace old) configure.in file
-# Print a message if the file is write protected
-#
-
-echo
-if test ! -f configure.in
-then
-       echo -n "Creating new file 'configure.in' ... "
-       if \mv configure.in_new configure.in >& /dev/null
-       then
-               echo "done"
-       else
-               echo "error, check your file permissions"
-       fi
-else
-       echo -n "Updating 'configure.in' file ... "
-       if ! \cp configure.in configure.in_old >& /dev/null
-       then
-               echo
-               echo
-               echo "Can't backup previous configure.in"
-               echo -n "Continue (you will not be able to revert) - (Y/N) ? "
-               read R
-                case "x$R" in
-                   xn*) exit;;
-                   xN*) exit;;
-               esac
-               echo
-               echo -n "                                 "
-       fi
-       if \cp configure.in_new configure.in >& /dev/null
-       then
-               echo "done"
-       else
-               echo
-               echo "error, can't update previous configure.in"
-       fi
-fi
-
-########################################################################
-# Use autoconf to rebuild the configure script
-#
-
-if test -f configure
-then
-       echo -n "Updating 'configure' script ...  "
-else
-       echo -n "Creating 'configure' script ...  "
-fi
-
-aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files
-if autoconf
-then
-       echo "done"
-else
-       echo "failed (check file permissions and/or user quotas ...)"
-fi
-
-cd ${ORIG_DIR}
-
-echo
+mkdir -p salome_adm/unix/config_files
+#cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files/* salome_adm/unix/config_files
+#cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/pythonbe.py salome_adm/unix
+
+# remove KERNEL deprecated configure files
+#for deprecated in ac_cc_warnings.m4 ac_cxx_partial_specialization.m4 \
+#  check_mico.m4 config.guess ltmain.sh ac_cxx_bool.m4 ltconfig \
+#  ac_cxx_typename.m4 check_pthreads.m4 config.sub libtool.m4 ac_cxx_mutable.m4
+#do
+#  rm  salome_adm/unix/config_files/${deprecated}
+#done
+
+# remove KERNEL CVS directories in subdirectory salome_adm
+#for deprecated in CVS unix/CVS unix/config_files/CVS
+#do
+#  rm -rf salome_adm/${deprecated}
+#done
+
+cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/SALOMEconfig.h.in salome_adm/unix
+
+# ____________________________________________________________________
+# aclocal creates the aclocal.m4 file from the standard macro and the
+# custom macro embedded in the directory salome_adm/unix/config_files
+# and KERNEL config_files directory.
+# output:
+#   aclocal.m4
+#   autom4te.cache (directory)
+echo "====================================================== aclocal"
+
+aclocal -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
+        -I adm_local/unix/config_files  || exit 1
+
+# ____________________________________________________________________
+# libtoolize creates some configuration files (ltmain.sh,
+# config.guess and config.sub). It only depends on the libtool
+# version. The files are created in the directory specified with the
+# AC_CONFIG_AUX_DIR(<mydir>) tag (see configure.ac).
+# output:
+#   salome_adm/unix/config_files/config.guess
+#   salome_adm/unix/config_files/config.sub
+#   salome_adm/unix/config_files/ltmain.sh
+#echo "====================================================== libtoolize"
+
+libtoolize --force --copy --automake || exit 1
+
+# ____________________________________________________________________
+# make link to KERNEL configuration files to
+#ln -sf ${KERNEL_ROOT_DIR}/salome_adm .
+
+# ____________________________________________________________________
+# autoconf creates the configure script from the file configure.ac (or
+# configure.in if configure.ac doesn't exist)
+# output:
+#   configure
+echo "====================================================== autoconf"
+
+autoconf
+
+# ____________________________________________________________________
+# automake creates some scripts used in building process
+# (install-sh, missing, ...). It only depends on the automake
+# version. The files are created in the directory specified with the
+# AC_CONFIG_AUX_DIR(<mydir>) tag (see configure.ac). This step also
+# creates the Makefile.in files from the Makefile.am files.
+# output:
+#   salome_adm/unix/config_files/compile
+#   salome_adm/unix/config_files/depcomp
+#   salome_adm/unix/config_files/install-sh
+#   salome_adm/unix/config_files/missing
+#   salome_adm/unix/config_files/py-compile
+#   Makefile.in (from Makefile.am)
+echo "====================================================== automake"
+
+automake --copy --gnu --add-missing
diff --git a/clean_configure b/clean_configure
new file mode 100755 (executable)
index 0000000..be0b542
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+rm -rf autom4te.cache aclocal.m4 configure make_config
+find . -name "*~" -print -exec rm {} \;
+find . -name "*.pyc" -print -exec rm {} \;
+#exit
+# ==================== ON SORT AVANT
+
+find bin -name Makefile.in | xargs rm -f
+find doc -name Makefile.in | xargs rm -f
+find idl -name Makefile.in | xargs rm -f
+find resources -name Makefile.in | xargs rm -f
+find salome_adm -name Makefile.in | xargs rm -f
+find src -name Makefile.in | xargs rm -f
+rm -f Makefile.in
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..a1ec14b
--- /dev/null
@@ -0,0 +1,665 @@
+#
+# Author : Marc Tajchman (CEA)
+# Date : 28/06/2001
+# Modified by : Patrick GOLDBRONN (CEA)
+# Modified by : Marc Tajchman (CEA)
+# Modified by : Mikhail PONIKAROV (OCN) - autotools usage
+#
+# Created from configure.in.base
+#
+AC_INIT([Salome2 Project GUI module], [4.1.1], [webmaster.salome@opencascade.com], [salome])
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE
+
+XVERSION=`echo $VERSION | awk -F. '{printf("0x%02x%02x%02x",$1,$2,$3)}'`
+AC_SUBST(XVERSION)
+
+# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
+MODULE_NAME=gui
+AC_SUBST(MODULE_NAME)
+
+echo
+echo ---------------------------------------------
+echo Initialize source and build root directories
+echo ---------------------------------------------
+echo
+
+########################################################################
+# Check --disable-corba-gen and other --disable-* options
+
+if test "x${enable_corba_gen}" != "xno" ; then
+    GUI_DISABLE_CORBA="no"
+else 
+    GUI_DISABLE_CORBA="yes"
+fi
+
+if test "x${enable_pyConsole}" != "xno" ; then
+    DISABLE_PYCONSOLE="no"
+else 
+    DISABLE_PYCONSOLE="yes"
+fi
+
+if test "x${enable_glViewer}" != "xno" ; then
+    DISABLE_GLVIEWER="no"
+else 
+    DISABLE_GLVIEWER="yes"
+fi
+
+if test "x${enable_plot2dViewer}" != "xno" ; then
+    DISABLE_PLOT2DVIEWER="no"
+else 
+    DISABLE_PLOT2DVIEWER="yes"
+fi
+
+if test "x${enable_supervGraphViewer}" != "xno" ; then
+    DISABLE_SUPERVGRAPHVIEWER="no"
+else 
+    DISABLE_SUPERVGRAPHVIEWER="yes"
+fi
+
+if test "x${enable_occViewer}" != "xno" ; then
+    DISABLE_OCCVIEWER="no"
+else 
+    DISABLE_OCCVIEWER="yes"
+fi
+
+if test "x${enable_vtkViewer}" != "xno" ; then
+    DISABLE_VTKVIEWER="no"
+else 
+    DISABLE_VTKVIEWER="yes"
+fi
+
+if test "x${enable_salomeObject}" != "xno" ; then
+    DISABLE_SALOMEOBJECT="no"
+else 
+    DISABLE_SALOMEOBJECT="yes"
+fi
+
+if test "x${enable_qxGraphViewer}" != "xno" ; then
+    DISABLE_QXGRAPHVIEWER="no"
+else 
+    DISABLE_QXGRAPHVIEWER="yes"
+fi
+
+
+dnl
+dnl Initialize source and build root directories
+dnl
+
+ROOT_BUILDDIR=`pwd`
+ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+cd $ROOT_SRCDIR
+ROOT_SRCDIR=`pwd`
+cd $ROOT_BUILDDIR
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build  root directory : $ROOT_BUILDDIR
+echo
+echo
+
+if test -z "$AR"; then
+   AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+dnl Export the AR macro so that it will be placed in the libtool file
+dnl correctly.
+export AR
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+dnl
+dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
+
+echo
+echo ---------------------------------------------
+echo Coniguring production
+echo ---------------------------------------------
+echo
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+dnl Fix up the INSTALL macro if it s a relative path. We want the
+dnl full-path to the binary instead.
+case "$INSTALL" in
+   *install-sh*)
+      INSTALL='\${ROOT_BUILDDIR}'/salome_adm/unix/config_files/install-sh
+      ;;
+esac
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+dnl inutil car libtool
+dnl AC_PROG_CC
+AC_PROG_CXX
+AC_CXX_WARNINGS
+AC_CXX_TEMPLATE_OPTIONS
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+dnl
+dnl Well we use sstream which is not in gcc pre-2.95.3
+dnl We must test if it exists. If not, add it in include !
+dnl
+
+AC_CXX_HAVE_SSTREAM
+
+dnl
+dnl ---------------------------------------------
+dnl testing MPICH
+dnl ---------------------------------------------
+dnl
+
+CHECK_MPICH
+
+echo
+echo ---------------------------------------------
+echo testing LEX \& YACC
+echo ---------------------------------------------
+echo
+
+lex_yacc_ok=no
+AC_PROG_YACC
+AC_PROG_LEX
+lex_yacc_ok=yes
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing java
+dnl echo ---------------------------------------------
+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
+echo ---------------------------------------------
+echo
+
+AM_PATH_PYTHON(2.3)
+CHECK_SWIG
+fi
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
+echo
+echo ---------------------------------------------
+echo testing omniORB
+echo ---------------------------------------------
+echo
+
+CHECK_OMNIORB
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing mico
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_MICO
+
+echo
+echo ---------------------------------------------
+echo default ORB : omniORB
+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
+echo ---------------------------------------------
+echo
+
+CHECK_OPENGL
+
+echo
+echo ---------------------------------------------
+echo testing QT
+echo ---------------------------------------------
+echo
+
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo testing msg2qm
+echo ---------------------------------------------
+echo
+
+CHECK_MSG2QM
+
+echo
+echo ---------------------------------------------
+echo testing VTK
+echo ---------------------------------------------
+echo
+
+CHECK_VTK
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+echo
+echo ---------------------------------------------
+echo Testing sip
+echo ---------------------------------------------
+echo
+
+CHECK_SIP
+
+echo
+echo ---------------------------------------------
+echo Testing pyqt
+echo ---------------------------------------------
+echo
+
+CHECK_PYQT
+
+echo
+echo ---------------------------------------------
+echo Testing qwt
+echo ---------------------------------------------
+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
+
+echo
+echo ---------------------------------------------
+echo Testing QxGraphViewer
+echo ---------------------------------------------
+echo
+
+CHECK_QXGRAPHVIEWER
+echo "DISABLE_QXGRAPHVIEWER = "$DISABLE_QXGRAPHVIEWER
+
+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
+  if test "x${DISABLE_QXGRAPHVIEWER}" == "xyes" ; then
+    echo "failed : for full configuration of GUI module necessary enable QxGraphViewer !"
+    exit
+  fi
+fi
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+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 Testing libxml2
+echo ---------------------------------------------
+echo
+
+CHECK_LIBXML
+
+echo
+echo ---------------------------------------------
+echo Summary
+echo ---------------------------------------------
+echo
+
+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
+   printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+   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 We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+   AC_SUBST(SETX) SETX=":"
+else
+   AC_SUBST(SETX) SETX="set -x"
+fi
+
+AM_CONDITIONAL(GUI_ENABLE_CORBA, [test "$GUI_DISABLE_CORBA" = no])
+AM_CONDITIONAL(ENABLE_PYCONSOLE, [test "$DISABLE_PYCONSOLE" = no])
+AM_CONDITIONAL(ENABLE_GLVIEWER, [test "$DISABLE_GLVIEWER" = no])
+AM_CONDITIONAL(ENABLE_PLOT2DVIEWER, [test "$DISABLE_PLOT2DVIEWER" = no])
+AM_CONDITIONAL(ENABLE_SUPERVGRAPHVIEWER, [test "$DISABLE_SUPERVGRAPHVIEWER" = no])
+AM_CONDITIONAL(ENABLE_OCCVIEWER, [test "$DISABLE_OCCVIEWER" = no])
+AM_CONDITIONAL(ENABLE_VTKVIEWER, [test "$DISABLE_VTKVIEWER" = no])
+AM_CONDITIONAL(ENABLE_SALOMEOBJECT, [test "$DISABLE_SALOMEOBJECT" = no])
+AM_CONDITIONAL(ENABLE_QXGRAPHVIEWER, [test "$DISABLE_QXGRAPHVIEWER" = no])
+
+echo
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+dnl copy shells and utilities contained in the bin directory
+dnl excluding .in files (treated in AC-OUTPUT below) and CVS
+dnl directory
+
+mkdir -p bin/salome
+cd bin/salome
+
+for i in $ROOT_SRCDIR/bin/*
+do
+  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+  case "$local_bin" in
+        *.in | *~)                    ;;
+        ./bin/CVS | ./bin/salome)                    ;;
+        *) $INSTALL $i . ; echo $local_bin ;;
+  esac
+done
+cd $ROOT_BUILDDIR
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+AC_OUTPUT_COMMANDS([ \
+  chmod +x ./bin/*; \
+  chmod +x ./bin/salome/*; \
+])
+
+# This list is initiated using autoscan and must be updated manually
+# when adding a new file <filename>.in to manage. When you execute
+# autoscan, the Makefile list is generated in the output file configure.scan.
+# This could be helpfull to update de configuration.
+AC_OUTPUT([ \
+  ./salome_adm/unix/SALOMEconfig.h \
+  ./adm_local/Makefile \
+  ./adm_local/unix/Makefile \
+  ./adm_local/unix/config_files/Makefile \
+  ./bin/VERSION \
+  ./bin/Makefile \
+  ./GUI_version.h \
+  ./doc/Makefile \
+  ./doc/salome/Makefile \
+  ./doc/salome/gui/Makefile \
+  ./doc/salome/gui/GUI/doxyfile \
+  ./doc/salome/tui/Makefile \
+  ./doc/salome/tui/GUI/doxyfile \
+  ./src/Makefile \
+  ./src/CASCatch/Makefile \
+  ./src/Qtx/Makefile \
+  ./src/Style/Makefile \
+  ./src/DDS/Makefile \
+  ./src/QDS/Makefile \
+  ./src/SUIT/Makefile \
+  ./src/STD/Makefile \
+  ./src/CAF/Makefile \
+  ./src/CAM/Makefile \
+  ./src/SUITApp/Makefile \
+  ./src/LogWindow/Makefile \
+  ./src/ObjBrowser/Makefile \
+  ./src/Prs/Makefile \
+  ./src/OBJECT/Makefile \
+  ./src/GLViewer/Makefile \
+  ./src/VTKViewer/Makefile \
+  ./src/SVTK/Makefile \
+  ./src/OCCViewer/Makefile \
+  ./src/SOCC/Makefile \
+  ./src/PyInterp/Makefile \
+  ./src/PythonConsole/Makefile \
+  ./src/Plot2d/Makefile \
+  ./src/SPlot2d/Makefile \
+  ./src/SUPERVGraph/Makefile \
+  ./src/QxGraph/Makefile \
+  ./src/LightApp/Makefile \
+  ./src/ResExporter/Makefile \
+  ./src/RegistryDisplay/Makefile \
+  ./src/TOOLSGUI/Makefile \
+  ./src/Event/Makefile \
+  ./src/Session/Makefile \
+  ./src/SalomeApp/Makefile \
+  ./src/SalomeApp/Test/Makefile \
+  ./src/SALOME_SWIG/Makefile \
+  ./src/SALOME_SWIG/supervisionexample.py \
+  ./src/SALOME_SWIG/supervisiongeomexample.py \
+  ./src/SALOME_PY/Makefile \
+  ./src/SALOME_PYQT/Makefile \
+  ./src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile \
+  ./src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_SipDefs.h \
+  ./src/SALOME_PYQT/SalomePyQt/Makefile \
+  ./resources/Makefile \
+  ./idl/Makefile \
+  Makefile
+])
diff --git a/configure.in.base b/configure.in.base
deleted file mode 100644 (file)
index 4b7af75..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-#
-#  PLEASE DO NOT MODIFY configure.in FILE
-#
-#  ALL CHANGES WILL BE DISCARDED BY THE NEXT
-#  build_configure COMMAND
-#
-#  CHANGES MUST BE MADE IN configure.in.base FILE
-#
-#
-# Author : Marc Tajchman (CEA)
-# Date : 28/06/2001
-# Modified by : Patrick GOLDBRONN (CEA)
-# Modified by : Marc Tajchman (CEA)
-#
-# Created from configure.in.base
-#
-
-
-AC_INIT(src)
-AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files)
-AC_CANONICAL_HOST
-
-PACKAGE=salome
-AC_SUBST(PACKAGE)
-
-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
-dnl
-
-ROOT_BUILDDIR=`pwd`
-ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
-cd $ROOT_SRCDIR
-ROOT_SRCDIR=`pwd`
-cd $ROOT_BUILDDIR
-
-AC_SUBST(ROOT_SRCDIR)
-AC_SUBST(ROOT_BUILDDIR)
-
-echo
-echo Source root directory : $ROOT_SRCDIR
-echo Build  root directory : $ROOT_BUILDDIR
-echo
-echo
-
-if test -z "$AR"; then
-   AC_CHECK_PROGS(AR,ar xar,:,$PATH)
-fi
-AC_SUBST(AR)
-
-dnl Export the AR macro so that it will be placed in the libtool file
-dnl correctly.
-export AR
-
-echo
-echo ---------------------------------------------
-echo testing make
-echo ---------------------------------------------
-echo
-
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-dnl 
-dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
-
-AC_ENABLE_DEBUG(yes)
-AC_DISABLE_PRODUCTION
-
-echo ---------------------------------------------
-echo testing libtool
-echo ---------------------------------------------
-
-dnl first, we set static to no!
-dnl if we want it, use --enable-static
-AC_ENABLE_STATIC(no)
-
-AC_LIBTOOL_DLOPEN
-AC_PROG_LIBTOOL
-
-dnl Fix up the INSTALL macro if it s a relative path. We want the
-dnl full-path to the binary instead.
-case "$INSTALL" in
-   *install-sh*)
-      INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh
-      ;;
-esac
-
-echo
-echo ---------------------------------------------
-echo testing C/C++
-echo ---------------------------------------------
-echo
-
-cc_ok=no
-dnl inutil car libtool
-dnl AC_PROG_CC
-AC_PROG_CXX
-AC_CXX_WARNINGS
-AC_CXX_TEMPLATE_OPTIONS
-AC_DEPEND_FLAG
-# AC_CC_WARNINGS([ansi])
-cc_ok=yes
-
-dnl Library libdl :
-AC_CHECK_LIB(dl,dlopen)
-
-dnl add library libm :
-AC_CHECK_LIB(m,ceil)
-
-dnl 
-dnl Well we use sstream which is not in gcc pre-2.95.3
-dnl We must test if it exists. If not, add it in include !
-dnl
-
-AC_CXX_HAVE_SSTREAM
-
-dnl
-dnl ---------------------------------------------
-dnl testing MPICH
-dnl ---------------------------------------------
-dnl
-
-CHECK_MPICH
-
-echo
-echo ---------------------------------------------
-echo testing LEX \& YACC
-echo ---------------------------------------------
-echo
-
-lex_yacc_ok=no
-AC_PROG_YACC
-AC_PROG_LEX
-lex_yacc_ok=yes
-
-echo
-echo ---------------------------------------------
-echo testing python
-echo ---------------------------------------------
-echo
-
-CHECK_PYTHON
-
-dnl echo
-dnl echo ---------------------------------------------
-dnl echo testing java
-dnl echo ---------------------------------------------
-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
-echo ---------------------------------------------
-echo
-
-CHECK_SWIG
-fi
-
-echo
-echo ---------------------------------------------
-echo testing threads
-echo ---------------------------------------------
-echo
-
-ENABLE_PTHREADS
-
-if test "x${GUI_DISABLE_CORBA}" != "xyes" ; then
-echo
-echo ---------------------------------------------
-echo testing omniORB
-echo ---------------------------------------------
-echo
-
-CHECK_OMNIORB
-
-dnl echo
-dnl echo ---------------------------------------------
-dnl echo testing mico
-dnl echo ---------------------------------------------
-dnl echo
-
-dnl CHECK_MICO
-
-echo
-echo ---------------------------------------------
-echo default ORB : omniORB
-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
-echo ---------------------------------------------
-echo
-
-CHECK_OPENGL
-
-echo
-echo ---------------------------------------------
-echo testing QT
-echo ---------------------------------------------
-echo
-
-CHECK_QT
-
-echo
-echo ---------------------------------------------
-echo testing msg2qm
-echo ---------------------------------------------
-echo
-
-CHECK_MSG2QM
-
-echo
-echo ---------------------------------------------
-echo testing VTK
-echo ---------------------------------------------
-echo
-
-CHECK_VTK
-
-echo
-echo ---------------------------------------------
-echo testing HDF5
-echo ---------------------------------------------
-echo
-
-CHECK_HDF5
-
-echo
-echo ---------------------------------------------
-echo BOOST Library
-echo ---------------------------------------------
-echo
-
-CHECK_BOOST
-
-echo
-echo ---------------------------------------------
-echo Testing OpenCascade
-echo ---------------------------------------------
-echo
-
-CHECK_CAS
-
-echo
-echo ---------------------------------------------
-echo Testing sip
-echo ---------------------------------------------
-echo
-
-CHECK_SIP
-
-echo
-echo ---------------------------------------------
-echo Testing pyqt
-echo ---------------------------------------------
-echo
-
-CHECK_PYQT
-
-echo
-echo ---------------------------------------------
-echo Testing qwt
-echo ---------------------------------------------
-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
-echo ---------------------------------------------
-echo 
-
-CHECK_HTML_GENERATORS
-
-echo
-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
-
-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
-   printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
-   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=adm_local/unix/make_conclude
-AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
-
-dnl les dependences
-AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
-
-dnl We don t need to say when we re entering directories if we re using
-dnl GNU make becuase make does it for us.
-if test "X$GMAKE" = "Xyes"; then
-   AC_SUBST(SETX) SETX=":"
-else
-   AC_SUBST(SETX) SETX="set -x"
-fi
-
-# make other build directories
-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
-#   fi
-    $INSTALL -d $rep
-done
-
-echo 
-echo ---------------------------------------------
-echo copying resource files, shell scripts, and 
-echo xml files
-echo ---------------------------------------------
-echo
-
-
-dnl copy resources directories
-
-#for i in `find $ROOT_SRCDIR -name 'resources' -print`
-#do
-#  local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-#  local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
-#  mkdir -p $local_res_dir
-#  cd $local_res_dir
-#  ln -fs $i
-#  echo $local_res
-#  cd $ROOT_BUILDDIR
-#done
-
-dnl copy shells and utilities contained in the bin directory
-dnl excluding .in files (treated in AC-OUTPUT below) and CVS 
-dnl directory
-
-mkdir -p bin/salome
-cd bin/salome
-
-for i in $ROOT_SRCDIR/bin/*
-do
-  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-  case "$local_bin" in
-        *.in | *~)                    ;;
-        ./bin/CVS | ./bin/salome)                    ;;
-        *) $INSTALL $i . ; echo $local_bin ;;
-  esac
-done
-cd $ROOT_BUILDDIR
-
-AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
-
-dnl copy xml files to the build tree (lib directory)
-dnl pourquoi ????
-
-#cd lib
-#for i in `find $ROOT_SRCDIR -name "*.xml" -print`
-#do
-#  ln -fs $i
-#  echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-#done
-#cd $ROOT_BUILDDIR
-
-
-echo
-echo ---------------------------------------------
-echo generating Makefiles and configure files
-echo ---------------------------------------------
-echo
-
-AC_OUTPUT_COMMANDS([ \
-       chmod +x ./bin/* \
-])
-
-## do not delete this line
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..6a2c242
--- /dev/null
@@ -0,0 +1,27 @@
+#  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)
+# Date : 30/11/2001
+# $Header$
+#
+
+SUBDIRS= salome
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644 (file)
index 4a62d64..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#  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)
-# Date : 30/11/2001
-# $Header$
-#
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-SUBDIRS= salome
-
-@COMMENCE@
-
-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;    \
-       done
-
-distclean: clean
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-
-install:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-
-uninstall:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am
new file mode 100644 (file)
index 0000000..29f7e18
--- /dev/null
@@ -0,0 +1,41 @@
+#  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)
+# Date : 30/11/2001
+# $Header$
+#
+
+SUBDIRS= tui gui
+SUBDIRSTUI= tui
+SUBDIRSGUI= gui
+
+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;
diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in
deleted file mode 100644 (file)
index 72b2d98..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#  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)
-# Date : 30/11/2001
-# $Header$
-#
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-SUBDIRS= tui gui
-SUBDIRSTUI= tui
-SUBDIRSGUI= gui
-
-@COMMENCE@
-
-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; \
-
-clean:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          if test -d $$d/GUI; then                     \
-             (cd $$d && $(MAKE) $@) || exit 1; \
-          fi;                                  \
-       done
-
-distclean: clean
-       @@SETX@; for d in $(SUBDIRS); do        \
-          if test -d $$d/GUI; then             \
-             (cd $$d && $(MAKE) $@) || exit 1; \
-          fi;                                  \
-       done
-
-install:
-       $(MAKE) docs
-       @@SETX@; for d in $(SUBDIRS); do        \
-          if test -d $$d/GUI; then             \
-             (cd $$d && $(MAKE) $@);           \
-          fi;                                  \
-       done
-
-uninstall:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          if test -d $$d/GUI; then             \
-             (cd $$d && $(MAKE) $@) || exit 1; \
-          fi;                                  \
-       done; \
diff --git a/doc/salome/gui/GUI/closestudy.png b/doc/salome/gui/GUI/closestudy.png
deleted file mode 100755 (executable)
index fb7abe1..0000000
Binary files a/doc/salome/gui/GUI/closestudy.png and /dev/null differ
diff --git a/doc/salome/gui/GUI/cshdat_robohelp.htm b/doc/salome/gui/GUI/cshdat_robohelp.htm
deleted file mode 100755 (executable)
index 366ca9f..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="JavaScript">\r
-<!--\r
-\r
-var gArrayCsh = new Array();\r
-\r
-var gstrWindowOption = "";\r
-var gstrURL = "";\r
-var gbWithNavPane = false;\r
-\r
-function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
-{\r
-    this.strAliasId = strAliasId;\r
-    this.nTopicNum = nTopicNum;\r
-    this.strUrl = strUrl;\r
-}\r
-\r
-\r
-//Try to get to topic number from hash string\r
-function GetTopicNumberAuto(strMayBeNumber)\r
-{\r
-   var nNum = -1;\r
-   if (strMayBeNumber.length >= 1)\r
-   {\r
-               var strTmp = strMayBeNumber;\r
-               var iEnd = strTmp.length;\r
-               for (var i=0; i<iEnd; i++)\r
-               {\r
-                         var ch = strTmp.charAt(i);\r
-                         if (!((ch == "0") || (ch == "1") ||\r
-                               (ch == "2") || (ch == "3") ||\r
-                               (ch == "4") || (ch == "5") ||\r
-                               (ch == "6") || (ch == "7") ||\r
-                               (ch == "8") || (ch == "9")))\r
-                             return GetTopicNumberById(strTmp);\r
-               }\r
-               nNum = parseInt(strTmp);\r
-   }\r
-   return nNum;\r
-}\r
-\r
-function GetTopicNumber(strHashString)\r
-{\r
-       var nTopicEndPos = strHashString.indexOf(',')\r
-       if (nTopicEndPos == -1) { // no window option.\r
-               return GetTopicNumberOnly(strHashString);\r
-       }\r
-       else {\r
-               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
-               var strWithNavPane = 'withnavpane=true';\r
-               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
-               {\r
-                       if (strWindowOption.length > strWithNavPane.length)\r
-                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
-                       else\r
-                               gstrWindowOption = "";\r
-                       gbWithNavPane = true;\r
-               }\r
-               else\r
-                       gstrWindowOption = strWindowOption;\r
-               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
-       }\r
-}\r
-\r
-function GetTopicNumberOnly(strTopicString)\r
-{\r
-       var nEqualPos = strTopicString.indexOf('=');\r
-       if (nEqualPos == -1) {\r
-               return GetTopicNumberAuto(strTopicString);\r
-       }\r
-       else {\r
-               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
-               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
-                       return parseInt(strValue);\r
-               } else if (strTopicString.toLowerCase().indexOf("context") == 0) {\r
-                       return GetTopicNumberById(strValue);\r
-               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
-                       gstrURL = strValue;\r
-                       return -1;\r
-               }\r
-\r
-       }\r
-}\r
-\r
-//Find HomePage of the WebHelp system\r
-// we try to get the topic from remote project if it exists.\r
-function RedirectToHomePage()\r
-{\r
-       if (parent && parent != this && parent.goNext)\r
-       {\r
-               var sHome = parent.goNext();\r
-               if (sHome != "")\r
-                       RedirectTo(sHome);\r
-       }\r
-}\r
-\r
-function getHomePage()\r
-{\r
-       if (parent && parent != this && parent.getRelHomePage)\r
-       {\r
-               return parent.getRelHomePage(document.location.href);\r
-       }\r
-       return "";\r
-}\r
-\r
-function addRemoteProject(strPath)\r
-{\r
-       if (parent && parent != this && parent.addProject)\r
-       {\r
-               parent.addProject(strPath);\r
-       }\r
-}\r
-\r
-//Redirect page to...\r
-function RedirectTo(strUrl)\r
-{\r
-   if (gstrWindowOption.length != 0) {\r
-               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
-               // close current window and rename the stub window to current window.\r
-               if (wnd)\r
-                       wnd.focus();\r
-               if (parent)\r
-                       parent.close();\r
-   }\r
-   else {\r
-       parent.document.location.href = strUrl;\r
-       window.focus();\r
-  }\r
-}\r
-\r
-//Prompt the user that we can not find...\r
-function FailToFind(strMsg)\r
-{\r
-    RedirectToHomePage();\r
-}\r
-\r
-//Find topic by topic number (defined in h file)\r
-function FindTopicByTopicNum(nTopicNum)\r
-{\r
-       var i = 0;\r
-       var iEnd = gArrayCsh.length;\r
-       for (i=0; i<iEnd; i++)\r
-       {\r
-               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
-               {\r
-                       var strURL = gArrayCsh[i].strUrl;\r
-                       if (gbWithNavPane)\r
-                       {\r
-                               var strHomePage = getHomePage();\r
-                               if (strHomePage.length != 0)\r
-                                       strURL = strHomePage + strURL;\r
-                       }       \r
-                       RedirectTo(strURL);\r
-                       return true;\r
-               }\r
-       }\r
-       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
-       return false;\r
-}\r
-\r
-var oldPrefix = "HelpIdFromHTMLHelp_"\r
-//Find topic by topic id (alias id defined in ali file)\r
-function GetTopicNumberById(strTopicId)\r
-{\r
-   if (strTopicId.indexOf(oldPrefix) == 0)\r
-   {\r
-               strTopicId = strTopicId.substring(oldPrefix.length);\r
-   }\r
-\r
-   var i = 0;\r
-   var iEnd = gArrayCsh.length;\r
-   for (i=0; i<iEnd; i++)\r
-   {\r
-       if (gArrayCsh[i].strAliasId.toLowerCase() == strTopicId.toLowerCase())\r
-       {\r
-           return gArrayCsh[i].nTopicNum;\r
-        }\r
-   }\r
-   gstrURL = "";\r
-   return -1;\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
-{\r
-   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-\r
-function getHash()\r
-{\r
-       if (parent && parent != this)\r
-               return parent.location.hash;\r
-       else\r
-               return "";\r
-}\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-\r
-\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-//Find CSH according to hash string after this page\r
-if (getHash().length > 0)\r
-{\r
-   // VH 05/16/00 now support \r
-   // TopicID=\r
-   // TopicNumber=\r
-   // RemoteURL=   \r
-   // and WindowsOptions\r
-   // with the format #a=xxx,b=xxx,c=xxx...\r
-   var strHashString = getHash().toString();\r
-   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
-   // so here need to change it back.\r
-   strHashString = strHashString.substring(1,strHashString.length);\r
-   strHashString = strHashString.replace("%072%057%057", "://");\r
-   var nTopicNum = GetTopicNumber(strHashString);\r
-\r
-   if (nTopicNum != -1)\r
-   {\r
-      FindTopicByTopicNum(nTopicNum);\r
-   }\r
-   else\r
-   {\r
-      if (gstrURL.length > 0) \r
-       RedirectTo(gstrURL);\r
-      else\r
-       RedirectToHomePage();\r
-   }\r
-}\r
-else\r
-{\r
-   RedirectToHomePage();\r
-}\r
-//-->\r
-</script>\r
-<noscript>\r
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
-</noscript>\r
-</body>\r
-</html>\r
-\r
-\r
-\r
-\r
-\r
-\r
diff --git a/doc/salome/gui/GUI/cshdat_webhelp.htm b/doc/salome/gui/GUI/cshdat_webhelp.htm
deleted file mode 100755 (executable)
index e0927b0..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="JavaScript">\r
-<!--\r
-\r
-var gArrayCsh = new Array();\r
-\r
-var gstrWindowOption = "";\r
-var gstrURL = "";\r
-var gbWithNavPane = false;\r
-\r
-function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
-{\r
-    this.strAliasId = strAliasId;\r
-    this.nTopicNum = nTopicNum;\r
-    this.strUrl = strUrl;\r
-}\r
-\r
-\r
-//Try to get to topic number from hash string\r
-function GetTopicNumberAuto(strMayBeNumber)\r
-{\r
-   var nNum = -1;\r
-   if (strMayBeNumber.length >= 1)\r
-   {\r
-               var strTmp = strMayBeNumber;\r
-               var iEnd = strTmp.length;\r
-               for (var i=0; i<iEnd; i++)\r
-               {\r
-                         var ch = strTmp.charAt(i);\r
-                         if (!((ch == "0") || (ch == "1") ||\r
-                               (ch == "2") || (ch == "3") ||\r
-                               (ch == "4") || (ch == "5") ||\r
-                               (ch == "6") || (ch == "7") ||\r
-                               (ch == "8") || (ch == "9")))\r
-                             return GetTopicNumberById(strTmp);\r
-               }\r
-               nNum = parseInt(strTmp);\r
-   }\r
-   return nNum;\r
-}\r
-\r
-function GetTopicNumber(strHashString)\r
-{\r
-       var nTopicEndPos = strHashString.indexOf(',')\r
-       if (nTopicEndPos == -1) { // no window option.\r
-               return GetTopicNumberOnly(strHashString);\r
-       }\r
-       else {\r
-               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
-               var strWithNavPane = 'withnavpane=true';\r
-               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
-               {\r
-                       if (strWindowOption.length > strWithNavPane.length)\r
-                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
-                       else\r
-                               gstrWindowOption = "";\r
-                       gbWithNavPane = true;\r
-               }\r
-               else\r
-                       gstrWindowOption = strWindowOption;\r
-               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
-       }\r
-}\r
-\r
-function GetTopicNumberOnly(strTopicString)\r
-{\r
-       var nEqualPos = strTopicString.indexOf('=');\r
-       if (nEqualPos == -1) {\r
-               return GetTopicNumberAuto(strTopicString);\r
-       }\r
-       else {\r
-               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
-               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
-                       return parseInt(strValue);\r
-               } else if (strTopicString.toLowerCase().indexOf("topicid") == 0) {\r
-                       return GetTopicNumberById(strValue);\r
-               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
-                       gstrURL = strValue;\r
-                       return -1;\r
-               }\r
-\r
-       }\r
-}\r
-\r
-//Find HomePage of the WebHelp system\r
-// we try to get the topic from remote project if it exists.\r
-function RedirectToHomePage()\r
-{\r
-       if (parent && parent != this && parent.goNext)\r
-       {\r
-               var sHome = parent.goNext();\r
-               if (sHome != "")\r
-                       RedirectTo(sHome);\r
-       }\r
-}\r
-\r
-function getHomePage()\r
-{\r
-       if (parent && parent != this && parent.getRelHomePage)\r
-       {\r
-               return parent.getRelHomePage(document.location.href);\r
-       }\r
-       return "";\r
-}\r
-\r
-function addRemoteProject(strPath)\r
-{\r
-       if (parent && parent != this && parent.addProject)\r
-       {\r
-               parent.addProject(strPath);\r
-       }\r
-}\r
-\r
-//Redirect page to...\r
-function RedirectTo(strUrl)\r
-{\r
-   if (gstrWindowOption.length != 0) {\r
-               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
-               // close current window and rename the stub window to current window.\r
-               wnd.focus();\r
-               if (parent)\r
-                       parent.close();\r
-   }\r
-   else {\r
-       parent.document.location.href = strUrl;\r
-       window.focus();\r
-  }\r
-}\r
-\r
-//Prompt the user that we can not find...\r
-function FailToFind(strMsg)\r
-{\r
-    RedirectToHomePage();\r
-}\r
-\r
-//Find topic by topic number (defined in h file)\r
-function FindTopicByTopicNum(nTopicNum)\r
-{\r
-       var i = 0;\r
-       var iEnd = gArrayCsh.length;\r
-       for (i=0; i<iEnd; i++)\r
-       {\r
-               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
-               {\r
-                       var strURL = gArrayCsh[i].strUrl;\r
-                       if (gbWithNavPane)\r
-                       {\r
-                               var strHomePage = getHomePage();\r
-                               if (strHomePage.length != 0)\r
-                                       strURL = strHomePage + strURL;\r
-                       }       \r
-                       RedirectTo(strURL);\r
-                       return true;\r
-               }\r
-       }\r
-       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
-       return false;\r
-}\r
-\r
-//Find topic by topic id (alias id defined in ali file)\r
-function GetTopicNumberById(strTopicId)\r
-{\r
-   var i = 0;\r
-   var iEnd = gArrayCsh.length;\r
-   for (i=0; i<iEnd; i++)\r
-   {\r
-       if (gArrayCsh[i].strAliasId == strTopicId)\r
-       {\r
-           return gArrayCsh[i].nTopicNum;\r
-        }\r
-   }\r
-   gstrURL = "";\r
-   return -1;\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
-{\r
-   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-\r
-function getHash()\r
-{\r
-       if (parent && parent != this)\r
-               return parent.location.hash;\r
-       else\r
-               return "";\r
-}\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-\r
-\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-//Find CSH according to hash string after this page\r
-if (getHash().length > 0)\r
-{\r
-   // VH 05/16/00 now support \r
-   // TopicID=\r
-   // TopicNumber=\r
-   // RemoteURL=   \r
-   // and WindowsOptions\r
-   // with the format #a=xxx,b=xxx,c=xxx...\r
-   var strHashString = getHash().toString();\r
-   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
-   // so here need to change it back.\r
-   strHashString = strHashString.substring(1,strHashString.length);\r
-   strHashString = strHashString.replace("%072%057%057", "://");\r
-   var nTopicNum = GetTopicNumber(strHashString);\r
-\r
-   if (nTopicNum != -1)\r
-   {\r
-      FindTopicByTopicNum(nTopicNum);\r
-   }\r
-   else\r
-   {\r
-      if (gstrURL.length > 0) \r
-       RedirectTo(gstrURL);\r
-      else\r
-       RedirectToHomePage();\r
-   }\r
-}\r
-else\r
-{\r
-   RedirectToHomePage();\r
-}\r
-//-->\r
-</script>\r
-<noscript>\r
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
-</noscript>\r
-</body>\r
-</html>\r
-\r
-\r
-\r
-\r
-\r
-\r
diff --git a/doc/salome/gui/GUI/default.css b/doc/salome/gui/GUI/default.css
deleted file mode 100755 (executable)
index de2e5d9..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-BODY { \r
-      background-color:#ffffff; \r
-      font-family:"Times New Roman" , serif;  }\r
-H1 { \r
-    font-weight:bold; \r
-    font-size:24.0pt;  }\r
-LI.kadov-H1 { \r
-             font-weight:bold; \r
-             font-size:24.0pt;  }\r
-H2 { \r
-    font-weight:bold; \r
-    font-size:18.0pt;  }\r
-LI.kadov-H2 { \r
-             font-weight:bold; \r
-             font-size:18.0pt;  }\r
-H3 { \r
-    font-weight:bold; \r
-    font-size:14.0pt;  }\r
-LI.kadov-H3 { \r
-             font-weight:bold; \r
-             font-size:14.0pt;  }\r
-H4 { \r
-    font-weight:bold; \r
-    font-size:12.0pt;  }\r
-LI.kadov-H4 { \r
-             font-weight:bold; \r
-             font-size:12.0pt;  }\r
-H5 { \r
-    font-weight:bold; \r
-    font-size:10.0pt;  }\r
-LI.kadov-H5 { \r
-             font-weight:bold; \r
-             font-size:10.0pt;  }\r
-H6 { \r
-    font-weight:bold; \r
-    font-size:8.0pt;  }\r
-LI.kadov-H6 { \r
-             font-weight:bold; \r
-             font-size:8.0pt;  }\r
-P { \r
-   font-size:12.0pt; \r
-   margin-top:0pt; \r
-   margin-bottom:0pt;  }\r
-LI.kadov-P { \r
-            font-size:12.0pt;  }\r
-A.expandspot { \r
-              color:#008000; \r
-              cursor:hand; \r
-              font-style:italic; \r
-              x-text-underline:off; \r
-              x-text-overline:off; \r
-              x-text-line-through:off; \r
-              text-decoration:none none none;  }\r
-SPAN.expandtext { \r
-                 font-style:italic; \r
-                 font-weight:normal; \r
-                 color:#ff0000;  }\r
-A.dropspot { \r
-            cursor:hand; \r
-            color:#008000; \r
-            font-style:italic; \r
-            x-text-underline:off; \r
-            x-text-overline:off; \r
-            x-text-line-through:off; \r
-            text-decoration:none none none;  }\r
-A.glossterm { \r
-             color:#800000; \r
-             cursor:hand; \r
-             font-style:italic; \r
-             x-text-underline:off; \r
-             x-text-overline:off; \r
-             x-text-line-through:off; \r
-             text-decoration:none none none;  }\r
-SPAN.glosstext { \r
-                font-style:italic; \r
-                font-weight:normal; \r
-                color:#0000ff;  }\r
-OL { \r
-    margin-top:0px; \r
-    margin-bottom:0px;  }\r
-UL { \r
-    margin-top:0px; \r
-    margin-bottom:0px;  }\r
-A:active {  }\r
-A:hover { \r
-         x-text-underline:Off; \r
-         text-decoration:none;  }\r
-A:link { \r
-        x-text-underline:Off; \r
-        text-decoration:none;  }\r
-A:visited { \r
-           x-text-underline:Off; \r
-           text-decoration:none;  }\r
-P.TODO { \r
-        font-weight:normal; \r
-        font-style:italic; \r
-        font-family:"Arial Black" , sans-serif;  }\r
-LI.kadov-P-CTODO { \r
-                  font-weight:normal; \r
-                  font-style:italic; \r
-                  font-family:"Arial Black" , sans-serif;  }\r
diff --git a/doc/salome/gui/GUI/default_ns.css b/doc/salome/gui/GUI/default_ns.css
deleted file mode 100755 (executable)
index 3eeb3c4..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-BODY { \r
-      background-color:#ffffff; \r
-      font-family:"Times New Roman"  , serif;  }\r
-H1 { \r
-    font-weight:bold; \r
-    font-size:24.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H1 { \r
-             font-weight:bold; \r
-             font-size:24.0pt;  }\r
-H2 { \r
-    font-weight:bold; \r
-    font-size:18.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H2 { \r
-             font-weight:bold; \r
-             font-size:18.0pt;  }\r
-H3 { \r
-    font-weight:bold; \r
-    font-size:14.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H3 { \r
-             font-weight:bold; \r
-             font-size:14.0pt;  }\r
-H4 { \r
-    font-weight:bold; \r
-    font-size:12.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H4 { \r
-             font-weight:bold; \r
-             font-size:12.0pt;  }\r
-H5 { \r
-    font-weight:bold; \r
-    font-size:10.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H5 { \r
-             font-weight:bold; \r
-             font-size:10.0pt;  }\r
-H6 { \r
-    font-weight:bold; \r
-    font-size:8.0pt; \r
-    font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-H6 { \r
-             font-weight:bold; \r
-             font-size:8.0pt;  }\r
-P { \r
-   font-size:12.0pt; \r
-   margin-top:1pt; \r
-   margin-bottom:1pt; \r
-   font-family:"Times New Roman"  , serif;  }\r
-LI.kadov-P { \r
-            font-size:12.0pt;  }\r
-A.expandspot { \r
-              color:#008000; \r
-              cursor:hand; \r
-              font-style:italic; \r
-              x-text-underline:off; \r
-              x-text-overline:off; \r
-              x-text-line-through:off; \r
-              text-decoration:none none none;  }\r
-SPAN.expandtext { \r
-                 font-style:italic; \r
-                 font-weight:normal; \r
-                 color:#ff0000;  }\r
-A.dropspot { \r
-            cursor:hand; \r
-            color:#008000; \r
-            font-style:italic; \r
-            x-text-underline:off; \r
-            x-text-overline:off; \r
-            x-text-line-through:off; \r
-            text-decoration:none none none;  }\r
-A.glossterm { \r
-             color:#800000; \r
-             cursor:hand; \r
-             font-style:italic; \r
-             x-text-underline:off; \r
-             x-text-overline:off; \r
-             x-text-line-through:off; \r
-             text-decoration:none none none;  }\r
-SPAN.glosstext { \r
-                font-style:italic; \r
-                font-weight:normal; \r
-                color:#0000ff;  }\r
-OL { \r
-    margin-top:0px; \r
-    margin-bottom:0px; \r
-    font-family:"Times New Roman"  , serif;  }\r
-UL { \r
-    margin-top:0px; \r
-    margin-bottom:0px; \r
-    font-family:"Times New Roman"  , serif;  }\r
-A:active {  }\r
-A:hover { \r
-         x-text-underline:Off; \r
-         text-decoration:none;  }\r
-A:link { \r
-        x-text-underline:Off; \r
-        text-decoration:none;  }\r
-A:visited { \r
-           x-text-underline:Off; \r
-           text-decoration:none;  }\r
-P.TODO { \r
-        font-weight:normal; \r
-        font-style:italic; \r
-        font-family:"Arial Black"  , sans-serif;  }\r
-LI.kadov-P-CTODO { \r
-                  font-weight:normal; \r
-                  font-style:italic; \r
-                  font-family:"Arial Black"  , sans-serif;  }\r
-ol ol { \r
-       margin-top:1px;  }\r
-ol ul { \r
-       margin-top:1px;  }\r
-ul ul { \r
-       margin-top:1px;  }\r
-ul ol { \r
-       margin-top:1px;  }\r
diff --git a/doc/salome/gui/GUI/doxyfile.in b/doc/salome/gui/GUI/doxyfile.in
new file mode 100755 (executable)
index 0000000..dfb7f36
--- /dev/null
@@ -0,0 +1,44 @@
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME      = "GUI Module Reference Manual v.@VERSION@"
+OUTPUT_DIRECTORY  = ./
+CREATE_SUBDIRS   = NO
+OUTPUT_LANGUAGE   = English
+TAB_SIZE          = 5
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET             = NO
+WARNINGS          = YES
+
+#---------------------------------------------------------------------------
+#Input related options
+#---------------------------------------------------------------------------
+INPUT             = @srcdir@/input               
+FILE_PATTERNS     = *.doc
+IMAGE_PATH        = @srcdir@/images
+
+#---------------------------------------------------------------------------
+#HTML related options
+#---------------------------------------------------------------------------
+GENERATE_HTML     = YES
+HTML_OUTPUT       = ./
+HTML_HEADER       = @srcdir@/static/header.html
+HTML_FOOTER       = @srcdir@/static/footer.html
+#HTML_STYLESHEET  = @srcdir@/static/doxygen.css
+TOC_EXPAND        = YES
+DISABLE_INDEX     = NO
+GENERATE_TREEVIEW = YES
+TREEVIEW_WIDTH    = 300
+
+#---------------------------------------------------------------------------
+#LaTeX related option
+#---------------------------------------------------------------------------
+GENERATE_LATEX    = NO
+
+#---------------------------------------------------------------------------
+#RTF related options
+#---------------------------------------------------------------------------
+GENERATE_RTF      = NO
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/dump_study.htm b/doc/salome/gui/GUI/dump_study.htm
deleted file mode 100755 (executable)
index 660565d..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Dump Study</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; margin-left:40px; }\r
-img_whs2 { border:none; width:461px; height:270px; float:none; border-style:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { margin-left:48px; }\r
-p.whs5 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs6 { margin-left:0px; }\r
-p.whs7 { margin-left:40px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
-  var strNSS = "<style type='text/css'>";\r
-  strNSS += "p.whs6 {margin-left:1pt; }";\r
-  strNSS +="</style>";\r
-  document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nStudy management\nWorking with Python Scripts");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Working with Python Scripts</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>SALOME </B></span>Platform can be launched \r
- in the batch mode, without Graphical User Interface, and operated with \r
- the use of Python scripts, which can fulfill most of the necessary tasks, \r
- however, the process of scripting is quite time consuming and rather error-prone. \r
- </p>\r
-\r
-<p>This problem has been resolved by the possibility to automatically generate \r
- a set of Python scripts from data created with SALOME GUI, which greatly \r
- increases the productivity of using SALOME platform in the batch mode. \r
- This mechanism can convert a SALOMEDS Study in one or several Python scripts, \r
- which can be stored and imported later to re-create the content of the \r
- original study. The first script is a SALOMEDS document, which re-creates \r
- the SALOMEDS Study, adds the stored Salome components to the SALOMEDS \r
- and automatically calls Python scripts of the second type containing component \r
- specific Python function calls. This architecture gives great flexibility \r
- in manual modification of the generated scripts because you can modify \r
- only one of the component specific Python scripts without touching others, \r
- thus avoiding expert knowledge of Python API of unused components. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>To Dump a &nbsp;SALOME \r
- Study in one or several scripts, in the main menu select <span style="font-weight: bold;"><B>File</B></span> \r
- --&gt; <span style="font-weight: bold;"><B>Dump study</B></span></p>\r
-\r
-<p>The following dialog box allowing to browse for the location and define \r
- the name for a Python file will appear: </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1"><img src="pics/dumpstudy.png" x-maintain-ratio="TRUE" width="461px" height="270px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Publish \r
- in study - </B></span>if checked in, the component objects created by Python \r
- commands will be published in the created Study when the script is played, \r
- otherwise the objects will not be published in the Study.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Save \r
- GUI state</B></span> - if checked in, the current application layout will \r
- be saved in the Python file. &nbsp;</p></li>\r
-</ul>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs5">To \r
- confirm your choice click <span style="font-weight: bold;"><B>Save</B></span>.</p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<p class="whs6">Reversibly it is possible to load a saved \r
- Python Script selecting in the main menu <span style="font-weight: bold;"><B>File</B></span> \r
- -&gt; <span style="font-weight: bold;"><B>Load Script</B></span>. </p>\r
-\r
-<p class="whs6">&nbsp;</p>\r
-\r
-<p class="whs7"><img src="pics/loadscript.png" x-maintain-ratio="TRUE" width="461px" height="270px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs5">To \r
- confirm your choice click <span style="font-weight: bold;"><B>Open.</B></span></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/ehelp.xml b/doc/salome/gui/GUI/ehelp.xml
deleted file mode 100755 (executable)
index 9884c42..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0"?>\r
-<!DOCTYPE SYSTEM "ehelpopt.dtd">\r
-<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="28977072_6eb4_11d8_af12_000102ad571a">\r
-</FILE-OPTIONS>\r
-<EHELP-OPTIONS FORMAT-VERSION="1.0">\r
- <OPTIONS ENABLED="NO" EMBEDDED="YES" MAIN-WINDOW-ONLY="NO" COMMUNITY-NOTIFY="NO" FIRST-PAGE="NOT-SET">\r
- </OPTIONS>\r
- <BUTTON-LABEL>WebSearch\r
- </BUTTON-LABEL>\r
-</EHELP-OPTIONS>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/ehlpdhtm.js b/doc/salome/gui/GUI/ehlpdhtm.js
deleted file mode 100755 (executable)
index 6cfd2e4..0000000
+++ /dev/null
@@ -1,4239 +0,0 @@
-// eHelp® Corporation Dynamic HTML JavaScript \r
-// Copyright© 1998-2003 eHelp® Corporation.All rights reserved.\r
-// Version=4.82\r
-\r
-// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.\r
-\r
-//// Segment Begin -- (JavaScript 1.0)\r
-\r
-/// Section Begin - General and relative topics(JavaScript 1.0)\r
-\r
-//{{HH_SYMBOL_SECTION\r
-var HH_ChmFilename = "";\r
-var HH_WindowName = "";\r
-var HH_GlossaryFont = "";\r
-var HH_Glossary = "";\r
-var HH_Avenue = "";\r
-var HH_ActiveX = false;\r
-//}}HH_SYMBOL_SECTION\r
-\r
-//Begin to support previous generic parameters\r
-//Get the information about the browser.\r
-var gstrBsAgent        = navigator.userAgent.toLowerCase();\r
-var gnBsVer                    = parseInt(navigator.appVersion);\r
-\r
-var gbBsOpera          = (gstrBsAgent.indexOf('opera') != -1);\r
-var gbBsKonqueror      = (gstrBsAgent.indexOf('konqueror') != -1);\r
-var gbBsSafari         = (gstrBsAgent.indexOf('safari') != -1);\r
-var gbBsIE             = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
-var gbBsNS             = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
-\r
-var gbBsMac                    = (gstrBsAgent.indexOf('mac') != -1);\r
-var gbBsWindows                = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
-var gbBsSunOS          = (gstrBsAgent.indexOf("sunos") != -1);\r
-\r
-var gbBsIE3Before      = ((gbBsIE) && (gnBsVer <= 2));\r
-var gbBsNS3Before      = ((gbBsNS) && (gnBsVer <= 3));\r
-\r
-var gbBsNS2                    = ((gbBsNS) && (gnBsVer <= 2));\r
-var gbBsNS3                    = ((gbBsNS) && (gnBsVer == 3));\r
-var gbBsIE300301       = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1)));\r
-var gbBsIE302          = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1));\r
-\r
-var gbBsNS4                    = ((gbBsNS) && (gnBsVer >= 4));\r
-var gbBsNS6                    = ((gbBsNS) && (gnBsVer >= 5));\r
-var    gbBsNS7                 = false;\r
-\r
-var gbBsIE4                    = ((gbBsIE) && (gnBsVer >= 4));\r
-var gbBsIE5                    = false;\r
-var gbBsIE55           = false;\r
-\r
-var gbBsOpera6         = false;\r
-var gbBsOpera7         = false;\r
-\r
-var gbBsKonqueror3     = false;\r
-\r
-\r
-\r
-gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;;\r
-if (gbBsIE)\r
-{\r
-       if (parseInt(navigator.appVersion) >= 4) {\r
-               gbBsIE4 = true;\r
-               if (gbBsIE4) {\r
-                       var nPos = gstrBsAgent.indexOf("msie");\r
-                       var strIEversion = gstrBsAgent.substring(nPos + 5);\r
-                       var nVersion =  parseFloat(strIEversion);\r
-                       if (nVersion >= 5)\r
-                               gbBsIE5 = true;\r
-                       if (nVersion >= 5.5)\r
-                               gbBsIE55 = true;\r
-               }\r
-       }\r
-}\r
-if (gbBsNS6)\r
-{\r
-       var nPos=gstrBsAgent.indexOf("gecko");\r
-       if(nPos!=-1)\r
-       {\r
-               var nPos2=gstrBsAgent.indexOf("/", nPos);\r
-               if(nPos2!=-1)\r
-               {\r
-                       var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));\r
-                       if (nVersion>=20020823)\r
-                               gbBsNS7=true;\r
-               }\r
-       }       \r
-}\r
-if (gbBsOpera)\r
-{\r
-       var nPos = gstrBsAgent.indexOf("opera");\r
-       if(nPos!=-1)\r
-       {\r
-               var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));\r
-               if (nVersion >= 6)\r
-               {\r
-                       gbBsOpera6=true;\r
-                       if (nVersion >=7)\r
-                               gbBsOpera7=true;        \r
-               }\r
-       }\r
-}\r
-if (gbBsKonqueror)\r
-{\r
-       var nPos = gstrBsAgent.indexOf("konqueror");\r
-       if(nPos!=-1)\r
-       {\r
-               var nVersion = parseFloat(gstrBsAgent.substring(nPos+10));\r
-               if (nVersion >= 3)\r
-               {\r
-                       gbBsKonqueror3=true;\r
-               }\r
-       }\r
-}\r
-\r
-function insertAdjacentHTML(obj, where, htmlStr)\r
-{\r
-       if (gbBsIE || gbBsOpera7)\r
-       {\r
-               obj.insertAdjacentHTML(where, htmlStr);\r
-       }\r
-       else if (gbBsNS6 || gbBsSafari)\r
-       {\r
-               var r = obj.ownerDocument.createRange();\r
-               r.setStartBefore(obj);\r
-               var     parsedHTML = r.createContextualFragment(htmlStr);\r
-               \r
-               switch (where){\r
-               case 'beforeBegin':\r
-                       obj.parentNode.insertBefore(parsedHTML,obj);\r
-                       break;\r
-               case 'afterBegin':\r
-                       obj.insertBefore(parsedHTML,obj.firstChild);\r
-                       break;\r
-               case 'beforeEnd':\r
-                       obj.appendChild(parsedHTML);\r
-                       break;\r
-               case 'afterEnd':\r
-                       if (obj.nextSibling){\r
-                       obj.parentNode.insertBefore(parsedHTML,obj.nextSibling);\r
-                       } else {\r
-                       obj.parentNode.appendChild(parsedHTML);\r
-                       }\r
-                       break;\r
-               }\r
-       }\r
-}\r
-\r
-// Utilities functions.\r
-function BsscHasExtJs()\r
-{\r
-       if( gbBsIE3Before || gbBsNS3Before)\r
-               return false;\r
-       return true;\r
-}\r
-\r
-// Register event handler\r
-var gBsOnLoads                         = new Array();  // An array holds all the onload event handler.\r
-var gBsOnClicks                = new Array();  // An array holds all the onClick event handler.\r
-var gBsOnUnLoads               = new Array();  // An array holds all the OnUnLoad event handler.\r
-var gBsOnMouseOvers    = new Array();  // An array holds all the OnMouseOver event handler.\r
-var gBsOnMouseOuts             = new Array();  // An array holds all the OnMouseOut event handler.\r
-\r
-var gbOrignalOnMouseDown = null;\r
-\r
-function BsscRegisterOnLoad(funcHandler)\r
-{\r
-       var nLength = gBsOnLoads.length;\r
-       gBsOnLoads[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnClick(funcHandler)\r
-{\r
-       var nLength = gBsOnClicks.length;\r
-       gBsOnClicks[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnUnLoad(funcHandler)\r
-{\r
-       var nLength = gBsOnUnLoads.length;\r
-       gBsOnUnLoads[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnMouseOver(funcHandler)\r
-{\r
-       var nLength = gBsOnMouseOvers.length;\r
-       gBsOnMouseOvers[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnMouseOut(funcHandler)\r
-{\r
-       var nLength = gBsOnMouseOuts.length;\r
-       gBsOnMouseOuts[nLength] = funcHandler;\r
-}\r
-\r
-function BsGeneralOnLoad()\r
-{\r
-       if (!gbBsIE4 && !gbBsNS4)\r
-               return;\r
-\r
-       // Make everything visible in navigator\r
-       if (gbBsNS4 && !gbBsNS6) {\r
-               // Make some special effects items visible\r
-               for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {\r
-                       document.layers[iLayer].visibility = "show";\r
-                       document.layers[iLayer].left = 0;\r
-               }\r
-       }\r
-}\r
-\r
-// If resize the netscape browser, need to reload it.\r
-function BsReDo()\r
-{\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-// End of the local functions.\r
-\r
-// The following functions are used by the html files.\r
-function BSSCOnLoad()\r
-{\r
-       if( !BsscHasExtJs() )\r
-               return;\r
-       for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--)\r
-               gBsOnLoads[nElement]();\r
-}\r
-\r
-function BSSCOnClick()\r
-{\r
-       if (!BsscHasExtJs()) return;\r
-               \r
-       for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--)\r
-               gBsOnClicks[nElement]();\r
-}\r
-\r
-function BSSCOnUnload()\r
-{\r
-       if (!BsscHasExtJs()) return;\r
-       for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)\r
-               gBsOnUnLoads[nElement]();\r
-}\r
-\r
-function BSSCOnMouseOver()\r
-{\r
-       if (!BsscHasExtJs()) return;\r
-       for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)\r
-               gBsOnMouseOvers[nElement]();\r
-}\r
-\r
-function BSSCOnMouseOut()\r
-{\r
-       if (!BsscHasExtJs()) return;\r
-       for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--)\r
-       {\r
-               gBsOnMouseOuts[nElement]();\r
-       }\r
-}\r
-// End of invocation of the event handle functions.\r
-\r
-// Add the GereralOnLoad to the onload array.\r
-if (typeof(BsscRegisterOnLoad) != "undefined")\r
-{\r
-       BsscRegisterOnLoad(BsGeneralOnLoad);\r
-}\r
-if (gbBsNS4&&!gbBsNS6) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = BsReDo;\r
-}\r
-//End to support previous generic parameters\r
-\r
-//Begin to support previous HHActiveX invoking\r
-function BsHHActivateComponents()\r
-{\r
-       if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))\r
-       {\r
-               var objBody = getElementsByTag(document,"BODY")[0];\r
-               if( typeof(objBody) == "object" )\r
-               {\r
-                       insertAdjacentHTML(objBody, "beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
-                       if (HHComponentActivator.object)\r
-                               HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);\r
-               }\r
-       }\r
-}\r
-\r
-function BsHHActivXOnLoad()\r
-{      \r
-       if( gbBsIE4 )\r
-               BsHHActivateComponents(); \r
-}\r
-\r
-if( typeof(BsscRegisterOnLoad) != "undefined" )\r
-{\r
-       BsscRegisterOnLoad(BsHHActivXOnLoad);\r
-}\r
-//End to support previous HHActiveX invoking\r
-\r
-//Begin to support previous relative topics\r
-//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here\r
-var gbPopupMenuTimeoutExpired = false;\r
-var gbInPopupMenu = false;\r
-var gbPopupMenuTopicList = null;\r
-var gOlddocumentClick = null;\r
-\r
-//////////////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Popup Menu code\r
-//\r
-//////////////////////////////////////////////////////////////////////////////////////////\r
-\r
-var g_bIsPopupMenuInit = false;\r
-function _WritePopupMenuLayer()\r
-{\r
-       if (!g_bIsPopupMenuInit)\r
-        {\r
-         if (gbBsNS4&&!gbBsNS6) {\r
-//Do not try to write ininle styles for NS!  NS can not handle it and will not stop downloading the html page...\r
-               document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");\r
-         } else{\r
-         document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
-         if (!(gbBsNS4&&!gbBsNS6)) {\r
-               document.write("<STYLE TYPE='text/css'>");\r
-               if (gbBsMac&&gbBsIE4) {\r
-                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
-                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
-               } else {\r
-                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
-                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
-               }\r
-               document.write("</STYLE>");\r
-          }\r
-          }\r
-         g_bIsPopupMenuInit = true;\r
-       }\r
-}\r
-\r
-//Seek for the bsscright frame \r
-function _SeekFrameByName( cRoot, strName )\r
-{\r
-       if( cRoot == null )     return null;\r
-       if( cRoot.frames == null )      return null;\r
-       if( cRoot.frames[strName] != null )     return cRoot.frames[strName];\r
-       for (var i=0; i<cRoot.frames.length; i++)\r
-       {\r
-               var cObj = null;\r
-               if (!gbBsNS6) \r
-                       cObj = _SeekFrameByName( cRoot.frames(i).document, strName );\r
-               else\r
-                       cObj = _SeekFrameByName( cRoot.frames[i], strName );\r
-               if( cObj != null )              return cObj;\r
-       };\r
-       return null;\r
-}\r
-function _GetFrameByName( cRoot, strName )\r
-{\r
-       if( cRoot == null )     return null;\r
-       var cRet = _SeekFrameByName(cRoot, strName);\r
-       if( cRet != null )      return cRet;\r
-       if (cRoot.parent != cRoot)\r
-               return _GetFrameByName( cRoot.parent, strName );\r
-       else\r
-               return null;\r
-}\r
-\r
-var gfn_arguments = null;\r
-function _PopupMenu_Invoke(fn_arguments)\r
-{\r
-       gfn_arguments = fn_arguments;\r
-       if (gbBsOpera6&&gbBsMac)\r
-       {\r
-               var wndOldPopupLinks= window.open(document.location.href, "popuplinks");\r
-               wndOldPopupLinks.close();\r
-               setTimeout("_PopupMenu_Invoke_2();",100);\r
-       }\r
-       else\r
-       {\r
-               _PopupMenu_Invoke_2();\r
-       }\r
-}\r
-\r
-function _PopupMenu_Invoke_2()\r
-{\r
-       var fn_arguments = gfn_arguments;\r
-       gfn_arguments = null;\r
-       \r
-       // Make sure we have reasonable arguments\r
-       var argLen = fn_arguments.length;\r
-       if (argLen < 3) {\r
-               return false;\r
-       }\r
-\r
-       // Check to see if we only have one target\r
-       var strTarget = "";\r
-       var targetDoc = null;\r
-       if (fn_arguments[1] == '') {\r
-               if (BSSCPopup_IsPopup()) {\r
-                       targetDoc = parent;\r
-                       strTarget = "TARGET= _parent";\r
-               }\r
-               else\r
-                       targetDoc = window.document;\r
-       } else {\r
-               targetDoc = _GetFrameByName( parent, fn_arguments[1] );\r
-\r
-               strTarget = "TARGET='" + fn_arguments[1] + "'";\r
-       }\r
-\r
-       if ((!gbBsIE4 && !gbBsNS4 && !gbBsOpera7 && !gbBsKonqueror3 &&!gbBsSafari) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
-       \r
-               var argLen      = fn_arguments.length;\r
-\r
-               // Create the window that the hyperlinks will go into\r
-               var nHeight = argLen * 15;\r
-               var nWidth = 400;\r
-               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
-               strParam += ",height=" + nHeight + ",width=200";\r
-               strParam += ",resizable";\r
-\r
-               var wndTemp=null;\r
-               // Create a temporary window first to ensure the real popup comes up on top\r
-               if (!gbBsOpera)\r
-                       wndTemp = window.open("", "temp", strParam);\r
-\r
-               // Create the real popup window\r
-               var wndPopupLinks=null;\r
-               if (gbBsOpera&&gbBsMac)\r
-               {\r
-                       wndTemp = window.open(document.location.href, "temp", strParam);\r
-                       wndPopupLinks= window.open(document.location.href, "popuplinks", strParam);\r
-               }\r
-               else\r
-                       wndPopupLinks= window.open("", "popuplinks", strParam);\r
-               wndPopupLinks.document.open("text/html");\r
-\r
-               // Close the temporary\r
-               if (wndTemp)\r
-                       wndTemp.close();\r
-\r
-               var sHTML="<html><head></head>";\r
-               sHTML+="<body onBlur=\'self.focus();\'>";\r
-               var strParaLine = "";\r
-               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
-                       strParaLine = "";\r
-                       strParaLine += "<a href=\"javascript:";\r
-                       if (gbBsIE) {\r
-                               strParaLine += "onBlur=null; ";\r
-                       }\r
-                       strParaLine += "opener.location=\'";\r
-                       strParaLine += fn_arguments[2 * i + 3];\r
-                       strParaLine += "\';close();\"";\r
-                       strParaLine += strTarget;\r
-\r
-                       strParaLine += ">";\r
-                       strParaLine += fn_arguments[2 * i + 2];\r
-                       strParaLine += "</a>";\r
-                       strParaLine += "<br>";\r
-                       sHTML+=strParaLine;\r
-               }\r
-               sHTML+="</body></html>";\r
-               wndPopupLinks.document.write(sHTML);\r
-               wndPopupLinks.document.close();\r
-               window.gbInPopupMenu = true;\r
-               if (!gbBsIE) {\r
-                       wndPopupLinks.focus();\r
-               }\r
-               return false;\r
-       }\r
-\r
-       if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||\r
-               ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {\r
-               // Get the place that we will be putting the topic into\r
-               var strURL = "";\r
-               if (isNaN(fn_arguments[2]) ||  (gbPopupMenuTopicList == null)) {\r
-                       strURL = fn_arguments[3];\r
-               }\r
-               else    {\r
-                       strURL = gbPopupMenuTopicList[fn_arguments[2]].strURL;\r
-               }\r
-\r
-               if (targetDoc != null) {\r
-                       targetDoc.location.href = strURL;\r
-               }\r
-               else {\r
-                       if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
-                               window.open(strURL, fn_arguments[1]);\r
-                       else\r
-                               window.open(strURL);\r
-               }               \r
-               window.gbInPopupMenu = true;\r
-               return false;\r
-       }\r
-       \r
-       var strMenu = "";\r
-       if (gbBsNS4&&!gbBsNS6) {\r
-               strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';\r
-       } else {\r
-               strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
-               if (gbBsMac) {\r
-                       strMenu += ' CELLPADDING=4';\r
-               } else {\r
-                       strMenu += ' CELLPADDING=2';\r
-               }       \r
-               strMenu += ' BGCOLOR=#c0c0c0>';\r
-       }\r
-       // Add each of the items\r
-       var i = 2;\r
-       while (i <= argLen - 1) {\r
-               strMenu += '<TR><TD><NOBR>'\r
-               // If the destination is a number then look it up in the topic list\r
-               if (isNaN(fn_arguments[i]) ||  (gbPopupMenuTopicList == null)) {\r
-                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '"' + strTarget;\r
-               } else {\r
-                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList[fn_arguments[i]].strURL + '"' + strTarget;\r
-               }\r
-               strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
-               strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
-               strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
-               strMenu += '>';\r
-               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
-                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
-               } else {\r
-                       strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + '</SPAN>';\r
-               }\r
-               strMenu += '</A></DIV></NOBR></TD></TR>';\r
-\r
-               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
-                       i += 2;\r
-               } else {\r
-                       i += 1;\r
-               }\r
-       }\r
-       strMenu += "</TABLE>";\r
-\r
-       if (gbBsMac) {\r
-       // totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.\r
-               strMenu +="<TABLE></TABLE>";\r
-       }\r
-\r
-       var layerPopup = null;\r
-       var stylePopup = null;\r
-       var nEventX = 0;\r
-       var nEventY = 0;\r
-       var nWindowWidth = 0;\r
-       if (gbBsIE4 || gbBsOpera7) {\r
-\r
-               layerPopup = getElement("PopupMenu");\r
-               layerPopup.innerHTML = strMenu;\r
-               stylePopup = layerPopup.style;\r
-\r
-               _BSPSGetClientSize();\r
-\r
-               // Get the position of the item causing the event (relative to its parent)\r
-               nEventX = window.event.clientX;\r
-               nEventY = window.event.clientY;\r
-\r
-               if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
-                       nEventY += document.body.scrollTop + 10;\r
-               } else {\r
-                       nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
-               }\r
-               stylePopup.top = nEventY;\r
-               \r
-               var nPopupWidth = layerPopup.scrollWidth;\r
-               if (gbBsMac) {\r
-                       nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup.\r
-               }\r
-               if (nEventX + nPopupWidth + 20 > gBsClientWidth) {\r
-                       if (gBsClientWidth - nPopupWidth < 5) {\r
-                               stylePopup.left = 5;\r
-                       } else {\r
-                               stylePopup.left = gBsClientWidth - nPopupWidth - 5;\r
-                       }\r
-               } else {\r
-                       stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
-               }\r
-\r
-               stylePopup.visibility = "visible";\r
-               if (!gOlddocumentClick && document.onclick)\r
-                       gOlddocumentClick = document.onclick;\r
-               document.onclick = PopupMenu_HandleClick;\r
-\r
-       } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) {\r
-               layerPopup = getElement("PopupMenu");\r
-               layerPopup.style.visibility = "hidden";\r
-       \r
-               if (gbBsNS6)\r
-               {\r
-                       var e = fn_arguments[0];\r
-                       nEventX = e.pageX;\r
-                       nEventY = e.pageY;\r
-               }\r
-               else\r
-               {\r
-                       nEventX = window.event.clientX;\r
-                       nEventY = window.event.clientY;\r
-               }\r
-               _BSPSGetClientSize();\r
-               layerPopup.innerHTML = strMenu;\r
-\r
-               if (nEventY + layerPopup.offsetHeight + 20  <  window.pageYOffset + gBsClientHeight) {\r
-                       nEventY += 20;\r
-               } else {\r
-                       nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
-               }\r
-\r
-               if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
-                       if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
-                               nEventX = 5;\r
-                       } else {\r
-                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
-                       }\r
-               } else {\r
-                       nEventX += 20;\r
-               }\r
-               layerPopup.style.top = nEventY;\r
-               layerPopup.style.left = nEventX;\r
-               // set again to avoid the stupid frash in netscape 6.\r
-               layerPopup.innerHTML = strMenu;\r
-               layerPopup.style.visibility = "visible";\r
-               //window.captureEvents(Event.MOUSEDOWN);\r
-               if (!gOlddocumentClick && document.onclick)\r
-                       gOlddocumentClick = document.onclick;\r
-               window.onclick = PopupMenu_HandleClick;\r
-       }\r
-       else if (gbBsNS4) {\r
-               layerPopup = document.layers.PopupMenu;\r
-               layerPopup.visibility = "hide";\r
-               stylePopup = layerPopup.document;\r
-               stylePopup.write(strMenu);\r
-               stylePopup.close();\r
-               var e = fn_arguments[0];\r
-               nEventX = e.pageX;\r
-               nEventY = e.pageY;\r
-               _BSPSGetClientSize();\r
-               if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) {\r
-                       nEventY += 20;\r
-               } else {\r
-                       nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20;\r
-               }\r
-               layerPopup.top = nEventY;\r
-\r
-               if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) {\r
-                       if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) {\r
-                               nEventX = 5;\r
-                       } else {\r
-                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20;\r
-                       }\r
-               } else {\r
-                       nEventX += 20;\r
-               }\r
-\r
-               layerPopup.left = nEventX;\r
-\r
-               layerPopup.visibility = "show";\r
-\r
-               window.captureEvents(Event.MOUSEDOWN);\r
-               if (!gOlddocumentClick && document.onmousedown)\r
-                       gOlddocumentClick = document.onmousedown;\r
-               window.onmousedown = PopupMenu_HandleClick;\r
-       }\r
-\r
-       window.gbInPopupMenu = true;\r
-       window.gbPopupMenuTimeoutExpired = false;\r
-       setTimeout("PopupMenu_Timeout();", 100);\r
-       return false;\r
-}\r
-\r
-function PopupMenu_Timeout()\r
-{\r
-       window.gbPopupMenuTimeoutExpired = true;\r
-}\r
-\r
-function PopupMenu_Over(e)\r
-{\r
-    if (gbBsIE4||gbBsOpera7)\r
-               e.srcElement.className = "PopupOver";\r
-    else if (gbBsNS6)\r
-               e.target.parentNode.className = "PopupOver";\r
-       return;\r
-}\r
-\r
-function PopupMenu_Out(e)\r
-{\r
-    if (gbBsIE4||gbBsOpera7)\r
-               e.srcElement.className = "PopupNotOver";\r
-    else if (gbBsNS6)\r
-               e.target.parentNode.className = "PopupNotOver";\r
-       return;\r
-}\r
-\r
-function PopupMenu_HandleClick(e)\r
-{\r
-       if (window.gbPopupMenuTimeoutExpired) {\r
-               window.gbInPopupMenu = false;\r
-               if (gbBsNS4 && !gbBsNS6) {\r
-                       window.releaseEvents(Event.MOUSEDOWN);\r
-               }\r
-\r
-               var layerPopup = null;\r
-               if (gbBsNS4&&!gbBsNS6) {\r
-                       layerPopup = document.layers.PopupMenu;\r
-                       layerPopup.visibility = "hide";\r
-               } else {\r
-                       layerPopup = getElement("PopupMenu");\r
-                       layerPopup.style.visibility = "hidden";\r
-               }\r
-       \r
-               if (gOlddocumentClick)\r
-               {\r
-                       if (gbBsNS4 && !gbBsNS6)\r
-                               document.onmousedown = gOlddocumentClick;\r
-                       else\r
-                               document.onclick = gOlddocumentClick;\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-function BSSCPopup_ClickMac()\r
-{\r
-       if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7))\r
-       {       \r
-               var bClickOnAnchor = false;\r
-               var el;\r
-               if ((window.event != null) &&\r
-                   (window.event.srcElement != null))\r
-               {\r
-                   el = window.event.srcElement;\r
-                       while (el != null)\r
-                       {\r
-                               if ((el.tagName == "A") || (el.tagName == "AREA"))      {\r
-                                       bClickOnAnchor = true;\r
-                                       break;\r
-                               }\r
-                               if (el.tagName == "BODY") {\r
-                                       break;\r
-                               }\r
-                               el = getParentNode(el);\r
-                       }\r
-               }\r
-               if (BSSCPopup_IsPopup())\r
-               {\r
-                       if (!bClickOnAnchor) {\r
-                               parent.window.gPopupWindow = null;\r
-                               self.close();\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       bClosePopupWindow = true;\r
-                       if ((bClickOnAnchor) &&\r
-                               (el.href) &&\r
-                           ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1)))\r
-                       {\r
-                               bClosePopupWindow = false;\r
-                       }\r
-                       if (bClosePopupWindow)\r
-                       {\r
-                               if (window.gPopupWindow != null && !window.gPopupWindow.closed )\r
-                               {\r
-                                       window.gPopupWindow.close();\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function BsPopupOnClick()\r
-{\r
-       if (!gbBsIE4 && !gbBsOpera7)\r
-               return;\r
-\r
-       BSSCPopup_ClickMac();\r
-}\r
-\r
-function _BSSCOnError(message)\r
-{\r
-       if(-1 != message.indexOf("denied") \r
-               || -1 != message.indexOf("Object required"))\r
-        return true;\r
-}\r
-\r
-//End to support previous relative topics\r
-\r
-/// Section End - General and relative topics (JavaScript 1.0)\r
-\r
-/// Section Begin  - Popup (JavaScript 1.0)\r
-//Begin to support previous popup functions\r
-\r
-//variables used to isolate the browser type\r
-var gBsStyVisShow      = null;\r
-var gBsStyVisHide      = null;\r
-var gBsClientWidth     = 640;\r
-var gBsClientHeight = 480;\r
-\r
-// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.\r
-var gBRateH_W          = 0.618; // 1.618 Golden cut.\r
-var gBMaxXOfParent     = 0.8; \r
-var gBMaxYOfParent     = 0.8;\r
-var gBscrollHeight   = 16;\r
-var gBscrollWidth   =  16;\r
-var gBpermitXDelta     = 3;\r
-var gBpermitYDelta     = 3;\r
-\r
-\r
-var arrayPopupURL = new Array();\r
-var arrayAbsPopupURL = new Array();\r
-\r
-var arrayDirty = new Array();\r
-\r
-function setAbsPopupURL(nIndex, strURL)\r
-{\r
-       arrayAbsPopupURL[nIndex] = strURL;\r
-}\r
-\r
-function getAbsPopupURL(nIndex)\r
-{\r
-       if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null;\r
-       else \r
-               return arrayAbsPopupURL[nIndex];\r
-}\r
-\r
-function getPopupURL(nIndex)\r
-{\r
-       if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null;\r
-       else \r
-               return arrayPopupURL[nIndex];\r
-}\r
-\r
-function getPopupID(nIndex)\r
-{\r
-       return gstrPopupID + nIndex;\r
-}\r
-\r
-function getPopupShadowID(nIndex)\r
-{\r
-       return gstrPopupShadowID + nIndex;\r
-}\r
-\r
-function getPopupTopicID(nIndex)\r
-{\r
-       return gstrPopupTopicID + nIndex;\r
-}\r
-\r
-function getPopupIFrameID(nIndex)\r
-{\r
-       return gstrPopupIFrameID + nIndex;\r
-}\r
-\r
-function getPopupIFrameName(nIndex)\r
-{\r
-       return gstrPopupIFrameName + nIndex;\r
-}\r
-\r
-\r
-function getPopupTopicStyle(nIndex)\r
-{\r
-       return getElement(getPopupTopicID(nIndex)).style;\r
-}\r
-\r
-function getPopupShadowStyle(nIndex)\r
-{\r
-       return getElement(getPopupShadowID(nIndex)).style;\r
-}\r
-\r
-function getPopupIFrame(nIndex)\r
-{\r
-       if (gbBsNS6)\r
-               return eval("window.frames['" + getPopupIFrameName(nIndex) + "']");\r
-       else\r
-               return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
-}\r
-\r
-function getPopupDivStyle(nIndex)\r
-{\r
-       return getElement(getPopupID(nIndex)).style;\r
-}\r
-\r
-function getPopupIFrameStyle(nIndex)\r
-{\r
-       return getElement(getPopupIFrameID(nIndex)).style;\r
-}\r
-\r
-\r
-function findDiv(strURL)\r
-{\r
-       for (var i = 0; i < arrayPopupURL.length; i ++ ) {\r
-               if (arrayPopupURL[i] == strURL) {\r
-                       return i;\r
-               }\r
-       }\r
-       return -1;\r
-}\r
-\r
-var gnToken = -1;\r
-function takeToken()\r
-{\r
-       gnToken ++;\r
-       if (gnToken > 10000) gnToken = 0;\r
-       return gnToken;\r
-}\r
-\r
-function IsValidToken(nToken)\r
-{\r
-       return (gnToken == nToken);\r
-}\r
-\r
-function addDiv(strURL)\r
-{\r
-       for (var i = 0; i < arrayPopupURL.length; i ++) {\r
-               if (arrayPopupURL[i] == null) {\r
-                       arrayPopupURL[i] = strURL;\r
-                       return i;\r
-               }\r
-       }       \r
-       arrayPopupURL[i] = strURL;\r
-       arrayDirty[i] = true;\r
-       return i;\r
-}\r
-\r
-function setDirty()\r
-{\r
-       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
-               arrayDirty[i] = true;\r
-}\r
-\r
-function IsDirty(nIndex)\r
-{\r
-       if (nIndex == -1)\r
-               return true;\r
-       else \r
-               if (arrayDirty.length > nIndex) \r
-                       return arrayDirty[nIndex];\r
-               else\r
-                       return true;\r
-}\r
-\r
-function hideAll()\r
-{\r
-       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
-       {\r
-               getPopupDivStyle(i).visibility = gBsStyVisHide;\r
-               getPopupIFrameStyle(i).visibility = gBsStyVisHide;\r
-       }\r
-}\r
-\r
-function getCurrentPopupIFrame()\r
-{\r
-       for (var i = 0; i < arrayPopupURL.length; i ++)\r
-               if (getPopupDivStyle(i).visibility == gBsStyVisShow)\r
-                       return getPopupIFrame(i);\r
-       return null;\r
-}\r
-\r
-function setClear(nIndex)\r
-{\r
-       if (nIndex != -1)\r
-               arrayDirty[nIndex] = false;\r
-}\r
-\r
-function _BSSCCreatePopupDiv(strURL)\r
-{\r
-       var nIndex = findDiv(strURL);\r
-       if (nIndex == -1 ) {\r
-               nIndex = addDiv(strURL);\r
-               BsPopup_CreateDiv(nIndex);\r
-       }\r
-       else {\r
-               if (IsDirty(nIndex)) {\r
-                       if("object" == typeof(getPopupIFrame(nIndex).document))\r
-                               getPopupIFrame(nIndex).document.location.href = strURL;\r
-               }\r
-       }\r
-       return nIndex;\r
-}\r
-\r
-//Here is the browser type \r
-function _BSPSGetBrowserInfo()\r
-{\r
-       if (gbBsNS4&&!gbBsNS6)\r
-       {\r
-               gBsStyVisShow   = "show";\r
-               gBsStyVisHide   = "hide";\r
-       }\r
-       else\r
-       {\r
-               gBsStyVisShow   = "visible";\r
-               gBsStyVisHide   = "hidden";\r
-       }\r
-}\r
-\r
-_BSPSGetBrowserInfo();\r
-\r
-//Get client size info\r
-function _BSPSGetClientSize()\r
-{\r
-       if (gbBsNS4||gbBsKonqueror3||gbBsSafari)\r
-       {\r
-               gBsClientWidth  = innerWidth;\r
-               gBsClientHeight = innerHeight;\r
-       }\r
-       else if (gbBsIE4 || gbBsOpera7)\r
-       {\r
-               gBsClientWidth  = document.body.clientWidth;\r
-               gBsClientHeight = document.body.clientHeight;\r
-       }\r
-}\r
-\r
-var gstrPopupID = 'BSSCPopup';\r
-var gstrPopupShadowID = 'BSSCPopupShadow';\r
-var gstrPopupTopicID = 'BSSCPopupTopic';\r
-var gstrPopupIFrameID = 'BSSCPopupIFrame';\r
-var gstrPopupIFrameName = 'BSSCPopupIFrameName';\r
-\r
-var gstrPopupSecondWindowName = 'BSSCPopup';\r
-\r
-var gPopupWindow = null;\r
-var gnPopupClickX = 0;\r
-var gnPopupClickY = 0;\r
-\r
-var gnPopupScreenClickX = 0;\r
-var gnPopupScreenClickY = 0;\r
-\r
-var gbPopupTimeoutExpired = false;\r
-\r
-function DHTMLPopupSupport()\r
-{\r
-       if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) {\r
-               return true;\r
-       }\r
-       return false;\r
-}\r
-\r
-function BSSCPopup_IsPopup()\r
-{\r
-       if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {\r
-               return true;\r
-       } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) {\r
-               return true;\r
-       } else {\r
-               return false;\r
-       }\r
-}\r
-\r
-// If there is a hyperlink in a popup window, display the hyperlink in\r
-// the original window. (bsscright)\r
-if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) {\r
-       document.write("<base target=\"bsscright\">");\r
-}\r
-\r
-// Local functions.\r
-function BsPopup_CreateDiv(nIndex)\r
-{\r
-       if(!DHTMLPopupSupport())\r
-               return;\r
-       // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.\r
-       var strPopupDiv = "<DIV ID='" + getPopupID(nIndex) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>";\r
-       strPopupDiv += "<DIV ID='" + getPopupShadowID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#C0C0C0;\"></DIV>";\r
-       strPopupDiv += "<DIV ID='" + getPopupTopicID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#FFFFFF;border:1px #000000 outset;\">";\r
-       strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";\r
-       strPopupDiv += "</DIV></DIV>";\r
-\r
-       var objBody = getElementsByTag(document, "BODY")[0];\r
-       if( typeof(objBody) != "object" )\r
-               return;\r
-\r
-       insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv);\r
-}\r
-\r
-function handleLoadNS()\r
-{\r
-       if (this.id)\r
-       {\r
-               var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length));\r
-               BSSCPopup_PostWork(nIndex);\r
-       }\r
-}\r
-\r
-function BSSCPopup_PostWork(nIndex)\r
-{\r
-       getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
-       getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow;\r
-\r
-       setClear(nIndex);\r
-       window.gbPopupTimeoutExpired = true;\r
-\r
-       BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
-       if (gbBsNS6)\r
-               getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false);\r
-       else\r
-               getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;\r
-\r
-       if (!gbOrignalOnMouseDown && document.onmousedown)\r
-               gbOrignalOnMouseDown = document.onmousedown;\r
-\r
-       if (gbBsNS6)\r
-               document.addEventListener("mousedown", BSSCPopupParentClicked,false);\r
-       else\r
-               document.onmousedown = BSSCPopupParentClicked;\r
-}\r
-\r
-function BSSCPopup_Timeout(nIndex, nToken)\r
-{\r
-    if (!IsValidToken(nToken)) return;\r
-\r
-       if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
-               (getPopupIFrame(nIndex).document.body != null))) {\r
-               BSSCPopup_PostWork(nIndex);\r
-       } else {\r
-               setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);\r
-       }\r
-}\r
-\r
-// VH 08/10/00 \r
-// do not change target to parent if the href is using javascript\r
-function BSSCPopup_ChangeTargettoParent(tagsObject)\r
-{\r
-       var collA = getElementsByTag(tagsObject, "A");\r
-       BSSCPopup_ChangeTargettoParent2(collA);\r
-\r
-       var collIMG = getElementsByTag(tagsObject,"IMG");\r
-       BSSCPopup_ChangeTargettoParent2(collIMG);\r
-}\r
-\r
-function BSSCPopup_ChangeTargettoParent2(colls)\r
-{\r
-       if (colls != null)  {\r
-               for (var j = 0; j < colls.length; j ++ )\r
-               {\r
-                       var strtemp = colls[j].href;\r
-                       if (strtemp)\r
-                       {\r
-                               strtemp = strtemp.toLowerCase();\r
-                               if (strtemp.indexOf("javascript:") == -1)\r
-                               if (colls[j].target == "")\r
-                                       colls[j].target = "_parent";\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function BSPSPopupTopicWinHelp(strURL)\r
-{\r
-       _BSSCPopup(strURL);\r
-       return;\r
-}\r
-\r
-function _BSSCPopup(strURL, width, height)\r
-{\r
-       var cuswidth = 0;\r
-       var cusheight = 0;\r
-       if ("undefined" != typeof(width) && "undefined" != typeof(height)) {\r
-               cuswidth = width;\r
-               cusheight= height;\r
-       }\r
-       \r
-       if (DHTMLPopupSupport()) {\r
-               var nToken = takeToken(); // take  token first.\r
-               var nIndex = _BSSCCreatePopupDiv(strURL);\r
-               window.gbPopupTimeoutExpired = false;\r
-               var ntWidth = gBsClientWidth;\r
-               var ntHeight = gBsClientHeight;\r
-               _BSPSGetClientSize();\r
-               if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
-                       setDirty();\r
-               }\r
-\r
-               if (IsDirty(nIndex)) {\r
-                       if (gbBsMac) {\r
-                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight  +")", 400);\r
-                       } else {\r
-                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
-                       }\r
-               }\r
-               else {\r
-                       MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
-               }\r
-       } else {\r
-               _BSSCPopup2(strURL, cuswidth, cusheight);\r
-       }\r
-       return;\r
-}\r
-\r
-if (gbBsIE55)\r
-{\r
-       var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;\r
-       var gnBsUnload=0;\r
-       window.onbeforeunload = window_BUnload;\r
-}\r
-       \r
-function window_BUnload()\r
-{\r
-       gnBsUnload++;\r
-       if (gnBsUnload>1)\r
-               return;\r
-       for (var i = 0; i < arrayPopupURL.length; i ++)\r
-               removeThis(document.all(getPopupID(i)));\r
-       arrayPopupURL.length = 0;       \r
-       if (ehlpdhtm_fOldBefureUnload)\r
-               ehlpdhtm_fOldBefureUnload();\r
-}\r
-\r
-function _BSSCPopup2(strURL, width, height)\r
-{\r
-       if (gbBsOpera6&&gbBsMac)\r
-       {\r
-               var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName);\r
-               wmTemp.close();\r
-               setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100);\r
-       }\r
-       else\r
-               _BSSCPopup3(strURL, width, height);\r
-}\r
-               \r
-function _BSSCPopup3(strURL, width, height)\r
-{\r
-       if (window.name == gstrPopupSecondWindowName) {\r
-               window.location = strURL;\r
-       } else {\r
-               if (!gbBsMac || !gbBsNS4) {\r
-                       BSSCHidePopupWindow();\r
-               }\r
-               var nX = 0;\r
-               var nY = 0;\r
-               var nHeight = 300;\r
-               var nWidth = 400;\r
-               if (width > 0 && height > 0) {\r
-                       nHeight = height;\r
-                       nWidth = width;\r
-               }\r
-               _BSPSGetClientSize();\r
-\r
-               nX = window.gnPopupScreenClickX;\r
-               nY = window.gnPopupScreenClickY;\r
-\r
-               if (nY + nHeight + 40 > screen.availHeight) {\r
-                       nY = screen.availHeight - nHeight - 40;\r
-               }\r
-               if (nX + nWidth + 40 > screen.availWidth) {\r
-                       nX = screen.availWidth - nWidth - 40;\r
-               }\r
-\r
-               // Launch a separate window\r
-               var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
-               if (gbBsNS) {\r
-                       if (gbBsNS6) {\r
-                               strParam += ",Height=" + nHeight + ",Width=" + nWidth;\r
-                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
-                               strParam += ",dependent=yes";\r
-                       }\r
-                       else {\r
-                               strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;\r
-                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
-                               strParam += ",dependent=yes";\r
-                       }\r
-               }\r
-               else {\r
-                       strParam += ",height=" + nHeight + ",width=" + nWidth;\r
-                       strParam += ",left=" + nX + ",top=" + nY;\r
-               }\r
-               if (gbBsSafari)\r
-               {\r
-                       if (window.gPopupWindow)\r
-                               window.gPopupWindow.close();            \r
-                       window.gPopupWindow = window.open(strURL, "", strParam);\r
-                       window.gPopupWindow.name = gstrPopupSecondWindowName;\r
-                       window.gPopupWindow.moveTo(nX, nY);\r
-                       widnow.gPopupWindow.document.location.reload();\r
-               }       \r
-               else\r
-               {\r
-                       var wmTemp=null;\r
-                       if (gbBsKonqueror3)\r
-                       {\r
-                               if (window.gPopupWindow)\r
-                                       window.gPopupWindow.close();\r
-                       }\r
-                       if (gbBsOpera&&gbBsMac)\r
-                       {\r
-                               wmTemp= window.open(document.location.href, "Temp", strParam);\r
-                       }\r
-                       window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
-                       if (!gbBsIE)\r
-                               window.gPopupWindow.focus();\r
-                               \r
-                       if (wmTemp)\r
-                               wmTemp.close();\r
-               }\r
-\r
-               if (gbBsNS4)\r
-                       setEventHandle();\r
-               else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3)\r
-                       setTimeout("setPopupFocus();", 100);\r
-       }\r
-       return;\r
-}\r
-\r
-function setEventHandle()\r
-{\r
-       window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR);\r
-       window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
-       window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
-}\r
-\r
-function setPopupFocus()\r
-{\r
-       window.gPopupWindow.focus();\r
-}\r
-\r
-function NonIEPopup_HandleBlur(e)\r
-{\r
-       window.gPopupWindow.focus();\r
-}\r
-\r
-function NonIEPopup_HandleClick(e)\r
-{\r
-       // Because navigator will give the event to the handler before the hyperlink, let's\r
-       // first route the event to see if we are clicking on a Popup menu in a popup.\r
-       document.routeEvent(e);\r
-\r
-       // If a popup menu is active then don't do anything with the click\r
-       if (window.gPopupWindow.gbInPopupMenu) {\r
-               window.gPopupWindow.captureEvents(Event.CLICK);\r
-               window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
-               return false;\r
-       }\r
-\r
-       // Close the popup window\r
-       if(e.target.href)\r
-       {\r
-               if(e.target.href.indexOf("javascript:")==-1) \r
-               {\r
-                       if (e.target.target=="")\r
-                               window.location.href = e.target.href;\r
-                       else\r
-                               window.open(e.target.href, e.target.target);\r
-                       this.close();\r
-               }\r
-       } \r
-       else\r
-               this.close();\r
-       return false;\r
-}\r
-\r
-function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)\r
-{      \r
-       if (!window.getPopupIFrame(nIndex).document) {\r
-               _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);\r
-               return;\r
-       }\r
-       \r
-    if (!IsValidToken(nToken)) return;\r
-\r
-       if (gbBsNS6)\r
-       {\r
-               setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
-               BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
-               return;\r
-       }\r
-       \r
-       if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&\r
-               (window.getPopupIFrame(nIndex).document.body != null)) {\r
-                       if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.\r
-                               window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
-                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
-                       }\r
-                       else\r
-                               {\r
-                                       setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
-                                       BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
-                               }\r
-       } else {\r
-               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
-       }\r
-}\r
-\r
-function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)\r
-{\r
-       if (window.gbPopupTimeoutExpired) return;\r
-\r
-    if (!IsValidToken(nToken)) return;\r
-\r
-       getPopupDivStyle(nIndex).visibility = gBsStyVisHide;\r
-       getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide;\r
-\r
-       // Determine the width and height for the window\r
-       _BSPSGetClientSize();\r
-\r
-       var size = new BSSCSize(0, 0);\r
-\r
-       if (cuswidth <= 0 || cusheight <= 0)\r
-               BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
-       else {\r
-               size.x = cuswidth;\r
-               size.y = cusheight;\r
-       }\r
-\r
-       // Determine the width and height for the window\r
-       var nWidth = size.x;\r
-       var nHeight = size.y;\r
-\r
-       // for small popup size, we should allow any size.\r
-       // The popup size should be ok if bigger than 0\r
-       if (nWidth < 0 || nHeight < 0) return;  // there must be something terribly wrong.              \r
-\r
-       getPopupDivStyle(nIndex).width = nWidth;\r
-       getPopupDivStyle(nIndex).height = nHeight;\r
-\r
-       getPopupShadowStyle(nIndex).width = nWidth;\r
-       getPopupShadowStyle(nIndex).height = nHeight;\r
-       getPopupTopicStyle(nIndex).width = nWidth;\r
-       getPopupTopicStyle(nIndex).height = nHeight;\r
-       if (gbBsIE55)\r
-       {\r
-               getPopupShadowStyle(nIndex).width = nWidth + 2;\r
-               getPopupShadowStyle(nIndex).height = nHeight + 2;\r
-               getPopupTopicStyle(nIndex).width = nWidth + 2;\r
-               getPopupTopicStyle(nIndex).height = nHeight + 2;\r
-       }\r
-\r
-       getPopupIFrameStyle(nIndex).width = nWidth;\r
-       getPopupIFrameStyle(nIndex).height = nHeight;\r
-       if (gbBsIE55 || gbBsNS6)\r
-       {\r
-               getPopupIFrameStyle(nIndex).top = 0;\r
-               getPopupIFrameStyle(nIndex).left = 0;\r
-       }\r
-       \r
-       var strURL = getPopupURL(nIndex);\r
-       if (strURL.indexOf("#") != -1&&gbBsNS6)\r
-               getPopupIFrame(nIndex).location.reload();\r
-       else if (strURL.indexOf("#") != -1||gbBsNS6)\r
-               getPopupIFrame(nIndex).location.href = strURL;  // reload again, this will fix the bookmark misunderstand in IE5.\r
-               \r
-       MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);\r
-}\r
-\r
-function getScrollLeft()\r
-{\r
-       if (document.body.scrollLeft)\r
-               return document.body.scrollLeft;\r
-       else if (window.pageXOffset)\r
-               return window.pageXOffset;\r
-       else\r
-               return 0;\r
-}\r
-\r
-function getScrollTop()\r
-{\r
-       if (document.body.scrollTop)\r
-               return document.body.scrollTop;\r
-       else if (window.pageYOffset)\r
-               return window.pageYOffset;\r
-       else\r
-               return 0;\r
-}\r
-\r
-\r
-function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)\r
-{\r
-       if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.\r
-                       window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
-                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
-                       return;\r
-       }\r
-\r
-       // Determine the position of the window\r
-       var nClickX = window.gnPopupClickX;\r
-       var nClickY = window.gnPopupClickY;\r
-       var nTop = 0;\r
-       var nLeft = 0;\r
-\r
-       var nWidth = parseInt(getPopupDivStyle(nIndex).width);\r
-       var nHeight = parseInt(getPopupDivStyle(nIndex).height);\r
-\r
-       if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) {\r
-               nTop = nClickY + 10;\r
-       } else {\r
-               nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20;\r
-       }\r
-       if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) {\r
-               nLeft = nClickX;\r
-       } else {\r
-               nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8;\r
-       }\r
-\r
-       if (nTop < getScrollTop()) nTop  = getScrollTop() + 1;\r
-       if (nLeft< getScrollLeft())  nLeft = getScrollLeft() + 1;\r
-\r
-       getPopupDivStyle(nIndex).left = nLeft;\r
-       getPopupDivStyle(nIndex).top = nTop;\r
-\r
-       // Set the location of the background blocks\r
-       getPopupShadowStyle(nIndex).left = 6;\r
-       getPopupShadowStyle(nIndex).top = 6;\r
-       if (gbBsIE55)\r
-       {\r
-               getPopupShadowStyle(nIndex).left = 4;\r
-               getPopupShadowStyle(nIndex).top = 4;\r
-       }\r
-\r
-       if (gbBsMac&&gbBsIE4) {\r
-               // Total hack on the iMac to get the IFrame to position properly\r
-               getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
-               getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
-               // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it\r
-               getPopupIFrame(nIndex).window.BSSCOnLoad();\r
-       }\r
-\r
-       if (gbBsNS6&&IsDirty(nIndex))\r
-               getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false);\r
-       else\r
-               BSSCPopup_Timeout(nIndex , nToken );\r
-       return;\r
-}\r
-\r
-function       BSSCSize(x, y)\r
-{\r
-       this.x = x;\r
-       this.y = y;\r
-}\r
-\r
-function BSSCGetContentSize(thisWindow, size)\r
-{\r
-       if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4)\r
-               return;\r
-\r
-       if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) {\r
-               size.x = 320;\r
-               size.y = 180;\r
-               return;\r
-       }\r
-\r
-       // Resize the width until it is wide enough to handle the content\r
-       // The trick is to start wide and determine when the scrollHeight changes\r
-       // because then we know a scrollbar is necessary. We can then go back\r
-       // to the next widest size (for no scrollbar)\r
-\r
-       var ClientRate = gBsClientHeight / gBsClientWidth;\r
-\r
-       \r
-       var GoldenSize = new BSSCSize(0,0);\r
-       GoldenSize.x = gBsClientWidth * gBMaxXOfParent;\r
-       GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;\r
-\r
-       if (ClientRate > gBRateH_W) {\r
-               GoldenSize.y = GoldenSize.x * gBRateH_W;\r
-       }\r
-       else {\r
-               GoldenSize.x = GoldenSize.y / gBRateH_W;\r
-       }\r
-\r
-       // Try to using parent specified max x.\r
-       var x = 0;\r
-       var maxgoldx = GoldenSize.x;\r
-       var maxx = gBsClientWidth * gBMaxXOfParent;\r
-       \r
-       // This double resize causes the document to re-render (and we need it to)\r
-       if (!gbBsIE5)\r
-               thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.\r
-               \r
-       thisWindow.resizeTo(1, 1);\r
-       thisWindow.resizeTo(1, 1);\r
-       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
-       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
-               \r
-       var miny = thisWindow.document.body.scrollHeight + gBscrollHeight;\r
-       \r
-       if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can\r
-       {\r
-               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
-               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
-               \r
-               miny =  thisWindow.document.body.scrollHeight + gBscrollHeight;\r
-               maxy = gBsClientHeight * gBMaxYOfParent;\r
-               \r
-               if (miny > maxy) { // the popup must have a scroll, OK let it be.\r
-                       miny = maxy;\r
-                       size.x = maxx;\r
-                       size.y = maxy;\r
-                       thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little.\r
-               }\r
-               else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.\r
-                       size.y = miny;\r
-                       \r
-                       //  downsize from maxx , now I try to using binary divide.\r
-                       x = maxx;\r
-                       deltax = -maxx/2;\r
-                       //j = 0;\r
-                       while (true) {\r
-                               x = x + deltax;\r
-                               thisWindow.resizeTo(x, miny);\r
-                               thisWindow.resizeTo(x, miny);\r
-                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate;\r
-                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
-                                       deltax = Math.abs(deltax) /2;\r
-                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
-                                       deltax = -Math.abs(deltax) /2;\r
-                               else \r
-                                       // the y is close enough to wanted.\r
-                                       break;\r
-                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
-                                       break;\r
-                       }\r
-                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
-                       size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight;     \r
-                       thisWindow.document.body.scroll = 'no';\r
-               }\r
-       }\r
-       else {\r
-               if (thisWindow.document.body.scrollWidth > maxgoldx) {\r
-                       size.x = maxx; \r
-                       size.y = miny;  \r
-                       thisWindow.document.body.scroll = 'yes';\r
-               }\r
-               else {\r
-                       //  downsize from maxgoldx , now I try to using binary divide.\r
-                       x = maxgoldx;\r
-                       deltax = -maxgoldx/2;\r
-                       while (true) {\r
-                               x = x + deltax;\r
-                               thisWindow.resizeTo(x, miny);\r
-                               thisWindow.resizeTo(x, miny);\r
-                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W;\r
-                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
-                                       deltax = Math.abs(deltax) /2;\r
-                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
-                                       deltax = -Math.abs(deltax) /2;\r
-                               else \r
-                                       // the y is close enough to wanted.\r
-                                       break;\r
-                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
-                                       break;\r
-                       }\r
-                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
-                       size.y = thisWindow.document.body.scrollHeight ;\r
-                       thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.\r
-                       thisWindow.resizeTo(size.x, size.y);\r
-                       if (thisWindow.document.body.scrollWidth > size.x)\r
-                       {\r
-                               size.x = thisWindow.document.body.scrollWidth;\r
-                       }\r
-                       if (thisWindow.document.body.scrollHeight > size.y)\r
-                       {\r
-                               size.y = thisWindow.document.body.scrollHeight;\r
-                       }\r
-               }\r
-       }\r
-       thisWindow.resizeTo(size.x, size.y);\r
-       thisWindow.resizeTo(size.x, size.y);\r
-       return;\r
-}\r
-\r
-function BSSCPopupParentClicked()\r
-{\r
-       if (!window.gbPopupTimeoutExpired) {\r
-               return false;\r
-       }\r
-       \r
-       document.onmousedown = gbOrignalOnMouseDown;\r
-\r
-       // Simply hide the popup\r
-       hideAll();\r
-\r
-       window.gbPopupTimeoutExpired = false;\r
-\r
-       return true;\r
-}\r
-\r
-function isInsideHyperLink(obj)\r
-{\r
-       if (obj&&obj!=getParentNode(obj))\r
-       {\r
-               if (obj.tagName=="A"||obj.tagName=="IMG")\r
-                       return true;\r
-               else\r
-                       return isInsideHyperLink(getParentNode(obj));\r
-       }\r
-       else\r
-               return false;\r
-}\r
-\r
-function BSSCPopupClicked(e)\r
-{\r
-       if (!window.gbPopupTimeoutExpired) {\r
-               return false;\r
-       }\r
-\r
-       var popupIFrame = getCurrentPopupIFrame();\r
-       if (popupIFrame == null) {\r
-               return true;\r
-       }\r
-\r
-       if (gbBsIE4 && (!((popupIFrame.window.event != null) &&\r
-               (popupIFrame.window.event.srcElement != null) &&\r
-               isInsideHyperLink(popupIFrame.window.event.srcElement)))) {\r
-               document.onmousedown = gbOrignalOnMouseDown;\r
-               \r
-               // Simply hide the popup\r
-               hideAll();\r
-               window.gbPopupTimeoutExpired = false;\r
-               return true;\r
-       }\r
-       else if (gbBsNS6 && (!((e != null) &&\r
-                       (e.target!= null) && isInsideHyperLink(e.target))))\r
-       {\r
-               document.addEventListener("mousedown", gbOrignalOnMouseDown,false);\r
-               // Simply hide the popup\r
-               hideAll();\r
-               window.gbPopupTimeoutExpired = false;\r
-               return true;            \r
-       }\r
-}\r
-\r
-//trace the mouse over's position for hotspot\r
-function  BSPSPopupOnMouseOver(event)\r
-{\r
-       if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) {\r
-               window.gnPopupClickX = event.clientX + getScrollLeft();\r
-               window.gnPopupClickY = event.clientY + getScrollTop();\r
-               window.gnPopupScreenClickX = event.screenX;\r
-               window.gnPopupScreenClickY = event.screenY;\r
-       } else if (gbBsSafari) {\r
-               window.gnPopupClickX = event.clientX + getScrollLeft();\r
-               window.gnPopupClickY = event.clientY + getScrollTop();\r
-               window.gnPopupScreenClickX = event.screenX + window.screenX;\r
-               window.gnPopupScreenClickY = event.screenY + window.screenY;\r
-       } else if (gbBsNS4) {\r
-               window.gnPopupClickX = event.pageX - window.pageXOffset;\r
-               window.gnPopupClickY = event.pageY - window.pageYOffset;\r
-               window.gnPopupScreenClickX = event.screenX - window.pageXOffset;\r
-               window.gnPopupScreenClickY = event.screenY - window.pageYOffset;\r
-       }\r
-}\r
-\r
-function BSSCHidePopupWindow()\r
-{\r
-       if (window.gPopupWindow != null) {\r
-               if (gbBsNS4) {\r
-                       if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {\r
-                               window.gPopupWindow.close();\r
-                               window.gPopupWindow = null;\r
-                       }\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-// Add the PopupOnClick to the onclick array.\r
-if (typeof(BsscRegisterOnClick) != "undefined")\r
-{\r
-       BsscRegisterOnClick(BsPopupOnClick);\r
-}\r
-//End to support previous popup functions\r
-\r
-/// Section End  - Popup (JavaScript 1.0)\r
-\r
-/// Section Begin - Embedded Stub (JavaScript 1.0)\r
-\r
-function BSSCCreatePopupDiv()\r
-{\r
-       return;\r
-}\r
-\r
-function WritePopupMenuLayer()\r
-{\r
-       if (BsscHasExtJs()) {_WritePopupMenuLayer();}\r
-}\r
-\r
-function BSSCPopup(strURL, width, height)\r
-{\r
-       var re = new RegExp("'", 'g');\r
-       strURL = strURL.replace(re, "%27");\r
-\r
-       if (BsscHasExtJs())     { \r
-               _BSSCPopup(strURL, width, height);\r
-       }else{\r
-               //Create a temporary window first to ensure the real popup comes up on top\r
-               var wndTemp = null;\r
-               if (!gbBsNS3) {\r
-                       wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
-               }\r
-               // Create the real popup window\r
-               var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");\r
-               // Close the temporary\r
-               if (!gbBsNS3) {\r
-                       wndTemp.close();\r
-               } else {\r
-                       wndPopup.focus();\r
-               }\r
-       }\r
-}\r
-\r
-var gbWndTemp = null, gbWndPopupLinks = null;\r
-var gbstrParaTotal = "";\r
-\r
-function PopupMenu_Invoke()\r
-{\r
-       if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function')\r
-       {\r
-               if (Number(gsSkinVersion) > 2 && IsFlashSupported())\r
-               {\r
-                       return wfRelatedTopic(PopupMenu_Invoke.arguments);\r
-               }\r
-       }\r
-       if (BsscHasExtJs()) {\r
-               return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);\r
-       }\r
-       if (gbBsNS3Before || gbBsIE3Before )    {\r
-               var argLen      = PopupMenu_Invoke.arguments.length;\r
-               if (argLen < 5) {\r
-                       window.document.location.href = PopupMenu_Invoke.arguments[3];\r
-                       return false;\r
-               }\r
-               gbWndTemp = null;\r
-               gbWndPopupLinks = null;\r
-               gbstrParaTotal = "";\r
-               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
-                       var strParaLine = "";\r
-                       if (gbBsNS2){\r
-                               strParaLine += "<a href=\"";\r
-                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
-                               strParaLine += "\">"\r
-                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
-                               strParaLine += "</a>";\r
-                       } else {\r
-                               strParaLine += "<a href=\"javascript:";\r
-                               strParaLine += "gotoUrl(\'";\r
-                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
-                               strParaLine += "\');\"";\r
-                               if (PopupMenu_Invoke.arguments[1] != '') {\r
-                                       strParaLine += " TARGET='" + PopupMenu_Invoke.arguments[1] + "'";\r
-                               }\r
-                               strParaLine += ">";\r
-                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
-                               strParaLine += "</a>";\r
-                       }\r
-                       strParaLine += "<br>";\r
-                       gbstrParaTotal += strParaLine;\r
-               }\r
-               var nHeight = argLen * 15;\r
-               var nWidth = 400;\r
-               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
-               strParam += ",height=" + nHeight + ",width=200,resizable";\r
-               \r
-               //Create a temporary window first to ensure the real popup comes up on top\r
-               //var wndTemp = null;\r
-               if (!gbBsNS3) {\r
-                       gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
-               } \r
-               gbWndPopupLinks = window.open("", "popuplinks", strParam);\r
-\r
-               setTimeout("Wait_PopupMenuReady()", 100);\r
-       }\r
-       return true;\r
-}\r
-\r
-function Wait_PopupMenuReady() \r
-{\r
-       if (gbWndPopupLinks != null && "object" == typeof(gbWndPopupLinks.document)) {\r
-               PopupMenu_InvokeReady();\r
-       }\r
-       else \r
-               setTimeout("Wait_PopupMenuReady()", 100);\r
-}\r
-\r
-function PopupMenu_InvokeReady()\r
-{\r
-       if (gbWndPopupLinks != null) {\r
-               gbWndPopupLinks.document.open("text/html");\r
-               gbWndPopupLinks.document.write("<html><head>");\r
-               if (gbBsNS2) {\r
-                       gbWndPopupLinks.document.write("<base href=\"" + location +"\">");\r
-               } else {\r
-                       //YJ: IE301,302 and NS3.x works fine\r
-                       gbWndPopupLinks.document.write("<");\r
-                       gbWndPopupLinks.document.write("script>");\r
-                       gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}");\r
-                       gbWndPopupLinks.document.write("<");\r
-                       gbWndPopupLinks.document.write("/script>");\r
-               }\r
-               gbWndPopupLinks.document.write("</head><body onBlur=\'self.focus();\'>");\r
-               gbWndPopupLinks.document.write(gbstrParaTotal);\r
-               gbWndPopupLinks.document.write("</body></html>");\r
-               gbWndPopupLinks.document.close();\r
-\r
-               // Close the temporary\r
-               if (!gbBsNS3 && gbWndTemp != null) {\r
-                       gbWndTemp.close();\r
-               }else {\r
-                       gbWndPopupLinks.focus();\r
-               }\r
-\r
-               return true;\r
-       }\r
-       return false;\r
-}\r
-\r
-/// Section End - Embedded Stub (JavaScript 1.0)\r
-\r
-//// Segment End -- (JavaScript 1.0)\r
-\r
-//// Segment Begin -- (JavaScript 1.2)\r
-/// Section Begin  - kadov DHTM (JavaScript 1.2)\r
-\r
-//Begin to support extended and dropdown text effects.\r
-function kadovIsParagraph(el)\r
-{\r
-       return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;\r
-}\r
-\r
-function kadovInitEachChild(el)\r
-{      \r
-       for(var i=0; i<getChildNodes(el).length; i++)\r
-       {\r
-               var child = getChildNodes(el)[i];\r
-               if( child.tagName == "SCRIPT" || child.tagName == "!" )\r
-                       continue;\r
-\r
-               if( child.id != "" )\r
-               {\r
-                       // to wipe out the onload effects\r
-                       if (gbBsIE4&&!gbBsMac)\r
-                       {\r
-                               var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
-                               if( (onLoadEffect != null) && (onLoadEffect > "") )\r
-                                       child.style.setAttribute( "x-on-pageload", "" );\r
-                       }\r
-                       \r
-                       var href = child.getAttribute("href")\r
-                       if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )\r
-                               kadovFilePopupInit(child.id); // Init for Popup\r
-                       else if( child.className == "dropspot" || child.className == "expandspot" || \r
-                                        child.className == "glossterm" )\r
-                               kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text\r
-                       else if( child.className == "trigger")\r
-                               kadovInitTrigger(child.id);// Init for Trigger\r
-                       else\r
-                       {\r
-                               kadovInitEffects(child.id);// Init for DHTML effects\r
-                               CEngine.SetOneTargetInitialState( child.id );\r
-                       }\r
-               }\r
-               \r
-               if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )\r
-                       child.start = "mouseover";// to start a AVI file. fileopen doesn't work\r
-\r
-               kadovInitEachChild(child);\r
-       }\r
-}\r
-\r
-function kadovRetrieveTextInner(el)\r
-{      \r
-       var x = "";\r
-       if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))\r
-               return x;\r
-\r
-       if( kadovIsParagraph(el) )\r
-       {\r
-               var strNewID = " ";\r
-               if( el.id != "" )\r
-                       strNewID += "id=" + el.id + "_NewSpan ";\r
-               x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";\r
-       }\r
-       else\r
-       {\r
-               for(var i=0; i<getChildNodes(el).length; i++)\r
-                       x += kadovRetrieveTextInner( getChildNodes(el)[i] );\r
-       }\r
-       return x;\r
-}\r
-\r
-function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )\r
-{      \r
-       var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );\r
-       if( nTagOpen < 0 )\r
-               return strRawHTML;\r
-\r
-       var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);\r
-       if( nTagClose < nTagOpen )\r
-               return strRawHTML;\r
-               \r
-       if( typeof(nDistance) == "number" && nDistance > 0 )\r
-               if( (nTagClose - nTagOpen) != nDistance )\r
-                       return strRawHTML;\r
-               \r
-       var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;\r
-       return  kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );\r
-}\r
-\r
-function kadovAdjustObjectTag(strRawHTML, nStartPos)\r
-{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings\r
-       \r
-       //Is there any DTC?\r
-       var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';\r
-       var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';\r
-       var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );\r
-       if( nDTCTagOpen < 0 )\r
-               return strRawHTML;\r
-       var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );\r
-       if( nDTCTagClose < nDTCTagOpen)\r
-               return strRawHTML; // no Design Time Controls;\r
-               \r
-       //Is the DTC HTML Help Control?\r
-       var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';\r
-       var strRTObjTagClose = '</OBJECT>';\r
-       var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );\r
-       if( nRTObjTagOpen < nDTCTagOpen )\r
-               return strRawHTML;\r
-       var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );\r
-       if( nRTObjTagClose < nRTObjTagOpen )\r
-               return strRawHTML; // is not a HTML help control\r
-               \r
-       // Is it a related Topics html help control?\r
-       var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';\r
-       if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )\r
-               return strRawHTML;\r
-       \r
-       // does the commented object tag contain a items parameters             \r
-       var strRTItemsOpen = '<param name="Items" value="';\r
-       var strRTItemsClose = '$$**$$" >';\r
-       var strRTItemsClose2 = '$$**$$">';\r
-\r
-       var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);\r
-       if( nRTItemsOpen < nDTCTagOpen )\r
-               return strRawHTML;\r
-       var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);\r
-       if (nRTItemsClose == -1)\r
-               nRTItemsClose = strRawHTML.indexOf(strRTItemsClose2, nRTItemsOpen);\r
-       if( nRTItemsClose < nRTItemsOpen )\r
-               return strRawHTML;\r
-               \r
-       // found a items string\r
-       var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);\r
-       if( strItems.length < 1 )\r
-               return strRawHTML;\r
-       \r
-       // to reconstruct the item(s) param tag(s)\r
-       var strItemsArray = strItems.split('$$**$$');\r
-       if( strItemsArray.length < 1 )\r
-               return strRawHTML;\r
-       var strRunTimeItemParam = "";\r
-       for( var i = 0; i < strItemsArray.length; i++ )\r
-       {\r
-               strRunTimeItemParam += '<PARAM  NAME="Item' + (i+1);\r
-               strRunTimeItemParam += '"' + '  VALUE="';\r
-               strRunTimeItemParam += strItemsArray[i];\r
-               strRunTimeItemParam += '">';\r
-       }\r
-       \r
-       // to insert the reconstructed item params into runtime object tag\r
-       var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);\r
-       return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);\r
-}\r
-\r
-function kadovTextPopupOnLoad( el )\r
-{\r
-       if( typeof(el) == "string" )\r
-               el = getElement(el);\r
-\r
-       var src = el.getAttribute( "x-use-popup" );\r
-       var bNeedMove=true;\r
-       if(!src&&el.id)\r
-       {\r
-               for (var i=0;i<gPopupData.length;i++)\r
-                       if (gPopupData[i].el==el.id)\r
-                       {\r
-                               src=gPopupData[i].popupId;\r
-                               bNeedMove=false;\r
-                               break;\r
-                       }\r
-       }\r
-       if(!src)\r
-               src = el.style.getAttribute( "x-use-popup" );   \r
-       if (!src)       \r
-               return 0;\r
-\r
-       var name = src;\r
-       if( src.substr(0,1) == "#" ) \r
-               name = src.substr(1, src.length-1);\r
-       var srcDiv = getElement(name);\r
-       if( !srcDiv )\r
-               return 1;\r
-\r
-       if (bNeedMove)\r
-       {\r
-               var type = el.getAttribute( "x-popup-type" );\r
-               if (!type)\r
-                       type = el.style.getAttribute("x-popup-type");\r
-               if (!type)              \r
-                       return 1;               \r
-               var setup = el.getAttribute( "x-tmp-setup" );\r
-               var newId = name;\r
-               if( newId.indexOf( "_tmp") <= 0 )\r
-                       newId += "_tmp";\r
-\r
-               if( !setup)\r
-               {\r
-                       el.setAttribute( "x-tmp-setup", 1 );\r
-\r
-                       if( type == "pulldown"  )\r
-                       {\r
-                               var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
-                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
-                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
-                               \r
-                               //work around the bug in HH.exe that highlight the phrases when use Search tab\r
-                               //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
-                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
-                               \r
-                               var strStyle = " style='display:none; position:relative;";\r
-                               var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
-\r
-                               removeThis(srcDiv); // empty the original DIV tag\r
-                               var elParentPra = kadovFindParentParagraph(el);\r
-                               if( elParentPra )\r
-                                       insertAdjacentHTML(elParentPra, "afterEnd", newDiv );\r
-                       }\r
-                       else if( type == "expanding"  )\r
-                       {\r
-                               var inner = kadovRetrieveTextInner(srcDiv);\r
-                               if( inner == "" )\r
-                                       inner = srcDiv.innerHTML;\r
-                               var strAdjust = kadovAdjustObjectTag(inner,0);\r
-                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
-                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
-                               var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
-                               var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + ">&nbsp;" + strCleanHTML + "</span>";\r
-                               removeThis(srcDiv); // empty the original DIV tag\r
-                               insertAdjacentHTML(el, "afterEnd", newSpan );\r
-                       }\r
-               }\r
-       }\r
-       else\r
-       {\r
-               srcDiv.style.display = "none";\r
-       }\r
-       return 0;\r
-}\r
-\r
-function getElementsByTag(obj,sTagName)\r
-{\r
-       if(obj.getElementsByTagName)\r
-               return obj.getElementsByTagName(sTagName);\r
-       else if(obj.all)\r
-               return obj.all.tags(sTagName);\r
-       return null;\r
-}\r
-\r
-function getElement(sID)\r
-{\r
-       if(document.getElementById)\r
-               return document.getElementById(sID);\r
-       else if(document.all)\r
-               return document.all(sID);\r
-       return null;\r
-}\r
-\r
-function getParentNode(obj)\r
-{\r
-       if(obj.parentNode)\r
-               return obj.parentNode;\r
-       else if(obj.parentElement)\r
-               return obj.parentElement;\r
-       return null;\r
-}\r
-\r
-function getChildNodes(obj)\r
-{\r
-       if(obj.childNodes)\r
-       {\r
-               var children = new Array();\r
-               for (var i = 0; i < obj.childNodes.length; i++)\r
-               {\r
-                       if (obj.childNodes[i].nodeType == 1)\r
-                               children[children.length] = obj.childNodes[i];\r
-               }\r
-               return children;\r
-       }\r
-       else if(obj.children)\r
-               return obj.children;\r
-       return null;    \r
-}\r
-\r
-function removeThis(obj)\r
-{\r
-       if(obj.parentNode)\r
-               obj.parentNode.removeChild(obj);\r
-       else\r
-               obj.outerHTML="";\r
-}\r
-\r
-function kadovTextPopup( el )\r
-{\r
-       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 )\r
-               return;\r
-\r
-       var bNeedMove=true;\r
-       \r
-       if (window.event)\r
-               window.event.cancelBubble = true;\r
-\r
-       if( typeof(el) == "string" )\r
-               el = getElement(el);\r
-\r
-       if (!el||el==window)\r
-               return;\r
-       \r
-       var src = el.getAttribute( "x-use-popup" );\r
-       if(!src&&el.id)\r
-       {\r
-               for (var i=0;i<gPopupData.length;i++)\r
-                       if (gPopupData[i].el==el.id)\r
-                       {\r
-                               src=gPopupData[i].popupId;\r
-                               bNeedMove=false;\r
-                               break;\r
-                       }\r
-       }\r
-       if(!src)\r
-               src = el.style.getAttribute( "x-use-popup" );   \r
-       if(!src)\r
-               return;\r
-               \r
-       var name = src;\r
-       if( src.substr(0,1) == "#" ) \r
-       if (bNeedMove)\r
-               name = src.substr(1, src.length-1) + "_tmp";\r
-       else\r
-               name = src.substr(1, src.length-1);\r
-\r
-       var srcDiv = getElement(name);\r
-       if( !srcDiv )\r
-               return;\r
-\r
-       if( srcDiv )\r
-       {\r
-               if( srcDiv.style.display == "" )\r
-                       srcDiv.style.display = "none";\r
-               else\r
-               {\r
-                       srcDiv.style.display = "";\r
-                       if( typeof(srcDiv.bInitialized) == "undefined" )\r
-                       {\r
-                               srcDiv.bInitialized = true;\r
-                               kadovInitEffects(name);\r
-                               kadovInitEachChild(srcDiv);\r
-                       }\r
-               }\r
-       }\r
-       if(gbBsIE4)\r
-               event.returnValue=false;\r
-       return;\r
-}\r
-\r
-function kadovFindParentParagraph( el )\r
-{\r
-       if( typeof(el) == "string" )\r
-               el = getElement(el);\r
-       if( (!el) || el.tagName == "BODY" )\r
-               return null;\r
-       if( kadovIsParagraph(getParentNode(el)) )\r
-               return getParentNode(el);\r
-       else\r
-               return kadovFindParentParagraph( getParentNode(el) );\r
-}\r
-\r
-//Begin HTML code invoked function\r
-function kadovRegisterEventHandler( obj, strEvent, strEventHandler )\r
-{\r
-       if( !gbBsIE4 )\r
-               return;\r
-       CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );\r
-}\r
-\r
-function textPopupData(el, popupId)\r
-{\r
-       this.el = el;\r
-       this.popupId = "#"+popupId;\r
-}\r
-\r
-var gPopupData = new Array();\r
-\r
-function kadovTextPopupInit( el, popupId)\r
-{\r
-       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3)\r
-               return;\r
-               \r
-       if( typeof(el) == "string" )\r
-       {\r
-               if (popupId)\r
-               {\r
-                       gPopupData[gPopupData.length]=new textPopupData(el, popupId);\r
-               }\r
-               el = getElement(el);\r
-       }\r
-               \r
-       if( el != null )\r
-       {\r
-               CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(\"" + el.id +"\");" );\r
-               CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(\"" + el.id +"\");" );\r
-       }\r
-}\r
-//End HTML code invoked function\r
-\r
-//End to support extended and dropdown text effects.\r
-\r
-//Begin to convert iWrite format to RoboEditor Format for DHTML effects\r
-function kadovInitTriggersInHead( )\r
-{\r
-  if( Object.xDelayedInitElements )\r
-  {\r
-     var x = Object.xDelayedInitElements;\r
-     for(i=0; i<x.length; i++)\r
-       kadovInitTrigger( x[i] );\r
-  }\r
-}\r
-\r
-//Begin HTML code invoked function\r
-function kadovFilePopupInit( el )\r
-{\r
-       if( typeof(el) == "string" )\r
-               el = getElement(el);\r
-\r
-       if( el != null )\r
-               CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );\r
-}\r
-\r
-function kadovInitTrigger( element )\r
-{\r
-       if( !gbBsIE4 )\r
-               return;\r
-       var srcElement = element;\r
-       if( typeof(srcElement) == "string" )\r
-       {\r
-               srcElement = getElement(element,0);\r
-               if(srcElement == null)\r
-                       return;\r
-       }\r
-       \r
-       if( !kadovIsParentVisible(srcElement) )\r
-               return;\r
-\r
-       var targets = srcElement.getAttribute( "x-targets" );\r
-       if (!targets)\r
-               targets = srcElement.style.getAttribute("x-targets");\r
-       if (!targets)\r
-               return; \r
-       var arrOneTarget = targets.split( "," );\r
-       for( var i = 0; i < arrOneTarget.length; i ++ )\r
-               bsscFXInit( element, arrOneTarget[i], null, null, null, null );\r
-}\r
-\r
-function kadovIsParentVisible( el )\r
-{\r
-       if( typeof(el) == "string" )\r
-               el = getElement(el);\r
-       if( (!el) || el.tagName == "BODY" )\r
-               return true;\r
-       if( el.style.display == 'none' ) //el.visibility == 'hidden' || \r
-               return false;\r
-       else\r
-               return kadovIsParentVisible( getParentNode(el) );\r
-}\r
-\r
-function kadovInitEffects( element )\r
-{\r
-       if( !gbBsIE4 )\r
-               return;\r
-       var srcElement = element;\r
-       if( typeof(srcElement) == "string" )\r
-       {\r
-               srcElement = getElement(element,0);\r
-               if(srcElement == null)\r
-                       return;\r
-       }\r
-       \r
-       if( !kadovIsParentVisible(srcElement) )\r
-               return;\r
-       \r
-       kadovInitEffect( srcElement, "x-on-hover" );\r
-       kadovInitEffect( srcElement, "x-on-pageclick" );\r
-       kadovInitEffect( srcElement, "x-on-pageload" );\r
-       kadovInitEffect( srcElement, "x-on-trigger-1" );\r
-       kadovInitEffect( srcElement, "x-on-trigger-2" );\r
-}\r
-//End HTML code invoked function\r
-\r
-function kadovInitEffect( element, prop )\r
-{\r
-       var values = null;\r
-       if( element.getAttribute( "currentStyle" )  && element.currentStyle.getAttribute)\r
-               values = element.currentStyle.getAttribute( prop );\r
-       else  if (element.style.getAttribute)\r
-               values = element.style.getAttribute( prop );\r
-       if( !values )\r
-               return;\r
-\r
-       var functions = new Array();\r
-       var nIdx = 0, nStart = 0;\r
-       var nNext = values.indexOf( "\)", 0);\r
-       while( nNext >= 0 && nNext < values.length )\r
-       {\r
-               functions[nIdx] = values.substr( nStart, nNext-nStart+1);\r
-               nStart = nNext + 1;\r
-               nIdx++;\r
-               nNext = values.indexOf( "\)", nStart);\r
-       }\r
-               \r
-       for( var i=0; i<functions.length; i++)\r
-       {\r
-               var id = element.getAttribute( "id" );\r
-               var translatedProp = kadovTranslateProp(prop);\r
-\r
-               var lp = functions[i].indexOf( "(" );\r
-               var fnname = functions[i].substring(0, lp);\r
-               var srcargs = functions[i].substring(lp+1, functions[i].length-1);\r
-               \r
-               var nClickTimes = 1;\r
-               var arrForClickCount = srcargs.split( "," );\r
-               for( var j = 0; j < arrForClickCount.length; j++ )\r
-               {// to locate and get the "clicks=99" settings\r
-                       var nPageClick = arrForClickCount[j].indexOf("clicks");\r
-                       if( nPageClick >= 0 )\r
-                       {\r
-                               nPageClick = arrForClickCount[j].indexOf("=");\r
-                               if( nPageClick > 0 )\r
-                               {\r
-                                       nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-               var args = srcargs;\r
-               if( j < arrForClickCount.length )\r
-               {// to strip out the "clicks=99" from the arguments string\r
-                       args = "";\r
-                       for( var k = 0; k < arrForClickCount.length; k ++ )\r
-                       {\r
-                               if( k != j )\r
-                               {\r
-                                       args += arrForClickCount[k];\r
-                                       if( k < arrForClickCount.length - 1 )\r
-                                               args += ",";\r
-                               }\r
-                       }\r
-               }\r
-               bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );\r
-       }\r
-}\r
-\r
-function kadovTranslateProp( prop )\r
-{\r
-       switch( prop )\r
-       {\r
-       case "x-on-hover" :     return "bsschover";\r
-       case "x-on-pageclick" : return "bsscpageclick";\r
-       case "x-on-pageload" :  return "bsscpageload";\r
-       case "x-on-trigger-1" : return "bssctrigger1";\r
-       case "x-on-trigger-2" : return "bssctrigger2";\r
-       }\r
-       return null;\r
-}\r
-//End to convert iWrite format to RoboEditor Format for DHTML effects\r
-\r
-//Begin the definition of one entry to DHTML effects\r
-function bsscFXInit( trigger_ID, target_ID, event_type, \r
-       action_type, action_setting, event_addional )\r
-{\r
-       if( (!gbBsWindows && !gbBsSunOS  && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID\r
-               return; // we don't support Navigator yet\r
-       \r
-       if( typeof(event_type) == "string" )\r
-               event_type = event_type.toLowerCase();\r
-       if( typeof(action_type) == "string" )\r
-               action_type = action_type.toLowerCase();\r
-       if( typeof(action_setting) == "string" )\r
-                action_setting = action_setting.toLowerCase();\r
-       \r
-       // to get the target element then add it to the target list\r
-       var eleTarget = CCSSP.GetObject( target_ID );\r
-       if( (eleTarget != null) && (event_type != null) && (action_type != null) )\r
-       {\r
-               CEngine.AddOneTarget( target_ID, eleTarget );\r
-               CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);\r
-       }\r
-       \r
-       // to validate the trigger_ID parameter\r
-       if( typeof(trigger_ID) == "string" && trigger_ID != "" )\r
-               CEngine.BuildTriggerObject( trigger_ID, target_ID );\r
-}      \r
-//End the definition of one entry to DHTML effects\r
-\r
-/// Section End  - kadov DHTM (JavaScript 1.2)\r
-\r
-/// Section Begin  - CCSSP DHTM (JavaScript 1.2)\r
-\r
-//Begin JavaScript libary for cross-platform positioning object.\r
-function CCSSP(){} // constructor of CCSSP class\r
-\r
-CCSSP.GetObject = function( obj )\r
-{//convert object name string or reference into a valid object reference\r
-       if( typeof(obj) == "object" )\r
-               return obj;\r
-       else if( typeof(obj) == "string" && obj != "")\r
-       {\r
-               if( gbBsNS4 )\r
-                       return eval("document." + obj);\r
-               else\r
-                       return eval("document.all(\"" + obj + "\")");\r
-       }\r
-       else\r
-               return null;\r
-}\r
-\r
-CCSSP.MoveObjectTo = function(obj, x, y)\r
-{//positioning an object at a specific pixel coordinate\r
-       if( gbBsNS4 )\r
-               obj.moveTo(x,y);\r
-       else\r
-       {\r
-               obj.style.pixelLeft = x;\r
-               obj.style.pixelTop = y;\r
-       }\r
-}\r
-\r
-CCSSP.MoveObjectBy = function(obj, dx, dy)\r
-{//moveing a object by x and/or y pixel\r
-       if( gbBsNS4 )\r
-               obj.moveBy(dx,dy);\r
-       else\r
-       {\r
-               obj.style.pixelLeft += dx;\r
-               obj.style.pixelTop += dy;\r
-       }\r
-}\r
-\r
-CCSSP.SetObjectBGColor = function(obj, color)\r
-{//set the background color of an object\r
-       if( gbBsNS4 )\r
-               obj.bgColor = color;\r
-       else\r
-               obj.style.backgroundColor = color;\r
-}\r
-\r
-CCSSP.ShowObject = function(obj, bShow)\r
-{// set the object to be visible or invisible\r
-       if( gbBsNS4 )\r
-               obj.visibility = (bShow == true) ? 'show' : 'hide';\r
-       else\r
-               obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.\r
-}\r
-\r
-CCSSP.GetObjectLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object\r
-       if( gbBsNS4 )\r
-               return obj.left;\r
-       else\r
-               return obj.style.pixelLeft;\r
-}\r
-\r
-CCSSP.GetObjectTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object\r
-       if( gbBsNS4 )\r
-               return obj.top;\r
-       else\r
-               return obj.style.pixelTop;\r
-}\r
-\r
-CCSSP.GetObjectContainLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object relative to it's parent element\r
-       if( gbBsNS4 )\r
-               return obj.pageX;\r
-       else\r
-       {\r
-               if( obj == document.body )\r
-                       return obj.clientLeft;\r
-               else\r
-                       return obj.offsetLeft;\r
-       }\r
-}\r
-\r
-CCSSP.GetObjectWindowLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object relative to browser window\r
-       if( gbBsNS4 )\r
-               return obj.pageX;\r
-       else\r
-       {\r
-               var nOffsetWindowLeft = 0;\r
-               for(var element = obj; element; element = element.offsetParent)\r
-                       nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element);\r
-               return nOffsetWindowLeft;\r
-       }\r
-}\r
-\r
-CCSSP.GetObjectContainTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object relative to it's parent element\r
-       if( gbBsNS4 )\r
-               return obj.pageY;\r
-       else\r
-       {\r
-               if( obj == document.body )\r
-                       return obj.clientTop;\r
-               else\r
-                       return obj.offsetTop;\r
-       }\r
-}\r
-\r
-CCSSP.GetObjectWindowTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object relative to browser window\r
-       if( gbBsNS4 )\r
-               return obj.pageY;\r
-       else\r
-       {\r
-               var nOffsetWindowTop = 0;\r
-               for(var element = obj; element; element = element.offsetParent)\r
-                       nOffsetWindowTop += CCSSP.GetObjectContainTop(element);\r
-               return nOffsetWindowTop;\r
-       }\r
-}\r
-\r
-CCSSP.GetObjectHeight = function(obj)\r
-{// retrieve the height of a posionable object\r
-       if( gbBsNS4 )\r
-               return obj.clip.height;\r
-       else\r
-               return obj.offsetHeight;\r
-}\r
-\r
-CCSSP.GetObjectWidth = function(obj)\r
-{// retrieve the width of a posionable object\r
-       if( gbBsNS4 )\r
-               return obj.clip.width;\r
-       else\r
-               return obj.offsetWidth;\r
-}\r
-\r
-CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )\r
-{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined\r
-       if (gbBsNS4 && !gbBsNS6)\r
-               return ;\r
-               \r
-       var oldHandler = "";\r
-\r
-       if (gbBsMac &&gbBsIE4&&!gbBsIE5)\r
-       {\r
-               if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")\r
-               { //search for <SCRIPT> tag which define the event handler\r
-                       for( var i = 0; i < document.scripts.length; i++ ) \r
-                       {\r
-                               var script = document.scripts[i];\r
-                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
-                               {\r
-                                       oldHandler = script.innerHTML;\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       else\r
-       {\r
-               var oldInlineHandler = srcObj[rawEventName.toLowerCase()];\r
-               if( oldInlineHandler != null && typeof(oldInlineHandler) != "undefined")\r
-               {\r
-                       var functionDefinition = oldInlineHandler.toString();\r
-                       var bodyStart = functionDefinition.indexOf( "{" );\r
-                       var bodyEnd = functionDefinition.lastIndexOf( "}" );\r
-                       if( bodyStart > 0 || bodyEnd > bodyStart )\r
-                               oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );\r
-               }\r
-               else if( gbBsIE4 )\r
-               { //search for <SCRIPT> tag which define the event handler\r
-                       for( var i = 0; i < document.scripts.length; i++ ) \r
-                       {\r
-                               var script = document.scripts[i];\r
-                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
-                               {\r
-                                       oldHandler = script.innerHTML;\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       if( oldHandler.indexOf(funcHandler) >= 0 )\r
-               return;// to prevent register the funtion twice.\r
-\r
-       if( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window\r
-       {// other raw events will apply to layer\r
-               var noOn = rawEventName.substring(2, rawEventName.length);\r
-               if( typeof(noOn) == "string" && noOn.length > 3 ) {\r
-                       if (srcObj.captureEvents)\r
-                               srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
-               }\r
-       }\r
-       \r
-       var newHandler = oldHandler;\r
-       if( newHandler.length == 0 )\r
-               newHandler = funcHandler;\r
-       else\r
-               newHandler += "; " + funcHandler;\r
-       \r
-       srcObj[rawEventName.toLowerCase()] = new Function( newHandler );\r
-}\r
-\r
-CCSSP.GetWindowHeight = function()\r
-{// retrieve the height of available content in browser window\r
-       if( gbBsNS4 )\r
-               return window.innerHeight;\r
-       else\r
-               return document.body.clientHeight;\r
-}\r
-\r
-CCSSP.GetWindowBottom = function()\r
-{// retrieve the bottom postion of browser window\r
-       if( gbBsNS4 )\r
-               return window.outerHeight + window.pageYOffset;\r
-       else\r
-               return document.body.clientHeight + document.body.scrollTop;\r
-}\r
-\r
-CCSSP.GetWindowWidth = function()\r
-{// retrieve the width of available content in browser window\r
-       if( gbBsNS4 )\r
-               return window.innerWidth;\r
-       else\r
-               return document.body.clientWidth;\r
-}\r
-\r
-CCSSP.GetWindowRight = function()\r
-{// retrieve the right postion of browser window\r
-       if( gbBsNS4 )\r
-               return window.outerWidth + window.pageXOffset;\r
-       else\r
-               return document.body.clientWidth + document.body.scrollLeft;\r
-}\r
-\r
-CCSSP.TrimString = function( objString, subtrim )\r
-{// to trim the "subtrim" in the beginning and ending of a string object\r
-       if( typeof(subtrim) != "string" || subtrim == null )\r
-               return objString;\r
-       var strHead = objString.substring(0, 1);\r
-       var strRear = objString.substring(objString.length-1, objString.length);\r
-       if( strHead != subtrim && strRear != subtrim )\r
-               return objString;\r
-       \r
-       var spacePos = objString.indexOf(subtrim);\r
-       if( spacePos < 0 )\r
-               return objString;\r
-       else if( spacePos == objString.length - 1 )\r
-               return objString.substring(0, spacePos);\r
-       else\r
-       {\r
-               var newString = objString.substring( spacePos + 1, objString.length);\r
-               return CCSSP.TrimString( newString, subtrim );\r
-       }\r
-}\r
-\r
-CCSSP.TrimSpace = function( objString )\r
-{\r
-       var Trim1 = CCSSP.TrimString( objString, " ");\r
-       return CCSSP.TrimString( Trim1, "\'");\r
-}\r
-\r
-CCSSP.GetEventElement = function( navEventObject )\r
-{// to get the element who fired the current event\r
-       if(gbBsNS4) \r
-               if (gbBsNS6)\r
-                       return null;\r
-               else\r
-                        navEventObject.target;\r
-       else\r
-               return event.srcElement;\r
-}\r
-\r
-CCSSP.PrepareFilter = function( Obj )\r
-{//to prepare for making the filter work\r
-       Obj.style.filter = "";\r
-       if( Obj.style.width != "" || Obj.style.height != "" || Obj.style.position == "absolute" )\r
-               return;\r
-       Obj.style.height = CCSSP.GetObjectHeight(Obj);\r
-}\r
-\r
-CCSSP.IsDescendant = function( progenitor, progeny )\r
-{\r
-       if( typeof(progeny) == "undefined" || progeny == null )\r
-               return false;\r
-       else if( progeny == progenitor )\r
-               return true; \r
-       else if( progeny.id == progenitor.id ) \r
-               return true; \r
-       else if( getParentNode(progeny) == getParentNode(progenitor))\r
-               return false;\r
-       else\r
-               return CCSSP.IsDescendant( progenitor, getParentNode(progeny));\r
-}\r
-\r
-CCSSP.IsTextTag = function( Obj )\r
-{\r
-       if( typeof( Obj.tagName ) == "undefined" )\r
-               return false;\r
-       return( Obj.tagName.indexOf("H") == 0 || Obj.tagName == "P" || \r
-                       Obj.tagName == "FONT" || Obj.tagName == "SPAN" );\r
-}\r
-\r
-//End JavaScript libary for cross-platform positioning object.\r
-\r
-/// Section End  - CCSSP DHTM (JavaScript 1.2)\r
-\r
-/// Section Begin  - CCSSP DHTM 1 (JavaScript 1.2)\r
-\r
-//Begin the definition of class CTrigger\r
-function CTrigger( TriggerElement )\r
-{\r
-       // object : the trigger element. Never be null. \r
-       this.eleTrigger = TriggerElement;\r
-       \r
-       // number : the click counter number: only 3 values: 0,1,2;\r
-       this.nCounter = 0; \r
-       \r
-       //object as associative array of string:\r
-       // the associate target ID strings; one element at least.                       \r
-       this.objStrTarget = new Object();\r
-       this.eleTrigger.style.cursor = "hand";\r
-       if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )\r
-               this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map\r
-}\r
-\r
-CTrigger.prototype.AddTargetID = function( strTargetID )\r
-{// add one target ID string to the objStrTarget\r
-       if( typeof(strTargetID) != "string" )\r
-               return ;\r
-       if( typeof(this.objStrTarget[strTargetID]) != "string" )\r
-               this.objStrTarget[strTargetID] = strTargetID;\r
-}\r
-\r
-CTrigger.prototype.OnTriggerClick = function()\r
-{// to activate all asociated target\r
-       var strEventType = ( (this.nCounter++)% 2 == 0 ) ? \r
-               "bssctrigger1" : "bssctrigger2";\r
-               \r
-       // to enumerate associative target element's ID string\r
-       for( var strTargetID in this.objStrTarget ) \r
-               CEngine.SendEventToOneTarget( strTargetID, strEventType );\r
-}\r
-//End the definition of class CTrigger\r
-\r
-//Begin the definition of class CTarget\r
-function CTarget( TargetElement )\r
-{\r
-       // object : the target element. Never be null.\r
-       this.eleTarget = TargetElement;\r
-       this.objManager = new Object(); // object: the event manager\r
-} \r
-\r
-CTarget.nPageClickCounter = 0;// static class property.\r
-\r
-CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )\r
-{// return the action agency ( effect )object's refernece \r
-       switch( str_action_type )\r
-       {\r
-       case "show":return new CAgencyShow( this.eleTarget, true ) ;\r
-       case "hide":return new CAgencyShow( this.eleTarget, false ) ;\r
-\r
-    case "flyin" : \r
-       return new CAgencyFly(this.eleTarget, action_setting, true);\r
-    case "flyout" : \r
-       return new CAgencyFly(this.eleTarget, action_setting, false);\r
-    case "spiralin" : \r
-       return new CAgencySpiral(this.eleTarget, action_setting, true);\r
-    case "spiralout" : \r
-       return new CAgencySpiral(this.eleTarget, action_setting, false);\r
-    case "zoomin" :\r
-       return new CAgencyZoom(this.eleTarget, action_setting, true);\r
-    case "zoomout" : \r
-       return new CAgencyZoom(this.eleTarget, action_setting, false);\r
-    case "elastic" : \r
-               return new CAgencyElastic(this.eleTarget, action_setting);\r
-               \r
-    case "fadein" : \r
-       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
-    case "fadeout" :\r
-       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
-    case "rockrollstatic" :\r
-    case "rockroll" :\r
-       return (gbBsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
\r
-    case "glow":\r
-       return (gbBsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
-    case "dropshadow":\r
-       return (gbBsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
-    case "transition" :\r
-       return (gbBsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
-    case "blur" :\r
-       return (gbBsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
-\r
-    case "fliph" : // all these 4 do NOT need any parameters\r
-    case "flipv" :\r
-    case "invert":\r
-    case "gray" :\r
-       return (gbBsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
-    \r
-    case "fontchange": // the effects below change the style on the fly, so won't work in Navigator\r
-       return (gbBsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
-    case "boderchange": \r
-    case "stylechange":\r
-       return (gbBsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
-\r
-       default: return null;\r
-       }\r
-}\r
-\r
-CTarget.prototype.SetEventManager = function( \r
-       one_event_type,str_action_type,action_setting,event_additional)\r
-{// to set the event manager with specified action \r
-       if( typeof( one_event_type ) != "string" ||     \r
-               typeof( str_action_type ) != "string"||\r
-               typeof( action_setting ) != "string" )\r
-               return false;\r
-       if( typeof(this.objManager[one_event_type]) == "undefined" )\r
-       {\r
-               this.objManager[one_event_type] = new Object();\r
-               this.objManager[one_event_type].length = 0;\r
-       }\r
-       \r
-       var eventAgency = this.GetAgencyObject(str_action_type,action_setting);\r
-       if( eventAgency != null )\r
-       {\r
-               var ct = this.objManager[one_event_type].length ++;\r
-               this.objManager[one_event_type][ct] = eventAgency;\r
-               \r
-               if( one_event_type == "bsscpageclick" )\r
-               {// to deal with the "number of pageclick" stuff\r
-                       if( typeof(event_additional) == "number" )\r
-                               this.objManager[one_event_type][ct].nPageClick = event_additional;\r
-                       else // set the default number \r
-                               this.objManager[one_event_type][ct].nPageClick = 1;\r
-                       \r
-                       if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||\r
-                           (this.objManager[one_event_type][ct].nPageClick < \r
-                                       this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )\r
-                               this.objManager.nMinPageClickIndex = ct;\r
-               }\r
-               \r
-               //hide the object blindly,SetState function will take care of the final correct state\r
-               if( ((one_event_type == "bsscpageclick") && \r
-                        (this.objManager[one_event_type][ct].nPageClick == 1)) ||\r
-                       one_event_type == "bsscpageload" ||\r
-                       one_event_type == "bssctrigger1" )\r
-                       CCSSP.ShowObject( this.eleTarget, false );\r
-               \r
-               if( one_event_type == "bssctrigger1" || one_event_type == "bssctrigger2" )\r
-                       if( typeof( this.strTriggerEvent ) == "undefined" )\r
-                               this.strTriggerEvent = ( one_event_type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1";\r
-                       \r
-               return true;\r
-       }\r
-       return false;\r
-}\r
-\r
-CTarget.prototype.OnEvent = function( strBsscEvent )\r
-{// response to the event ( bssc format )\r
-       if( typeof(this.objManager[strBsscEvent]) == "object" )\r
-       { // to get the event agency from the event manager\r
-               var eventAgency = this.objManager[strBsscEvent];\r
-               for( var i = 0; i < eventAgency.length; i++ )\r
-               {\r
-                       if( strBsscEvent == "bsscpageclick" && \r
-                               eventAgency[i].nPageClick != CTarget.nPageClickCounter )\r
-                                continue;\r
-                       else if( strBsscEvent == "bsschover" && event.type == "mouseout" )\r
-                               eventAgency[i].EndEffect();\r
-                       else // to invoke the unified function in effect object \r
-                               eventAgency[i].UpdateEffect(); \r
-               }\r
-       }\r
-}\r
-\r
-CTarget.prototype.SetState = function( strBsscEvent )\r
-{\r
-       if( typeof(this.objManager[strBsscEvent]) != "object" )\r
-               return false;\r
-\r
-       // to get the event agency from the event manager\r
-       var eventAgency = this.objManager[strBsscEvent];\r
-       \r
-       if( strBsscEvent == "bsscpageclick" )\r
-       {// we only set the initial state for the minium number of pageclick \r
-               eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();\r
-               return true;\r
-       }\r
-       else\r
-       {\r
-               for( var i = 0; i < eventAgency.length; i++ )\r
-                       eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object       \r
-               if( i > 0 )\r
-                       return true;\r
-               else\r
-                       return false;\r
-       }\r
-}\r
-//End the definition of class CTarget\r
-\r
-//Begin the definition of CEngine class\r
-function CEngine(){}// all properities are going be "class" properities\r
-\r
-// object : as associative array of trigger objects\r
-CEngine.objTrigger = new Object();\r
-// object : as associative array of target objects \r
-CEngine.objTarget = new Object(); \r
-\r
-// Array : each element is a CAgencyXXX animation object\r
-CEngine.arrAnimation = new Array();\r
-CEngine.PerformAnimation = function( nIndex )\r
-{// animation : update effects function\r
-       CEngine.arrAnimation[nIndex].UpdateEffect();\r
-}\r
-\r
-CEngine.AddOneTrigger = function(TriggerID,TriggerElement)\r
-{// add one Trigger object into the trigger array\r
-       if( typeof(TriggerID) != "string" || TriggerElement == null ||\r
-           typeof(TriggerElement) != "object" )\r
-               return;\r
-       if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )\r
-               CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);\r
-}\r
-       \r
-CEngine.AddOneTarget = function(TargetID, TargetElement)\r
-{// add one Target object into the target array\r
-       if( typeof(TargetID) != "string" || TargetElement == null ||\r
-               typeof(TargetElement) != "object" )\r
-               return;\r
-       if( typeof(CEngine.objTarget[TargetID]) != "object" )\r
-               CEngine.objTarget[TargetID] = new CTarget( TargetElement );\r
-}\r
-\r
-CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )\r
-{// to activate one target object\r
-       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
-       {\r
-               if( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )\r
-               {//now, the "bssctrigger1" and "bssctrigger2" work like a toggle\r
-                       if( strBsscEvent == CEngine.objTarget[strTargetID].strTriggerEvent )\r
-                               strBsscEvent = (strBsscEvent == "bssctrigger1") ? "bssctrigger2" : "bssctrigger1";\r
-                       CEngine.objTarget[strTargetID].strTriggerEvent = strBsscEvent;\r
-               }\r
-               CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );\r
-       }\r
-}\r
-\r
-CEngine.SendEventToAllTarget = function( strBsscEvent )\r
-{ //to activate all target associative to the BSSC event\r
-       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
-               CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );\r
-}\r
-\r
-CEngine.SetOneTargetInitialState = function( strTargetID )\r
-{// only invoked after ALL effects for the target have been set\r
-       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
-       {// to get target object\r
-               var objTarget = CEngine.objTarget[strTargetID];\r
-               if( objTarget.SetState( "bsscpageload" ) == false )\r
-               {\r
-                       objTarget.SetState( "bsscpageclick" );\r
-                       objTarget.SetState( "bssctrigger1" );\r
-               }\r
-       }\r
-}\r
-\r
-CEngine.AdjustPageClickCounter = function()\r
-{\r
-       var nAdjustedClickCounter = CTarget.nPageClickCounter;\r
-       var bAdjusted = false;\r
-       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
-       {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter\r
-               var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;\r
-               if( objEventPageClick != null )\r
-               {\r
-                       for( var i = 0; i < objEventPageClick.length; i++ )\r
-                       {\r
-                               var nOtherPageClick = objEventPageClick[i].nPageClick;\r
-                               if( nOtherPageClick == CTarget.nPageClickCounter )\r
-                                       return;\r
-                               if( nOtherPageClick > CTarget.nPageClickCounter )\r
-                               {\r
-                                       if( !bAdjusted )\r
-                                       {\r
-                                               nAdjustedClickCounter = nOtherPageClick;\r
-                                               bAdjusted = true;\r
-                                       }\r
-                                       else if( nOtherPageClick < nAdjustedClickCounter )\r
-                                               nAdjustedClickCounter = nOtherPageClick;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       CTarget.nPageClickCounter = nAdjustedClickCounter;\r
-}\r
-\r
-CEngine.OnPageLoad = function()\r
-{      \r
-       // first, to set all target's initial state\r
-       for( var strTargetID in CEngine.objTarget )\r
-               CEngine.SetOneTargetInitialState( strTargetID );\r
-       \r
-       // to invoke all target's onpageload handler\r
-       CEngine.SendEventToAllTarget( "bsscpageload" );\r
-}\r
-\r
-CEngine.OnPageClick = function()\r
-{ // to invoke all target's onpageclick handler\r
-       var src = CCSSP.GetEventElement( arguments[0] );\r
-       if( src == null )\r
-               return;\r
-               \r
-       var objClickedTrigger = null;\r
-       for( var strTriggerID in CEngine.objTrigger )\r
-       { // to detect which trigger is clicked\r
-               if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )\r
-               {\r
-                       objClickedTrigger = CEngine.objTrigger[strTriggerID];\r
-                       break;\r
-               }\r
-       }\r
-       \r
-       if( objClickedTrigger != null) // the clicked trigger found\r
-               objClickedTrigger.OnTriggerClick();\r
-       else // no trigger is clicked\r
-       { // to send PageClick event to all target\r
-               CTarget.nPageClickCounter++;\r
-               CEngine.AdjustPageClickCounter();\r
-               CEngine.SendEventToAllTarget( "bsscpageclick" );\r
-       }\r
-}      \r
-\r
-CEngine.OnMouseOver = function()\r
-{ // to invoke all target's onpageload handler\r
-       var src = CCSSP.GetEventElement( arguments[0] );\r
-       if( src == null )\r
-               return;\r
-               \r
-       var strHoveredTargetID = null;\r
-       for( var strTargetID in CEngine.objTarget )\r
-       { // to detect which Target is hovering on\r
-               if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )\r
-           {\r
-                       strHoveredTargetID = strTargetID;\r
-                       break;\r
-           }\r
-       }\r
-       \r
-       if( strHoveredTargetID != null ) // the hovered target found\r
-               CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );\r
-}\r
-\r
-CEngine.BuildTargetObject = function(target_ID,event_type,action_type,\r
-                       action_setting, event_additional)\r
-{// to build target object \r
-       // to get the target object\r
-       if( typeof( CEngine.objTarget[target_ID] ) != "object" )\r
-               return false;// the engine's AddOneTarget function might have failed.\r
-       var TargetObject = CEngine.objTarget[target_ID];\r
-       \r
-       // to prepare the parameters for the event manager\r
-       var arrEvent = event_type.split("|"); // to split the combined event_type string\r
-       var arrAction = action_type.split("|");//to split the combined action_type string\r
-       for( var trim = 0; trim < arrEvent.length; trim++ )\r
-               arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);\r
-       \r
-       for( trim = 0; trim < arrAction.length; trim++ )\r
-               arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);\r
-       \r
-       var arrSetting = new Array(); \r
-       if( typeof(action_setting) == "string" )\r
-               arrSetting = action_setting.split("|");// to split the combined action_setting string\r
-       // to calibrate the arrays\r
-       for( var i = arrSetting.length; i < arrAction.length; i++ )\r
-       {\r
-               if( typeof(arrSetting[i]) != "string" )\r
-                        arrSetting[i] = "";\r
-       }                                \r
-\r
-       // to prepare for dealing with the absolute posioning element\r
-       TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );\r
-       TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );\r
-\r
-       if( arrEvent.length > 1 )\r
-       {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"\r
-               if( arrAction.length != 2 )\r
-                       return false; // if event is combined, there must be 2 actions\r
-               for( i = 0 ; i < 2; i++ )\r
-               {\r
-                       if( TargetObject.SetEventManager(arrEvent[i], arrAction[i], \r
-                               arrSetting[i], event_additional) == false )\r
-                               return false; // the event manager has not been set up\r
-               }\r
-       }\r
-       else // the event_type string is not combined\r
-       {\r
-               for( i = 0 ; i < arrAction.length; i++ )\r
-               {\r
-                       TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);\r
-                       // to validate the event manager\r
-                       if( typeof(TargetObject.objManager[event_type]) != "object" ||\r
-                                       typeof(TargetObject.objManager[event_type][i]) != "object" )\r
-                               return false; // the event manager has not been set up\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-CEngine.BuildTriggerObject = function(trigger_ID, target_ID)\r
-{// to build the trigger object\r
-       var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string\r
-       for( var i = 0; i < arrTrigger.length; i ++ )\r
-       {// to get the trigger element then add it to the trigger list\r
-               arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );\r
-               var eleTrigger = CCSSP.GetObject( arrTrigger[i] );\r
-               if( eleTrigger == null )\r
-                       continue; // the trigger_ID string in the HTML code maybe wrong\r
-               CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );\r
-\r
-               // to get the target object\r
-               if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )\r
-                       continue;// the engine's AddOneTarget function might have failed.\r
-               CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );\r
-       }\r
-}\r
-//End the definition of CEngine class\r
-\r
-/// Section End  - CCSSP DHTM 1 (JavaScript 1.2)\r
-\r
-/// Section Begin  - CCSSP DHTM 2 (JavaScript 1.2)\r
-\r
-//Begin the definition of CAgencyXXXX classes\r
-\r
-//Begin of the CAgencyShow definition\r
-function CAgencyShow( element, bIsShow )\r
-{\r
-       this.ele = element;\r
-       this.bIsShow = bIsShow;\r
-}\r
-\r
-CAgencyShow.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
-}\r
-\r
-CAgencyShow.prototype.UpdateEffect = function()\r
-{\r
-       CCSSP.ShowObject( this.ele, this.bIsShow );\r
-}\r
-\r
-CAgencyShow.prototype.EndEffect = function()\r
-{\r
-       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
-}\r
-// End of the CAgencyShow definition\r
-\r
-// Begin of CAgencyFly definition\r
-function CAgencyFly( element, settings, bIsIn )\r
-{\r
-       this.ele = element;\r
-       this.bIsIn = bIsIn;\r
-       this.duration = 1000; // default\r
-       this.direction = "right";\r
-\r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
-               case "direction" : this.direction = arrOneSet[1]; break;\r
-               }\r
-       }\r
-               \r
-       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
-               this.ele.style.position = "relative";\r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyFly.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencyFly.prototype.UpdateEffect = function()\r
-{\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-\r
-       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-       if( percent >= 1.0 )\r
-               this.EndEffect();\r
-       else\r
-       {\r
-               var newX = this.startX*(1.0-percent) +  this.finalX*percent;\r
-               var newY = this.startY*(1.0-percent) +  this.finalY*percent;\r
-               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
-               if( this.timer == null )\r
-                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
-       }\r
-}\r
-\r
-CAgencyFly.prototype.EndEffect = function()\r
-{\r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-\r
-       if( this.bIsIn ) // FlyIn\r
-               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
-       else // FlyOut\r
-               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
-       CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencyFly.prototype.ResetParameters = function()\r
-{\r
-       this.PrepareEffect();\r
-       CCSSP.ShowObject(this.ele, true );\r
-\r
-       this.startX = 0;\r
-       this.startY = 0;\r
-       this.finalX = 0;\r
-       this.finalY = 0; \r
-       \r
-       var offsetLeft = CCSSP.GetObjectWindowLeft(this.ele) + this.ele.offsetWidth;\r
-       var offsetTop = CCSSP.GetObjectWindowTop(this.ele) + this.ele.offsetHeight;\r
-       var offsetRight = CCSSP.GetWindowRight();\r
-       var offsetBottom = CCSSP.GetWindowBottom();\r
-\r
-       if( this.bIsIn )\r
-       { // FlyIn\r
-               this.finalX = this.ele.ABSX;\r
-               this.finalY = this.ele.ABSY;\r
-\r
-               switch( this.direction )\r
-               {\r
-               case "right": this.startX = offsetRight; this.startY = this.finalY; break;\r
-               case "left": this.startX = -offsetLeft;  this.startY = this.finalY; break;\r
-               case "down": this.startY = offsetBottom; this.startX = this.finalX; break;\r
-               case "up":  this.startY = -offsetTop;    this.startX = this.finalX; break;\r
-               case "downright":\r
-                       this.startX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
-                       this.startY = this.startX;              break;\r
-               case "upright":\r
-                       this.startX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
-                       this.startY = -this.startX;             break;\r
-               case "upleft":\r
-                       this.startX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
-                       this.startY = this.startX;              break;\r
-               case "downleft":\r
-                       this.startX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
-                       this.startY = -this.startX;     break;\r
-               }\r
-       }\r
-       else\r
-       { // FlyOut\r
-               this.startX = this.ele.ABSX;\r
-               this.startY = this.ele.ABSY;\r
-\r
-               switch( this.direction )\r
-               {\r
-               case "right": this.finalX = offsetRight;  this.finalY = this.startY; break;\r
-               case "left": this.finalX = -offsetLeft;   this.finalY = this.startY;  break;\r
-               case "down": this.finalY = offsetBottom;  this.finalX = this.startX; break;\r
-               case "up":  this.finalY = -offsetTop;     this.finalX = this.startX; break;\r
-               case "downright":\r
-                       this.finalX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
-                       this.finalY = this.finalX;              break;\r
-               case "upright":\r
-                       this.finalX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
-                       this.finalY = -this.finalX;             break;\r
-               case "upleft":\r
-                       this.finalX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
-                       this.finalY = this.finalX;              break;\r
-               case "downleft":\r
-                       this.finalX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
-                       this.finalY = -this.finalX;     break;\r
-               }\r
-       }\r
-       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
-       this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyFly definition\r
-\r
-// Begin of CAgencySpiral\r
-function CAgencySpiral( element, settings, bIsIn )\r
-{\r
-       this.ele = element;\r
-       this.bIsIn = bIsIn;\r
-       this.duration = 1000; // default\r
-\r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
-               }\r
-       }\r
-\r
-       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
-               this.ele.style.position = "relative";\r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencySpiral.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencySpiral.prototype.UpdateEffect = function()\r
-{\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-\r
-       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-       if( percent >= 1.0 )\r
-               this.EndEffect();\r
-       else\r
-       {\r
-               var rf = (this.bIsIn)? (1.0 - percent) : percent; \r
-               var t = (1.0-rf) * 4.0 * Math.PI\r
-               var rxP = (this.bIsIn)? this.startX : this.finalX; \r
-               var ryP = (this.bIsIn)? this.startY : this.finalY; \r
-               var rx = (Math.abs(rxP) < 200) ? Math.abs(rxP) : 200;\r
-               var ry = (Math.abs(ryP) < 200) ? Math.abs(ryP) : 200;\r
-\r
-               var newX = Math.ceil(-rf*Math.cos(t)*rx) + this.ele.ABSX;\r
-               var newY = Math.ceil(-rf*Math.sin(t)*ry) + this.ele.ABSY;\r
-               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
-               if( this.timer == null )\r
-                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
-       }\r
-}\r
-\r
-CAgencySpiral.prototype.EndEffect = function()\r
-{\r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-       \r
-       if( this.bIsIn ) // In\r
-               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
-       else // Out\r
-               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
-       CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencySpiral.prototype.ResetParameters = function()\r
-{\r
-       this.PrepareEffect();\r
-       CCSSP.ShowObject(this.ele, true );\r
-       this.startX = (this.bIsIn)? CCSSP.GetWindowRight() : this.ele.ABSX;\r
-       this.startY = (this.bIsIn)? CCSSP.GetWindowBottom() : this.ele.ABSY;\r
-       this.finalX = (this.bIsIn)? this.ele.ABSX : CCSSP.GetWindowRight();\r
-       this.finalY = (this.bIsIn)? this.ele.ABSY : CCSSP.GetWindowBottom(); \r
-       \r
-       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
-       this.startTime = (new Date()).getTime();\r
-}\r
-// End of CAgencySpiral\r
-\r
-// Begin of CAgencyElastic\r
-function CAgencyElastic( element, settings)\r
-{\r
-       this.ele = element;\r
-       this.duration = 1000; // default\r
-       this.direction = "right";\r
-\r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
-               case "direction" : this.direction = arrOneSet[1]; break;\r
-               }\r
-       }\r
-               \r
-       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
-               this.ele.style.position = "relative";\r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyElastic.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, false );\r
-}\r
-\r
-CAgencyElastic.prototype.UpdateEffect = function()\r
-{\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-\r
-       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-       if( percent >= 1.0 )\r
-               this.EndEffect();\r
-       else\r
-       {\r
-               var newX = this.startX;\r
-               var newY = this.startY;\r
-               var rf = Math.exp(-percent*3);\r
-               var t = percent * 1.5 * Math.PI\r
-               var rx = (Math.abs(this.startX) > Math.abs(this.startY)) ? this.startX : this.startY;\r
-               switch (this.direction )\r
-               {\r
-               case "left":   \r
-               case "right" : newX = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
-               case "up":         \r
-               case "down" :  newY = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
-               }\r
-               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
-               if( this.timer == null )\r
-                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
-       }\r
-}\r
-\r
-CAgencyElastic.prototype.EndEffect = function()\r
-{\r
-       CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-}\r
-\r
-CAgencyElastic.prototype.ResetParameters = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, true );\r
-       this.startX = this.ele.ABSX;\r
-       this.finalX = this.ele.ABSX;\r
-       this.startY = this.ele.ABSY;\r
-       this.finalY = this.ele.ABSY;\r
-       \r
-       switch (this.direction)\r
-       { \r
-       case "left":  this.startX = -this.ele.offsetWidth; break;\r
-       case "right": this.startX = this.ele.offsetWidth;  break;\r
-       case "up":    this.startY = -this.ele.offsetHeight;break;\r
-       case "down":  this.startY = this.ele.offsetHeight; break;\r
-       }\r
-       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
-       this.startTime = (new Date()).getTime();\r
-}\r
-// End of CAgencyElastic\r
-\r
-// Begin of CAgencyZoom\r
-function CAgencyZoom( element, settings, bIsIn)\r
-{\r
-       this.ele = element;\r
-       this.duration = 1000; // default\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
-               }\r
-       }\r
-\r
-       this.bIsIn = bIsIn;\r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyZoom.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, false);\r
-}\r
-\r
-CAgencyZoom.prototype.UpdateEffect = function()\r
-{\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-\r
-       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-       if( percent >= 1.0 )\r
-               this.EndEffect();\r
-       else\r
-       {\r
-               var nFactorIn = Math.ceil(50+50*percent);\r
-               var nFactorOut = Math.ceil(100+200*(1-percent));\r
-               var AlterFontsize = ((this.bIsIn)? nFactorIn : nFactorOut) + "%";\r
-               var AlterFactor = ((this.bIsIn)? nFactorIn : nFactorOut) / 100;\r
-               \r
-               this.UpdateEffectAllChildren(this.ele, AlterFontsize, AlterFactor);\r
-               for(var index = 0; index < this.ele.all.length; index++)\r
-                       this.UpdateEffectAllChildren(this.ele.all[index], AlterFontsize, AlterFactor);\r
-                       \r
-               if( this.timer == null )\r
-                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
-       }\r
-}\r
-\r
-CAgencyZoom.prototype.UpdateEffectAllChildren = function(child, FontSize, Factor)\r
-{\r
-       if( CCSSP.IsTextTag(child) )\r
-               child.style.fontSize = FontSize;\r
-       else\r
-       {\r
-               if( typeof(child.orgWidth) == "number" )\r
-                       child.style.width = Factor * child.orgWidth;\r
-               if( typeof(child.orgHeight) == "number" )\r
-                       child.style.height = Factor * child.orgHeight;\r
-       }\r
-}\r
-\r
-CAgencyZoom.prototype.EndEffect = function()\r
-{\r
-       this.EndEffectAllChildren(this.ele);\r
-       for(var index = 0; index < this.ele.all.length; index++)\r
-               this.EndEffectAllChildren(this.ele.all[index]);\r
-       \r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-}\r
-\r
-CAgencyZoom.prototype.EndEffectAllChildren = function( child )\r
-{      \r
-       if( CCSSP.IsTextTag(child) )\r
-               child.style.fontSize = child.orgFontSize;\r
-       else\r
-       {\r
-               if( typeof(child.intactWidth) != "undefined" )\r
-               {\r
-                       child.width = child.intactWidth;\r
-                       child.height = child.intactHeight;\r
-               }\r
-               else if( typeof(child.style.intactPixelWidth) != "undefined" )\r
-               {\r
-                       child.style.pixelWidth = child.style.intactPixelWidth;\r
-                       child.style.pixelHeight = child.style.intactPixelHeight;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyZoom.prototype.ResetParameters = function()\r
-{\r
-       this.PrepareEffect();\r
-       this.ResetParametersAllChildren( this.ele );\r
-       for(var index = 0; index < this.ele.all.length; index++)\r
-               this.ResetParametersAllChildren(this.ele.all[index]);\r
-               \r
-       this.startTime = (new Date()).getTime();\r
-}\r
-\r
-CAgencyZoom.prototype.ResetParametersAllChildren = function( child )\r
-{\r
-       CCSSP.ShowObject(child, true );\r
-       if( (child.tagName == "DIV") && (getParentNode(child).tagName == "TD") )\r
-               child.width = "100%";// if the div is inside a cell of table, we need the this hack\r
-       \r
-       if( CCSSP.IsTextTag(child) )\r
-               child.orgFontSize = child.style.fontSize;\r
-       else\r
-       {\r
-               if( child.width > "" || child.height > "" )\r
-               {\r
-                       child.orgWidth = child.intactWidth = child.width;\r
-                       child.orgHeight = child.intactHeight = child.height;\r
-               }\r
-               else if( ( typeof(child.orgWidth) != "number" ) && (typeof(child.orgHeight) != "number") )\r
-               {\r
-                       child.orgWidth = child.style.intactPixelWidth = child.style.pixelWidth;\r
-                       child.orgHeight = child.style.intactPixelHeight = child.style.pixelHeight;\r
-               }\r
-       }\r
-}\r
-// End of CAgencyZoom\r
-\r
-//// the following effects will use IE's exclusive "filter" function ////\r
-// Begin of CAgencyAlpha definition\r
-function CAgencyAlpha( element, settings, bIsIn )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-       this.bIsIn = bIsIn;\r
-\r
-       // to set the default value\r
-       this.startOpacity = (this.bIsIn) ? 0 : 100;\r
-       this.endOpacity = (this.bIsIn) ? 100 : 0;\r
-       \r
-       this.duration = 1000; // default\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
-               }\r
-       }\r
-       \r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyAlpha.prototype.PrepareEffect = function()\r
-{// to set the visual filter function\r
-       // the visual filter ONLY work when set by "Width and Height" or\r
-       // absolute position for DIV, SPAN and normal tag ( such as p )\r
-       // but, "absolute" cause the following elements overlap, so:\r
-       CCSSP.PrepareFilter( this.ele );\r
-       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencyAlpha.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-       if( typeof(this.ele.filters.alpha) != "object" )\r
-       {\r
-               this.EndEffect();\r
-               return;\r
-       }\r
-\r
-       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-       if( percent >= 1.0 )\r
-               this.EndEffect();\r
-       else if( typeof(this.ele.filters.alpha) == "object" )\r
-       {\r
-               this.ele.filters.alpha.opacity = this.startOpacity*(1.0-percent) + this.endOpacity*percent;\r
-               if( this.timer == null )\r
-                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
-       }\r
-}\r
-\r
-CAgencyAlpha.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-       this.ele.style.filter = "";\r
-       CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencyAlpha.prototype.ResetParameters = function()\r
-{\r
-       this.PrepareEffect();\r
-       CCSSP.ShowObject(this.ele, true );\r
-       this.ele.style.filter = "alpha(opacity=" + this.startOpacity + ")";\r
-       this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyAlpha definition\r
-\r
-// Begin of CAgencyWave definition\r
-function CAgencyWave( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       this.duration = 0; // default\r
-       this.strength = 10;\r
-       this.freq = 1;\r
-       this.lightstrength = 1;\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "duration" : this.duration = 100000/arrOneSet[1]; break;\r
-               case "strength" : this.strength = arrOneSet[1]; break;\r
-               case "freq" : this.freq = arrOneSet[1]; break;\r
-               case "lightstrength" : this.lightstrength = arrOneSet[1]; break;\r
-               }\r
-       }\r
-\r
-       this.timer = null;\r
-       this.aniIndex = CEngine.arrAnimation.length;\r
-       CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyWave.prototype.PrepareEffect = function()\r
-{// to set the visual filter function\r
-       CCSSP.PrepareFilter(this.ele);\r
-\r
-       CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyWave.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       if( this.timer == null )\r
-               this.ResetParameters();\r
-       if( typeof(this.ele.filters.wave) != "object" )\r
-       {\r
-               this.EndEffect();\r
-               return;\r
-       }\r
-\r
-       if( this.duration > 0 )\r
-       {\r
-               var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
-               if( percent >= 1.0 )\r
-               {\r
-                       this.EndEffect();\r
-                       return;\r
-               }\r
-       }\r
-       \r
-       this.ele.filters.wave.phase += 5;\r
-       this.ele.filters.wave.phase %= 100;\r
-       if( this.timer == null )\r
-               this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 50 );\r
-}\r
-\r
-CAgencyWave.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       this.ele.style.filter = "";\r
-       clearInterval( this.timer );\r
-       this.timer = null;\r
-}\r
-\r
-CAgencyWave.prototype.ResetParameters = function()\r
-{\r
-       this.PrepareEffect();\r
-       this.ele.style.filter = "wave(strength=" + this.strength + ",freq=" + \r
-        this.freq +", lightstrength=" + this.lightstrength +",phase=0);";\r
-       this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyWave definition\r
-\r
-// Begin of CAgencyGlow definition\r
-function CAgencyGlow( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       // to set the default value\r
-       this.glowColor = "green";\r
-       this.glowStrength = "3";\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "color" : this.glowColor = arrOneSet[1]; break;\r
-               case "strength" : this.glowStrength = arrOneSet[1]; break;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyGlow.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.PrepareFilter(this.ele);\r
-       CCSSP.ShowObject(this.ele, true );\r
-       if( this.ele.style.backgroundColor != "" )\r
-       {//style.backgroundColor somehow stop the visual filter\r
-               this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
-               this.ele.style.backgroundColor = "";\r
-       }\r
-}\r
-\r
-CAgencyGlow.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       this.PrepareEffect();\r
-       this.ele.style.filter = "glow(Color=" + this.glowColor + ", Strength=" + \r
-               this.glowStrength + ", enabled=true" +")";\r
-}\r
-\r
-CAgencyGlow.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       this.ele.style.filter = "";\r
-       if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
-               this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
-}\r
-// End of the CAgencyGlow definition\r
-\r
-// Begin of CAgencyDropShadow definition\r
-function CAgencyDropShadow( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       // to set the default value\r
-       this.shadowColor = "black"; \r
-       this.shadowOffx = "1";\r
-       this.shadowOffy = "1";\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "color" : this.shadowColor = arrOneSet[1]; break;\r
-               case "offx" : this.shadowOffx = arrOneSet[1]; break;\r
-               case "offy" : this.shadowOffy = arrOneSet[1]; break;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyDropShadow.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.PrepareFilter(this.ele);\r
-       CCSSP.ShowObject(this.ele, true );\r
-       \r
-       if( this.ele.style.backgroundColor != "" )\r
-       {//style.backgroundColor somehow stop the visual filter\r
-               this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
-               this.ele.style.backgroundColor = "";\r
-       }\r
-}\r
-\r
-CAgencyDropShadow.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       this.PrepareEffect();\r
-       this.ele.style.filter = "dropshadow(color=" + this.shadowColor + ", offx=" + \r
-               this.shadowOffx + ", offy=" + this.shadowOffy + ")";\r
-}\r
-\r
-CAgencyDropShadow.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       this.ele.style.filter = "";\r
-       if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
-               this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
-}\r
-// End of the CAgencyDropShadow definition\r
-\r
-// Begin of CAgencyRevealTrans definition\r
-function CAgencyRevealTrans( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       // to set the default value\r
-       this.duration = 1.0; //The value is specified in seconds.milliseconds format (0.0000).\r
-       this.transition = 0;\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "type" : this.transition = arrOneSet[1]; break;\r
-               case "duration" : this.duration = 100/arrOneSet[1];     break;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyRevealTrans.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.PrepareFilter(this.ele);\r
-       CCSSP.ShowObject( this.ele, false);\r
-}\r
-\r
-CAgencyRevealTrans.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
-       {\r
-               if( this.ele.filters.RevealTrans.status == 2 )\r
-                       this.ele.filters.RevealTrans.stop();  \r
-       }\r
-\r
-       this.PrepareEffect();\r
-       \r
-       this.ele.style.filter = "RevealTrans(duration=" + this.duration + \r
-               ", transition=" + this.transition + ")";\r
-       \r
-    if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
-    {\r
-               this.ele.filters.RevealTrans.apply();\r
-               CCSSP.ShowObject( this.ele, true);\r
-               this.ele.filters.RevealTrans.play();  \r
-       }\r
-       else\r
-               CCSSP.ShowObject( this.ele, true);\r
-}\r
-\r
-CAgencyRevealTrans.prototype.EndEffect = function()\r
-{\r
-    if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
-               this.ele.filters.RevealTrans.stop();  \r
-       this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyRevealTrans definition\r
-\r
-// Begin of CAgencyBlur definition\r
-function CAgencyBlur( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       // to set the default value\r
-       this.strength = "5";\r
-       this.direction = "90";\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "strength" : this.strength = arrOneSet[1]; break;\r
-               case "direction" : this.direction = arrOneSet[1]; break;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyBlur.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.PrepareFilter(this.ele);\r
-       CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyBlur.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       CCSSP.PrepareFilter(this.ele);\r
-       this.ele.style.filter = "blur(strength=" + this.strength + \r
-               ", direction=" + this.direction + ")";\r
-}\r
-\r
-CAgencyBlur.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyBlur definition\r
-\r
-// Begin of CAgencyChangeFilter definition\r
-function CAgencyChangeFilter( element, settings ) // flipH, flipV, invert, grey,\r
-{// because of "visual filter" style, this won't work in Navigator\r
-       this.ele = element;\r
-\r
-       // to set the default value\r
-       this.filterFunction = settings;\r
-}\r
-\r
-CAgencyChangeFilter.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.PrepareFilter(this.ele);\r
-       CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyChangeFilter.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
-       CCSSP.PrepareFilter(this.ele);\r
-       this.ele.style.filter = this.filterFunction;\r
-}\r
-\r
-CAgencyChangeFilter.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
-       this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyChangeFilter definition\r
-\r
-// The effects below change the style on the fly, so they won't work in Navigator\r
-\r
-// Begin of CAgencyFontChange definition, \r
-function CAgencyFontChange( element, settings )\r
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
-       this.ele = element;\r
-       \r
-       // to retrieve the original font style\r
-       this.RetrieveOldFont( this.ele );\r
-       \r
-       // to set the default font to change\r
-       this.newfontFamily = this.ele.oldFontFamily;\r
-       this.newfColor = this.ele.oldColor;\r
-       this.newtextDecoration = this.ele.oldTextDecoration;\r
-       this.newfontWeight = this.ele.oldFontWeight;\r
-       this.newfontStyle = this.ele.oldFontStyle;\r
-       this.newfontSize = this.ele.oldFontSize;\r
-       this.newBackgroundColor = this.ele.oldBackgroundColor;\r
-       \r
-       var arrAllSet = settings.split(",");\r
-       for( var i = 0; i < arrAllSet.length; i ++ )\r
-       {// to retrieve the setting\r
-               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
-               var arrOneSet = arrAllSet[i].split("=");\r
-               for( var j = 0; j < arrOneSet.length; j++ )\r
-                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
-               switch( arrOneSet[0] )\r
-               {\r
-               case "font-family" : this.newfontFamily = arrOneSet[1]; break;\r
-               case "color" : this.newfColor = arrOneSet[1]; break;\r
-               case "underline" : this.newtextDecoration = (arrOneSet[1]=="on")? "underline" : "none"; break;\r
-               case "bold" : this.newfontWeight = (arrOneSet[1]=="on")? "bold" : "normal"; break;\r
-               case "italic" : this.newfontStyle = (arrOneSet[1]=="on")? "italic" : "normal"; break;\r
-               case "size" : this.newfontSize = arrOneSet[1]; break;\r
-               case "background-color" : this.newBackgroundColor = arrOneSet[1]; break;\r
-               }\r
-       }\r
-}\r
-\r
-CAgencyFontChange.prototype.RetrieveOldFont = function(objChild)\r
-{\r
-       if( typeof(objChild.oldFontFamily) == "undefined" )\r
-               objChild.oldFontFamily = objChild.style.fontFamily;\r
-       if( typeof(objChild.oldColor) == "undefined" )\r
-               objChild.oldColor = objChild.style.color;\r
-       if( typeof(objChild.oldTextDecoration) == "undefined" )\r
-               objChild.oldTextDecoration = objChild.style.textDecoration;\r
-       if( typeof(objChild.oldFontWeight) == "undefined" )\r
-               objChild.oldFontWeight = objChild.style.fontWeight;\r
-       if( typeof(objChild.oldFontStyle) == "undefined" )\r
-               objChild.oldFontStyle = objChild.style.fontStyle;\r
-       if( typeof(objChild.oldFontSize) == "undefined" )\r
-               objChild.oldFontSize = objChild.style.fontSize;\r
-       if( typeof(objChild.oldBackgroundColor) == "undefined" )\r
-               objChild.oldBackgroundColor = objChild.style.backgroundColor;\r
-}\r
-\r
-CAgencyFontChange.prototype.PrepareEffect = function()\r
-{\r
-       // as for expanding text, the child is created after the constructor called\r
-       for(var index = 0; index < this.ele.all.length; index++)\r
-               this.RetrieveOldFont(this.ele.all[index]);\r
-       CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyFontChange.prototype.UpdateEffect = function()\r
-{// to change the font\r
-       this.PrepareEffect();\r
-       this.UpdateEffectAllChildren( this.ele );\r
-       for( var index = 0; index < this.ele.all.length; index++)\r
-               this.UpdateEffectAllChildren(this.ele.all[index]);\r
-}\r
-\r
-CAgencyFontChange.prototype.UpdateEffectAllChildren = function(objChild)\r
-{\r
-       objChild.style.fontFamily = this.newfontFamily;\r
-       objChild.style.color = this.newfColor;\r
-       objChild.style.textDecoration = this.newtextDecoration;\r
-       objChild.style.fontWeight = this.newfontWeight;\r
-       objChild.style.fontStyle = this.newfontStyle;\r
-       objChild.style.fontSize = this.newfontSize;\r
-       objChild.style.backgroundColor = this.newBackgroundColor;\r
-}\r
-\r
-CAgencyFontChange.prototype.EndEffect = function()\r
-{// to reinstate the original font style\r
-       this.EndEffectAllChildren( this.ele );\r
-       for( var index = 0; index < this.ele.all.length; index++)\r
-               this.EndEffectAllChildren(this.ele.all[index]);\r
-}\r
-\r
-CAgencyFontChange.prototype.EndEffectAllChildren = function( objChild )\r
-{\r
-       if( typeof(objChild.oldFontFamily) != "undefined" )\r
-               objChild.style.fontFamily = objChild.oldFontFamily;\r
-       if( typeof(objChild.oldColor) != "undefined" )\r
-               objChild.style.color = objChild.oldColor;\r
-       if( typeof(objChild.oldFontWeight) != "undefined" )\r
-               objChild.style.fontWeight = objChild.oldFontWeight;\r
-       if( typeof(objChild.oldFontStyle) != "undefined" )\r
-               objChild.style.fontStyle = objChild.oldFontStyle;\r
-       if( typeof(objChild.oldFontSize) != "undefined" )\r
-               objChild.style.fontSize = objChild.oldFontSize;\r
-       if( typeof(objChild.oldTextDecoration) != "undefined" )\r
-               objChild.style.textDecoration = objChild.oldTextDecoration;\r
-       if( typeof(objChild.oldBackgroundColor) != "undefined" )\r
-               objChild.style.backgroundColor = objChild.oldBackgroundColor;\r
-}\r
-// End of the CAgencyFontChange definition\r
-\r
-// Begin of the CAgencyChangeStyle definition\r
-function CAgencyChangeStyle( element, settings )\r
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
-       this.ele = element;\r
-       \r
-       // to retrieve the original style\r
-       this.oldstyle = this.ele.style.cssText;\r
-       \r
-       // to set the default style\r
-       this.newStyle = this.oldstyle;\r
-       \r
-       if( typeof(settings) == "string" && settings.length > 1 )\r
-               this.newStyle = this.oldstyle + " " + settings;\r
-}\r
-\r
-CAgencyChangeStyle.prototype.PrepareEffect = function()\r
-{\r
-       CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyChangeStyle.prototype.UpdateEffect = function()\r
-{// to change the style\r
-       this.ele.style.cssText = this.newStyle;\r
-}\r
-\r
-CAgencyChangeStyle.prototype.EndEffect = function()\r
-{// to reinstate the original style\r
-       this.ele.style.cssText = this.oldStyle;\r
-}\r
-// End of the CAgencyChangeStyle definition\r
-\r
-//End the definition of CAgencyXXXX classes\r
-\r
-//Begin to collaborate with other event handler settings \r
-CCSSP.RegisterEventHandler( window, "onload", "CEngine.OnPageLoad();BSSCOnLoad();kadovInitTriggersInHead();");\r
-CCSSP.RegisterEventHandler( document, "onclick", "CEngine.OnPageClick();BSSCOnClick();");\r
-CCSSP.RegisterEventHandler( document, "onmouseover", "CEngine.OnMouseOver();BSSCOnMouseOver();" );\r
-CCSSP.RegisterEventHandler( document, "onmouseout", "CEngine.OnMouseOver();BSSCOnMouseOut();" );\r
-CCSSP.RegisterEventHandler( window, "onunload", "BSSCOnUnload();");\r
-//End to collaborate with other event handler settings\r
-\r
-/// Section End  - CCSSP DHTM 2 (JavaScript 1.2)\r
-\r
-//// Segment End -- (JavaScript 1.2)
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/geom_preferences.htm b/doc/salome/gui/GUI/geom_preferences.htm
deleted file mode 100755 (executable)
index 8a098a3..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>GEOM preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-img_whs2 { border:none; border-style:none; width:752px; height:646px; float:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { margin-left:40px; }\r
-p.whs5 { margin-left:40px; font-weight:bold; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nSetting Preferences\nGeometry preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Geometry preferences</h1>\r
-\r
-<p>In the <span style="font-weight: bold;"><B>Geometry</B></span> module you can \r
- set preferences for visualisation of geometrical figures which can be \r
- used in later sessions with this module. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1"><img src="pics/pref15.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Default \r
- Shading Color</B></span> - allows to select default shading color. Click on \r
- the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs5">Step \r
- Value for Spin Boxes - <span style="font-weight: normal;">allows to define \r
- the increment of values set in spin boxes. </span>&nbsp;</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs5">Default \r
- Display Mode - <span style="font-weight: normal;">allows to choose between</span> \r
- <span style="font-weight: normal;">wireframe or shading.</span></p></li>\r
-</ul>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/i_blue.jpg b/doc/salome/gui/GUI/i_blue.jpg
deleted file mode 100755 (executable)
index ed3acfa..0000000
Binary files a/doc/salome/gui/GUI/i_blue.jpg and /dev/null differ
diff --git a/doc/salome/gui/GUI/image54.jpg b/doc/salome/gui/GUI/image54.jpg
deleted file mode 100755 (executable)
index a67ac4c..0000000
Binary files a/doc/salome/gui/GUI/image54.jpg and /dev/null differ
diff --git a/doc/salome/gui/GUI/image65.gif b/doc/salome/gui/GUI/image65.gif
deleted file mode 100755 (executable)
index fbf6a81..0000000
Binary files a/doc/salome/gui/GUI/image65.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image67.gif b/doc/salome/gui/GUI/image67.gif
deleted file mode 100755 (executable)
index 4c5d4d6..0000000
Binary files a/doc/salome/gui/GUI/image67.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image68.gif b/doc/salome/gui/GUI/image68.gif
deleted file mode 100755 (executable)
index f8ea563..0000000
Binary files a/doc/salome/gui/GUI/image68.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image69.gif b/doc/salome/gui/GUI/image69.gif
deleted file mode 100755 (executable)
index f8ea563..0000000
Binary files a/doc/salome/gui/GUI/image69.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image70.gif b/doc/salome/gui/GUI/image70.gif
deleted file mode 100755 (executable)
index c88c53e..0000000
Binary files a/doc/salome/gui/GUI/image70.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image71.gif b/doc/salome/gui/GUI/image71.gif
deleted file mode 100755 (executable)
index 26fcc67..0000000
Binary files a/doc/salome/gui/GUI/image71.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image72.gif b/doc/salome/gui/GUI/image72.gif
deleted file mode 100755 (executable)
index 77c21bd..0000000
Binary files a/doc/salome/gui/GUI/image72.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image73.gif b/doc/salome/gui/GUI/image73.gif
deleted file mode 100755 (executable)
index 0ebcf97..0000000
Binary files a/doc/salome/gui/GUI/image73.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image75.gif b/doc/salome/gui/GUI/image75.gif
deleted file mode 100755 (executable)
index 9fdfbdc..0000000
Binary files a/doc/salome/gui/GUI/image75.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/image94.gif b/doc/salome/gui/GUI/image94.gif
deleted file mode 100755 (executable)
index e2d310c..0000000
Binary files a/doc/salome/gui/GUI/image94.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/images/batchmode.png b/doc/salome/gui/GUI/images/batchmode.png
new file mode 100644 (file)
index 0000000..c439d7e
Binary files /dev/null and b/doc/salome/gui/GUI/images/batchmode.png differ
diff --git a/doc/salome/gui/GUI/images/cataloggenerator.png b/doc/salome/gui/GUI/images/cataloggenerator.png
new file mode 100755 (executable)
index 0000000..51a0f27
Binary files /dev/null and b/doc/salome/gui/GUI/images/cataloggenerator.png differ
diff --git a/doc/salome/gui/GUI/images/choicepage.png b/doc/salome/gui/GUI/images/choicepage.png
new file mode 100644 (file)
index 0000000..e3afcc5
Binary files /dev/null and b/doc/salome/gui/GUI/images/choicepage.png differ
diff --git a/doc/salome/gui/GUI/images/clipping.png b/doc/salome/gui/GUI/images/clipping.png
new file mode 100644 (file)
index 0000000..6d73855
Binary files /dev/null and b/doc/salome/gui/GUI/images/clipping.png differ
diff --git a/doc/salome/gui/GUI/images/closestudy.png b/doc/salome/gui/GUI/images/closestudy.png
new file mode 100755 (executable)
index 0000000..fb7abe1
Binary files /dev/null and b/doc/salome/gui/GUI/images/closestudy.png differ
diff --git a/doc/salome/gui/GUI/images/copy-paste.jpg b/doc/salome/gui/GUI/images/copy-paste.jpg
new file mode 100755 (executable)
index 0000000..e243122
Binary files /dev/null and b/doc/salome/gui/GUI/images/copy-paste.jpg differ
diff --git a/doc/salome/gui/GUI/images/dumpstudy.png b/doc/salome/gui/GUI/images/dumpstudy.png
new file mode 100755 (executable)
index 0000000..f899e77
Binary files /dev/null and b/doc/salome/gui/GUI/images/dumpstudy.png differ
diff --git a/doc/salome/gui/GUI/images/geomview-alt.png b/doc/salome/gui/GUI/images/geomview-alt.png
new file mode 100755 (executable)
index 0000000..e797b08
Binary files /dev/null and b/doc/salome/gui/GUI/images/geomview-alt.png differ
diff --git a/doc/salome/gui/GUI/images/graduatedaxes1.png b/doc/salome/gui/GUI/images/graduatedaxes1.png
new file mode 100644 (file)
index 0000000..cf021ba
Binary files /dev/null and b/doc/salome/gui/GUI/images/graduatedaxes1.png differ
diff --git a/doc/salome/gui/GUI/images/icon_about.png b/doc/salome/gui/GUI/images/icon_about.png
new file mode 100755 (executable)
index 0000000..0cfa37a
Binary files /dev/null and b/doc/salome/gui/GUI/images/icon_about.png differ
diff --git a/doc/salome/gui/GUI/images/image100.gif b/doc/salome/gui/GUI/images/image100.gif
new file mode 100644 (file)
index 0000000..c44d68f
Binary files /dev/null and b/doc/salome/gui/GUI/images/image100.gif differ
diff --git a/doc/salome/gui/GUI/images/image102.gif b/doc/salome/gui/GUI/images/image102.gif
new file mode 100644 (file)
index 0000000..3507814
Binary files /dev/null and b/doc/salome/gui/GUI/images/image102.gif differ
diff --git a/doc/salome/gui/GUI/images/image103.gif b/doc/salome/gui/GUI/images/image103.gif
new file mode 100644 (file)
index 0000000..be534c3
Binary files /dev/null and b/doc/salome/gui/GUI/images/image103.gif differ
diff --git a/doc/salome/gui/GUI/images/image105.gif b/doc/salome/gui/GUI/images/image105.gif
new file mode 100644 (file)
index 0000000..4f6173f
Binary files /dev/null and b/doc/salome/gui/GUI/images/image105.gif differ
diff --git a/doc/salome/gui/GUI/images/image106.gif b/doc/salome/gui/GUI/images/image106.gif
new file mode 100644 (file)
index 0000000..2bbcb4d
Binary files /dev/null and b/doc/salome/gui/GUI/images/image106.gif differ
diff --git a/doc/salome/gui/GUI/images/image108.gif b/doc/salome/gui/GUI/images/image108.gif
new file mode 100644 (file)
index 0000000..bec69e6
Binary files /dev/null and b/doc/salome/gui/GUI/images/image108.gif differ
diff --git a/doc/salome/gui/GUI/images/image109.gif b/doc/salome/gui/GUI/images/image109.gif
new file mode 100644 (file)
index 0000000..5dbba46
Binary files /dev/null and b/doc/salome/gui/GUI/images/image109.gif differ
diff --git a/doc/salome/gui/GUI/images/image157.gif b/doc/salome/gui/GUI/images/image157.gif
new file mode 100644 (file)
index 0000000..2f66e05
Binary files /dev/null and b/doc/salome/gui/GUI/images/image157.gif differ
diff --git a/doc/salome/gui/GUI/images/image54.jpg b/doc/salome/gui/GUI/images/image54.jpg
new file mode 100755 (executable)
index 0000000..a67ac4c
Binary files /dev/null and b/doc/salome/gui/GUI/images/image54.jpg differ
diff --git a/doc/salome/gui/GUI/images/image65.gif b/doc/salome/gui/GUI/images/image65.gif
new file mode 100755 (executable)
index 0000000..fbf6a81
Binary files /dev/null and b/doc/salome/gui/GUI/images/image65.gif differ
diff --git a/doc/salome/gui/GUI/images/image67.gif b/doc/salome/gui/GUI/images/image67.gif
new file mode 100755 (executable)
index 0000000..4c5d4d6
Binary files /dev/null and b/doc/salome/gui/GUI/images/image67.gif differ
diff --git a/doc/salome/gui/GUI/images/image69.gif b/doc/salome/gui/GUI/images/image69.gif
new file mode 100755 (executable)
index 0000000..f8ea563
Binary files /dev/null and b/doc/salome/gui/GUI/images/image69.gif differ
diff --git a/doc/salome/gui/GUI/images/image70.gif b/doc/salome/gui/GUI/images/image70.gif
new file mode 100755 (executable)
index 0000000..c88c53e
Binary files /dev/null and b/doc/salome/gui/GUI/images/image70.gif differ
diff --git a/doc/salome/gui/GUI/images/image72.gif b/doc/salome/gui/GUI/images/image72.gif
new file mode 100755 (executable)
index 0000000..77c21bd
Binary files /dev/null and b/doc/salome/gui/GUI/images/image72.gif differ
diff --git a/doc/salome/gui/GUI/images/image73.gif b/doc/salome/gui/GUI/images/image73.gif
new file mode 100755 (executable)
index 0000000..0ebcf97
Binary files /dev/null and b/doc/salome/gui/GUI/images/image73.gif differ
diff --git a/doc/salome/gui/GUI/images/image75.gif b/doc/salome/gui/GUI/images/image75.gif
new file mode 100755 (executable)
index 0000000..9fdfbdc
Binary files /dev/null and b/doc/salome/gui/GUI/images/image75.gif differ
diff --git a/doc/salome/gui/GUI/images/image77.gif b/doc/salome/gui/GUI/images/image77.gif
new file mode 100644 (file)
index 0000000..ef7a62f
Binary files /dev/null and b/doc/salome/gui/GUI/images/image77.gif differ
diff --git a/doc/salome/gui/GUI/images/image86.gif b/doc/salome/gui/GUI/images/image86.gif
new file mode 100644 (file)
index 0000000..3397331
Binary files /dev/null and b/doc/salome/gui/GUI/images/image86.gif differ
diff --git a/doc/salome/gui/GUI/images/image88.gif b/doc/salome/gui/GUI/images/image88.gif
new file mode 100644 (file)
index 0000000..9466aa6
Binary files /dev/null and b/doc/salome/gui/GUI/images/image88.gif differ
diff --git a/doc/salome/gui/GUI/images/image89.gif b/doc/salome/gui/GUI/images/image89.gif
new file mode 100644 (file)
index 0000000..373a6c0
Binary files /dev/null and b/doc/salome/gui/GUI/images/image89.gif differ
diff --git a/doc/salome/gui/GUI/images/image91.gif b/doc/salome/gui/GUI/images/image91.gif
new file mode 100644 (file)
index 0000000..9e93c1c
Binary files /dev/null and b/doc/salome/gui/GUI/images/image91.gif differ
diff --git a/doc/salome/gui/GUI/images/image94.gif b/doc/salome/gui/GUI/images/image94.gif
new file mode 100755 (executable)
index 0000000..e2d310c
Binary files /dev/null and b/doc/salome/gui/GUI/images/image94.gif differ
diff --git a/doc/salome/gui/GUI/images/image95.gif b/doc/salome/gui/GUI/images/image95.gif
new file mode 100644 (file)
index 0000000..fb293e2
Binary files /dev/null and b/doc/salome/gui/GUI/images/image95.gif differ
diff --git a/doc/salome/gui/GUI/images/image96.gif b/doc/salome/gui/GUI/images/image96.gif
new file mode 100644 (file)
index 0000000..4580d5b
Binary files /dev/null and b/doc/salome/gui/GUI/images/image96.gif differ
diff --git a/doc/salome/gui/GUI/images/image97.gif b/doc/salome/gui/GUI/images/image97.gif
new file mode 100644 (file)
index 0000000..1d78de1
Binary files /dev/null and b/doc/salome/gui/GUI/images/image97.gif differ
diff --git a/doc/salome/gui/GUI/images/image98.gif b/doc/salome/gui/GUI/images/image98.gif
new file mode 100644 (file)
index 0000000..6519dbb
Binary files /dev/null and b/doc/salome/gui/GUI/images/image98.gif differ
diff --git a/doc/salome/gui/GUI/images/image99.gif b/doc/salome/gui/GUI/images/image99.gif
new file mode 100644 (file)
index 0000000..3711be8
Binary files /dev/null and b/doc/salome/gui/GUI/images/image99.gif differ
diff --git a/doc/salome/gui/GUI/images/import.png b/doc/salome/gui/GUI/images/import.png
new file mode 100755 (executable)
index 0000000..093c667
Binary files /dev/null and b/doc/salome/gui/GUI/images/import.png differ
diff --git a/doc/salome/gui/GUI/images/intropage.png b/doc/salome/gui/GUI/images/intropage.png
new file mode 100644 (file)
index 0000000..226793c
Binary files /dev/null and b/doc/salome/gui/GUI/images/intropage.png differ
diff --git a/doc/salome/gui/GUI/images/loadscript.png b/doc/salome/gui/GUI/images/loadscript.png
new file mode 100755 (executable)
index 0000000..e681fc7
Binary files /dev/null and b/doc/salome/gui/GUI/images/loadscript.png differ
diff --git a/doc/salome/gui/GUI/images/loadstudy2.png b/doc/salome/gui/GUI/images/loadstudy2.png
new file mode 100755 (executable)
index 0000000..595ea05
Binary files /dev/null and b/doc/salome/gui/GUI/images/loadstudy2.png differ
diff --git a/doc/salome/gui/GUI/images/lockedstudy.png b/doc/salome/gui/GUI/images/lockedstudy.png
new file mode 100755 (executable)
index 0000000..9ec7e74
Binary files /dev/null and b/doc/salome/gui/GUI/images/lockedstudy.png differ
diff --git a/doc/salome/gui/GUI/images/neo-view2.png b/doc/salome/gui/GUI/images/neo-view2.png
new file mode 100755 (executable)
index 0000000..df1c7fe
Binary files /dev/null and b/doc/salome/gui/GUI/images/neo-view2.png differ
diff --git a/doc/salome/gui/GUI/images/newsticn.jpg b/doc/salome/gui/GUI/images/newsticn.jpg
new file mode 100755 (executable)
index 0000000..94c8ee9
Binary files /dev/null and b/doc/salome/gui/GUI/images/newsticn.jpg differ
diff --git a/doc/salome/gui/GUI/images/note1.gif b/doc/salome/gui/GUI/images/note1.gif
new file mode 100755 (executable)
index 0000000..b53e21d
Binary files /dev/null and b/doc/salome/gui/GUI/images/note1.gif differ
diff --git a/doc/salome/gui/GUI/images/objectbrowser1.png b/doc/salome/gui/GUI/images/objectbrowser1.png
new file mode 100755 (executable)
index 0000000..16ab896
Binary files /dev/null and b/doc/salome/gui/GUI/images/objectbrowser1.png differ
diff --git a/doc/salome/gui/GUI/images/objectbrowser2.png b/doc/salome/gui/GUI/images/objectbrowser2.png
new file mode 100755 (executable)
index 0000000..e010ef2
Binary files /dev/null and b/doc/salome/gui/GUI/images/objectbrowser2.png differ
diff --git a/doc/salome/gui/GUI/images/open.jpg b/doc/salome/gui/GUI/images/open.jpg
new file mode 100755 (executable)
index 0000000..5829aef
Binary files /dev/null and b/doc/salome/gui/GUI/images/open.jpg differ
diff --git a/doc/salome/gui/GUI/images/plot2d_clone.gif b/doc/salome/gui/GUI/images/plot2d_clone.gif
new file mode 100644 (file)
index 0000000..f980a5d
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_clone.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_legend.gif b/doc/salome/gui/GUI/images/plot2d_legend.gif
new file mode 100644 (file)
index 0000000..a40211e
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_legend.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_lines.gif b/doc/salome/gui/GUI/images/plot2d_lines.gif
new file mode 100644 (file)
index 0000000..8d1dc23
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_lines.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_logarithmic_horizontal.gif b/doc/salome/gui/GUI/images/plot2d_logarithmic_horizontal.gif
new file mode 100644 (file)
index 0000000..3473ad9
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_logarithmic_horizontal.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_logarithmic_vertical.gif b/doc/salome/gui/GUI/images/plot2d_logarithmic_vertical.gif
new file mode 100644 (file)
index 0000000..0d3b25e
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_logarithmic_vertical.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_points.gif b/doc/salome/gui/GUI/images/plot2d_points.gif
new file mode 100644 (file)
index 0000000..6700f00
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_points.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_settings.gif b/doc/salome/gui/GUI/images/plot2d_settings.gif
new file mode 100644 (file)
index 0000000..87e1105
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_settings.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_splines.gif b/doc/salome/gui/GUI/images/plot2d_splines.gif
new file mode 100644 (file)
index 0000000..1d50b20
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_splines.gif differ
diff --git a/doc/salome/gui/GUI/images/plot2d_view_settings.png b/doc/salome/gui/GUI/images/plot2d_view_settings.png
new file mode 100644 (file)
index 0000000..d4b4d29
Binary files /dev/null and b/doc/salome/gui/GUI/images/plot2d_view_settings.png differ
diff --git a/doc/salome/gui/GUI/images/ppref1.png b/doc/salome/gui/GUI/images/ppref1.png
new file mode 100755 (executable)
index 0000000..dd91013
Binary files /dev/null and b/doc/salome/gui/GUI/images/ppref1.png differ
diff --git a/doc/salome/gui/GUI/images/ppref2.png b/doc/salome/gui/GUI/images/ppref2.png
new file mode 100755 (executable)
index 0000000..5a15f0e
Binary files /dev/null and b/doc/salome/gui/GUI/images/ppref2.png differ
diff --git a/doc/salome/gui/GUI/images/ppref3.png b/doc/salome/gui/GUI/images/ppref3.png
new file mode 100755 (executable)
index 0000000..1ecffe3
Binary files /dev/null and b/doc/salome/gui/GUI/images/ppref3.png differ
diff --git a/doc/salome/gui/GUI/images/pref11.png b/doc/salome/gui/GUI/images/pref11.png
new file mode 100755 (executable)
index 0000000..26ddbe9
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref11.png differ
diff --git a/doc/salome/gui/GUI/images/pref12.png b/doc/salome/gui/GUI/images/pref12.png
new file mode 100755 (executable)
index 0000000..8cafab8
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref12.png differ
diff --git a/doc/salome/gui/GUI/images/pref13.png b/doc/salome/gui/GUI/images/pref13.png
new file mode 100755 (executable)
index 0000000..4cfe950
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref13.png differ
diff --git a/doc/salome/gui/GUI/images/pref14.png b/doc/salome/gui/GUI/images/pref14.png
new file mode 100755 (executable)
index 0000000..2f8bcfb
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref14.png differ
diff --git a/doc/salome/gui/GUI/images/pref15.png b/doc/salome/gui/GUI/images/pref15.png
new file mode 100755 (executable)
index 0000000..10053fb
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref15.png differ
diff --git a/doc/salome/gui/GUI/images/pref21.png b/doc/salome/gui/GUI/images/pref21.png
new file mode 100755 (executable)
index 0000000..8f7ad1d
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref21.png differ
diff --git a/doc/salome/gui/GUI/images/pref22.png b/doc/salome/gui/GUI/images/pref22.png
new file mode 100755 (executable)
index 0000000..26921dc
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref22.png differ
diff --git a/doc/salome/gui/GUI/images/pref23.png b/doc/salome/gui/GUI/images/pref23.png
new file mode 100644 (file)
index 0000000..e1a082a
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref23.png differ
diff --git a/doc/salome/gui/GUI/images/pref24.png b/doc/salome/gui/GUI/images/pref24.png
new file mode 100755 (executable)
index 0000000..c539e9b
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref24.png differ
diff --git a/doc/salome/gui/GUI/images/pref31.png b/doc/salome/gui/GUI/images/pref31.png
new file mode 100755 (executable)
index 0000000..e5606d1
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref31.png differ
diff --git a/doc/salome/gui/GUI/images/pref33.png b/doc/salome/gui/GUI/images/pref33.png
new file mode 100755 (executable)
index 0000000..bdc9b76
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref33.png differ
diff --git a/doc/salome/gui/GUI/images/pref34.png b/doc/salome/gui/GUI/images/pref34.png
new file mode 100755 (executable)
index 0000000..5072c62
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref34.png differ
diff --git a/doc/salome/gui/GUI/images/pref37.png b/doc/salome/gui/GUI/images/pref37.png
new file mode 100755 (executable)
index 0000000..1d4d082
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref37.png differ
diff --git a/doc/salome/gui/GUI/images/pref38.png b/doc/salome/gui/GUI/images/pref38.png
new file mode 100755 (executable)
index 0000000..5c8d31c
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref38.png differ
diff --git a/doc/salome/gui/GUI/images/pref39.png b/doc/salome/gui/GUI/images/pref39.png
new file mode 100755 (executable)
index 0000000..878a526
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref39.png differ
diff --git a/doc/salome/gui/GUI/images/pref40.png b/doc/salome/gui/GUI/images/pref40.png
new file mode 100755 (executable)
index 0000000..e86c1e2
Binary files /dev/null and b/doc/salome/gui/GUI/images/pref40.png differ
diff --git a/doc/salome/gui/GUI/images/productpage.png b/doc/salome/gui/GUI/images/productpage.png
new file mode 100644 (file)
index 0000000..bc05c8b
Binary files /dev/null and b/doc/salome/gui/GUI/images/productpage.png differ
diff --git a/doc/salome/gui/GUI/images/productpage1.png b/doc/salome/gui/GUI/images/productpage1.png
new file mode 100644 (file)
index 0000000..b666166
Binary files /dev/null and b/doc/salome/gui/GUI/images/productpage1.png differ
diff --git a/doc/salome/gui/GUI/images/productpage2.png b/doc/salome/gui/GUI/images/productpage2.png
new file mode 100644 (file)
index 0000000..998d286
Binary files /dev/null and b/doc/salome/gui/GUI/images/productpage2.png differ
diff --git a/doc/salome/gui/GUI/images/progresspage.png b/doc/salome/gui/GUI/images/progresspage.png
new file mode 100644 (file)
index 0000000..0779fcc
Binary files /dev/null and b/doc/salome/gui/GUI/images/progresspage.png differ
diff --git a/doc/salome/gui/GUI/images/progresspage1.png b/doc/salome/gui/GUI/images/progresspage1.png
new file mode 100644 (file)
index 0000000..efaa4d1
Binary files /dev/null and b/doc/salome/gui/GUI/images/progresspage1.png differ
diff --git a/doc/salome/gui/GUI/images/readmepage.png b/doc/salome/gui/GUI/images/readmepage.png
new file mode 100644 (file)
index 0000000..b6aee29
Binary files /dev/null and b/doc/salome/gui/GUI/images/readmepage.png differ
diff --git a/doc/salome/gui/GUI/images/registry1.png b/doc/salome/gui/GUI/images/registry1.png
new file mode 100755 (executable)
index 0000000..b8912c6
Binary files /dev/null and b/doc/salome/gui/GUI/images/registry1.png differ
diff --git a/doc/salome/gui/GUI/images/registry3.png b/doc/salome/gui/GUI/images/registry3.png
new file mode 100755 (executable)
index 0000000..f44e2ec
Binary files /dev/null and b/doc/salome/gui/GUI/images/registry3.png differ
diff --git a/doc/salome/gui/GUI/images/registry4.png b/doc/salome/gui/GUI/images/registry4.png
new file mode 100755 (executable)
index 0000000..98a3772
Binary files /dev/null and b/doc/salome/gui/GUI/images/registry4.png differ
diff --git a/doc/salome/gui/GUI/images/save.jpg b/doc/salome/gui/GUI/images/save.jpg
new file mode 100755 (executable)
index 0000000..90001af
Binary files /dev/null and b/doc/salome/gui/GUI/images/save.jpg differ
diff --git a/doc/salome/gui/GUI/images/selectcolor.png b/doc/salome/gui/GUI/images/selectcolor.png
new file mode 100755 (executable)
index 0000000..70800b2
Binary files /dev/null and b/doc/salome/gui/GUI/images/selectcolor.png differ
diff --git a/doc/salome/gui/GUI/images/selectfont.png b/doc/salome/gui/GUI/images/selectfont.png
new file mode 100755 (executable)
index 0000000..04eff08
Binary files /dev/null and b/doc/salome/gui/GUI/images/selectfont.png differ
diff --git a/doc/salome/gui/GUI/images/set_rotation_point_dialog1.png b/doc/salome/gui/GUI/images/set_rotation_point_dialog1.png
new file mode 100644 (file)
index 0000000..bdab73b
Binary files /dev/null and b/doc/salome/gui/GUI/images/set_rotation_point_dialog1.png differ
diff --git a/doc/salome/gui/GUI/images/set_rotation_point_dialog2.png b/doc/salome/gui/GUI/images/set_rotation_point_dialog2.png
new file mode 100644 (file)
index 0000000..7f3696a
Binary files /dev/null and b/doc/salome/gui/GUI/images/set_rotation_point_dialog2.png differ
diff --git a/doc/salome/gui/GUI/images/studyproperties.png b/doc/salome/gui/GUI/images/studyproperties.png
new file mode 100755 (executable)
index 0000000..af88317
Binary files /dev/null and b/doc/salome/gui/GUI/images/studyproperties.png differ
diff --git a/doc/salome/gui/GUI/images/updaterate.png b/doc/salome/gui/GUI/images/updaterate.png
new file mode 100755 (executable)
index 0000000..4a6c299
Binary files /dev/null and b/doc/salome/gui/GUI/images/updaterate.png differ
diff --git a/doc/salome/gui/GUI/images/urbutton.png b/doc/salome/gui/GUI/images/urbutton.png
new file mode 100755 (executable)
index 0000000..d7c0841
Binary files /dev/null and b/doc/salome/gui/GUI/images/urbutton.png differ
diff --git a/doc/salome/gui/GUI/images/view2.png b/doc/salome/gui/GUI/images/view2.png
new file mode 100755 (executable)
index 0000000..9d48a09
Binary files /dev/null and b/doc/salome/gui/GUI/images/view2.png differ
diff --git a/doc/salome/gui/GUI/images/view_rotation_point.png b/doc/salome/gui/GUI/images/view_rotation_point.png
new file mode 100644 (file)
index 0000000..7fe8f83
Binary files /dev/null and b/doc/salome/gui/GUI/images/view_rotation_point.png differ
diff --git a/doc/salome/gui/GUI/index.htm b/doc/salome/gui/GUI/index.htm
deleted file mode 100755 (executable)
index 774d93c..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var strDefaultTopic = "about:blank";\r
-var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:Noframeset\r
-var bNoApplet  = false;\r
-var strPaneDHTML  = "whd_nvp10.htm";           //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
-var strPaneApplet = "whd_nvp20.htm";\r
-var strPaneList   = "whgdata/whnvp30.htm";\r
-\r
-var strHTML = "";\r
-var strPane = "";\r
-var nViewFrameType = -1;\r
-\r
-function CMRServer()\r
-{\r
-  this.m_cAgents = new Array;\r
-}\r
-var cMRServer = new CMRServer;\r
-\r
-//figure out which mode is the best\r
-if (!window.gAgent)\r
-{\r
-       // low end browser, we don't even try to determine it.\r
-       document.location = "whnjs.htm";\r
-}\r
-else\r
-{\r
-       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)\r
-               document.location = "whnjs.htm";\r
-       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
-               document.location = "whnjs.htm";\r
-       else if (gbMac && gbIE4 && !gbIE5)\r
-               document.location = "whnjs.htm";\r
-       //figure out which mode is the best\r
-       else \r
-       {\r
-               nViewFrameType=nWebhelpNavPaneMode;\r
-               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
-               {\r
-                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
-                       if (gbNav4)                                                                             nViewFrameType = 2;\r
-                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
-                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
-                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
-                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
-                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
-                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
-                       if (gbMac)                                                                                      nViewFrameType = 3;\r
-                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
-                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
-               }\r
-       }\r
-}\r
-\r
-if (nViewFrameType!=-1)\r
-{\r
-       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
-       //The colordepth of the 16 color on Windows is 1. \r
-       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
-       {\r
-          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
-          nViewFrameType = 3;\r
-       }\r
-\r
-       //figure out which one is navpane\r
-       if (nViewFrameType == 1)\r
-               strPane = strPaneDHTML;\r
-       else if (nViewFrameType == 2)\r
-               strPane = strPaneApplet;\r
-       else \r
-               strPane = strPaneList;\r
-\r
-       var oParam = new Object();\r
-       oParam.sTopic = "";\r
-       var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);\r
-       if (SendMessage(oMsg) && oParam.sTopic != "")\r
-               strDefaultTopic =  oParam.sTopic;\r
-\r
-\r
-       if (nViewFrameType == 1)\r
-       {\r
-               //DHTML (iframe or xml based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";\r
-               strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";\r
-               strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
-       }\r
-       else if (nViewFrameType == 2)\r
-       {\r
-               //applet (xml based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";\r
-               strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";\r
-               strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
-       }\r
-       else if (nViewFrameType == 3)\r
-       {\r
-               //generic html (pure html based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\">";\r
-               strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\"  scrolling=\"no\"></frame>";\r
-               strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";\r
-               strHTML += "</frameset>";\r
-       } \r
-       else if (nViewFrameType == 4)\r
-       {\r
-               //no navipane at all\r
-               strHTML += "<frameset  id=\"whPfset\" border=\"0\" cols=\"100%,*\">";\r
-               strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";\r
-               strHTML += "</frameset>";\r
-       }\r
-\r
-       document.write(strHTML);\r
-\r
-       RegisterListener2(window, WH_MSG_SHOWPANE);\r
-       RegisterListener2(window, WH_MSG_HIDEPANE);\r
-       RegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-       window.onunload = window_unload;\r
-}\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(window, WH_MSG_SHOWPANE);\r
-       UnRegisterListener2(window, WH_MSG_HIDEPANE);\r
-       UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId = oMsg.nMessageId;\r
-       if (nMsgId == WH_MSG_SHOWPANE)\r
-       {\r
-               getElement("whPfset").cols = "260,*";\r
-               var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
-               SendMessage(onMsg);\r
-               onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");\r
-               if (SendMessage(onMsg))\r
-               {\r
-                       onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);\r
-                       SendMessage(onMsg);\r
-               }\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_HIDEPANE)\r
-       {\r
-               getElement("whPfset").cols = "0,*";\r
-               var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");\r
-               SendMessage(onMsg);\r
-               onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");\r
-               SendMessage(onMsg);\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_ISPANEVISIBLE)\r
-       {\r
-               var n = parseInt(getElement("whPfset").cols);\r
-               if (n > 0)\r
-               {\r
-                       oMsg.oParam.bVisible = true;\r
-               }\r
-               return false;\r
-       }\r
-       return true;\r
-}\r
-//-->\r
-</script>\r
-<body>\r
-<noscript>\r
-       <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>\r
-</noscript>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/index_csh.htm b/doc/salome/gui/GUI/index_csh.htm
deleted file mode 100755 (executable)
index ba099aa..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gCSHFileName   = "whc_data.htm";\r
-var gCSHSuffixName1 = "_csh.html";\r
-var gCSHSuffixName2 = "_csh.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-gCSHFileName="cshdat_webhelp.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-var gasProj = new Array();\r
-gasProj[0] = _getPath(document.location.href);\r
-var gCurrent = 0;\r
-\r
-function addProject(strProj)\r
-{\r
-       var len  = gasProj.length;\r
-       if (strProj)\r
-       {\r
-               strProj = _replaceSlash(strProj);\r
-               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
-                       strProj += "/";\r
-               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
-               var bFound = false;\r
-               for (var i = 0; i < len; i ++)\r
-               {\r
-                       if (isSamePath(gasProj[i], strPPath))\r
-                       {\r
-                               bFound = true;\r
-                               break;\r
-                       }\r
-               }\r
-               if (!bFound)\r
-                       gasProj[len] = strPPath;\r
-       }\r
-}\r
-\r
-function isSamePath(strPath1, strPath2)\r
-{\r
-       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
-}\r
-\r
-function goNext()\r
-{\r
-       gCurrent ++;\r
-       var len = gasProj.length;\r
-       if (gCurrent >= len)\r
-               return getHomePage()\r
-       else\r
-               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
-       return "";\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
-       var strCurPPath = _getPath(strLocation);\r
-       var strOriPPath = _getPath(getHomePage());\r
-       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
-       var strURL = getHomePage() + "#" + strRelPath;\r
-       return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
-       var strHomePage;\r
-       var strTmp = location.toString();\r
-       var nPos = strTmp.indexOf("#");\r
-       if (nPos != -1)\r
-       {\r
-          strHomePage = strTmp.substring(0, nPos);\r
-       }\r
-       else\r
-       {\r
-          strHomePage = strTmp;\r
-       }\r
-       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
-       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
-       if (nPos != -1)\r
-       {\r
-          strHomePage = strHomePage.substring(0,nPos);\r
-          if (nPos1 != -1)\r
-            strHomePage += ".html";\r
-          else\r
-            strHomePage += ".htm";\r
-       }\r
-       return strHomePage;\r
-}\r
-//-->\r
-</script>\r
-</head>\r
-<frameset rows="1,*">\r
-<frame name="dumb" src="about:blank"></frame>\r
-<frame name="csh" src="cshdat_webhelp.htm"></frame>            \r
-</frameset>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/index_rhc.htm b/doc/salome/gui/GUI/index_rhc.htm
deleted file mode 100755 (executable)
index 6c22f70..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gCSHFileName   = "whc_data.htm";\r
-var gCSHSuffixName1 = "_rhc.html";\r
-var gCSHSuffixName2 = "_rhc.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-gCSHFileName="cshdat_robohelp.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-var gasProj = new Array();\r
-gasProj[0] = _getPath(document.location.href);\r
-var gCurrent = 0;\r
-\r
-function addProject(strProj)\r
-{\r
-       var len  = gasProj.length;\r
-       if (strProj)\r
-       {\r
-               strProj = _replaceSlash(strProj);\r
-               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
-                       strProj += "/";\r
-               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
-               var bFound = false;\r
-               for (var i = 0; i < len; i ++)\r
-               {\r
-                       if (isSamePath(gasProj[i], strPPath))\r
-                       {\r
-                               bFound = true;\r
-                               break;\r
-                       }\r
-               }\r
-               if (!bFound)\r
-                       gasProj[len] = strPPath;\r
-       }\r
-}\r
-\r
-function isSamePath(strPath1, strPath2)\r
-{\r
-       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
-}\r
-\r
-function goNext()\r
-{\r
-       gCurrent ++;\r
-       var len = gasProj.length;\r
-       if (gCurrent >= len)\r
-               return getHomePage()\r
-       else\r
-               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
-       return "";\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
-       var strCurPPath = _getPath(strLocation);\r
-       var strOriPPath = _getPath(getHomePage());\r
-       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
-       var strURL = getHomePage() + "#" + strRelPath;\r
-       return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
-       var strHomePage;\r
-       var strTmp = location.toString();\r
-       var nPos = strTmp.indexOf("#");\r
-       if (nPos != -1)\r
-       {\r
-          strHomePage = strTmp.substring(0, nPos);\r
-       }\r
-       else\r
-       {\r
-          strHomePage = strTmp;\r
-       }\r
-       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
-       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
-       if (nPos != -1)\r
-       {\r
-          strHomePage = strHomePage.substring(0,nPos);\r
-          if (nPos1 != -1)\r
-            strHomePage += ".html";\r
-          else\r
-            strHomePage += ".htm";\r
-       }\r
-       return strHomePage;\r
-}\r
-//-->\r
-</script>\r
-</head>\r
-<frameset rows="1,*">\r
-<frame name="dumb" src="about:blank"></frame>\r
-<frame name="csh" src="cshdat_robohelp.htm"></frame>           \r
-</frameset>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/about_salome.doc b/doc/salome/gui/GUI/input/about_salome.doc
new file mode 100644 (file)
index 0000000..4f132ab
--- /dev/null
@@ -0,0 +1,12 @@
+/*!
+
+\page about_salome_page About SALOME
+
+<ul>
+<li>\subpage intro_to_salome_page</li>
+<li>\subpage salome_architecture_page</li>
+<li>\subpage installing_salome_page "Installing SALOME"</li>
+<li>\subpage running_salome_page</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/creating_new_study.doc b/doc/salome/gui/GUI/input/creating_new_study.doc
new file mode 100644 (file)
index 0000000..3c4d0e3
--- /dev/null
@@ -0,0 +1,36 @@
+/*!
+
+\page creating_new_study_page Creating a new study
+
+Study is a document within GUI, an abstraction layer between actual
+document data (probably, remote data available through CORBA) and data
+presentation (in the Object Browser). It contains a tree of Data
+Object instances.
+
+<em>To create a new study:</em>
+
+\par 
+From the main menu select <b>File > New</b> or in the standard toolbar
+click "New document" button.
+
+\image html newsticn.jpg "&quot;New document&quot; button"
+
+Your study will be created with default name \b Study1. In SALOME you
+can create several studies.
+
+In addition to it, you can create several windows with different
+activated viewers (VTK, OCC, Plot2d) for each study.
+
+<em>To create a new window for a definite study:</em>
+<ol>
+<li>Make your study \b active: maximize it (if it minimized) or  click on
+the top control zone of the study window.
+</li>
+<li>\n From the main menu select <b>Window > New Window</b> and from the submenu
+choose the viewer, which will be activated in a new window.
+</li>
+</ol>
+
+The window for your study will be created with a default name \b Study1.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/displaying_studies.doc b/doc/salome/gui/GUI/input/displaying_studies.doc
new file mode 100644 (file)
index 0000000..b45a8ed
--- /dev/null
@@ -0,0 +1,30 @@
+/*!
+
+\page displaying_studies_page Displaying studies
+
+Starting from SALOME version 3.0.0. you are able to work in a
+multi-desktop environment, which means that you can open as many
+studies as you need, place them wherever you wish on the desktop, in
+brief, work with Salome Platform like with a normal Windows
+application.
+\n Such windows as Object Browser and Python Console are dockable and
+also can be placed at any part of the desktop.
+\n Only one study window in representation area can be active. You can
+change their size and move any windows between representation
+areas. When an area becomes empty, it is not displayed.
+\n All windows are placed inside tabs where you can switch between
+them. If there are several windows (viewers) in your current study and
+you want to display more then one at the same time, you can split
+representation area into two parts, in horizontal or vertical
+direction, to create two representation areas with windows be placed
+in them. To do this, right-click on the tab and select <b>Split
+Vertically</b> or <b>Split Horizontally</b>.
+
+For example, on this screen-shot the active zone has been split
+horizontally to be able to work with OCC and VTK viewers
+simultaneously, the one of the windows was split again, at this time
+vertically to see Plot 2d graphs.
+
+\image html neo-view2.png
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/editing_studies.doc b/doc/salome/gui/GUI/input/editing_studies.doc
new file mode 100644 (file)
index 0000000..cafc03e
--- /dev/null
@@ -0,0 +1,19 @@
+/*!
+
+\page editing_studies_page Editing studies
+
+\b SALOME has \b Copy/Paste functionality allowing to edit your study
+within a definite component:
+
+<em>To copy/paste a definite object:</em>
+\par
+In the main toolbar click "Copy"/"Paste" button or from the main menu
+choose <b>Edit > Copy/Paste</b> option. 
+
+\image html copy-paste.jpg "&quot;Copy&quot; and &quot;Paste&quot; buttons"
+
+\n The availability of \b Copy/Paste operations depends on the module and
+the nature of an operation or an object, so if the module does not
+provide this functionality, it won't be available.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/geometry_preferences.doc b/doc/salome/gui/GUI/input/geometry_preferences.doc
new file mode 100644 (file)
index 0000000..651ef2e
--- /dev/null
@@ -0,0 +1,47 @@
+/*!
+
+\page geometry_preferences_page Geometry preferences
+
+In the \b Geometry module you can set preferences for visualisation of
+geometrical figures which can be used in later sessions with this
+module.
+
+\image html pref15.png
+
+\par
+For all color definitions click on the respective line to access to
+the \ref select_color_and_font_page "Select Color" dialog box.
+
+<ul>
+<li><b>General</b></li>
+<ul>
+<li><b>Default Display Mode</b> - allows to choose between wireframe
+or shading.<li>
+<li><b>Default Shading Color</b> - allows to select default shading
+color.<li>
+<li><b> Default Wireframe Color</b> - allows to select default
+wireframe color (to be applied to any lines not being free boundaries
+or isolated lines).<li>
+<li><b>Color of free boundaries</b> - allows to select default color for free boundaries.<li>
+<li><b>Color of edges, vectors and wires</b> - allows to select
+default color for edges, vectors and wires (isolated lines).<li>
+<li><b>Color of points</b> - allows to select default color for
+vertices.<li>
+<li><b>Color of isolines</b> - allows to select default color for
+isolines.<li>
+<li><b>Step Value for Spin Boxes</b> - allows to define the increment
+of values set in spin boxes.<li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Marker of Points</b></li>
+<ul>
+<li><b>Type</b> - allows to select the symbol for representation of
+points (cross, asterisk, etc.).</li>
+<li><b>Size</b> - allows to define the size of the marker from 1
+(smallest) to 7 (largest).</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/getting_started.doc b/doc/salome/gui/GUI/input/getting_started.doc
new file mode 100644 (file)
index 0000000..a068735
--- /dev/null
@@ -0,0 +1,20 @@
+/*!
+
+\page getting_started_page Getting started
+
+When you start the SALOME Platform, the following initial desktop window appears:
+
+\image html view2.png
+
+&nbsp;&nbsp;&nbsp;&nbsp;In general, the SALOME platform is destined
+for performance of different numerical calculations and  visualization
+of the resulting data. For that purpose, in the SALOME environment the
+following notion is used  - \b Study.
+<br>Study represents a working document in which you can realize all
+operations connected with the SALOME functionality. 
+<br>SALOME is a multi-study platform. It means that simultaneously you can
+work with several studies. 
+
+\note To proceed working in SALOME you should create or open a new study.     
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/gui_module_chapter.doc b/doc/salome/gui/GUI/input/gui_module_chapter.doc
new file mode 100644 (file)
index 0000000..3d4f43c
--- /dev/null
@@ -0,0 +1,39 @@
+/*!
+
+\page gui_module_page GUI module
+
+<ul>
+<li>\subpage introduction_to_gui_page</li>
+<li>\subpage getting_started_page</li>
+<li>\subpage salome_desktop_page</li>
+<li>\subpage study_management_page</li>
+<ul>
+<li>\ref creating_new_study_page</li>
+<li>\ref opening_studies_page</li>
+<li>\ref saving_and_closing_studies_page</li>
+<li>\ref editing_studies_page</li>
+<li>\ref displaying_studies_page</li>
+<li>\ref working_with_python_scripts_page</li>
+<li>\ref setting_study_properties_page</li>
+</ul>
+<li>\subpage using_object_browser_page</li>
+<li>\subpage using_registry_tool_page</li>
+<li>\subpage using_catalog_generator_page "Using Catalog Generator"</li>
+<li>\subpage viewers_page</li>
+<ul>
+<li>\ref occ_3d_viewer_page</li>
+<li>\ref vtk_3d_viewer_page</li>
+<li>\ref plot2d_viewer_page</li>
+</ul>
+<li>\subpage setting_preferences_page</li>
+<ul>
+<li>\ref setting_preferences_subpage</li>
+<li>\ref select_color_and_font_page</li>
+<li>\ref salome_preferences_page</li>
+<li>\ref geometry_preferences_page</li>
+<li>\ref mesh_preferences_page</li>
+<li>\ref postpro_preferences_page</li>
+</ul>
+</ul>
+
+*/
diff --git a/doc/salome/gui/GUI/input/index.doc b/doc/salome/gui/GUI/input/index.doc
new file mode 100644 (file)
index 0000000..1f340a4
--- /dev/null
@@ -0,0 +1,51 @@
+/*!
+
+\mainpage GUI Module Reference Documentation
+
+<ul>
+<li>\subpage introduction_page</li>
+<li>\subpage about_salome_page</li>
+<ul>
+<li>\ref intro_to_salome_page</li>
+<li>\ref salome_architecture_page</li>
+<li>\ref installing_salome_page</li>
+<li>\ref running_salome_page</li>
+</ul>
+<li>\subpage gui_module_page "GUI module"</li>
+<ul>
+<li>\ref introduction_to_gui_page</li>
+<li>\ref getting_started_page</li>
+<li>\ref salome_desktop_page</li>
+<li>\ref study_management_page</li>
+<ul>
+<li>\ref creating_new_study_page</li>
+<li>\ref opening_studies_page</li>
+<li>\ref saving_and_closing_studies_page</li>
+<li>\ref editing_studies_page</li>
+<li>\ref displaying_studies_page</li>
+<li>\ref working_with_python_scripts_page</li>
+<li>\ref setting_study_properties_page</li>
+</ul>
+</ul>
+<li>\ref using_object_browser_page</li>
+<li>\ref using_registry_tool_page</li>
+<li>\ref using_catalog_generator_page "Using Catalog Generator"</li>
+<li>\ref viewers_page</li>
+<ul>
+<li>\ref occ_3d_viewer_page</li>
+<li>\ref vtk_3d_viewer_page</li>
+<li>\ref plot2d_viewer_page</li>
+</ul>
+<li>\ref setting_preferences_page</li>
+<ul>
+<li>\ref setting_preferences_subpage</li>
+<li>\ref select_color_and_font_page</li>
+<li>\ref salome_preferences_page</li>
+<li>\ref geometry_preferences_page</li>
+<li>\ref mesh_preferences_page</li>
+<li>\ref postpro_preferences_page</li>
+</ul>
+</ul>
+
+
+*/
diff --git a/doc/salome/gui/GUI/input/installing_salome.doc b/doc/salome/gui/GUI/input/installing_salome.doc
new file mode 100644 (file)
index 0000000..e0f26af
--- /dev/null
@@ -0,0 +1,961 @@
+/*!
+
+\page installing_salome_page SALOME Installation Wizard Help
+
+<hr>
+<ul>
+<li>\ref installing_products "Installing products with the Installation Wizard"
+<ul>
+<li>\ref gui_mode_install "GUI mode"
+<li>\ref batch_mode_install "Batch mode"
+<li>\ref environment_files "Environment files"
+</ul>
+<li>\ref notes_on_check "Notes on check products version procedure"
+<li>\ref pick_up_env "Pick up the environment"
+<li>\ref modifying_xml "Modifying XML configuration file"
+<li>\ref installation_scripts "Implementing installation scripts for the new products"
+<li>\ref finish_buttons "Customizing Readme page buttons"
+</ul>
+<hr>
+\anchor installing_products 
+<h1>Installing products with the <em>Installation Wizard</em></h1>
+
+The Installation Wizard can be launched in two modes: \b GUI and \b
+batch.
+<br>The root directory of the Installation Wizard contains Python
+script \b runInstall. To run the Installation Wizard just type \b runInstall.
+in the terminal window:
+<br><br>[ python ] \b runInstall [options]
+
+Without options this script will launch the SALOME Installation
+Wizard in the default mode (GUI). \n The default installation settings
+can be overridden by using command line options. Each option has a
+short and a long notation:
+
+<b>-g / --gui</b>
+\par
+Runs the Installation Wizard in the GUI mode (this is the default
+mode).
+
+<b>-b / --batch</b>
+\par
+Runs the Installation Wizard in the terminal mode.
+
+<b>-f FILE / --file=FILE</b>
+\par
+The XML configuration file to be used by the Installation Wizard.  If
+this option is not used then the installation script tries to define
+the \e Linux version and use the corresponding XML file if it exists. For
+examle, for <em>Linux Mandrake 10.1</em>  the <b>config_Mandrake_10.1.xml</b>  file
+will be used by default. If no appropriate file is found, the file
+<b>config.xml</b> will be used. This file refers to the basic target platform 
+which is <em>Linux Mandrake 10.1</em> for SALOME 3.0 and newer. If <b>config.xml</b>
+file is not found either, a warning message box is shown (in GUI mode)
+or printed to the console (in batch mode) and the Installation Wizard 
+quits.
+
+<b>-d DIR / --target=DIR</b>
+\par
+The target directory SALOME platform is to be installed to. 
+If used, this option overrides the default target directory, given in
+the configuration XML file (usually <b>${HOME}/salome_\<version\></b>, 
+see \ref modifying_xml "here" for more details).
+
+<b>-t DIR / --tmp=DIR</b>
+\par
+The directory, which should be used for temporary files. If given,
+this option overrides the default temporary directory, given in the
+configuration xml file (usually \b /tmp, see \ref modifying_xml "here"
+for more information).
+
+<b>-a / --all-from-sources</b>
+\par
+Forces all the products to be installed from sources (including all
+SALOME modules). If this option is used, all default installation
+modes for all products are ignored.
+\n This option is helpful when the user wants to install SALOME on the
+platform which is not officially supported. In this case, the user can
+try to run the SALOME Installation Wizard with the \b -a option in order
+to build all the products from sources.
+\n <b>Note, that this is a time-consuming operation which can take
+more than 24 hours depending on the computer.</b>
+
+<b>-h / --help</b>
+\par
+Prints help information on the Installation Wizard's use.
+
+<b>-v / --version</b>
+\par
+Prints version information (\b Note: this is the Installation Wizard's
+version number, not the number of SALOME platform version).
+
+The installation procedure supports different \em Linux platforms and
+installs various installation 3d-party prerequisite products which are
+required by SALOME platform. As it was mentioned above, the basic
+target platform for SALOME 3.0 and newer is <em>Linux Mandrake 10.1</em>.
+Use of configuration XML files gives a flexible way to modify the list
+of products to be installed by the Installation Wizard without
+changing the program source code. Just create your own XML
+configuration file and implement installation scripts for the
+prerequisite products you need and then use this XML file with the
+Installation Wizard. This can be done, for example, for some Linux
+platform which is not supported directly by the Installation
+Wizard. See \ref modifying_xml "Modifying XML configuration file" and
+\ref installation_scripts "Implementing installation scripts for the new products"
+sections for more information.
+
+<br>
+\anchor gui_mode_install
+<h2>GUI mode</h2>
+
+The <b>Installation Wizard</b> GUI has been developed using
+Trolltech's <b>Qt 3.0.5</b> toolkit. After launching the Installation
+Wizard in the GUI mode the wizard window is shown to the user. This
+wizard guides the user through several subsequent pages. To navigate
+between the pages use \em "Next" and \em "Back" buttons in the lower
+part of the wizard window. The \em "Cancel" button closes the wizard
+window and quits the installation procedure after the user's
+confirmation. The \em "Help" button opens an additional window to show
+help information.
+
+The first \em "Introduction" page is shown in \ref figure_1 "Figure 1". 
+Skip this page by clicking \em "Next":
+
+\anchor figure_1
+\image html intropage.png 
+\n <center><b>Figure 1:</b> "Introduction" page</center>
+
+In the second page you are proposed to enter the target directory
+where the SALOME platform should be installed to. You can also click
+<em>"Browse..."</em> and choose the destination folder using the standard
+browse directory dialog box.
+\n If the directory you want to install products to does not exist you
+are prompted to confirm directory creation. If you type a wrong
+directory path, or if you do not have write permissions 
+for the directory you use, the corresponding message box is shown.
+
+You can also change the temporary directory (which is used to store
+temporary files required for the installation).
+\n In the bottom part of the window the total disk space required for
+the installation and for the temporary files is displayed (see below
+for more details).
+
+In the GUI mode the Installation Wizard provides two different options
+to install the SALOME platform: \b basic (default option) and
+\b advanced. In the \b basic mode the user should enter the target
+installation directory and temporary folder. All other installation
+options are taken from the XML configuration file (see \ref figure_2 "Figure 2"):
+
+\anchor figure_2
+\image html productpage1.png
+\n <center><b>Figure 2:</b> "Installation settings"</center>
+
+In addition, you have a choice to use "Install all products from
+sources" check box. If this option is turned on, all the products will
+be installed from the sources (using their own build procedures). This
+check box corresponds to the <b>--all-from-sources (-a)</b> option of
+the \b runInstall script (see \ref installing_products "here").
+
+\Note <b>Installation of all products from sources is a long-time
+operation.</b>
+
+To switch to the \b advanced option, click <em>"More..."</em> (see 
+\ref figure_3 "Figure 3" ).
+
+In the advanced mode you have a possibility to select products to be
+installed. Each product can have several options of installation: you
+have a possibility to use the native product (provided with Linux
+distribution and installed in the system folders), install already
+precompiled binaries, build the product from sources or not install it
+at all. Available options and default option are taken from the XML
+configuration file. You can mark the products you want to install by
+clicking the corresponding radio-buttons in the list view in the left
+part of the page.
+\n Note, that some products may require some other pre-requisite
+products to be installed (or these prerequisite products should be
+already available on your computer). The installation procedure has a
+special feature to automatically mark these products in the list
+view. For example, in order to install \b PyQt it is necessary to have
+<b>gcc, Python, Qt</b> and \b Sip installed. Therefore all these
+products will also be  turned on when you check on \b PyQt. This
+feature can be switched off by clicking the <em>"Automatic
+dependencies"</em> checkbox. Turn on this checkbox if you want all
+prerequisite products to be automatically checked when you select some
+product to be installed. Turn off this checkbox if you want to disable
+this feature.
+
+\anchor figure_3
+\image html productpage.png
+\n <center><b>Figure 3:</b> "Installation settings" page in the 'advanced' mode</center>
+
+If you want to use native products (like \b gcc, \b tcl, etc.), select <em>"use
+native"</em> option. 
+\n Special button in the right part of the page - <em>"Unselect All"</em> -
+allows to reset quickly all products to the <em>"not install"</em> state.
+<br><br>
+There are also two checkboxes on this page: <em>"SALOME sources"</em>
+and <em>"SALOME binaries"</em>. These three-state checkboxes allow
+quick selecting/unselecting sources/binaries packages of SALOME
+modules for installation.
+<br><br>
+In addition, when some SALOME sources are selected, one more check box
+becomes available: <em>"Build SALOME sources"</em>. If this option is
+turned on, the selected SALOME modules will be built and installed
+from sources.
+
+\note <b>If this check box is turned on, the corresponding SALOME
+module binaries package installation is disabled, because of  SALOME
+module sources and binaries packages conflict</b> (see \ref figure_4 "Figure 4" below).
+
+\anchor figure_4
+\image html productpage2.png
+\n <center><b>Figure 4:</b> "Build SALOME sources" check box
+usage</center>
+
+The box at the right side of the page displays the information about
+currently highlighted product: name, version and short description,
+required disk space, disk space required for temporary files, list of
+prerequisites (this information is provided in the XML file) and
+current user choice.
+<br><br>
+The <em>"Disk space required:"</em> field displays how much disk space
+on the hard drive is required for installation of selected products.
+
+\note <b>Please, take into account that the displayed amount of
+required disk space is approximate and may differ when you install
+products on your hard drive.</b>
+
+The installation procedure uses a special directory to store temporary
+files. The <em>"Space for temporary files:"</em> field shows the information
+about required disk space on the hard drive for extracting and
+compiling the selected products. You can change the temporary
+directory - just type a path to the folder you want to use or click on 
+the corresponding <em>"Browse..."</em> button.
+
+\note Actually, temporary files are not stored directly in the
+directory entered by the user. The Installation Wizard creates an
+additional folder in this directory named something like
+INSTALLWORK<b>XXXXX</b> where XXXXX is a unique number. This allows to launch
+several Installation Wizards simultaneously. This temporary directory
+is removed automatically when the installation finishes.
+
+The installation procedure also checks the available disk space. If
+there is not enough disk space on your hard drive you will see a
+corresponding error message box.
+
+\note <b>You are strongly recommended not to use directory names
+containing spaces</b>. Otherwise you can experience 
+some troubles with the installation.
+
+To proceed further click <em>"Next"</em>. At this moment the program will make
+some tests to check installation settings: if there is enough disk
+space on the hard drive, check for native products installation,
+dependencies (prerequisites) for each product you have selected to be
+installed. If any test fails you will see the corresponding warning
+message box. Otherwise the wizard will proceed to the next page:
+
+\anchor figure_5
+\image html choicepage.png
+\n <center><b>Figure 5:</b> "Check your choice" page</center>
+
+This page summarizes the installation options you've made on the
+previous pages. You can check again your choice and change it if
+necessary by getting back to the previous page.
+\n When you are sure that everything is OK, click <em>"Next"</em> to
+follow to the \ref figure_6 "next page".
+
+\anchor figure_6
+\image html progresspage1.png
+\n <center><b>Figure 6:</b> "Installation progress" page</center>
+
+To start installation of the selected products click "Start". It
+launches the shell installation script and you will be able to see the
+output of the script in the  dialog topmost frame. If any errors occur
+during the installation progress the corresponding messages will be
+printed to the log window in bold red font.
+
+It is possible to break the installation at any time by clicking
+"Stop". Then you can get back to the previous pages if you wish to
+change installation settings or restart installation by pressing again
+"Start" button.
+
+\note <b>In the current implementation it is not possible to resume
+the stopped installation process; it will be re-started from the very
+beginning.</b>
+
+\anchor figure_7
+\image html progresspage.png
+\n <center><b>Figure 7:</b> "Installation progress" page: installation in progress</center>
+
+The <em>"Installation Status"</em> frame window shows you the progress of
+installation. \c "Waiting" status means that installation of this product
+has not been started yet. The product currently being installed is
+marked as \c "Processing". All installed products have \c "Completed"
+status.
+
+You can abort installation and close the installation procedure using
+\em "Cancel" button.
+
+\note <b>This button sends the signal "SIGTERM" to the shell
+script. The script tries to clear all temporary files. The process of
+removing temporary files can take some time, so the installation
+wizard will wait 3 seconds before closing.</b>
+
+At the end of installation (all selected products have been installed
+successfully) you can go back to the previous pages to start a new
+installation or click \em "Next" to go the Readme page:
+
+\anchor figure_8
+\image html readmepage.png
+\n <center><b>Figure 8:</b> "Finish installation" page</center>
+
+In this page you can read important information about the Instalation
+Wizard itself and some tips: how to run and test SALOME or how to
+build SALOME from the sources. This is the contents of the README file
+which you can find in the root directory of the Installation Wizard.
+
+You can also launch SALOME Desktop from this page or read the Release
+Notes file by clicking on the corresponding buttons in the lower part
+of the page (see \ref modifying_xml "here" and \ref finish_buttons
+"here" for more information about customizing these buttons).
+
+<br>
+\anchor batch_mode_install
+<h2>Batch mode</h2>
+
+To launch the Installation Wizard in the batch mode use -\b b (--\b batch)
+parameter.
+\n In this mode the GUI wizard is not shown but all the installation
+status is displayed directly in the console. In the batch mode the
+user does not have a possibility to change installation settings which
+are given in the configuration file, except target and temporary
+directories which can be overridden by the corresponding command line
+options.
+\n The only exception is --\b all-from-sources (-\b a) option which enables
+special installation mode in which all the products (including SALOME
+modules) are installed from sources, ignoring the default mode defined
+in the XML configuration file (see \ref installing_products "here" for details).
+
+\anchor figure_9
+\image html batchmode.png
+\n <center><b>Figure 9:</b> Batch mode</center>
+
+<br>
+\anchor environment_files
+<h2>Environment files</h2>
+
+During the process of installation the script creates some environment
+files to simplify the procedure of launching SALOME. These shell
+scripts set all necessary environment variables for all products you
+have installed. To learn how installation scripts collects the
+environment, see \ref pick_up_env "here". These files are: \b
+salome.csh + \b salome.sh in the <b><em>KERNEL module sources</em></b>
+and <b><em>KERNEL module binaries</em></b> root directories and
+\b env_products.csh + \b env_products.sh and \b env_build.csh + 
+\b env_build.sh in the target installation directory.
+
+\note there is some difference between these files: \b env_build.*
+files are optimized to be used for building SALOME modules from
+sources (see \b README file provided with the installation procedure
+on the CD). The \b env_products.* (and \b salome.*) files are
+optimized for SALOME launching. The behavior is defined by the
+environment variable \b ENV_FOR_LAUNCH which is set to \b 0 in
+env_build.* files and to \b 1 in env_products.* (salome.*) files.
+
+<br>
+<hr>
+\anchor notes_on_check
+<h2>Notes on <em>check products version</em> procedure</h2>
+
+Unfortunately there is no exact algorithm to identify the product
+version under Linux platform. The information in this section gives an
+idea how the version is checked for the native/preinstalled products
+(this information refers to the base platform <em>Linux Mandrake
+10.1</em>; and the same algorithms are used for other platforms).
+
+The general rule for all products is that the path to the binaries
+should be set via the \b PATH environment variable, path to the libraries
+should be set via the \b LD_LIBRARY_PATH variable and the python modules
+should be available via the \b PYTHONPATH variable.
+
+\note the information given in this section refers to the prerequisite
+products for SALOME version 3.2.4.
+
+<ul>
+<li>gcc 3.4.1
+\n\n Version number is checked by <b>gcc -dumpversion</b> command. The \b gcc
+executable should be in the \b PATH environment variable. Version should
+be equal to "3.4.1". It is recommended to use native gcc on Mandrake
+10.1.<br><br>
+</li>
+<li>tcl/tk 8.4.5
+\n\n Version number for \b tcl/tk can be found in tclConfig.sh and
+tkConfig.sh files (\b TCL_VERSION and \b TK_VERSION variables
+correspondingly). Version number should be equal to "8.4" (release
+number is not checked). Set the \b TCLHOME environment variable to the
+root directory of tcl/tk installation. It is recommended to use native
+tcl/tk on Mandrake 10.1.<br><br>
+</li>
+<li>boost 1.31.0
+\n\n Version number is defined by \b version.hpp file which is part of
+the boost distribution. This file defines the \b BOOST_VERSION macro
+which should be equal to "103100". In addition the existence of boost
+libraries is checked. Set the \b BOOSTDIR environment variable if you
+have a preinstalled version of boost.<br><br>
+</li>
+<li>Python 2.3.4
+\n\n Version number is checked by \b python -\b V command. The \b python
+executable should be in the \b PATH environment variable. Version
+number should be equal to "2.3.4". It is recommended to use native
+Python on Mandrake 10.1. Set the \b PYTHONHOME environment variable if
+you have a preinstalled version of Python.<br><br>
+</li>
+<li>Swig 1.3.24
+\n\n Version number is checked by \b swig -\b version command. The \b swig
+executable should be in the \b PATH environment variable. Version number
+should be equal to "1.3.24".
+<br><br>
+</li>
+<li>Qt 3.3.3
+\n\n Version number is defined by \b qglobal.h file which is part of the
+Qt distribution. This file defines \b QT_VERSION_STR macro which should be equal to "3.3.3". It is recommended to use native Qt on Mandrake 10.1.
+\n Set the \b QTDIR environment variable if you have a preinstalled version of qt.<br><br>
+</li>
+<li>msg2qm
+\n\n \b msg2qm is a Qt tool which is used to convert text *.po files
+to *.qm resource files. Unfortunately this tool is not included to the
+Linux distribution and provided only in Qt sources package. This is
+the reason why this tool is supplied with the SALOME Installation
+Wizard. There is no way to check the version number of msg2qm tool. Just set
+\b MSG2QM_ROOT environment variable if you have a preinstalled version
+of msg2qm tool.<br><br>
+</li>
+<li>Open CASCADE 6.1.2a2
+\n\n Version number is defined by \b Standard_Version.hxx file which
+is part of the Open CASCADE distribution. This file defines \b
+OCC_VERSION_MAJOR, \b OCC_VERSION_MINOR and \b OCC_VERSION_MAINTENANCE
+macros which should refer to version 6.1.2. \n Set the CASROOT
+environment variable if you have a preinstalled version of Open
+CASCADE.<br><br>
+</li>
+<li>qwt 4.2.0/0.4.2
+\n\n Version number is defined by \b qwt_global.h file which is part of
+the qwt distribution. This file defines \b QWT_VERSION_STR macro which should be equal to "4.2.0".
+\n Set the \b QWTHOME environment variable if you have a preinstalled version of qwt.<br><br>
+</li>
+<li>hdf 5-1.6.4
+\n\n Version number is defined by \b libhdf5.settings file which is
+part of the \b hdf5 distribution. Version should be equal to 1.6.4.
+\n Set the \b HDF5HOME environment variable if you have a preinstalled
+version of hdf5.<br><br>
+</li>
+<li>med 2.2.3
+\n\n Unfortunately there is no formal way to check med version
+number. We check existence of libmed.so.1.0.2 library on the
+computer. If you have any problem with a preinstalled version of med,
+please, reinstall it.
+\n Set the \b MED2HOME environment variable if you have a preinstalled
+version of med.<br><br>
+</li>
+<li>Vtk 4.2.6
+\n\n Unfortunately there is no formal way to check VTK version
+number. We just check the existence of \b libvtkCommon.so library on
+the computer and hope that it is of version we need. If you have any
+problem with a preinstalled version of Vtk, please, reinstall it.
+\n Set the \b VTKHOME environment variable if you have a preinstalled
+version of Vtk.<br><br>
+</li>
+<li>OmniORB 4.0.5, OmniORBpy 2.5, OmniNotify 2.1
+\n\n We just check existence of some omniORB libraries and executable
+on the computer, like \b libomniORB4.so.0.5, \b _omnipymodule.so.2.4,
+\b libCOSNotify4.so.0.1 and \b notifd. \n Set the \b OMNIORBDIR
+environment variable if you have a preinstalled version of omniORB
+products.<br><br>
+</li>
+<li>sip 4.1
+\n\n Version number is checked by \b sip -\b V command. The \b sip
+executable should be in the \b PATH environment variable. Version number should be equal to "4.1".
+\n Set the \b SIPDIR environment variable to the directory where you
+have sip executable preinstalled.<br><br>
+</li>
+<li>PyQt 3.13
+\n\n Version number is defined by \b pyqtconfig.py Python module file
+which is part of the \b PyQt distribution. Version should be equal to "3.13".
+\n Set the \b PYQTDIR environment variable if you have a preinstalled
+version of PyQt.<br><br>
+</li>
+<li>netgen 4.5
+\n\n Unfortunarely we can't find anything about netgen version. We
+just check if \b NETGENROOT environment variable is set. \n Set the\b
+NETGENROOT environment variable if you have a preinstalled version of
+netgen mesher.<br>
+\note netgen 4.5 provided with the SALOME installation Wizard has been patched to improve its performance.
+</li>
+<li>Numeric 23.7
+\n\n Version number is checked by <b>python -c 'import Numeric; print
+Numeric.__version__'</b> command. The \b python executable should be
+in the \b PATH environment variable and \b Numeric module should be
+available for the Python (for example it should be in the \b PYTHONPATH environment variable). Version number should be equal to "23.7". If you have any problem with a preinstalled version of Numeric 23.7, please, reinstall it.
+\n Add the directory where you have a preinstalled version of Numeric
+package to the the \b PYTHONHOME environment variable.<br><br>
+</li>
+<li>graphviz 2.2.1
+\n\n Version number is checked by \b dot -\b V command. The dot
+executable should be in the \b PATH environment variable. Version
+number should be equal to "2.2.1". \n Add \b graphviz bin directory to
+the the \b PATH environment variable.<br><br>
+</li>
+<li>doxygen 1.4.6
+\n\n Version number is checked by \b doxygen --\b version command. The
+\b doxygen executable should be in the \b PATH environment
+variable. Version number should be equal to "1.4.6".<br><br>
+</li>
+<li>\b SALOME module \b sources (3.2.4).
+\n\n For each SALOME module sources package (KERNEL, GUI, GEOM,
+etc...) the root directory contains file configure.in (configure.ac)
+which defines version information.\n Set the \b \<MODULE\>_SRC_DIR environment variable for each SALOME \b
+MODULE sources package installed (where \b MODULE is KERNEL, GUI,
+GEOM, ...).<br><br>
+</li>
+<li>\b SALOME module \b binaries (3.2.4)
+\n\n For each SALOME module binaries package (KERNEL, GUI, GEOM,
+etc...) the \b bin/salome directory contains file \b VERSION which
+defines version information.\n Set \<MODULE\>_ROOT_DIR environment
+variable for each SALOME \b MODULE binaries package installed (where
+\b MODULE is KERNEL, GUI, GEOM, ...).<br><br>
+</li>
+</ul>
+
+If you have native products installed to directories different from
+default ones (not \b /usr/bin, \b /usr/lib...), it is recommended to follow
+the above mentioned instructions. Or you should properly set \b PATH and
+\b LD_LIBRARY_PATH variables \em before starting the Installation
+Wizard. Otherwise the installation script will fail to find
+preinstalled/native products.
+
+\note for some native products (e.g. gcc, Python) the rules of version
+checking are not so strict as described above. Only major and minor
+version numbers should coincide with the prerequisite. Newer version
+of the product can also be used. If some native product has version
+number larger than that required by the installation procedure, the
+user will be prompted by the warning message like this: "<em>You have
+newer version of gcc installed on your computer than that is required
+(3.4.1). Continue?</em>". You can click "\em Yes" to proceed with the
+installation but in this case you should be aware of what you are
+doing. SALOME binaries (including other products) are compiled with
+the predefined prerequisites and most likely can not be run
+successfully if these products are not found. This can be helpful only
+if you plan to build all products from sources.
+
+<br>
+<hr>
+\anchor pick_up_env
+<h2>Pick up the <em>environment</em></h2>
+
+Please, read the following information carefully . This section
+describes how the installation procedure generates the environment
+scripts for the SALOME platform being installed.
+<br><br>
+After installing each product shell the script creates a special
+environment file for the product in its installation folder. The name
+of the file is generated from the name of product by the following
+scheme: \b env_<product_name>.sh (for example \b env_Vtk.sh for the
+Vtk). This file includes all necessary environment settings. At the
+final step of the installation the script picks up all the settings
+files and generates two common environment files from them: \b salome.sh
+and \b salome.csh for \b bash and \b csh shells correspondingly. Such approach
+helps to save time when reinstalling products and you may not bother
+about setting all environment variables manually to build/launch
+SALOME. What you simply need is to source one of these environment
+files.
+<br><br>
+This also concerns those products which are not being installed. For
+example, you install some SALOME binaries to the directory where you
+have previously installed other products.  The Installation procedure
+tries to collect environment files from the target directory if it
+finds necessary products installed there. If some product is not found
+in the target directory the corresponding section of
+\b salome.sh/salome.csh files will be skipped.
+\n For native products (like \b gcc, \b tcl, etc...) the installation
+procedure tries to find them first using \b PATH / \b LD_LIBRARY_PATH
+variables and then in the system default directories (\b /usr/bin,
+\b /usr/lib etc., depending on the product).
+<br><br>
+In any case you may edit \b salome.* files after the installation
+procedure finishes, if you want.
+
+\note As it was mentioned \ref environment_files "above" there are
+other environment files which are generated by the installation
+procedure: \b env_products.csh + \b env_products.sh and \b env_build.csh +
+\b env_build.sh. These files can be found in the target installation root
+directory.
+
+<br>
+<hr>
+\anchor modifying_xml
+<h2>Modifying <em>XML</em> configuration <em>file</em></h2>
+
+You can create your own XML configuration file. The Installation
+Wizard can then take it as a command line argument to provide a list
+of products you want to install with it. The list of products and some
+other settings for the Installation Wizard are provided in the XML
+file. The default file which Installation Wizard looks for if no
+command line arguments are given, is \b config.xml.
+\n This section describes the structure of the configuration file. 
+\n Optional sections/tags are in brackets.
+
+\code
+<document> 
+    [ <config [ version=<install_wizard_version> ] 
+              [ caption=<install_wizard_caption> ] 
+              [ copyright=<install_wizard_copyright>  ] 
+              [ license=<install_wizard_license_info> ] 
+              [ os=<target_platform> ]
+      /> 
+    ] 
+    [ <path   [ targetdir=<target_directory> ] 
+              [ tempdir=<temp_directory>     ]
+      /> 
+    ] 
+    [ <button   label=<button_label>      
+              [ tooltip=<button_tooltip> ] 
+                script=<button_script>    
+              [ disable=<disable_flag>   ]
+      /> 
+    ] 
+    [ <button ... 
+      />
+    ] 
+    [ <product  name=<product_name> 
+                version=<product_version> 
+              [ context=<product_context>         ]
+              [ description=<product_description> ]
+                install=<installation_mode> 
+                supported=<supported_installation_modes> 
+              [ disable=<disable_flag>            ]
+              [ pickupenv=<pickup_env_flag>       ]
+                dependancies=<list_of_prerequisites> 
+                installdiskspace=<install_disk_space> 
+                temporarydiskspace=<tmp_disk_space> 
+                script=<installation_script_name>
+      /> 
+    ] 
+    [ <product ... 
+      /> 
+    ]
+    ...
+</document>
+\endcode
+
+<b>\<config\> section</b>
+\n\n This is an optional section; it provides general information about
+the Installation Wizard itself.
+<br><br>
+Attributes:
+<ul>
+<li><b>version</b>
+\n\n The application version number to be shown in the caption.<br><br>
+</li>
+<li><b>caption</b>
+\n\n The application main window caption - if this string contains
+'\%1' text the title will contain the version number in this place (see
+above).<br><br>
+</li>
+<li><b>copyright</b>
+\n\n The application copyright information (shown in the first
+page).<br><br>
+</li>
+<li><b>license</b>
+\n\n The application license information (shown in the first
+page).<br><br>
+</li>
+<li><b>os</b>
+\n\n This parameter defines the directory (relative from
+./Products/BINARIES) where the Installation Wizard will search
+precompiled binaries packages. If this tag is not provided, binaries
+packages are looked for in the ./Products/BINARIES directory.<br><br>
+</li>
+</ul>
+
+<b>\<path\> section</b>
+\n\n This is an optional section; it defines default installation
+directories.
+<br><br>
+Attributes:
+<ul>
+<li><b>targetdir</b>
+\n\n The target directory - the path to the directory where products
+should be installed.<br><br>
+</li>
+<li><b>tempdir</b>
+\n\n The temporary directory - the path to the directory for the
+temporary files.<br><br>
+</li>
+</ul>
+
+<b>\<product\> section</b>
+\n\n This section describes product to be installed with the
+Installation Wizard. The XML file should include a \<product\> section
+for each product to be installed. The products appear in the tree view
+and are installed in the order they are described in the configuration
+file. It is recommended (but not obligatory) to define native products
+at the top of the list before all other products.
+<br><br>
+Attributes:
+<ul>
+<li><b>name</b>
+\n\n Product name.<br><br>
+</li>
+<li><b>version</b>
+\n\n Product version.<br><br>
+</li>
+<li><b>description</b>
+\n\n Product description (optional).<br><br>
+</li>
+<li><b>context</b>
+\n\n Context (optional). The possible values are '<b>salome
+sources</b>', '<b>salome binaries</b>' and '<b>prerequisite</b>'
+(several contexts can be given separated by ":" symbol).<br><br>
+</li>
+<li><b>supported</b>
+\n\n Supported modes of installation. Several modes can be separated
+by comma. Possible value are: <em>install sources, install binaries, use
+native</em>. The Installation script should contain the corresponding
+functions for each of the supported installation modes (see
+\ref installation_scripts "here").<br><br>
+</li>
+<li><b>install</b>
+\n\n Default (starting) installation mode.<br><br>
+</li>
+<li><b>disable</b>
+\n\n If this optional flag has 'true' value, the corresponding product
+will not appear in the list of products and will not be
+installed.<br><br>
+</li>
+<li><b>pickupenv</b>
+\n\n This flag points that pickup environment procedure should be
+performed for this product. If this flag equal to 'true',  salome.sh
+and salome.csh files will  be created in the product installation
+directory. Usually this option is set to true for SALOME KERNEL module
+sources and binaries package. This is an optional key, default value
+is 'false'.<br><br>
+</li>
+<li><b>dependancies</b>
+\n\n List of prerequisite products, which are necessary to build this
+product, separated by comma.<br><br>
+</li>
+<li><b>installdiskspace</b>
+\n\n Total amount of space (integer, in Kbytes), which the product
+occupies on the hard drive after the installation.<br><br>
+</li>
+<li><b>temporarydiskspace</b>
+\n\n Disk space (integer, in Kbytes) for temporary files, which is
+necessary to build the product from the sources.<br><br>
+</li>
+<li><b>script</b>
+\n\n The installation script name. This script is in charge of the
+installation of the product. It is called automatically by the
+Installation Wizard when necessary from the main program. 
+See the \ref installation_scripts "next section" for more information.<br><br>
+</li>
+</ul>
+
+<b>\<button\> section</b>
+\n\n This is an optional section. It allows customization of the last
+"Finish installation" page of the Installation Wizard by adding one or
+more buttons in the lower part of the wizard's window. The script
+which is attached to each such button, can perform some specific
+action, for example, launch the application or show the Release Notes
+file by using an external program. See \ref finish_buttons "here" for
+more details about writing scripts.<br><br>
+Attributes:
+<ul>
+<li><b>label</b>
+\n\n This is the button text.<br><br>
+</li>
+<li><b>tooltip</b>
+\n\n The button tooltip (optional).<br><br>
+</li>
+<li><b>script</b>
+\n\n The script attached to the button.<br><br>
+</li>
+<li><b>disable</b>
+\n\n If this optional flag has 'true' value, the corresponding button
+will not appear in the "<em>Finish installation</em>" page - the section of XML
+file is silently ignored.<br><br>
+</li>
+</ul>
+
+\note If you add new products to be installed with Installation
+Wizard, you should also provide installation script for this
+product. See the next section for more details.
+
+<br>
+<hr>
+\anchor installation_scripts
+<h2>Implementing <em>installation scripts</em> for the new products</h2>
+
+When you want some product to be installed with the Installation
+Wizard, you should add its description \ref modifying_xml "to the configuration file"
+and create the installation script, following the rules described in this section.
+
+There are some obligatory functions which should be implemented in
+this installation script. These functions are automatically called by
+the master installation script or/and its GUI shell when it is
+necessary. \n File \b common.sh contains some service functions which can
+be used in your installation script, like \b make_env(), \b make_dir(),
+\b try_existing(), \b sort_path(), \b find_in_path(), etc.
+
+<ul>
+<li><b>check_version()</b>
+\n\n This function allows to check the version of the product already
+installed on the computer. It should try to find the product (native
+or preinstalled in the target directory) and check its version. This
+helps to avoid unnecessary reinstallation. This is an internal
+function and is not called from the master installation
+script.<br><br>
+</li>
+<li><b>try_native()</b>
+\n\n This function is called when the 'use native' installation mode
+is selected by the user. The function should try to find a native
+version of the product and define possibility of its use. It should
+create the environment file for the product in the temporary directory
+(see also the description of \b print_env() function). It is not
+necessary to implement this function if you do not provide native mode
+installation.<br><br>
+</li>
+<li><b>install_source()</b>
+\n\n This function is called when the 'install sources' installation
+mode is selected by the user. The function is responsible for building
+the product from the sources package. It should create the environment
+file for the product in the temporary directory (see also description
+of \b print_env() function). It is not necessary to implement this
+function if you do not provide sources mode installation.<br><br>
+</li>
+<li><b>install_source_and_build()</b>
+\n\n This function is called when SALOME module is installed and the
+--\b all-from-sources (-\b a) option is used (<em>"Build SALOME sources"</em>
+check box in GUI mode). This function should be used to unpack SALOME
+sources package and then call the build/install procedure for it.
+For more details please refer to the \ref installing_products "this"
+and \ref gui_mode_install "this" sections for more details.<br><br>
+</li>
+<li><b>install_binary()</b>
+\n\n This function is called when the <em>'install binaries'</em> installation
+mode is selected by the user. The function is responsible for the
+extracting of the product from the binaries package. It should create
+environment for the product in the temporary directory (see also
+description of \b print_env() function). It is not necessary to implement
+this function if you do not provide binaries mode
+installation.<br><br>
+</li>
+<li><b>try_preinstalled()</b>
+\n\n This function is called when the 'not install' installation mode
+is selected by the user. In this case the script should inspect the
+target directory to try to find an already preinstalled product, pick
+up and check the environment from there. See \ref pick_up_env "here" for more
+details.<br><br>
+</li>
+<li><b>print_env()</b>
+\n\n This function is in charge of creating the environment script. It
+should create a file with name \b env_<product_name>.sh in the temporary
+directory and then copy it into the product installation
+directory. The file should contain all necessary environment variables
+settings for the product. It will be collected during the
+'pick-up-environment' procedure.<br><br>
+</li>
+<li><b>pickup_env()</b>
+\n\n This procedure corresponds to the \b pickupenv tag of the
+configuration xml file (see previous section). It should call the
+\b make_env procedure to perform the pick-up environment procedure for
+the product.<br><br>
+</li>
+</ul>
+
+The calling signature of the product installation script is the following: 
+<b>\<product_script_name\> \<function_name\> \<temp_folder\>
+\<products_directory\> \<target_directory\> \<dependancies\>
+\<product_name\></b>
+\n\n where \n\n
+<b>\<product_script_name\></b> - installation script name (described in the
+configuration xml file);\n
+<b>\<function_name\></b> - the name of function, corresponding to the selected
+installation mode: \em try_native, \em install_source, \em install_binary or
+\em try_preinstalled;\n
+<b>\<temp_folder\></b> - temporary files directory;\n
+<b>\<products_directory\></b> - directory where the sources/binaries package
+can be found. You should provide the sources package in the
+<em>\<Install_Wizard_root_directory\>/Products/SOURCES</em> directory and
+binaries package in the
+<em>\<InstallWizard_root_directory\>/Products/BINARIES/\<os_version\></em>, where
+\<os_version\> is the target platform description, which appears in the
+corresponding section of the \ref modifying_xml "configuration xml file";
+<em>\<target_directory\></em> - root target directory where the product should be installed to; 
+<em>\<dependancies\></em> - single-quoted list of prerequisite products, separated by space; 
+<em>\<product_name\></em> - product name itself.
+
+\b Example:
+\n <em>med-2.2.3.sh install_binary /tmp/work
+./Products/BINARIES/Mandrake10.1 /usr/salome 'gcc Hdf' med</em>
+
+Copy the created script into the
+<em>\<Install_Wizard_root_directory\>/config_files</em> sub-directory where all
+installation scripts are stored. Installation Wizard will
+automatically search and call your script during the installation
+procedure.
+
+<br>
+<hr>
+\anchor finish_buttons
+<h2>Customizing <em>Readme page</em> buttons</h2>
+
+The Installation Wizard allows customizing the look-n-feel of the last
+<em>"Finish installation"</em> page. If you want to add one or more buttons to
+this page in order to perform some specific actions at the end of the
+installation (for example, to show the Release Notes file by using
+Open Office) you can put an additional section to the XML
+configuration file. This is the \b \<button\> section (see 
+\ref modifying_xml "here" for more details).
+
+To implement the action which will be performed when the user clicks
+the button, you need to create a script and put it to the
+<em>\<Install_Wizard_root_directory\>/config_files</em> directory.
+\n There are some obligatory functions which should be implemented in
+this script. These functions are automatically called by the
+Installation Wizard GUI.
+
+<ul>
+<li><b>check_enabled()</b>
+\n\n This procedure is called by the Installation Wizard when the
+<em>"Finish installation"</em> page is displayed and the status of the buttons
+should be modified according to the installation options. This
+procedure should return \b 0 if the corresponding action can be performed
+and, thus, the button should become enabled. Otherwise, it should
+return \b 1 - in this case the corresponding button will be
+disabled.<br><br>
+</li>
+<li><b>execute()</b>
+\n\n This procedure is invoked when the user clicks the button. This
+procedure should return \b 0 if the corresponding action is done
+successfully and \b 1 if any error occurs.<br><br>
+</li>
+</ul>
+
+The calling signature of the script is the following:
+\n <b>\<product_script_name\> \<function_name\> \<target_directory\>
+\<temp_folder\></b>
+\n\n where \n\n
+\b \<product_script_name\> - the script name itself (retrieved from the XML configuration xml file); 
+\n \b \<function_name\> - the name of function; 
+\n \b \<target_directory\> - root target directory where the product is installed to; 
+\n \b \<temp_folder\> - temporary files directory;
+
+\note The standard Installation Wizard buttons "Launch SALOME" and
+"Release Notes" are implemented with this feature. Refer to scripts
+\b start_salome.sh and \b release_notes.sh for sample implementation.
+
+\note Any button (even standard) can be ignored by the Installation
+Wizard if the attribute \b \<disable\> in the XML configuration file is set
+to the "true" value.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/intro_to_salome.doc b/doc/salome/gui/GUI/input/intro_to_salome.doc
new file mode 100644 (file)
index 0000000..daeca31
--- /dev/null
@@ -0,0 +1,29 @@
+/*!
+
+\page intro_to_salome_page Introduction to SALOME
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+\b SALOME platform represents a generic open source platform for pre-
+and post-processing in numeric simulations. \b SALOME combines several
+software components, which are built in such a way that it allows to
+integrate solvers and existing meshing algorithms along with the
+specification of physical properties for a given domain. The
+originality of this approach is that the various components must
+cooperate dynamically and be 
+configurable.
+
+\image html image54.jpg
+
+<br>SALOME platform integrates a number of modules each having its own function:
+<ul>
+<li>\b KERNEL :  provides a common shell for all components, which can be integrated into the SALOME platform.
+<li>\b GUI : provides visual representation: basic widgets, viewers
+etc. Third party modules optionally can have GUI, but in any case they always connected with KERNEL.
+<li>\b Geometry :  facilitates construction and optimization of geometrical models using a wide range of  CAD functions. 
+<li>\b Mesh :  generates meshes on geometrical models previously created or imported by the Geometry component.
+<li>\b Supervisor :  provides tools for construction of graphs and execution of calculations. 
+<li>\b Post-Pro :  performs data visualization.
+<li>\b MED :  allows to work with MED files.
+</ul>
+
+*/
diff --git a/doc/salome/gui/GUI/input/introduction.doc b/doc/salome/gui/GUI/input/introduction.doc
new file mode 100644 (file)
index 0000000..6d9b76b
--- /dev/null
@@ -0,0 +1,70 @@
+/*!
+
+\image html icon_about.png
+
+\page introduction_page Introduction
+
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Welcome to SALOME Platform! Modern technological products (cars,
+structures, electrical or electronic equipment) are getting more and
+more complex every year and must meet increasingly severe requirements
+in terms of quality and performance. For example, for structures and
+their environment the demands to reduce risks and optimize costs are
+extremely high. It requires particularly refined simulations
+concerning structural behavior and robustness to ensure high
+reliability.
+\n The numeric modeling of a physical problem, the development of
+solutions and their integration into the design process are often
+handled in very specific environments. SALOME represents a generic
+CAD-based application for digital simulation with "high reactivity to
+market evolutions and customer expectations".
+
+SALOME is a free software that provides a generic platform for Pre and
+Post-Processing for numerical simulation. It is based on an open and
+flexible architecture made of reusable components available as free
+software.
+
+SALOME is a CAD/CAE integration platform. It provides reusable
+components for: 
+<ul>
+<li>3D modeling (bottom-up construction, import, healing);
+<li>Visualization;
+<li>Computational schemas management;
+<li>Post-processing.
+</ul>
+
+SALOME is tailored for integration of custom components:
+<ul>
+<li>CAD interfaces;
+<li>Mesh generators;
+<li>Finite Element solvers with specific pre-processors.
+</ul>
+
+The SALOME platform is available in Open Source.
+
+<b>Salome Platform:</b>
+<ul>
+<li>Supports interoperability between CAD modeling and computation software (CAD-CAE link) 
+<li>Makes easier the integration of new components on heterogeneous systems for numerical computation 
+<li>Sets the priority to multi-physics coupling between computation software 
+<li>Provides a generic user interface, user-friendly and efficient, which helps to reduce the costs and delays of carrying out the studies 
+<li>Reduces training time to the specific time for learning the software solution which has been based on this platform 
+<li>All functionalities are accessible through the programmatic
+integrated Python console
+</ul>
+
+\image html image65.gif
+
+<b>What can you do in SALOME? (Some of SALOME main functions)</b>
+<ul>
+<li>Define geometrical models (create/modify geometrical items), import and export them using the BREP, IGES and STEP formats; 
+<li>Define meshing of these geometrical items, import and export them;
+<li>Handle physical properties and quantities attached to geometrical items, import and export them to a reusable format;
+<li>Perform computations using a solver (optionally provided): read input data, configure the solver, and write calculation results);
+<li>Visualize result fields in 3D, 2D and export images of their visualization to an appropriate format;
+<li>Manage study schemes: definition, save/restore;
+<li>Manage computation schemes: definition, execution.
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/introduction_to_gui.doc b/doc/salome/gui/GUI/input/introduction_to_gui.doc
new file mode 100644 (file)
index 0000000..0b1d51f
--- /dev/null
@@ -0,0 +1,45 @@
+/*!
+
+\page introduction_to_gui_page Introduction to GUI
+
+\b GUI (Graphical User Interface) provides a common shell for all components, which can be integrated into the SALOME platform.
+
+\b GUI component in SALOME platform provides:
+<ul>
+<li>Common desktop environment (\ref salome_desktop_page "SALOME desktop") for all
+components</li>
+<li>Component integration and management: uploading, switching,
+component menus/toolbars handling</li> 
+<li>Study management (creation, saving, loading, editing studies)</li>
+<li>Multi-window management in the framework of one study</li>
+<li>Management of objects created or imported into the SALOME
+application (\ref using_object_browser_page "Object Browser")</li>
+<li>Integrated Python interpreter</li> 
+<li>Output messages window</li>
+<li>Additional tools : \ref using_catalog_generator_page "Catalogue Generator", 
+\ref using_registry_tool_page "Registry tool"</li>
+<li>Standard viewers for data visualization:</li>
+<ul>
+<li>VTK 3d viewer
+<li>OCC 3d viewer
+<li>Gauss Points viewer
+<li>Plot 2d viewer
+<li>Supervision viewer
+</ul>
+</ul>
+
+
+Since version 3.0.0 SALOME GUI is based on SUIT (Salome User Interface
+Toolkit) that proposes very flexible, powerful and safe mechanisms of
+interaction with SALOME tool components (both CORBA and standalone),
+resources management, viewers and selection handling,
+exception/signals processing, bringing to top multi-desktop
+dockable-windowed user interface which improves the usability of
+SALOME GUI.
+\n All Graphical User Interfaces of standard modules have plug-in
+structure, i.e. each module is placed in a dynamic library which is
+loaded on demand. All modules can create their own menu items, buttons
+in toolbar, windows etc
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/mesh_preferences.doc b/doc/salome/gui/GUI/input/mesh_preferences.doc
new file mode 100644 (file)
index 0000000..047afc6
--- /dev/null
@@ -0,0 +1,119 @@
+/*!
+
+\page mesh_preferences_page Mesh preferences
+
+In the Mesh module you can set mesh preferences, which can be used in
+later sessions with this module.
+
+<h2>General Preferences</h2>
+
+\image html pref21.png
+
+<ul>
+<li><b>Update</b></li>
+<ul>
+<li>If you toggle <b>Automatic Update</b> checkbox, the model in your
+viewer automatically updated whenever you make changes in it.</li>
+</ul>
+<li><b>Quality Controls</b></li>
+<ul>
+<li>If you toggle <b>Display entity</b>, both faces and edges of an
+object will be displayed in the viewer by default.</li>
+<li>If you toggle <b>Use precision</b> checkbox, you can display numbers in
+<b>Quality Control</b> diagrams at the necessary level of precision.</li>
+</ul>
+<li><b>Precision</b> - can be defined by the <b>Number of digits after point</b> in
+the corresponding field. By default, numbers in <b>Quality Control</b>
+diagrams are presented as integers.</li>
+<li><b>Display mode</b> - allows to set Wireframe, Shading, Nodes or Shrink
+presentation mode as default.</li>
+<li><b>Mesh export</b></li>
+<ul>
+<li>If you toggle <b>Automatically create groups for MED export</b> checkbox,
+this operation will be carried out automatically.</li>
+<li>If you toggle <b>Automatic renumbering</b> checkbox, the exported
+mesh will be renumbered automatically</li>
+</ul>
+</ul>
+
+<h2>Mesh Preferences</h2>
+
+\image html pref22.png
+
+<ul>
+<li><b>Nodes</b></li>
+<ul>
+<li><b>Color</b> -  allows to select the color of nodes. Click on the
+colored line to access to the \ref select_color_and_font_page "Select Color" 
+dialog box.</li>
+<li><b>Size</b> - allows to define the size of nodes.</li>
+</ul>
+<li><b>Elements</b></li>
+<ul>
+<li><b>Fill</b>  - allows to select the color of surface of elements
+(seen in Shading mode). Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Outline</b> - allows to select the color of borders of
+elements. Click on the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Back Face</b> - allows to select the color of interior surface
+of elements. Click on the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of lines (edges and borders of elements).</li>
+<li><b>Shrink coef.</b> - allows to define relative space of elements
+compared to gaps between them in shrink mode.</li>
+</ul>
+</ul>
+
+<br><h2>Selection Preferences</h2>
+
+\image html pref23.png
+
+<ul>
+<li><b>Selection</b> - performed with mouse-indexing (preselection)
+and left-clicking on an object, whose appearance changes as defined in
+the <b>Preferences</b>.</li>
+<ul>
+<li><b>Object Color</b> -  allows to select the color of mesh (edges and
+borders of meshes) of the selected entity. Click on the colored line
+to access to the \ref select_color_and_font_page "Select Color" dialog
+box.</li>
+<li><b>Element color</b> - allows to select the color of surface of selected
+elements (seen in Shading mode). Click on the colored line to access
+to the \ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of selected edges. </li>
+</ul>
+<li><b>Preselection</b> - performed with mouse-indexing on an object,
+whose appearance changes as defined in the <b>Preferences</b>.</li>
+<ul>
+<li><b>Highlight Color</b> -  allows to select the color of mesh (edges and
+borders of meshes) of the entity . Click on the colored line to access
+to the \ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of preselected edges.</li>
+</ul>
+<li><b>Precision</b> - in this menu you can set the value of precision
+used for <b>Nodes</b>, <b>Elements</b> and <b>Objects</b>.</li>
+</ul>
+
+<br><h2>Scalar Bar Preferences</h2>
+
+\image html pref24.png
+
+<ul>
+<li><b>Font</b> - in this menu you can set type, face and color for
+the font of <b>Title</b> and <b>Labels</b>.</li>
+<li><b>Colors & Labels</b> - in this menu you can set the <b>number of
+colors</b> and the <b>number of labels</b> in use.<li>
+<li><b>Orientation</b> - here you can choose between vertical and
+horizontal orientation of the <b>Scalar Bar</b></li>.
+<li><b>Origin & Size Vertical & Horizontal</b> - allows to define
+placement (<b>X</b> and <b>Y</b>) and lookout (<b>Width</b> and
+<b>Height</b>) of Scalar Bars</li>
+<ul>
+<li><b>X</b>: abscissa of the point of origin (from the left
+side)</li>
+<li><b>Y</b>: ordinate of the origin of the bar (from the bottom)</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/occ_3d_viewer.doc b/doc/salome/gui/GUI/input/occ_3d_viewer.doc
new file mode 100644 (file)
index 0000000..6638fac
--- /dev/null
@@ -0,0 +1,125 @@
+/*!
+
+\page occ_3d_viewer_page OCC 3D Viewer
+
+<b>OCC (Open CasCade) 3D viewer</b> has been developed on the basis of Open
+CASCADE Technology. This is the default viewer for Geometry Module,
+providing good representation of construction and transformation of
+geometrical objects. Only this viewer allows to work with groups and
+sub-shapes. This viewer can also work in Mesh module, however, it
+doesn't allow to visualize meshes.
+
+The functionalities of OCC viewer are available via its Viewer
+Toolbar. Buttons marked with small downward triangles have extended
+functionality which can be accessed by locking on them with left mouse
+button.
+
+\image html image95.gif "Viewer Toolbar"
+
+<hr>
+\image html image77.gif
+\n <center><b>Dump View</b> - exports an object from the viewer in bmp, png, jpg
+or jpeg image format.</center>
+<hr>
+
+\image html image88.gif
+\n <center><b>Show/Hide Trihedron</b> - shows or hides coordinate axes.</center>
+<hr>
+
+\image html image96.gif
+\n <center><b>Fit all</b> - allows to select a point to be the center of a
+scene representing all displayed objects in the visible area.</center>
+<hr>
+
+\image html image97.gif
+\n <center><b>Fit area</b> - resizes the view to place in the visible area
+only the contents of a frame drawn with pressed left mouse button.</center>
+<hr>
+
+\image html image98.gif
+\n <center><b>Zoom</b> - allows to zoom in and out.</center>
+<hr>
+
+\image html image99.gif
+\n <center><b>Panning</b> - if the represented objects are greater that the
+visible area and you don't wish to use <b>Fit all</b> functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+<hr>
+
+\image html image100.gif
+\n <center><b>Global panning</b> - represents all displayed objects in
+the visible area.</center>
+<hr>
+
+\image html view_rotation_point.png
+\n <center><b>Change rotation point</b> - allows to to choose the point around
+which the rotation is performed.</center>
+
+\image html set_rotation_point_dialog1.png
+
+<center>By default the rotation point is located in the Center of the bounding
+box of an object.</center>
+
+\image html set_rotation_point_dialog2.png
+
+<center>Unchecking <b>Use Bounding Box Center</b> checkbox allows you to
+define the coordinates of the rotation point manually.</center>
+
+<b>Set to Origin</b> button restores the default rotation point
+coordinates.\n
+<b>Select Point from View</b> button allows to select the rotation
+point in the 3D Viewer.
+<hr>
+
+\image html image89.gif
+\n <center><b>Rotation</b> - allows to rotate the selected object using the
+mouse.</center>
+
+\image html image102.gif
+
+<center>These buttons orientate the scene strictly about coordinate axes.</center>
+<hr>
+
+\image html image91.gif
+\n <center><b>Reset</b> - restores the default position (isometric) of
+objects in the scene.</center>
+<hr>
+
+\image html image103.gif
+\n <center><b>Memorise view</b> - saves the current position of
+objects in the scene.</center>
+<hr>
+
+\image html image105.gif
+\n <center><b>Restore view</b> - restores the saved position of
+objects in the scene.</center>
+<hr>
+
+\image html image86.gif
+\n <center><b>Clone view</b> - opens a new duplicate scene.</center>
+<hr>
+
+\image html image106.gif
+\n <center><b>Clipping</b> - allows to create cross-section views
+(clipping planes) of geometrical objects.</center>
+
+\image html clipping.png
+
+<ul>
+<li><b>Base point</b> - allows to define the coordinates of the base
+point for the clipping plane.</li>
+<ul>
+<li><b>Reset</b> - returns the base point to coordinate origin.</li>
+</ul>
+<li><b>Direction</b> - allows to define the orientation of the
+clipping plane.</li>
+<ul>
+<li><b>Invert</b> - allows to select which part of the object will be removed
+and which will remain after clipping.</li>
+</ul>
+<li><b>Preview</b> - allows to see the results of clipping in the
+viewer.</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/opening_studies.doc b/doc/salome/gui/GUI/input/opening_studies.doc
new file mode 100644 (file)
index 0000000..0c44f27
--- /dev/null
@@ -0,0 +1,31 @@
+/*!
+
+\page opening_studies_page Opening studies
+
+In \b SALOME all studies are stored in a special format *.hdf.
+
+<em>To open an existing study:</em>
+\par
+In the main toolbar click "Open document" button or from the main menu select <b>File > Open</b>
+option. From a standard Search File dialog box choose the required
+*.hdf file and click \b Open button.
+
+\image html open.jpg "&quot;Open document&quot; button"
+
+<em>To load an unloaded study (\ref saving_and_closing_studies_page
+"see also"):</em>
+\par
+From the main menu select <b>File > Connect</b> option. In the following
+dialog box select one of the studies, which has been previously
+created and unloaded and click \b Ok button:
+
+\image html loadstudy2.png
+
+\n\b Tip:  After opening an existing study, you will see its structure
+in the \ref using_object_browser_page "Object Browser". It will contain the objects created with the
+help of different components during the previous study session. If you
+right-click on one of the objects and from the associated pop-up menu
+choose <b>Open With</b> option, which will automatically launch the component
+corresponding to this object.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/plot2d_viewer.doc b/doc/salome/gui/GUI/input/plot2d_viewer.doc
new file mode 100644 (file)
index 0000000..e6208d6
--- /dev/null
@@ -0,0 +1,94 @@
+/*!
+
+\page plot2d_viewer_page Plot 2D viewer
+
+\n <b>Plot 2d viewer</b> is destined to the representation of  2d
+plots and graphs in Post-Pro module.
+\n Its viewer toolbar gives you fast access to the following
+operations:
+
+\image html image77.gif
+<center><b>Dump View</b> - exports an object from the viewer in bmp,
+png, jpg or jpeg image format.</center>
+
+\image html image96.gif
+<center><b>Fit all</b> - scales the display to show the entire
+scene. Use this to resize the scene so that it could fit within the
+Viewer boundary.</center>
+
+\image html image97.gif
+<center><b>Fit area</b> - resizes the view to place in the visible
+area only the contents of a frame drawn with pressed left mouse
+button.</center>
+
+\image html image98.gif
+<center><b>Zoom</b> - allows to zoom in and out.</center>
+
+\image html image99.gif
+<center>\b Panning - if the represented objects are greater that the
+visible area and you don't wish to use Fit all functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+
+\image html image100.gif
+<center><b>Global panning</b> - allows to define the center of the
+scene presenting all displayed objects in the visible area.</center>
+
+\image html plot2d_points.gif
+<center><b>Draw Points</b> - represents points on the graph.</center>
+
+\image html plot2d_lines.gif
+<center><b>Draw Lines</b> - represents lines on the graph.</center>
+
+\image html plot2d_splines.gif
+<center><b>Draw Splines</b> - represents splines on the graph.</center>
+
+\image html plot2d_logarithmic_horizontal.gif
+<center><b>Horizontal axis logarithmic</b> - changes the scaling on
+horizontal axis to logarithmic.</center>
+
+\image html plot2d_logarithmic_vertical.gif
+<center><b>Vertical axis logarithmic</b> - changes the scaling on vertical
+axis to logarithmic.</center>
+
+\image html plot2d_legend.gif
+<center><b>Show Legend</b> - reveals all verbal and numerical
+information on the graphs.</center>
+
+\image html plot2d_settings.gif
+<center>\b Settings - calls a menu, in which you can specify advanced
+settings for your Plot 2d Viewer.</center>
+
+\image html plot2d_clone.gif
+<center><b>Clone view</b> - opens a new duplicate scene.</center>
+
+\anchor settings
+\n \image html plot2d_view_settings.png
+
+The options are as follows:
+<ul>
+<li><b>Main title:</b> the title of the XY plot. By default, it will
+consist of the names of the tables, on the basis of which the curve
+lines have been constructed.</li>
+<li><b>Curve type:</b> you can select from \b Points, \b Lines and \b Spline.</li>
+<li><b>Show legend:</b> here you can define the position of the
+description table on the XY plot (to the \b Left, to the \b Right, on
+\b Top or on \b Bottom).</li>
+<li><b>Marker size</b> - size of the points (markers) forming curve lines.</li>
+<li><b>Background color</b> of the XY plot.</li>
+<li><b>Scale mode:</b> here you can select the type of scaling (\b
+Linear or \b Logarithmic) along <b>X (Horizontal)</b> or <b>Y (Vertical)</b> axes.</li>
+</ul>
+
+You can define settings for each axis separately:
+<ul>
+<li>\b Horizontal or \b Vertical axis title.</li>
+<li><b>Grid/Axes marks:</b>  here you can define the maximum number of major
+and minor scale divisions for a specified axis. The real number of
+intervals fits to {1,2,5}*10^N, where N is a natural number, and
+doesn't exceed the maximum.</li>
+<li><b>Save settings as default:</b> If this check box is marked, all
+XY plots will be displayed with these defined properties.</li>
+</ul>
+
+*/
diff --git a/doc/salome/gui/GUI/input/postpro_preferences.doc b/doc/salome/gui/GUI/input/postpro_preferences.doc
new file mode 100644 (file)
index 0000000..37a094a
--- /dev/null
@@ -0,0 +1,375 @@
+/*!
+
+\page postpro_preferences_page Post-Pro Preferences
+
+In the Post-Pro module you can set preferences, default settings,
+which can be used in later sessions with this module.
+
+<h2>MED import Preferences</h2>
+
+\image html ppref1.png
+
+<ul>
+<li><b>MED files import</b></li>
+<ul>
+<li><b>Use Build Progress</b> - when this option is checked you can choose
+all other import MED options at the moment of loading of each file
+using <b>Build Progress</b> menu, otherwise the loading will be done
+according to the <b>Preferences</b> without addressing to the
+user.</li>
+<li><b>Full MED Loading</b> - when this option is checked, the MED file is
+fully loaded in the study, and no additional access to the MED file is
+needed during the session. Reversibly, when unchecked, the MED file is
+loaded on demand. This is the default behaviour in SALOME and
+recommended for big files to optimize memory usage.</li>
+<li><b>Build at once</b> - when this option is checked, you can't
+perform any operations until the MED file is fully loaded and
+processed.</li>
+<li><b>Build fields</b> - when this option is checked, the fields are
+built automatically at loading.</li>
+<li><b>Build min/max</b> - when this option is checked, minimum and
+maximum values of the time stamps are found at loading.</li>
+<li><b>Build groups</b> - when this option is checked, the groups and
+families are built automatically at loading.</li>
+<li><b>Close dialog at finish</b> - when this option is checked, the
+dialog box is closed after loading of the selected MED file. When
+unchecked, it allows loading other MED files.</li>
+</ul>
+</ul>
+
+<br><h2>Scalar Bar Preferences</h2>
+
+\image html pref31.png
+
+<ul>
+<li><b>Scalar Range</b></li>
+<ul>
+<li><b>Scalar Mode</b> - this feature allows refining the value to be
+inspected:</li>
+<ul>
+<li><b>Modulus:</b> value of a scalar or modulus of a vector.</li>
+<li><b>Component N:</b> Nth component of a vector, a tensor or a matrix.</li>
+</ul>
+<li><b>Logarithmic Scaling</b> - this checkbox toggles logarithmic
+scaling.</li>
+<li><b>Ranges to Use</b> - you can use either Field Range or Imposed Range.</li>
+</ul>
+<li><b>Min and Max for Imposed Range</b> - in this menu  you can set
+the limits for your Imposed Range, if you have chosen to use it.</li>
+<li><b>Font</b> - in this menu you can set type, face and color for
+the font of <b>Title</b> and <b>Labels</b>.</li>
+<li><b>Colors & Labels</b> - in this menu you can set the <b>number of
+colors</b> and the <b>number of labels</b> in the Scalar bar.</li>
+<li><b>Orientation</b> - here you can choose between vertical and horizontal
+orientation of the Scalar Bar.</li>
+<li><b>Origin & Size Vertical & Horizontal</b> - allows to define
+placement (<b>X</b> and <b>Y</b>) and lookout (<b>Width</b> and
+<b>Height</b>) of Scalar Bars.</li>
+<ul>
+<li><b>X:</b> abscissa of the point of origin (from the left
+side)</li>
+<li><b>Y:</b> ordinate of the origin of the bar (from the bottom)</li>
+</ul>
+<li><b>Scalar bars default position</b></li>
+<ul>
+<li><b>Arrange Scalar Bars</b> - this option prevents superposition of
+scalar bars during visualisation of several fields in the same
+window. If checked, a separate scalar bar is displayed for each
+presentation.</li>
+</ul>
+</ul>
+
+<br><h2>Cut Lines Preferences</h2>
+
+\image html ppref2.png
+
+<ul>
+<li><b>CutLine Preferences</b></li>
+<ul>
+<li><b>Show preview</b> check box allows to edit the parameters of the
+presentation and simultaneously observe the preview of this
+presentation in the viewer.</li>
+<li><b>Invert all curves</b> check box allows to invert the resulting
+curves.</li>
+<li><b>Use absolute length</b> check box allows to use absolute length
+for curves.</li>
+<li><b>Generate Data Table:</b> If this check box is marked, <b>Post
+Pro</b> will automatically generate a data table on the basis of your
+Cut Lines presentation. This table will be created in the structure of
+the study.</li>
+<li><b>Generate Curves:</b> If this check box is marked, <b>Post Pro</b>  will
+automatically generate curve lines on the basis of values taken from
+the generated data table. These curves will be created in the
+structure of the study and can be visualized in a XY plot.</li>
+</ul>
+</ul>
+
+<br><h2>Sweep Preferences</h2>
+
+\image html ppref3.png
+
+<ul>
+<li><b>Sweeping preferences</b></li>
+<ul>
+<li><b>Mode of the Sweeping</b> - allows to choose between Linear,
+Cosinusoidal and sinusoidal sweeping.</li>
+<li><b>Time step</b> - in this menu you can set the time of
+representation of one step.</li>
+<li><b>Number of cycles</b> - in this menu you can define the number
+of times this animation will be repeated.</li>
+<li><b>Number of steps</b> - in this menu you can define the number of
+steps, which will compose the whole animation.</li>
+<li><b>Parameter varies</b> - allows to choose the range for the
+parameter: from 0 to Pi or from Pi to -Pi.</li>  
+</ul>
+</ul>
+
+<ul>
+<li><b>Animation preferences</b></li>
+<ul>
+<li><b>Speed</b> - allows to define the speed of the animation.</li>
+<li><b>Cycled animation</b> - allows to start a cycled animation of the presentation.</li>
+<li><b>Use proportional timing</b> - allows to render the animation with proportional periods of time between every frame (not depending on the time stamps).</li>
+<li><b>Clean memory at each frame</b> - this option allows to optimize the performance of the operation.</li>
+</ul>
+</ul>
+
+<br><h2>Representation Preferences</h2>
+
+\image html pref33.png
+
+<ul>
+<li><b>Representation properties</b> - these checkboxes allow to
+choose the default representation type for each field presentation.</li>
+<ul>
+<li><b>Use Shading</b> - when this option is checked, the objects will
+be displayed with shading.</li>
+<li><b>Display only on creation</b> - when this option is checked, all
+previously created presentations will be automatically removed from
+the viewer when a new presentation is created and displayed. You can
+restore the previously created presentations using the Object
+Browser.</li>
+</ul>
+</ul>
+
+<br><h2>3D Cache</h2>
+
+\image.html pref40.png
+
+<ul>
+<li><b>3D Cache Preferences</b> - allow to define the mode of usage
+and the size of the 3D Cache, which enables to save in RAM and quickly
+restore the states of field animation.</li>
+<ul>
+<li><b>Memory Mode</b> - allows to define the mode of usage
+of the 3D Cache: <b>Minimal</b> actually disables the Cache,
+<b>Limited</b> Cache size depends on the current system
+configuration.</li>
+<li><b>Memory Limit</b> - allows to define the maximum size of the 3D
+Cache</li> 
+</ul>
+</ul>
+  
+
+<br><h2>Gauss Points Preferences</h2>
+
+\image html pref34.png
+
+<ul>
+<li><b>Primitive</b> - this menu allows user to choose the graphic
+primitive to use to present the results at Gauss points in the
+viewer.</li>
+<ul>
+<li><b>Primitive type</b> - provides choice between <b>Point
+sprites</b>, <b>Open GL points</b> and <b>Geometrical Spheres</b>.</li>
+<li><b>Maximum Size (Clamp)</b> - defines the maximum size of sprite
+points ranging from 1 to 512. By default the value is set to 256
+pixels.</li>
+<li><b>Main Texture</b> -  path to the <b>Main Texture</b> (16x16
+pixels) which defines the shape of the point sprite used for
+rendering.</li>
+<li><b>Alpha Channel Texture (16*16)</b> - path to the <b>Alpha
+Channel Texture</b> which defines the texture of the point
+sprite.</li>
+<li><b>Alpha Channel Threshold</b> - defines the level of transparency
+ranging from 0 to 1.</li>
+<li><b>Geometrical Sphere Resolution</b> - defines the number of faces
+of <b>Geometry Spheres</b>.</li>
+<li><b>Notify when number of faces exceeds</b> - limitation of the
+number of faces; the user will be warned if it exceeds the given
+value.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Size</b> - in this menu you can define:</li>
+<ul>
+<li><b>Range value for min and max size</b> - these two parameters
+will be respectively multiplied by a reference length (average size of
+cells of the mesh) to define the range for minimum and maximum size of
+a point during rendering (at magnification = 100%). Default values
+are:</li>
+<ul>
+<li><b>Rainbow</b> scale: <b>min</b> = <b>10%</b>, <b>max</b> =
+<b>33%</b></li>
+<ul>
+<li>Min size is associated to the smallest real value (including
+negative values).</li>
+<li>Max size is associated to the largest real value.</li>
+</ul>
+<li><b>Bicolor</b> scale: <b>min</b> = <b>0</b> (not editable),
+<b>max</b> = <b>33%</b></li>
+<ul>
+<li>Null size is associated to the 0 scalar value.</li>
+<li>Max size is associated to the largest absolute value.</li>
+</ul>
+</ul>
+Both values are dynamically updated by the system according to the
+selected scalar bar. In the case of a Bicolor scale, the minimum value
+is set to 0 in the dialog and the control is disabled.
+<li><b>Magnification (%)</b> corresponds to the change of size of
+results at Gauss point primitives in 2D space. Acceptable values range
+from 0 to N; 100% means no magnification, 50% means half of its size,
+200% mean twice its size and so forth. By default this value is set to
+100%.</li>
+<li><b>+/- Ratio</b> corresponds to the number by which the
+magnification will be respectively multiplied or divided at edition,
+ranging from 0.01 to 10. By default this value is set to 2.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Geometry</b></li>
+<ul>
+<li><b>Size of points (%)</b> defines a value that will be multiplied
+by a reference length (representative of the average size of cells of
+the mesh) to define the size of points during rendering (at
+magnification = 100%). Default values 10%.</li>
+<li><b>Color</b> -  allows to select the color of points used for
+presentations. Click on the colored line to access to the \ref
+select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Gauss Points Scalar Bar</b></li>
+<ul>
+<li><b>Active Bar</b> - this option allows to choose <b>Local</b> or
+<b>Global</b> Bar as active.</li>
+<li><b>Display Global Bar</b> - this option allows to visualize or to
+hide the Global Bar.</li>
+<li><b>Scalar Bar Mode</b> - this option allows to choose between
+<b>Bicolor</b> and <b>Rainbow</b> Scalar Bar Mode.</li>
+<li><b>Spacing</b> - allows to define Spacing from 0.01 to 1.</li>
+</ul>
+</ul>
+
+<br><br><b>Inside<b> and </b>Outside Cursor Preferences</b> allow to set
+<b>Primitives</b>, <b>Size</b> and <b>Magnification</b> for the
+respective zones.
+
+<br><h2>Picking Preferences</h2>
+
+\image html pref37.png
+
+<ul>
+<li><b>Cursor</b> - allows to adjust the Size of the cursor used for
+Picking (ranging from 0.1 to 1), the Height of the pyramids (ranging
+from 0 to 10) and the Selection cursor color.</li>
+<li><b>Tolerance</b> - defines at which distance of the cursor from
+the point it becomes selected (ranges from 0.001 to 10).</li>
+<li><b>Information window</b> - allows to define the
+<b>Transparency</b> (from 0% = opaque to 100% = transparent) and
+<b>Position</b> of the window, which can be:</li>
+<ul>
+<li><b>Centred below the point</b>, or</li>
+<li>located at <b>Top-left corner of the 3D view</b></li>
+</ul>
+<li><b>Movement of the Camera</b> can also be define by the user.</li>
+<ul>
+<li><b>Zoom at first selected point</b> - This value is used to define
+the focal distance at the first selected point (at the end of the
+movement of the camera). This value is a ratio that will be multiplied
+by the current zoom value.</li>
+<li><b>Number of steps between two positions</b> - defines the
+smoothness of camera movement at selection by the number of
+iterations. If set to 1 the camera is zoomed and centered at the point
+momentarily. Greater numbers mean very slow camera movement.</li>
+</ul>
+<li><b>Display parent mesh element</b> - allows to visualize or hide
+the patent mesh element of the selected gauss point.</li>
+</ul>
+
+<br><h2>Navigation Preferences</h2>
+
+\image html pref38.png
+
+<br>
+<ul>
+<li><b>Mouse</b></li>
+<ul>
+<li><b>Mouse Behaviour</b> - this option allows to choose one of the
+modes of work with mouse in Gauss Viewer.</li>
+<ul>
+<li><b>Salome Standard Controls</b> - allows to manipulate objects in the
+viewer with the mouse and locked Ctrl button: increase or decrease the
+zoom ratio with the left mouse button, translate object in any
+direction with the central mouse button or rotate it with the right
+mouse button.</li>
+<li><b>Keyboard Free</b> - allows to manipulate objects in the viewer
+with the mouse without locking Ctrl button. In this case the
+operations are assigned to the buttons differently: rotation is made
+with the left button, translation with the right and zoom with both
+pressed in the same time.</li>
+</ul>
+</ul>
+</ul>
+
+<ul>
+<li><b>Keyboard</b></li>
+<ul>
+<li><b>[+]/[-] Speed Increment</b> - defines the number of units by
+which the speed increases or respectively decreases after pressing [+]
+or [-] keyboard buttons.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Spacemouse</b> - a mouse-like manipulator device specially designed
+for working with 3D presentations, objects, etc. You can reassign the
+actions listed below to any of its buttons.</li>
+<ul>
+<li><b>Decrease Speed Increment</b> - decreases by 1 the speed increment used for the keyboard (same as [-] key).</li>
+<li><b>Increase Speed Increment</b> - increase by 1 the speed increment used for the keyboard (same as [+] key).</li>
+<li><b>Decrease Gauss Points Magnification</b> - divides the current magnification by the magnification ratio.</li>
+<li><b>Increase Gauss Points Magnification</b> - multiplies the current magnification by the magnification ratio.</li>
+<li><b>Dominant / combined switch</b> - toggles button to switch to dominant or combined movements.</li>
+</ul>
+</ul>
+
+<br><h2>Recorder Preferences</h2>
+
+\image html pref38.png
+
+<ul>
+<li><b>Settings</b></li>
+<ul>
+<li><b>Mode</b> - allows to choose from two recording regimes:</li>
+<ul>
+<li><b>Recording all displayed frames</b> - records exactly at the FPS rate specified by the user.</li>
+<li><b>Recording at a given FPS</b> - records only when the contents
+of the viewer change (some activity is performed).  In the AVI file
+non-recorded images are substituted with the copies of the latest
+recorded image, which produces files with lower quality but requires
+less system resources.   </li>
+</ul>
+<li><b>FPS</b> - allows to define the FPS (frames per second) rate for
+the clip. Set greater value for better quality.</li>
+<li><b>Quality</b> - allows to set the quality of the clip in the
+interval between 0 and 100.</li>
+<li><b>Progressive</b> - allows to record a progressive API
+file.</li>
+</ul>
+</ul>
+
+*/
diff --git a/doc/salome/gui/GUI/input/running_salome.doc b/doc/salome/gui/GUI/input/running_salome.doc
new file mode 100644 (file)
index 0000000..630c5d2
--- /dev/null
@@ -0,0 +1,110 @@
+/*!
+
+\page running_salome_page Running SALOME
+
+<em>To launch SALOME:</em>
+<ol>
+<li>Install the SALOME package into a definite directory (ex. \b SALOME)
+on your hard disk. It is preferable if you use the special
+installation procedure allowing to install the  SALOME platform and
+all corresponding applications.</li>
+<li>The installation shell script will create a special file:
+<b>salome.csh</b> (CShell file) in your SALOME/KERNEL directory. This file
+contains all environment variables necessary for launching SALOME
+platform with other application products provided with SALOME
+installation package. You have a possibility to add one of them into
+your profile if you enter in the command console the following: <br><br>
+<tt>source salome.csh</tt>
+
+<b>Tip:</b> During the installation procedure you have a possibility to set your profile automatically.</li>
+
+<li> Launch SALOME platform, using the following Python script located
+in the <b>SALOME/KERNEL/bin/salome</b> directory:<br><br> 
+<ul>
+<li>\b runSalome.py [command line options]
+</ul>
+</li>
+</ol>
+
+\anchor batch_mode_run
+
+<table>
+<tr>
+<td><h2>Options</h2></td>
+<td><h2>Description</h2></td>
+</tr>
+<tr>
+<td>--\b help or -\b h</td>
+<td>print this help</td>
+</tr>
+<tr>
+<td>--\b gui or -\b g</td>
+<td>launch with GUI</td>
+</tr>
+<tr>
+<td> --\b terminal or -\b t</td>
+<td>launch without GUI in batch mode</td>
+</tr>
+<tr>
+<td>--\b logger or -\b l</td>
+<td>redirects log messages in the file <em>logger.log</em></td>
+</tr>
+<tr>
+<td>--\b file=<b>\<FILE\></b> or -\b f=<b>\<FILE\></b></td>
+<td>redirects  log messages in a custom file</td>
+</tr>
+<tr>
+<td>--\b xterm or -\b x</td>
+<td>the servers open an xterm window and log messages are displayed in this window</td>
+</tr>
+<tr>
+<td>--\b modules=\b module1,\b module2,... or -\b m=\b module1,\b module2,...</td>
+<td>list of SALOME modules which will be loaded into the module catalogue</td>
+</tr>
+<tr>
+<td>--\b embedded=<b>registry,study,moduleCatalog,cppContainer</b>,
+or -\b e=<b>registry,study,moduleCatalog,cppContainer</b></td>
+<td>embedded CORBA servers (default: registry,study,moduleCatalog,cppContainer)
+note that logger,pyContainer,supervContainer can't be embedded</td>
+</tr>
+<tr>
+<td>--\b standalone=<b>registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer</b>, or
+-\b s=<b>registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer</b></td>
+<td>standalone CORBA servers (default: pyContainer,supervContainer)</td>
+</tr>
+<tr>
+<td>--\b containers=<b>cpp,python,superv</b>
+or -\b c=<b>cpp,python,superv</b></td>
+<td>launch of cpp, python and supervision containers</td>
+</tr>
+<tr>
+<td>--\b portkill or -\b p</td>
+<td>kill SALOME launched with the current port</td>
+</tr>
+<tr>
+<td>--\b killall or -\b k</td>
+<td>kill SALOME</td>
+</tr>
+<tr>
+<td>--<b>interp</b>=<b>n</b> or -<b>i</b>=<b>n</b></td>
+<td>number of additional xterm to open, with session environment</td>
+</tr>
+<tr>
+<td>-\b z</td>
+<td>display splash screen</td>
+</tr>
+<tr>
+<td>-\b r</td>
+<td>disable centralized exception handling mechanism</td>
+</tr>
+</table>
+
+<b>Tip:</b> If the \b runSalome.py script is launched without prompting
+any options, they will be taken by default from the file <b>SalomeApp.xml
+(SALOME/GUI/share/salome/resources/SalomeApp.xml)</b>. If you are
+constantly launching SALOME with some specific options which are
+different from the defaults, you can edit this file according to your
+requirements. So the next time you run SALOME, you won't have to enter
+these numerous command console options.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/salome_architecture.doc b/doc/salome/gui/GUI/input/salome_architecture.doc
new file mode 100644 (file)
index 0000000..8849a83
--- /dev/null
@@ -0,0 +1,95 @@
+/*!
+
+\page salome_architecture_page SALOME architecture
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+\b SALOME architecture is based on \b CORBA technology using
+distributed system model of applications. This architecture takes the
+concept of multitier client/server to its natural conclusion. The
+distributed system model exposes all functionality of the application
+as objects, each of which can use any of the services provided by
+other objects in the system, or even objects in other systems. The
+architecture can also blur the distinction between "client" and
+"server" because the client components can also create objects that
+behave in server-like roles. This architecture provides the ultimate
+in flexibility.
+
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+The distributed system architecture achieves its flexibility by
+encouraging (or enforcing) the definition of specific component
+interfaces. The interface of a component specifies to other components
+what services are offered by that component and how they are used. As
+long as the interface of a component remains constant, that
+component's implementation can change dramatically without affecting
+other components.
+
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+All software components (Post-Pro, Geometry, Mesh...) integrated into
+\b SALOME platform  implement predefined interfaces. Each component
+provides data for the \b SALOME study in a form of links (stored in
+the Study) to the specific data created and stored in the
+component. All components represent \b CORBA servers and it allows to
+run them on different host stations.
+
+\image html image67.gif
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+It is equally possible to create engine-independent modules. These
+modules may not use CORBA at all, and can have internal data structure
+which can be written in pure C++ (or python). Such modules are located
+inside SALOME GUI process and from the point of view of the end user
+have no difference with standard components. Such modules not using
+the standard tools of SALOME platform are defined on a special
+separated level named CAM. CAM component is the basis for new SALOME
+GUI and contains all basic functionality for working with modules
+(loading; saving, closing, customization of toolbar and menu).
+
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Another fundamental piece of the \b SALOME architecture is the use of
+the Interface Definition Language (IDL). IDL, which specifies
+interfaces between CORBA components, is instrumental in ensuring
+CORBA's language independence. Because interfaces described in IDL can
+be mapped to any programming language, CORBA applications and
+components are thus independent of the language(s) used to implement
+them.
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Additional information about CORBA technology
+is available at http://www.omg.org
+
+\note In \b SALOME there is a possibility to run
+definite components in the so-called \ref batch_mode_run "batch mode" without GUI provided
+by GUI component. In this case you can work with these components with
+the help of Python commands and scripts.
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+The architecture of this all-inclusive
+platform for numerical components  responds to the following
+objectives:
+<ol>
+<li>\b Flexibility :  the creation and modification of computation
+schemes must be easy. The developer must have easy access to all
+modeling parameters to create domain-specific tools adapted to new
+situations or to test new numerical algorithms. SALOME allows
+integration and implementation of numerical and physical components
+derived from existing code.</li>
+<li>\b Productivity :  the implementation of code is simple for the
+user and the reuse of components (within other environments for
+macro-components) is noticeably facilitated.</li>
+<li> \b Performance :\b  SALOME is able to more finely simulate
+phenomena that is more complex in scale and in physical coupling
+requirements. \b SALOME economically exploits the performance of used
+machines (massively parallel processors, PC clusters, etc).</li>
+<li> \b Expandability:  on the one hand, software technologies and
+physical architectures evolve rapidly compared to the development
+time, validation and use of a scientific application while on the
+other hand, the development of a database model adapted to the
+totality of exchanges between components can be achieved
+incrementally. \b SALOME  is able to easily follow these
+developments.</li>
+</ol>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/salome_desktop.doc b/doc/salome/gui/GUI/input/salome_desktop.doc
new file mode 100644 (file)
index 0000000..101d77f
--- /dev/null
@@ -0,0 +1,74 @@
+/*!
+
+\page salome_desktop_page SALOME desktop
+
+The main SALOME Desktop consists of the following sections and
+toolbars:
+
+\image html geomview-alt.png
+
+<b>Basic parts of the SALOME Desktop:</b>
+<ul>
+<li><b>Main menu</b> - This is a set of context-sensitive menus, which will
+be updated according the functionality of the loaded component. In
+general,  these menus contain all functional options of SALOME
+platform.</li>
+<li><b>Standard Toolbar</b> - This toolbar contains icons allowing
+creating/saving studies, correcting mistakes, copying/pasting
+objects.</li>
+<li><b>Components Toolbar</b> - This toolbar is destined for uploading
+components in SALOME platform.</li>
+<li><b>Module Toolbar</b> - This toolbar contains icons specific to the
+loaded module.</li>
+<li><b>Viewer Toolbar</b> - This is a set of tools destined for visualization
+of the presentations in the viewer.</li>
+</ul>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;All toolbars in the
+\b SALOME Platform are context-sensitive. Loading of a definite component
+(Geometry, Post-Pro, Mesh etc.) will automatically add some additional
+toolbars specific to this component. To display/hide a definite
+toolbar, in the main menu choose <b>View > Toolbars</b>, and from this
+submenu check or uncheck the toolbar, you would like to display/hide.
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By default all
+toolbars are located on the top of the SALOME desktop. But you can
+relocate toolbars by dragging with the mouse and dropping it in any
+place of the window.
+
+<b>Parts of  the study window:</b>
+<ul>
+<li><b>Object Browser</b> - Management of objects created or imported into
+SALOME application.</li>
+<li>\b Viewer - This window is destined for visualization of
+presentations.</li>
+<li><b>Python console</b> - Window for Python interpreter. This window
+functions like a standard document: the pop-up menu invoked by
+right-click in this window gives access to
+<b>Copy/Paste/SelectAll/ClearAll</b> options.</li>
+</ul>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object Browser, Python
+Console, MenuBar, etc are, in fact, separate dockable windows.
+Dockable windows can be placed in special areas, on the borders of
+desktop like toolbars. You can change the size and the position of
+dockable windows, hide them or even place outside desktop. SALOME
+saves in the same file all positions and sizes of dockable windows. It
+means that the difference in settings of the same windows (for example
+Python console) is possible between different modules (the same window
+can have different size and position when other module is
+activated). Also each module can indicate which common windows are
+necessary for working, and only they will be displayed when this
+module is active.
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Starting from the
+version 3.0.0 Salome uses a <b>Multi-Desktop Approach</b>. Multi-desktop
+Approach means that now there is separate Desktop for each document
+(Study)  and all windows connected to a Study (viewers, dockable
+windows etc) are placed in one container. It is very comfortable,
+because you can't mix up windows from different studies. This approach
+positively differs from the classic multi document interface in case
+if many windows are used, i.e. when one document contains a lot of
+viewers, dialogs, etc. Each desktop also has its own menu and toolbar.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/salome_preferences.doc b/doc/salome/gui/GUI/input/salome_preferences.doc
new file mode 100644 (file)
index 0000000..6a85158
--- /dev/null
@@ -0,0 +1,140 @@
+/*!
+
+\page salome_preferences_page SALOME preferences
+
+To begin setting preferences for your study, select \b Preferences in the
+main menu, the following dialog box will appear:
+
+\image html pref11.png
+If you've just started your study and haven't yet loaded other
+modules, you'll be able to change only those settings, which refer to
+the whole GUI SALOME session. These settings will be valid for the
+whole study session.
+
+<h2>General Preferences</h2>
+
+<ul>
+<li><b>Study Properties</b></li>
+<ul>
+<li><b>MultiFile Save</b> - if checked in, your study will be saved in
+several HDF files (one file for the data created by each component
+used during the study session).</li>
+<li><b>ASCII Save</b> - if checked in, your study will be saved in
+ASCII format file (or files).</li>
+<li><b>Store positions of windows</b> -  if checked in, positions of windows
+will be saved in a special file at the end of the current session and
+then restored for a new session.</li>
+<li><b>Store/restore last GUI state</b> - if checked in, all GUI settings are
+saved with the rest of the data whenever you save the study. When the
+study is reopened, the GUI state is restored.</li>
+</ul>
+<li><b>External browser</b></li>
+<ul>
+<li>\b Application - this option allows you to set an external browser (IE,
+Netscape) which will be used for viewing SALOME reference manuals. By
+default, Mozilla is used. Press the &quot;<b>...</b>&quot; button(see
+the picture below) to browse for the application you need in the data
+tree of your computer.</li>
+<li>\b Parameters</li>
+</ul>
+<li><b>Python console properties</b> - here you can quickly set the
+parameters (style, size, face) of the font used in your Python
+console.</li>
+</ul>
+\par
+For detailed settings in \ref select_color_and_font_page "Select Font"
+dialog box press the &quot;<b>...</b>&quot; button(see the picture below).
+
+\image html image69.gif "&quot;...&quot; button"
+
+<br><h2>Viewers Preferences</h2>
+
+\image html pref12.png
+
+<ul>
+<li><b>OCC and VTK 3D Viewers</b></li>
+<ul>
+<li><b>Trihedron size</b> - this submenu allows to set the size of
+coordinate axes displayed in the viewer.</li>
+<li><b>Background Color</b> - this submenu allows to select background
+color. Click on the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Number of isolines along U</b> (or <b>V</b>) - this submenu allows to specify
+the number of isolines along the axes of coordinates.</li>
+<li><b>Relative size</b> - if checked in, trihedron axes scale to fit the
+size of the area displayed in 3D Viewer.</li>
+</ul>
+<br>
+<li><b>Plot2d Viewer</b></li>
+<ul>
+<li><b>Legend Position</b> - this submenu allows to set the default position
+of the legend, it can be located to the left, to the right, on top or
+on bottom of the graph.</li>
+<li><b>Curve Type</b> - this allows to set the representation of graphs in
+your presentations. You can see only <b>Points</b>, points connected with
+<b>Lines</b> or points connected with smooth <b>Splines</b>.</li>
+<li><b>Marker Size</b> - this submenu allows you to set the size of
+markers in your graphs</li>
+<li><b>Horizontal & Vertical Axis Scale</b> - this submenu allows you to set
+the scale for vertical and horizontal axes. It can be either <b>Linear</b> or
+<b>Logarithmic</b></li>
+<li>Background Color - this submenu allows to select the background
+color. Click on the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+<br>
+<li><b>Graph Supervisor</b></li>
+<ul>
+<li><b>Background Color</b> - this submenu allows to select background
+color. Click on the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Title Color</b> - this submenu allows to select title color. Click on
+the colored line to access to the 
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+</ul>
+
+<br><h2>Directories Preferences</h2>
+
+\image html pref13.png
+
+<ul>
+<li>
+<b>Quick Directory List</b> - this section allows to create and manage
+a custom quick directory list. To add a directory in the list, press
+the "Add directory" button:
+\image html image70.gif
+
+then the &quot;<b>...</b>&quot; button and browse the data tree for the
+directory you need.
+The "Up" and "Down" buttons(see the picture below) help you to sort
+the directories in the list:
+\image html image73.gif
+
+\image html image75.gif
+To remove the selected directory from the list, press the "Delete"
+button:
+\image html image72.gif
+</li>
+</ul>
+
+<br><h2>Object Browser Preferences</h2>
+
+\image html pref14.png
+
+<ul>
+<li><b>Object browser settings</b></li>
+<ul>
+<li><b>Auto size for the first column</b> - this checkbox enables automatic
+resizing for the first column.</li>
+<li><b>Auto size for other columns</b> - this checkbox enables
+automatic resizing for the other columns.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Default columns</b> - these checkboxes allow to display or hide <b>Value</b>,
+<b>Entry</b>, <b>IOR</b> and <b>Reference entry</b> columns in the Object Browser.</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/saving_and_closing_studies.doc b/doc/salome/gui/GUI/input/saving_and_closing_studies.doc
new file mode 100644 (file)
index 0000000..c996b09
--- /dev/null
@@ -0,0 +1,81 @@
+/*!
+
+\page saving_and_closing_studies_page Saving and closing studies
+
+In \b SALOME a study can be saved in \b HDF binary (by default) or \b ASCII
+files (see also: \ref salome_preferences_page "Setting ASCII save option").
+
+You can also specify  two options of saving your study:
+<ul>
+<li><b>In one HDF file:</b> in this case all components used during this
+study session will write their data into one common HDF file.
+</li>
+<li>
+<b>In multiple files</b> (see also: \ref salome_preferences_page
+"Setting Multifile save option") : in this
+case SALOME will create one base HDF file which will store the main
+information about the saved study and several other special files with
+particular extensions storing the data written by each component which
+has been used during this study session. Opening of this study
+requires that \b ALL saved files should be stored in the \b SAME directory.
+If you would like to copy your saved study in another directory or
+machine, you should copy all stored files. Otherwise, if you try to
+open this study, some data will be lost and it will lead to invalid
+functioning of the SALOME platform.
+</li>
+</ul>
+
+Saving a study you also save its layout, i.e. all positions and sizes
+of dockable windows. It means that the difference in settings of the
+same windows (for example Python console) is possible between
+different modules (the same window can have different size and
+position when other module is activated). Also each module can
+indicate which common windows are necessary for working, and only they
+will be displayed when this module is active.
+
+<em>To save an existing study:</em>
+\par
+In the main toolbar click "Save document" button or from the main menu
+select <b>File > Save</b> option. Your study will be automatically
+updated.
+
+\image html save.jpg "&quot;Save document&quot; button"
+
+\note If your study hasn't been previously saved, this option will
+call the standard Search File dialog box where you can enter the name
+for your study and save it.
+
+<em>To save a study with a new name:</em>
+\par
+From the main menu select <b>File > Save as</b> option. In the standard
+Search File dialog box enter a new name for your study and click \b Save
+button.
+
+<em>To save the current layout of the GUI:</em>
+\par
+From the main menu select <b>File > Save VISU State</b>. The current
+state of the graphic interface is published in Object Browser in the
+folder GUI states and can be at any time \b Restored, \b Renamed or \b
+Deleted. This operation saves and allows to
+restore almost all GUI settings: names, position, zooming and panning
+of viewers  and all displayed objects (in Post-Pro module only).
+
+<em>To close a study:</em>
+\par
+In the main toolbar click "Close document" button or  from the main menu select <b>File > Close</b>
+option or click on the cross in the upper right corner of the study
+window.
+
+\image html image94.gif "&quot;Close document&quot; button"
+
+\note If your study hasn't been previously saved, this option will
+call the following dialog box with several options:
+
+\image html closestudy.png
+
+\n\b Unload option allows to unload your current study from the SALOME
+Desktop. In the same working session you can  reload it again (see:
+\ref opening_studies_page "Opening studies"). But if you quit the SALOME application, all changes
+in the unloaded study will be lost.
+
+*/
diff --git a/doc/salome/gui/GUI/input/select_color_and_font.doc b/doc/salome/gui/GUI/input/select_color_and_font.doc
new file mode 100644 (file)
index 0000000..96b570a
--- /dev/null
@@ -0,0 +1,30 @@
+/*!
+
+\page select_color_and_font_page Select Color and Font
+
+<b>Select Color</b> and <b>Select Font</b> menus are used in many
+Preferences.
+
+<br><h2>Select color</h2>
+
+\image html selectcolor.png
+
+This menu  allows to choose from either predefined <b>Basic Colors</b>
+grouped in the upper left corner of the window or <b>Custom Colors</b>, which
+you can define yourselves. To define a Custom Color, click on one of
+the Custom Color cells, select the color you need in the field of
+colors or by typing in its numeric parameters in the lower right
+corner of the window, then click <b>Add to Custom Colors</b> button. The
+chosen color will be added to <b>Custom Colors</b> table.
+
+<br><h2>Select font</h2>
+
+\image html selectfont.png
+
+This menu provides a wide choice of \b Fonts, <b>Font Styles</b> and
+\b Sizes. Characters can be underlined or struck out. It is possible to
+preview them in the \b Sample window. \b Script dialog-box gives the
+possibility to use not only Latin and Latin Extended but also
+Cyrillic, Greek, Arabic, Runic and many other subsets.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/setting_preferences.doc b/doc/salome/gui/GUI/input/setting_preferences.doc
new file mode 100644 (file)
index 0000000..49802ee
--- /dev/null
@@ -0,0 +1,29 @@
+/*!
+
+\page setting_preferences_subpage Setting Preferences
+
+In \b SALOME you can set preferences for each module in the common editor
+of preferences. SALOME preferences refer to the whole GUI SALOME
+session, other preferences are module-specific and are accessible only
+after you load a respective module.
+\n When you change settings (click \b OK or \b Apply button) each module
+receives the notification about what preferences are changed. You can
+also click \b Defaults button to restore default preferences or \b Close
+button to quit the menu without any changes. 
+\n \b Import button allows to load a user file containing preferences
+from your home directory through a standard Import dialog box.
+
+\image html import.png
+
+This file has no extension and by default starts with
+.SalomeApprc. followed by Salome version number. There exists one file
+for each Salome version in use.
+\n The preferences, set during the current study session, are
+automatically saved in this file at the end of the session. Next time
+you launch SALOME application, these preferences will be restored.
+
+\note The preferences you set will be default preferences for all \b new
+objects, but they are not retroactive and do not automatically apply
+to the existing objects.
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/setting_preferences_chapter.doc b/doc/salome/gui/GUI/input/setting_preferences_chapter.doc
new file mode 100644 (file)
index 0000000..b04a761
--- /dev/null
@@ -0,0 +1,14 @@
+/*!
+
+\page setting_preferences_page Setting Preferences
+
+<ul>
+<li>\subpage setting_preferences_subpage</li>
+<li>\subpage select_color_and_font_page</li>
+<li>\subpage salome_preferences_page</li>
+<li>\subpage geometry_preferences_page</li>
+<li>\subpage mesh_preferences_page</li>
+<li>\subpage postpro_preferences_page</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/setting_study_properties.doc b/doc/salome/gui/GUI/input/setting_study_properties.doc
new file mode 100644 (file)
index 0000000..2101f43
--- /dev/null
@@ -0,0 +1,36 @@
+/*!
+
+\page setting_study_properties_page Setting study properties
+
+<em>To view the properties of the current study:</em>
+\par
+From the main menu select \b File > \b Properties option. The following
+dialog box will appear:
+
+\image html studyproperties.png
+
+This dialog box gives complete information about your study.
+
+<em>To change the name of the study author:</em>
+\par
+In this dialog box click on the \b Author field and enter a new name.
+
+<em>To view the list of changes made with your study:</em>
+\par
+In this dialog box click on the \b Modifications field and scroll it
+down. Each record contains the following information: date and time of
+modification of the study, name of the user, who has made these
+changes.
+
+<em>To lock your study for modifications:</em>
+\par
+In the dialog box shown on the picture above click on the \b Locked
+field and choose \b Yes item.
+
+In this case your study will be locked for any kind of modifications
+for all users. Next time you try to edit it, you will see the
+following warning message:
+
+\image html lockedstudy.png
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/study_management_chapter.doc b/doc/salome/gui/GUI/input/study_management_chapter.doc
new file mode 100644 (file)
index 0000000..54ffda2
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+
+\page study_management_page Study management
+
+<ul>
+<li>\subpage creating_new_study_page</li>
+<li>\subpage opening_studies_page</li>
+<li>\subpage saving_and_closing_studies_page</li>
+<li>\subpage editing_studies_page</li>
+<li>\subpage displaying_studies_page</li>
+<li>\subpage working_with_python_scripts_page</li>
+<li>\subpage setting_study_properties_page</li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/using_catalog_generator.doc b/doc/salome/gui/GUI/input/using_catalog_generator.doc
new file mode 100644 (file)
index 0000000..af50de5
--- /dev/null
@@ -0,0 +1,65 @@
+/*!
+
+\page using_catalog_generator_page Using Catalog Generator (for advanced users)
+
+SALOME platform is an open platform for
+integration of your custom components, which can used in the same way
+as typical modules provided in the standard installed package. The
+<b>Catalog Generator</b> tool serves for implementation of the interface of
+your custom component. It allows to generate from IDL description of
+your component interface its xml description.  The component xml
+description allows SALOME application to know about the component and
+its services and provides the possibility to call the component
+services, for example, inside Supervisor module.
+
+If you have a look at runSalome,
+runSalomeWithPort scripts running SALOME application, which are stored
+in build/bin directory you will see that SALOME_ModuleCatalog_Server
+is started with two xml files as its input parameters:
+\b CatalogModuleGeneral.xml and \b CatalogModulePersonnel.xml. These two
+files store the descriptions of interfaces and services of all
+components, provided with typical SALOME package. To add a new
+component into SALOME platform you should either update one of these
+existing xml files with generated xml description of your component or
+create a new one.
+
+<em>To open the Catalog Generator:</em>
+\par
+From the main menu choose <b>Tools > Catalog Generator</b>, the following
+dialog box will appear:
+
+\image html cataloggenerator.png
+
+<br>In this dialog box you can specify:
+<ul>
+<li>Name and location of the IDL file describing the interface of your
+component (Click the \b Browse button to find it using the data tree).</li>
+<li>Name and location of an existing XML file, which will be updated
+with the interface of you component or name and desired location of a
+new XML file, which will be generated (Click the \b Browse button to find
+it using the data tree).</li>
+<li>Name of the author.</li>
+<li>Name of the component.</li>
+<li>Name of the user.</li>
+<li>Version.</li>
+<li>Capability of multi study support.</li>
+<li>Type of the component.</li>
+<li>Icon of your component (Click the \b Browse button to find it using
+the data tree).</li>
+</ul>
+
+\note If you have chosen to create a new xml file containing the
+description of your component, don't forget to specify it as
+input parameter for SALOME_ModuleCatalog_Server in the file, you are
+using as a running script of SALOME platform (in runSalomeWithPort,
+for example).
+
+When launching SALOME next time you will see your module alongside other components.
+
+\b Tip: You can use the <b>Catalog Generator</b> tool, if you would like to \b
+test the functionality of your new component. After implementation of
+your component interface, launch SUPERVISION module where you can try
+using the services of your new component. (see also: Adding factory
+nodes)
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/using_object_browser.doc b/doc/salome/gui/GUI/input/using_object_browser.doc
new file mode 100644 (file)
index 0000000..5aea269
--- /dev/null
@@ -0,0 +1,46 @@
+/*!
+
+\page using_object_browser_page Using Object Browser
+
+The <b>Object Browser</b> in SALOME is destined for displaying the
+structure of the current study in a tree-like form. It contains:
+
+<ul>
+<li>components, loaded during the current session</li>
+<li>objects created with the help of different components (The objects
+created with the help of a definite component are located in the
+folder having the name of this component)
+</li>
+<li>references to different objects (they are highlighted in red)</li>
+</ul>
+
+\image html objectbrowser1.png
+
+\note The <b>Object Browser</b> is destined to getting quick access to
+different objects created during SALOME session. All pop-up menus
+associated with the objects displayed in the Object Browser are
+context-sensitive. So it depends on a definite currently loaded SALOME
+component what options you will see in the pop-up menu, if you
+right-click on a definite object in the Object Browser.
+
+The Object Browser may contain supplementary attributes of the objects
+displayed in additional columns. By default, these columns are not
+displayed -  displaying/hiding these columns is possible through
+\ref salome_preferences_page "setting study preferences" or
+right-clicking on the attributes bar and toggling the necessary
+attributes.
+
+\image html objectbrowser2.png
+
+<ul>
+<li>\b Entry  - Identification index of the object in the structure of
+the study</li>
+<li>\b IOR -  Interoperable Object Reference</li>
+<li><b>Reference entry</b>  -  Identification index of the references
+to the objects</li>
+<li>\b Value  -  Displays the value of the first object attribute</li>
+</ul>
+
+\note <b>Entry, IOR and Reference entry</b> attributes are displayed for debugging purposes only.
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/using_registry_tool.doc b/doc/salome/gui/GUI/input/using_registry_tool.doc
new file mode 100644 (file)
index 0000000..a652a78
--- /dev/null
@@ -0,0 +1,49 @@
+/*!
+
+\page using_registry_tool_page Using Registry tool
+
+\b Registry tool is in the SALOME platform is destined for providing
+information about the processes (components), which have ever been
+launched in the current study session.
+
+<em>To view the Registry:</em>
+\par
+From the main menu choose <b>Tools > Registry display</b>, the
+following dialog box will appear:
+
+\image html registry1.png
+
+\b Running tab of this dialog box displays a list of the currently
+started processes (components) with supplementary information on each
+of them divided into columns:
+
+<ul>
+<li>\b Component: name of the started component
+<li>\b PID: process identification number
+<li>\b User \b Name: name of the user launching the component
+<li>\b Machine: name of the machine, on which the process has been started
+<li>\b begins: date and time of the starting of the component
+<li>\b hello: date and time of the last call to the component
+</ul>
+
+\b History tab displays a list of all processes, which have ever been
+launched within this study session. It contains the same supplementary
+information on each of the processes (components).
+
+\b Refresh button allows to refresh the current list of processes
+(components).
+
+\b Interval button allows to set an interval for refreshment of the
+current list of processes (components).
+
+\image html registry3.png
+
+<em>To display complete information on a definite process
+(component):</em>
+\par
+Double-click on this process (component). The following window will
+appear:
+
+\image html registry4.png
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/viewers_chapter.doc b/doc/salome/gui/GUI/input/viewers_chapter.doc
new file mode 100644 (file)
index 0000000..44271fc
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+
+\page viewers_page Viewers
+
+<ul>
+<li>\subpage occ_3d_viewer_page</li>
+<li>\subpage vtk_3d_viewer_page</li>
+<li>\subpage plot2d_viewer_page</li>
+</ul>
+
+*/
diff --git a/doc/salome/gui/GUI/input/vtk_3d_viewer.doc b/doc/salome/gui/GUI/input/vtk_3d_viewer.doc
new file mode 100644 (file)
index 0000000..fe7f91f
--- /dev/null
@@ -0,0 +1,144 @@
+/*!
+
+\page vtk_3d_viewer_page VTK 3D Viewer
+
+<b>VTK 3D viewer</b> is the default viewer for Mesh Module, allowing to
+visualize meshes. It is also used in Post-Pro module for all 3D
+presentations except for Gauss Points.
+
+The functionalities of VTK viewer are available via its Viewer
+Toolbar. Buttons marked with small downward triangles have extended
+functionality which can be accessed by locking on them with left mouse
+button.  
+
+\image html image157.gif "Viewer Toolbar"
+
+<hr>
+\image html image77.gif
+\n <center><b>Dump View</b> - exports an object from the viewer in bmp, png, jpg
+or jpeg image format.</center>
+<hr>
+
+\image html image88.gif
+\n <center><b>Show/Hide Trihedron</b> - shows or hides coordinate axes.</center>
+<hr>
+
+\image html image96.gif
+\n <center><b>Fit all</b> - scales the presentation so that it could
+fit within the Viewer boundaries. </center>
+<hr>
+
+\image html image97.gif
+\n <center><b>Fit area</b> - resizes the view to place in the visible area
+only the contents of a frame drawn with pressed left mouse button.</center>
+<hr>
+
+\image html image98.gif
+\n <center><b>Zoom</b> - allows to zoom in and out.</center>
+<hr>
+
+\image html image99.gif
+\n <center><b>Panning</b> - if the represented objects are greater that the
+visible area and you don't wish to use <b>Fit all</b> functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+<hr>
+
+\image html image100.gif
+\n <center><b>Global panning</b> - allows to select a point to be the
+center of the presentation showing all displayeed objects in the
+visible ares <center>
+<hr>
+
+\image html view_rotation_point.png
+\n <center><b>Change rotation point</b> - allows to to choose the point around
+which the rotation is performed.</center>
+
+\image html set_rotation_point_dialog1.png
+
+<center>By default the rotation point is located in the Center of the bounding
+box of an object.</center>
+
+\image html set_rotation_point_dialog2.png
+
+<center>Unchecking <b>Use Bounding Box Center</b> checkbox allows you to
+define the coordinates of the rotation point manually.</center>
+
+<b>Set to Origin</b> button restores the default rotation point
+coordinates.\n
+<b>Select Point from View</b> button allows to select the rotation
+point in the 3D Viewer.
+<hr>
+
+\image html image89.gif
+\n <center><b>Rotation</b> - allows to rotate the selected object using the
+mouse.</center>
+
+\image html image102.gif
+
+<center>These buttons orientate the scene strictly about coordinate axes.</center>
+<hr>
+
+\image html image91.gif
+\n <center><b>Reset</b> - restores the default position (isometric) of
+objects in the scene.</center>
+<hr>
+
+\image html urbutton.png
+\n <center><b>Update Rate</b> - allows to define the Update Rate for
+the presentations displayed in the viewer</center>
+
+\image html updaterate.png
+
+<ul>
+<li><b>Desired Update Rate, FPS</b> - allows to set the target Update
+Rate</li>
+<li><b>Still Update Rate, FPS</b> - allows to set the Update Rate for
+the periods when both the user and the application do not perform any
+actions in the viewer</li>
+<li><b>Current Update Rate, FPS</b> - shows the Update Rate currently
+available on your configuration</li>
+<li><b>Number of Cells</b> - shows the number of cells currently in
+display</li> 
+</ul>
+
+\image html image108.gif
+\n <center><b>Scaling</b> - represents objects deformed (stretched or
+stuffed) along the axes of coordinates.</center>
+<hr>
+
+\image html image109.gif
+\n <center><b>Graduated axes</b> - allows to define parameters of axes
+and graduate them.</center>
+
+\image html graduatedaxes1.png
+
+<ul>
+<li><b>Axis name</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the axis name is displayed in the
+viewer.</li>
+<li><b>Name</b> - allows to redefine the name of the axis.</li>
+<li><b>Font</b> - allows to define color and properties of the font of
+axis name.</li>
+</ul>
+<li><b>Labels</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the labels are displayed in the
+viewer.</li>
+<li><b>Number</b> - allows to define the number of labels.</li>
+<li><b>Offset</b> - allows to define the distance between labels.</li>
+<li><b>Font</b> - allows to define color and properties of the font of
+labels names.</li>
+</ul>
+<li><b>Tick marks</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the tick marks are displayed in the
+viewer.</li>
+<li><b>Length</b> - allows to define the length of tick marks.</li>
+</ul>
+<li><b>Is visible</b> - if checked the axis is displayed in the
+viewer. </li>
+</ul>
+
+*/
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/input/working_with_python_scripts.doc b/doc/salome/gui/GUI/input/working_with_python_scripts.doc
new file mode 100644 (file)
index 0000000..83bfe3e
--- /dev/null
@@ -0,0 +1,52 @@
+/*!
+
+\page working_with_python_scripts_page Working with Python Scripts
+
+\b SALOME Platform can be launched in the batch mode, without Graphical
+User Interface, and operated with the use of Python scripts, which can
+fulfill most of the necessary tasks, however, the process of scripting
+is quite time consuming and rather error-prone.
+\n This problem has been resolved by the possibility to automatically
+generate a set of Python scripts from data created with SALOME GUI,
+which greatly increases the productivity of using SALOME platform in
+the batch mode. This mechanism can convert a SALOME Study in one or
+several Python scripts, which can be stored and imported later to
+re-create the content of the original study. The first script is a
+SALOME document, which re-creates the SALOME Study, adds the
+stored Salome components to the SALOME and automatically calls
+Python scripts of the second type containing component specific Python
+function calls. This architecture gives great flexibility in manual
+modification of the generated scripts because you can modify only one
+of the component specific Python scripts without touching others, thus
+avoiding expert knowledge of Python API of unused components.
+
+To Dump a  SALOME Study in one or several scripts, in the main menu
+select \b File --> <b>Dump study</b>
+\n The following dialog box allowing to browse for the location and
+define the name for a Python file will appear:
+
+\image html dumpstudy.png
+
+\par
+<ul>
+<li>
+<b>Publish in study</b> - if checked in, the component objects created by
+Python commands will be published in the created Study when the script
+is played, otherwise the objects will not be published in the Study.
+</li>
+<li>
+<b>Save GUI state</b> - if checked in, the current application layout will be
+saved in the Python file.
+</li>
+</ul>
+To confirm your choice click \b Save.
+
+Reversibly it is possible to load a saved Python Script selecting in
+the main menu \b File -> <b>Load Script</b>.
+
+\image html loadscript.png
+
+\par
+To confirm your choice click \b Open.
+
+*/
diff --git a/doc/salome/gui/GUI/introduction_to_gui.htm b/doc/salome/gui/GUI/introduction_to_gui.htm
deleted file mode 100755 (executable)
index 4c0851e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Introduction to GUI</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-family:'Times New Roman' , serif; }\r
-ul.whs2 { list-style:disc; }\r
-p.whs3 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs4 { margin-left:40px; font-family:'Times New Roman' , serif; }\r
-p.whs5 { font-family:'Times New Roman' , serif; margin-left:120px; }\r
-p.whs6 { margin-left:120px; font-family:'Times New Roman' , serif; }\r
-p.whs7 { text-align:justify; }\r
-p.whs8 { margin-left:0px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
-  var strNSS = "<style type='text/css'>";\r
-  strNSS += "p.whs8 {margin-left:1pt; }";\r
-  strNSS +="</style>";\r
-  document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="BSSC Special Effects" src="ehlpdhtm.js"></script><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nIntroduction to GUI");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Introduction to GUI</h1>\r
-\r
-<p class="whs1"><span style="font-family: 'Times New Roman', serif;"><span \r
- style="font-weight: bold;"><B>GUI</B></span> (Graphical User Interface) provides \r
- a common shell for all components, which can be integrated into the SALOME \r
- platform.</span></p>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<p class="whs1"><span style="font-weight: bold;"><B>GUI \r
- </B></span>component in SALOME platform provides:</p>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs2">\r
-       \r
-       <li class=kadov-p><p class="whs3">Common \r
- desktop environment (<a href="kernel/salome_pro_desktop.htm">SALOME desktop</a>) \r
- for all components</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Component \r
- integration and management: uploading, switching, component menus/toolbars \r
- handling </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Study \r
- management (creation, saving, loading, editing studies)</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Multi-window \r
- management in the framework of one study</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Management \r
- of objects created or imported into the SALOME application (<a href="kernel/using_object_browser.htm">Object \r
- Browser</a>) </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Integrated \r
- Python interpreter </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Output \r
- messages window</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs3">Additional \r
- tools : <a href="kernel/using_catalog_generator.htm">Catalogue Generator</a>, \r
- <a href="kernel/using_registry.htm">Registry tool</a></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs4">Standard \r
- viewers for data visualization:</p></li>\r
-</ul>\r
-\r
-<p class="whs5">- \r
- VTK 3d viewer,</p>\r
-\r
-<p class="whs5">- \r
- OCC 3d viewer,</p>\r
-\r
-<p class="whs5">- \r
- Gauss Points viewer</p>\r
-\r
-<p class="whs5">- \r
- Plot 2d viewer,</p>\r
-\r
-<p class="whs6">- \r
- Supervision viewer.</p>\r
-\r
-<p class="whs7">&nbsp;</p>\r
-\r
-<p class="whs8">Since version 3.0.0 SALOME GUI is based on \r
- SUIT (Salome User Interface Toolkit) that proposes very flexible, powerful \r
- and safe mechanisms of interaction with SALOME tool components (both CORBA \r
- and standalone), resources management, viewers and selection handling, \r
- exception/signals processing, bringing to top multi-desktop dockable-windowed \r
- user interface which improves the usability of SALOME GUI.</p>\r
-\r
-<p class="whs8">All Graphical User Interfaces of standard \r
- modules have plug-in structure, i.e. each module is placed in a dynamic \r
- library which is loaded on demand. All modules can create their own menu \r
- items, buttons in toolbar, windows etc</p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-\r
-\r
-<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;}  if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Introduction to SALOME','Introduction_to_SALOME_PRO.htm','SALOME desktop','SALOME_PRO_desktop.htm');return false;" title="Related Topics"><img src="ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
-\r
-\r
\r
-\r
-<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
-if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
-  WritePopupMenuLayer();\r
-//--></script><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/kernel.log b/doc/salome/gui/GUI/kernel.log
deleted file mode 100755 (executable)
index a22dc03..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-|SourceProjectName:KERNEL.hpr\r
-|DestinationProjectName:index.htm\r
-whhost.js\r
-whmsg.js\r
-whmozemu.js\r
-whproxy.js\r
-whstub.js\r
-whutils.js\r
-whver.js\r
-whform.js\r
-whphost.js\r
-whstart.js\r
-whtopic.js\r
-whframes.js\r
-whlang.js\r
-whskin_info.htm\r
-whskin_blank.htm\r
-whskin_pickup.htm\r
-whskin_homepage.htm\r
-whskin_tw.htm\r
-whnjs.htm\r
-whthost.js\r
-whtdhtml.htm\r
-whihost.js\r
-whibody.htm\r
-whiform.htm\r
-whfhost.js\r
-whfbody.htm\r
-whfform.htm\r
-whghost.js\r
-whgbody.htm\r
-whgdhtml.htm\r
-whgdef.htm\r
-whproj.js\r
-whproj.xml\r
-whproj.htm\r
-whxdata\whtoc.xml\r
-whxdata\whidx.xml\r
-whxdata\whfts.xml\r
-whxdata\whglo.xml\r
-whdata\whtoc.js\r
-whdata\whtoc.htm\r
-whdata\whtdata.js\r
-whdata\whidx.js\r
-whdata\whidx.htm\r
-whdata\whidata.js\r
-whdata\whfts.js\r
-whdata\whfts.htm\r
-whdata\whglo.js\r
-whdata\whglo.htm\r
-whdata\whgdata.js\r
-whdata\whftdata.js\r
-whdata\whfwdata.js\r
-whres.xml\r
-webhelp.jar\r
-webhelp.cab\r
-whgdata\whnvp30.htm\r
-whgdata\whnvp31.htm\r
-whgdata\whnvp32.htm\r
-whgdata\whnvp33.htm\r
-whgdata\whnvt30.htm\r
-whgdata\whnvt31.htm\r
-whgdata\whnvt32.htm\r
-whgdata\whnvt33.htm\r
-whgdata\whnvf30.htm\r
-whgdata\whnvf31.htm\r
-whgdata\whnvf32.htm\r
-whgdata\whnvf33.htm\r
-whgdata\whnvl31.htm\r
-whgdata\whnvl32.htm\r
-whgdata\whnvl33.htm\r
-whgdata\whexpbar.gif\r
-cshdat_webhelp.htm\r
-whcsh_home.htm\r
-whcshdata.htm\r
-cshdat_robohelp.htm\r
-whd_topic.xml\r
-whd_nvp10.htm\r
-whd_nvp20.htm\r
-whd_tabs.htm\r
-whd_dpns.htm\r
-whd_tab0.gif\r
-whd_tab1.gif\r
-whd_tab2.gif\r
-whd_tab3.gif\r
-whd_tab4.gif\r
-whd_tab5.gif\r
-whd_tab6.gif\r
-whd_tab7.gif\r
-whd_tab8.gif\r
-whd_toc1.gif\r
-whd_toc2.gif\r
-whd_toc3.gif\r
-whd_toc4.gif\r
-whd_show0.gif\r
-whd_show1.gif\r
-whd_show2.gif\r
-whd_hide0.gif\r
-whd_hide1.gif\r
-whd_hide2.gif\r
-whd_sync0.gif\r
-whd_sync1.gif\r
-whd_sync2.gif\r
-whd_prev0.gif\r
-whd_prev1.gif\r
-whd_prev2.gif\r
-whd_next0.gif\r
-whd_next1.gif\r
-whd_next2.gif\r
-whd_wbsh0.gif\r
-whd_wbsh1.gif\r
-whd_wbsh2.gif\r
-whidhtml.htm\r
-whfdhtml.htm\r
-index_hha.hhk\r
-index.hhc\r
-index.hhk\r
-dump_study.htm\r
-geom_preferences.htm\r
-introduction_to_gui.htm\r
-kernel\about_salome_pro_architecture.htm\r
-kernel\about_salome_pro_help_system.htm\r
-kernel\creating_a_new_study.htm\r
-kernel\displaying_studies.htm\r
-kernel\editing_studies.htm\r
-kernel\getting_properties_of_the_study.htm\r
-kernel\getting_started2.htm\r
-kernel\introduction.htm\r
-kernel\introduction_to_salome_pro.htm\r
-kernel\navigating_topics.htm\r
-kernel\opening_studies.htm\r
-kernel\readme.html\r
-kernel\running_salome_pro.htm\r
-kernel\salome_pro_desktop.htm\r
-kernel\saving_a_study.htm\r
-kernel\setting_preferences.htm\r
-kernel\using_catalog_generator.htm\r
-kernel\using_left-hand_tabs.htm\r
-kernel\using_object_browser.htm\r
-kernel\using_registry.htm\r
-mesh_preferences.htm\r
-post-pro_preferences.htm\r
-select_color_and_font.htm\r
-setting_preferences.htm\r
-ehelp.xml\r
-robohhre.lng\r
-texture_horiz_ltbluebubbles.jpg\r
-index.glo\r
-default.css\r
-pics\registry1.png\r
-pics\open.jpg\r
-pics\icon_about.png\r
-pics\registry3.png\r
-pics\studyproperties.png\r
-pics\readmepage.png\r
-pics\registry4.png\r
-pics\cataloggenerator.png\r
-tip1.gif\r
-pics\pref31.png\r
-pics\save.jpg\r
-pics\pref32.png\r
-pics\pref21.png\r
-image70.gif\r
-pics\newsticn.jpg\r
-pics\pref33.png\r
-pics\pref22.png\r
-pics\pref11.png\r
-image71.gif\r
-pics\pref34.png\r
-pics\pref23.png\r
-pics\pref12.png\r
-image94.gif\r
-closestudy.png\r
-image72.gif\r
-pics\copy-paste.jpg\r
-pics\pref24.png\r
-pics\pref13.png\r
-pics\selectfont.png\r
-pics\view2.png\r
-image54.jpg\r
-image73.gif\r
-pics\selectcolor.png\r
-pics\exemple.gif\r
-pics\pref14.png\r
-pics\dumpstudy.png\r
-pics\neo-view2.png\r
-pics\pref37.png\r
-pics\pref15.png\r
-image75.gif\r
-i_blue.jpg\r
-pics\productpage.png\r
-pics\pref38.png\r
-image65.gif\r
-note1.gif\r
-pics\intropage.png\r
-pics\pref39.png\r
-pics\import.png\r
-pics\objectbrowser1.png\r
-pics\progresspage.png\r
-pics\objectbrowser2.png\r
-image67.gif\r
-pics\loadscript.png\r
-pics\geomview-alt.png\r
-pics\lockedstudy.png\r
-pics\loadstudy2.png\r
-image68.gif\r
-pics\choicepage.png\r
-image69.gif\r
-index.ppf\r
-ehlpdhtm.js\r
-ss_btn_related_topics.gif\r
-default_ns.css\r
-whxdata\whtdata0.xml\r
-whxdata\whftdata0.xml\r
-whxdata\whfwdata0.xml\r
-whxdata\whgdata0.xml\r
-whdata\whtdata0.htm\r
-whdata\whftdata0.htm\r
-whdata\whfwdata0.htm\r
-whdata\whgdata0.htm\r
-whgdata\whlstt0.htm\r
-whgdata\whlstt1.htm\r
-whgdata\whlstt2.htm\r
-whgdata\whlstt3.htm\r
-whgdata\whlstt4.htm\r
-whgdata\whlstt5.htm\r
-whgdata\whlsti0.htm\r
-whgdata\whlstfl0.htm\r
-whgdata\whlstfl1.htm\r
-whgdata\whlstfl2.htm\r
-whgdata\whlstfl3.htm\r
-whgdata\whlstfl4.htm\r
-whgdata\whlstfl5.htm\r
-whgdata\whlstfl6.htm\r
-whgdata\whlstfl7.htm\r
-whgdata\whlstfl8.htm\r
-whgdata\whlstfl9.htm\r
-whgdata\whlstfl10.htm\r
-whgdata\whlstfl11.htm\r
-whgdata\whlstfl12.htm\r
-whgdata\whlstfl13.htm\r
-whgdata\whlstfl14.htm\r
-whgdata\whlstfl15.htm\r
-whgdata\whlstfl16.htm\r
-whgdata\whlstfl17.htm\r
-whgdata\whlstfl18.htm\r
-whgdata\whlstfl19.htm\r
-whgdata\whlstfl20.htm\r
-whgdata\whlstfl21.htm\r
-whgdata\whlstfl22.htm\r
-whgdata\whlstfl23.htm\r
-whgdata\whlstfl24.htm\r
-whgdata\whlstfl25.htm\r
-whgdata\whlstfl26.htm\r
-whgdata\whlstf0.htm\r
-whgdata\whlstf1.htm\r
-whgdata\whlstf2.htm\r
-whgdata\whlstf3.htm\r
-whgdata\whlstf4.htm\r
-whgdata\whlstf5.htm\r
-whgdata\whlstf6.htm\r
-whgdata\whlstf7.htm\r
-whgdata\whlstf8.htm\r
-whgdata\whlstf9.htm\r
-whgdata\whlstf10.htm\r
-whgdata\whlstf11.htm\r
-whgdata\whlstg0.htm\r
-index.htm\r
-index_csh.htm\r
-index_rhc.htm\r
diff --git a/doc/salome/gui/GUI/kernel/application.png b/doc/salome/gui/GUI/kernel/application.png
new file mode 100644 (file)
index 0000000..c9fd6fd
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/application.png differ
diff --git a/doc/salome/gui/GUI/kernel/batchmode.png b/doc/salome/gui/GUI/kernel/batchmode.png
new file mode 100644 (file)
index 0000000..c439d7e
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/batchmode.png differ
diff --git a/doc/salome/gui/GUI/kernel/choicepage.png b/doc/salome/gui/GUI/kernel/choicepage.png
new file mode 100644 (file)
index 0000000..e3afcc5
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/choicepage.png differ
diff --git a/doc/salome/gui/GUI/kernel/introduction.bak b/doc/salome/gui/GUI/kernel/introduction.bak
new file mode 100644 (file)
index 0000000..7fe0eb4
--- /dev/null
@@ -0,0 +1,2088 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<!--(==============================================================)-->\r
+<!--(Document created with RoboEditor. )============================-->\r
+<!--(==============================================================)-->\r
+\r
+<head>\r
+\r
+<title>SALOME Installation Wizard Help</title>\r
+\r
+<!--(Meta)==========================================================-->\r
+\r
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">\r
+<meta name=Author content="Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)">\r
+<meta name=Copyright content="2002-2006 CEA">\r
+<meta name=generator content="RoboHELP by eHelp Corporation - www.ehelp.com">\r
+<meta name=generator-major-version content=0.1>\r
+<meta name=generator-minor-version content=1>\r
+<meta name=filetype content=kadov>\r
+<meta name=filetype-version content=1>\r
+<meta name=page-count content=1>\r
+<meta name=layout-height content=18589>\r
+<meta name=layout-width content=901>\r
+\r
+\r
+\r
+<!--(Style Sheet)===================================================-->\r
+\r
+<style>\r
+<!--\r
+\r
+A:visited {\r
+       color: #551a8b;\r
+}\r
+\r
+A:active {\r
+       color: #ff0000;\r
+}\r
+\r
+A:link {\r
+       color: #0000ee;\r
+}\r
+\r
+-->\r
+</style>\r
+\r
+\r
+<!--(Body)==========================================================-->\r
+\r
+\r
+</head>\r
+\r
+<body style="color: #000000;">\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp; </p>\r
+\r
+<!--(Table)=========================================================-->\r
+<table nosave\r
+               x-use-null-cells\r
+               style="width: 100%;"\r
+               width=100%>\r
+\r
+<tr nosave>\r
+<td nosave>\r
+<h1><a href="http://www.opencascade.com"><img src="logocorp.png"\r
+                                                                                               style="width: 139px;\r
+                                                                                                               height: 47px;\r
+                                                                                                               border-style: none;\r
+                                                                                                               border-style: none;"\r
+                                                                                               width=139\r
+                                                                                               height=47\r
+                                                                                               border=0> </a></h1>\r
+</td>\r
+<td>\r
+<h3 style="text-align: center;"\r
+       align=center><font style="font-size: xx-large;"\r
+                                               size=7><font style="color: #000099;"\r
+                                                                       color=#000099>SALOME Installation Wizard \r
+ Help</font></font></h3>\r
+</td>\r
+<td>\r
+<div style="text-align: right;"\r
+       align=right>\r
+<!--kadov_tag{{<implicit_p>}}--><a href="http://www.opencascade.org/SALOME/"><img \r
+ src="application.png"\r
+       style="width: 109px;\r
+                       height: 47px;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=109\r
+       height=47\r
+       border=0> </a>\r
+</div></td></tr>\r
+</table>\r
+\r
+<div style="text-align: right;"\r
+       align=right>\r
+&nbsp; \r
+</div>\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#install_from_wizard">Installing products \r
+ with the Installation Wizard</a></li>\r
+       \r
+       <ul>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#gui_mode">GUI mode</a></li>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#batch_mode">Batch mode</a></li>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#env_files">Environment files</a></li>\r
+       </ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#check_version_proc">Notes on check products \r
+ version procedure</a></li>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#pick_up_env">Pick up the environment</a></li>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#xml_files">Modifying XML configuration \r
+ file</a></li>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#new_products">Implementing installation \r
+ scripts for the new products</a></li>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#finish_buttons">Customizing Readme page \r
+ buttons</a></li>\r
+</ul>\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<h3><a name=install_from_wizard></a>Installing products with the <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>Installation Wizard</font></h3>\r
+\r
+<span>The Installation Wizard can be launched in two modes: </span><span \r
+ style="font-weight: bold;">GUI </span><span>and </span><span \r
+ style="font-weight: bold;">batch</span><span>. \r
+ <br>\r
+The root directory of the Installation Wizard contains Python script </span><span \r
+ style="font-weight: bold;">runInstall</span><span>. To run the Installation \r
+ Wizard just type <b>runInstall</b> in the terminal window: \r
+\r
+</span><p>[ python ] <b>runInstall </b>[options]</p>\r
+\r
+<p>Without options this script will launch the SALOME Installation Wizard \r
+ in the default mode (GUI).<br>\r
+The default installation settings can be overridden by using command line \r
+ options. Each option has a short and a long notation:</p>\r
+\r
+<p><b style="font-weight: bold;">-g / --gui</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>Runs the Installation Wizard in the GUI mode (this is the default \r
+ mode). \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-b / --batch</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>Runs the Installation Wizard in the terminal mode. \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-f FILE / --file=</b><span \r
+ style="font-weight: bold;">FILE</span></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>The XML configuration file to be used by the Installation Wizard.&nbsp; \r
+ If this option is not used then the installation script tries to define \r
+ the <i>Linux </i>version and use the corresponding XML file if it exists. \r
+ For examle, for </span><span style="color: rgb(0, 0, 153);">Linux Mandrake \r
+ 10.1</span><span>&nbsp; the <b>config_Mandrake_10.1.xml</b>&nbsp; file \r
+ will be used by default. If no appropriate file is found, the file <b>config.xml</b> \r
+ will be used. This file refers to the basic target platform which is </span><span style="color: rgb(0, 0, 153);">Linux Mandrake 10.1</span><span> for SALOME \r
+ 3.0 and newer. If </span><span \r
+ style="font-weight: bold;">config.xml</span><span> \r
+ file is not found either, a warning message box is shown (in GUI mode) \r
+ or printed to the console (in batch mode) and the Installation Wizard \r
+ quits. \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-d DIR / --target=DIR</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>The target directory SALOME platform is to be installed to. If used, \r
+ this option overrides the default target directory, given in the configuration \r
+ XML file (usually</span><span \r
+ style="font-weight: bold;"> ${HOME}/salome_&lt;version&gt;</span><span>, \r
+ see <a href="#xml_files"\r
+               style="font-size: 12pt;">here</a> for more details). \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-t DIR / --tmp=DIR </b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>The directory, which should be used for temporary files. If given, \r
+ this option overrides the default temporary directory, given in the configuration \r
+ xml file (usually </span><span \r
+ style="font-weight: bold;">/tmp</span><span>, \r
+ see <a href="#xml_files"\r
+               style="font-size: 12pt;">here</a> for more information). \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-a / --all-from-sources</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>Forces all the products to be installed from sources (including all \r
+ SALOME modules). If this option is used, all default installation modes \r
+ for all products are ignored.<br>\r
+This option is helpful when the user wants to install SALOME on the platform \r
+ which is not officially supported. In this case, the user can try to run \r
+ the SALOME Installation Wizard with the </span><span \r
+ style="font-weight: bold;">-a</span><span> \r
+ option in order to build all the products from sources.</span><span style="font-weight: bold; color: #ff0000;"><br>\r
+Note, that this is a time-consuming operation which can take more than \r
+ 24 hours depending on the computer.</span><span> \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-h / --help</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>Prints help information on the Installation Wizard's use. \r
+</span></div>\r
+\r
+<p><b style="font-weight: bold;">-v / --version</b></p>\r
+\r
+<div style="margin-left: 40px;">\r
+<span>Prints version information (</span><span \r
+ style="font-weight: bold;">Note: \r
+ </span><span>this is the Installation Wizard's version number, not the \r
+ number of SALOME platform version). \r
+</span></div>\r
+\r
+<p>The installation procedure supports different <span style="color: rgb(0, 0, 153);">Linux \r
+ </span>platforms and installs various installation 3d-party prerequisite \r
+ products which are required by SALOME platform. As it was mentioned above, \r
+ the basic target platform for SALOME 3.0 and newer is <span style="color: rgb(0, 0, 153);">Linux \r
+ Mandrake 10.1</span>.<br>\r
+Use of configuration XML files gives a flexible way to modify the list \r
+ of products to be installed by the Installation Wizard without changing \r
+ the program source code. Just create your own XML configuration file and \r
+ implement installation scripts for the prerequisite products you need \r
+ and then use this XML file with the Installation Wizard. This can be done, \r
+ for example, for some <span style="color: rgb(0, 0, 153);">Linux </span>platform \r
+ which is not supported directly by the Installation Wizard. See <a href="#xml_files"\r
+       style="font-size: 12pt;">Modifying XML configuration file</a> and <a \r
+ href="#new_products"\r
+       style="font-size: 12pt;">Implementing installation scripts for the \r
+ new products</a> sections for more information. </p>\r
+\r
+<h3 style="margin-left: 40px;"><a name=gui_mode></a>GUI mode</h3>\r
+\r
+<p>The <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>Installation Wizard</font> GUI has been developed \r
+ using <span style="color: rgb(0, 0, 153);">Trolltech's </span><span \r
+ style="font-weight: bold;">Qt \r
+ 3.0.5 </span>toolkit. After launching the Installation Wizard in the GUI \r
+ mode the wizard window is shown to the user. This wizard guides the user \r
+ through several subsequent pages. To navigate between the pages use <i>&quot;Next&quot;</i> \r
+ and <i>&quot;Back&quot;</i> buttons in the lower part of the wizard window. \r
+ The <i>&quot;Cancel&quot;</i> button closes the wizard window&nbsp;and \r
+ quits the installation procedure after the user's confirmation. The <i>&quot;Help&quot;</i> \r
+ button opens an additional window to show help information. </p>\r
+\r
+<p>The first &quot;<span style="font-style: italic;">Introduction&quot;</span> \r
+ page is shown in <a href="#IntroPage">Figure 1</a>. Skip this page by \r
+ clicking <i>&quot;Next&quot;</i>: </p>\r
+\r
+<a name=IntroPage></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img alt="Intro page"\r
+                                               src="intropage.png"\r
+                                               style="width: 586px;\r
+                                                               height: 364px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=364\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 1:</b> &quot;Introduction&quot; \r
+ page</p>\r
+\r
+<p>In the second page you are proposed to enter the target directory where \r
+ the SALOME platform should be installed to. You can also click <i>&quot;Browse...&quot;</i> \r
+ and choose the destination folder using the standard browse directory \r
+ dialog box. <br>\r
+If the directory you want to install products to does not exist you are \r
+ prompted to confirm directory creation. If you type a wrong directory \r
+ path, or if you do not have write permissions for the directory you use, \r
+ the corresponding message box is shown.</p>\r
+\r
+<p>You can also change the temporary directory (which is used to store \r
+ temporary files required for the installation).<br>\r
+In the bottom part of the window the total disk space required for the \r
+ installation and for the temporary files is displayed (see below for more \r
+ details).</p>\r
+\r
+<p>In the GUI mode the Installation Wizard provides two different options \r
+ to install the SALOME platform: <span \r
+ style="font-weight: bold;">basic</span> \r
+ (default option) and <span \r
+ style="font-weight: bold;">advanced.</span> \r
+ In the <span \r
+ style="font-weight: bold;">basic</span> mode the user should \r
+ enter the target installation directory and temporary folder. All other \r
+ installation options are taken from the XML configuration file (see <a \r
+ href="#Product_page1">Fig.2</a>):</p>\r
+\r
+<a name=Product_page1></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img alt="Intro page"\r
+                                               src="productpage1.png"\r
+                                               style="width: 586px;\r
+                                                               height: 364px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=364\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 2:</b> &quot;Installation \r
+ settings&quot; </p>\r
+\r
+<p>In addition, you have a choice to use &quot;Install all products from \r
+ sources&quot; check box. If this option is turned on, all the products \r
+ will be installed from the sources (using their own build procedures). \r
+ This check box corresponds to the <span \r
+ style="font-weight: bold;">--all-from-sources</span> \r
+ (<span \r
+ style="font-weight: bold;">-a</span>) option of the <span \r
+ style="font-weight: bold;">runInstall</span> \r
+ script (see <a href="#install_from_wizard">here</a>). </p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><img \r
+ src="../note1.gif"\r
+       x-maintain-ratio=TRUE\r
+       style="border: none;\r
+                       width: 35px;\r
+                       height: 37px;\r
+                       float: none;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=35\r
+       height=37\r
+       border=0><span \r
+ style="font-weight: bold;"> Installation of all products \r
+ from sources is a long-time operation.</span></p>\r
+\r
+<p>To switch to the <span \r
+ style="font-weight: bold;">advanced</span> option, \r
+ click <i>&quot;More...&quot;</i> (see <a href="#ProductPage2">Fig.3</a> \r
+ ).</p>\r
+\r
+<p>In the advanced mode you have a possibility to select products to be \r
+ installed. Each product can have several options of installation: you \r
+ have a possibility to use the native product (provided with Linux distribution \r
+ and installed in the system folders), install already precompiled binaries, \r
+ build the product from sources or not install it at all. Available options \r
+ and default option are taken from the XML configuration file. You can \r
+ mark the products you want to install by clicking the corresponding radio-buttons \r
+ in the list view in the left part of the page. <br>\r
+Note, that some products may require some other pre-requisite products \r
+ to be installed (or these prerequisite products should be already available \r
+ on your computer). The installation procedure has a special feature to \r
+ automatically mark these products in the list view. For example, in order \r
+ to install <b><i>PyQt</i></b> it is necessary to have <b><i>gcc, Python</i></b>,<b><i> \r
+ Qt</i></b> and <b><i>Sip</i></b> installed. Therefore all these products \r
+ will also be <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->turned \r
+ on when you check on <b><i>PyQt</i></b>. This feature can be switched \r
+ off by clicking the <i>&quot;Automatic dependencies&quot;</i> checkbox. \r
+ Turn on this checkbox if you want all prerequisite products to be automatically \r
+ checked when you select some product to be installed. Turn off this checkbox \r
+ if you want to disable this feature.</p>\r
+\r
+<a name=ProductPage2></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img src="productpage.png"\r
+                                               alt="Products page"\r
+                                               style="float: none;\r
+                                                               width: 586px;\r
+                                                               height: 525px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=525\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 3:</b> &quot;Installation \r
+ settings&quot; page in the 'advanced' mode</p>\r
+\r
+<p>If you want to use native products (like <span \r
+ style="font-weight: bold;">gcc</span>, \r
+ <span \r
+ style="font-weight: bold;">tcl</span>, etc.), select <i>&quot;use \r
+ native&quot; </i>option. <br>\r
+Special button in the right part of the page - <i>&quot;Unselect All&quot; \r
+ </i>- allows to reset quickly all products to the <i>&quot;not install&quot;</i> \r
+ state. </p>\r
+\r
+<p>There are also two checkboxes on this page: <i>&quot;SALOME sources&quot;</i> \r
+ and <i>&quot;SALOME binaries&quot;</i>. These three-state checkboxes allow \r
+ quick selecting/unselecting sources/binaries packages of SALOME modules \r
+ for installation.</p>\r
+\r
+<p>In addition, when some SALOME sources are selected, one more check box \r
+ becomes available: <span style="font-style: italic;">&quot;Build SALOME \r
+ sources&quot;</span>. If this option is turned on, the selected SALOME \r
+ modules will be built and installed from sources.<span \r
+ style="font-weight: bold;"><br>\r
+&nbsp;</span></p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0> If this check box is turned on, \r
+ the corresponding SALOME module binaries package installation is disabled, \r
+ because of <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->SALOME \r
+ module sources and binaries packages conflict </span>(see <a href="#ProductPage3">Fig. \r
+ 4</a> below). </p>\r
+\r
+<a name=ProductPage3></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img src="productpage2.png"\r
+                                               alt="Products page"\r
+                                               style="width: 586px;\r
+                                                               height: 525px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=525\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 4:</b> &quot;Build \r
+ SALOME sources&quot; check box usage</p>\r
+\r
+<p>The box at the right side of the page displays the information about \r
+ currently highlighted product: name, version and short description, required \r
+ disk space, disk space required for temporary files, list of prerequisites \r
+ (this information is provided in the XML file) and current user choice. \r
+ </p>\r
+\r
+The <i>&quot;Disk space required:&quot;</i> field displays how much disk \r
+ space on the hard drive is required for installation of selected products. \r
\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></b><span \r
+ style="font-weight: bold;">Please, \r
+ take into account that the displayed amount of required disk space is \r
+ approximate and may differ when you install products on your hard drive.</span> \r
+ </p>\r
+\r
+<p>The installation procedure uses a special directory to store temporary \r
+ files. The <i>&quot;Space for temporary files:&quot;</i> field shows the \r
+ information about required disk space on the hard drive for extracting \r
+ and compiling the selected products. You can change the temporary directory \r
+ - just type a path to the folder you want to use or click on the corresponding \r
+ <i>&quot;Browse...&quot;</i> button. <span \r
+ style="font-weight: bold;"><br>\r
+&nbsp;</span></p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span><b \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></b></span><b \r
+ style="font-weight: bold;"><span style="font-weight: normal;">A</span></b>ctually, \r
+ temporary files are not stored directly in the directory entered by the \r
+ user. The Installation Wizard creates an additional folder in this directory \r
+ named something like INSTALLWORK<span \r
+ style="font-weight: bold;">XXXXX</span> \r
+ where XXXXX is a unique number. This allows to launch several Installation \r
+ Wizards simultaneously. This temporary directory is removed automatically \r
+ when the installation finishes.</p>\r
+\r
+<p>The installation procedure also checks the available disk space. If \r
+ there is not enough disk space on your hard drive you will see a corresponding \r
+ error message box. </p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0>You are strongly recommended not \r
+ to use directory names containing spaces. </b>Otherwise you can experience \r
+ some troubles with the installation.<b> </b></p>\r
+\r
+<p>To proceed further click <i>&quot;Next&quot;</i>. At this moment the \r
+ program will make some tests to check installation settings: if there \r
+ is enough disk space on the hard drive, check for native products installation, \r
+ dependencies (prerequisites) for each product you have selected to be \r
+ installed. If any test fails you will see the corresponding warning message \r
+ box. Otherwise the wizard will proceed to the next page: </p>\r
+\r
+<a name=ChoicePage></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img src="choicepage.png"\r
+                                               alt="Choice page"\r
+                                               style="width: 586px;\r
+                                                               height: 485px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=485\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 5:</b> &quot;Check \r
+ your choice&quot; page</p>\r
+\r
+<p>This page summarizes the installation options you've made on the previous \r
+ pages. You can check again your choice and change it if necessary by getting \r
+ back to the previous page. <br>\r
+When you are sure that everything is OK, click <i>&quot;Next&quot;</i> \r
+ to follow to the <a href="#ProgressPage">next page</a>. </p>\r
+\r
+<a name=ProgressPage></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img alt="Progress page"\r
+                                               src="progresspage1.png"\r
+                                               style="width: 586px;\r
+                                                               height: 364px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=364\r
+                                               border=0></p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 6:</b> &quot;Installation \r
+ progress&quot; page</p>\r
+\r
+<p style="text-align: justify;">To start installation of the selected products \r
+ click &quot;Start&quot;. It launches the shell installation script and \r
+ you will be able to see the output of the script in the <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->dialog \r
+ topmost frame. If any errors occur during the installation progress the \r
+ corresponding messages will be printed to the log window in bold red font.</p>\r
+\r
+<p style="text-align: justify;">It is possible to break the installation \r
+ at any time by clicking &quot;Stop&quot;. Then you can get back to the \r
+ previous pages if you wish to change installation settings or restart \r
+ installation by pressing again &quot;Start&quot; button.</p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b><span \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0> I</span></b><span \r
+ style="font-weight: bold;">n the current implementation \r
+ it is not possible to resume the stopped installation process; it will \r
+ be re-started from the very beginning.</span> </p>\r
+\r
+<a name=ProgressPage1></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img alt="Progress page"\r
+                                               src="progresspage.png"\r
+                                               style="width: 586px;\r
+                                                               height: 364px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=364\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 7:</b> &quot;Installation \r
+ progress&quot; page: installation in progress</p>\r
+\r
+<p>The <i>&quot;Installation Status&quot;</i> frame window shows you the \r
+ progress of installation. &quot;<font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>Waiting</font>&quot; \r
+ status means that installation of this product has not been started yet. \r
+ The product currently being installed is marked as &quot;<font style="color: #ff9900;"\r
+       color=#FF9900>Processing</font>&quot;. All installed products have \r
+ &quot;<font style="color: #33ff33;"\r
+                       color=#33FF33>Completed</font>&quot; status. </p>\r
+\r
+<p>You can abort installation and close the installation procedure using \r
+ <i>&quot;Cancel&quot;</i> button. </p>\r
+\r
+&nbsp; \r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span \r
+ style="font-weight: bold;"><b style="font-weight: bold;"><img src="../note1.gif"\r
+       x-maintain-ratio=TRUE\r
+       style="border: none;\r
+                       width: 36px;\r
+                       height: 38px;\r
+                       float: none;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=36\r
+       height=38\r
+       border=0>T</b>his button sends the signal &quot;SIGTERM&quot; to the \r
+ shell script. The script tries to clear all temporary files. The process \r
+ of removing temporary files can take some time, so the installation wizard \r
+ will wait 3 seconds before closing.</span> </p>\r
+\r
+<p>At the end of installation (all selected products have been installed \r
+ successfully) you can go back to the previous pages to start a new installation \r
+ or click <i>&quot;Next&quot; </i>to go the Readme page: </p>\r
+\r
+<a name=readmepage></a>\r
+\r
+<p style="text-align: center;"\r
+       align=center>&nbsp;</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><img alt="Read page"\r
+                                               src="readmepage.png"\r
+                                               style="width: 586px;\r
+                                                               height: 484px;\r
+                                                               border-style: none;\r
+                                                               border-style: none;"\r
+                                               width=586\r
+                                               height=484\r
+                                               border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 8:</b> &quot;Finish \r
+ installation&quot; page</p>\r
+\r
+<p>In this page you can read important information about the Instalation \r
+ Wizard itself and some tips: how to run and test SALOME or how to build \r
+ SALOME from the sources. This is the contents of the README file which \r
+ you can find in the root directory of the Installation Wizard. <br>\r
+You can also launch SALOME Desktop from this page or read the Release Notes \r
+ file by clicking on the corresponding buttons in the lower part of the \r
+ page (see <a href="#xml_files">here</a> and <a href="#finish_buttons">here</a> \r
+ for more information about customizing these buttons).</p>\r
+\r
+<h3 style="margin-left: 40px;"><a name=batch_mode></a>Batch mode</h3>\r
+\r
+<p>To launch the Installation Wizard in the batch mode use <span \r
+ style="font-weight: bold;">-b</span> \r
+ (<span \r
+ style="font-weight: bold;">--batch</span>) parameter.<br>\r
+In this mode the GUI wizard is not shown but all the installation status \r
+ is displayed directly in the console. In the batch mode the user does \r
+ not have a possibility to change installation settings which are given \r
+ in the configuration file, except target and temporary directories which \r
+ can be overridden by the corresponding command line options.<br>\r
+The only exception is <span \r
+ style="font-weight: bold;">--all-from-sources</span> \r
+ (<span \r
+ style="font-weight: bold;">-a</span>) option which enables special \r
+ installation mode in which all the products (including SALOME modules) \r
+ are installed from sources, ignoring the default mode defined in the XML \r
+ configuration file (see <a href="#install_from_wizard">here</a> for details).</p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}--><a \r
+ name=BatchMode></a><br>\r
+<br>\r
+<img alt="Batch mode"\r
+       src="batchmode.png"\r
+       style="width: 660px;\r
+                       height: 410px;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=660\r
+       height=410\r
+       border=0> </p>\r
+\r
+<p style="text-align: center;"\r
+       align=center><b style="font-weight: bold;">Figure 9:</b> Batch mode</p>\r
+\r
+<h3 style="margin-left: 40px;"><a name=env_files></a>Environment files</h3>\r
+\r
+<p>During the process of installation the script creates some environment \r
+ files to simplify the procedure of launching SALOME. These shell scripts \r
+ set all necessary environment variables for all products you have installed. \r
+ To learn how installation scripts collects the environment, see <a href="#pick_up_env">here</a>. \r
+ These files are: <b>salome.csh</b> + <b>salome.sh</b> in the <span style="font-style: italic; font-weight: bold;">KERNEL \r
+ module</span><b><i> sources</i></b> and <span style="font-style: italic; font-weight: bold;">KERNEL \r
+ module</span><b><i> binaries</i></b> root directories and <b>env_products.csh</b> \r
+ + <b>env_products.sh </b>and <span \r
+ style="font-weight: bold;">env_build.csh \r
+ </span>+ <span \r
+ style="font-weight: bold;">env_build.sh</span> in the target \r
+ installation directory.</p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b><span \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></span></b><span \r
+ style="font-weight: bold;">Note:</span> there is some \r
+ difference between these files: <span \r
+ style="font-weight: bold;">env_build.*</span> \r
+ files are optimized to be used for building SALOME modules from sources \r
+ (see <span \r
+ style="font-weight: bold;">README </span>file provided with \r
+ the installation procedure on the CD). The <span \r
+ style="font-weight: bold;">env_products.*</span> \r
+ (and<span \r
+ style="font-weight: bold;"> salome.*</span>) files are optimized \r
+ for SALOME launching. The behavior is defined by the environment variable<span \r
+ style="font-weight: bold;"> </span><b>ENV_FOR_LAUNCH</b> which is set \r
+ to <span \r
+ style="font-weight: bold;">0</span> in env_build.* files and \r
+ to <span \r
+ style="font-weight: bold;">1</span> in env_products.* (salome.*) \r
+ files. </p>\r
+\r
+<!--kadov_tag{{<implicit_empty_p>}}-->&nbsp;<br><!--kadov_tag{{</implicit_empty_p>}}-->\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<h3><a name=check_version_proc></a>Notes on<font \r
+ style="color: #ff0000;"\r
+       color=#FF0000> check products \r
+ version</font> procedure</h3>\r
+\r
+Unfortunately there is no exact algorithm to identify the product version \r
+ under Linux platform. The information in this section gives an idea how \r
+ the version is checked for the native/preinstalled products (this information \r
+ refers to the base platform <span style="color: rgb(0, 0, 153);">Linux \r
+ Mandrake 10.1</span>; and the same algorithms are used for other platforms). \r
+ <br>\r
+The general rule for all products is that the path to the binaries should \r
+ be set via the <span \r
+ style="font-weight: bold;">PATH</span> environment \r
+ variable, path to the libraries should be set via the <span \r
+ style="font-weight: bold;">LD_LIBRARY_PATH</span> \r
+ variable and the python modules should be available via the <span \r
+ style="font-weight: bold;">PYTHONPATH</span> \r
+ variable. \r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b><span \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></span></b><span \r
+ style="font-weight: bold;">Note:</span> the information \r
+ given in this section refers to the prerequisite products for SALOME version \r
+ 3.2.4. </p>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>gcc 3.4.1</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">gcc -dumpversion</span> \r
+ command. The <span \r
+ style="font-weight: bold;">gcc</span> executable should \r
+ be in the <span \r
+ style="font-weight: bold;">PATH</span> environment variable. \r
+ Version should be equal to &quot;3.4.1&quot;. It is recommended to use \r
+ native gcc on Mandrake 10.1. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>tcl/tk 8.4.5</li>\r
+</ul>\r
+\r
+Version number for <span \r
+ style="font-weight: bold;">tcl/tk</span> can be \r
+ found in tclConfig.sh and tkConfig.sh files (<span \r
+ style="font-weight: bold;">TCL_VERSION</span> \r
+ and <span \r
+ style="font-weight: bold;">TK_VERSION</span> variables correspondingly). \r
+ Version number should be equal to &quot;8.4&quot; (release number is not \r
+ checked). <br>\r
+Set the <span \r
+ style="font-weight: bold;">TCLHOME</span> environment variable \r
+ to the root directory of tcl/tk installation.<br>\r
+It is recommended to use native tcl/tk on Mandrake 10.1. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>boost 1.31.0</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">version.hpp</span> \r
+ file which is part of the boost distribution. This file defines the <span \r
+ style="font-weight: bold;">BOOST_VERSION</span> macro which should be \r
+ equal to &quot;103100&quot;. In addition the existence of boost libraries \r
+ is checked. <br>\r
+Set the <span \r
+ style="font-weight: bold;">BOOSTDIR</span> environment variable \r
+ if you have a preinstalled version of boost. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Python 2.3.4</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">python -V</span> \r
+ command. The <span \r
+ style="font-weight: bold;">python</span> executable \r
+ should be in the <span \r
+ style="font-weight: bold;">PATH</span> environment \r
+ variable. Version number should be equal to &quot;2.3.4&quot;. It is recommended \r
+ to use native Python on Mandrake 10.1.<br>\r
+Set the <span \r
+ style="font-weight: bold;">PYTHONHOME</span> environment \r
+ variable if you have a preinstalled version of Python. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Swig 1.3.24</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">swig -version</span> \r
+ command. The <span \r
+ style="font-weight: bold;">swig</span> executable should \r
+ be in the <span \r
+ style="font-weight: bold;">PATH</span> environment variable. \r
+ Version number should be equal to &quot;1.3.24&quot;. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Qt 3.3.3</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">qglobal.h</span> \r
+ file which is part of the Qt distribution. This file defines <span \r
+ style="font-weight: bold;">QT_VERSION_STR</span> \r
+ macro which should be equal to &quot;3.3.3&quot;. It is recommended to \r
+ use native Qt on Mandrake 10.1.<br>\r
+Set the <span \r
+ style="font-weight: bold;">QTDIR</span> environment variable \r
+ if you have a preinstalled version of qt. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>msg2qm</li>\r
+</ul>\r
+\r
+<span \r
+ style="font-weight: bold;">msg2qm</span> is a Qt tool which is used \r
+ to convert text *.po files to *.qm resource files. Unfortunately this \r
+ tool is not included to the Linux distribution and provided only in Qt \r
+ sources package. This is the reason why this tool is supplied with the \r
+ SALOME Installation Wizard.<br>\r
+There is no way to check the version number of msg2qm tool. Just set <span \r
+ style="font-weight: bold;">MSG2QM_ROOT</span> environment variable if \r
+ you have a preinstalled version of msg2qm tool. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Open CASCADE 6.1.2a2</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">Standard_Version.hxx</span> \r
+ file which is part of the Open CASCADE distribution. This file defines \r
+ <span \r
+ style="font-weight: bold;">OCC_VERSION_MAJOR,</span> <span \r
+ style="font-weight: bold;">OCC_VERSION_MINOR</span> \r
+ and <span \r
+ style="font-weight: bold;">OCC_VERSION_MAINTENANCE</span> macros \r
+ which should refer to version 6.1.2.<br>\r
+Set the <span \r
+ style="font-weight: bold;">CASROOT</span> environment variable \r
+ if you have a preinstalled version of Open CASCADE. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>qwt 4.2.0/0.4.2</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">qwt_global.h</span> \r
+ file which is part of the qwt distribution. This file defines <span \r
+ style="font-weight: bold;">QWT_VERSION_STR</span> \r
+ macro which should be equal to &quot;4.2.0&quot;.<br>\r
+Set the <span \r
+ style="font-weight: bold;">QWTHOME</span> environment variable \r
+ if you have a preinstalled version of qwt. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>hdf 5-1.6.4</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">libhdf5.settings</span> \r
+ file which is part of the <span \r
+ style="font-weight: bold;">hdf5</span> \r
+ distribution. Version should be equal to 1.6.4.<br>\r
+Set the <span \r
+ style="font-weight: bold;">HDF5HOME</span> environment variable \r
+ if you have a preinstalled version of hdf5. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>med 2.2.3</li>\r
+</ul>\r
+\r
+Unfortunately there is no formal way to check med version number. We check \r
+ existence of libmed.so.1.0.2 library on the computer. If you have any \r
+ problem with a preinstalled version of med, please, reinstall it.<br>\r
+Set the <span \r
+ style="font-weight: bold;">MED2HOME</span> environment variable \r
+ if you have a preinstalled version of med. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Vtk 4.2.6</li>\r
+</ul>\r
+\r
+Unfortunately there is no formal way to check VTK version number. We just \r
+ check the existence of <span \r
+ style="font-weight: bold;">libvtkCommon.so</span> \r
+ library on the computer and hope that it is of version we need. If you \r
+ have any problem with a preinstalled version of Vtk, please, reinstall \r
+ it.<br>\r
+Set the <span \r
+ style="font-weight: bold;">VTKHOME</span> environment variable \r
+ if you have a preinstalled version of Vtk. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>OmniORB 4.0.5, OmniORBpy 2.5, OmniNotify 2.1</li>\r
+</ul>\r
+\r
+We just check existence of some omniORB libraries and executable on the \r
+ computer, like <span \r
+ style="font-weight: bold;">libomniORB4.so.0.5</span>, \r
+ <span \r
+ style="font-weight: bold;">_omnipymodule.so.2.4</span>, <span \r
+ style="font-weight: bold;">libCOSNotify4.so.0.1</span> \r
+ and <span \r
+ style="font-weight: bold;">notifd</span>.<br>\r
+Set the <span \r
+ style="font-weight: bold;">OMNIORBDIR</span> environment \r
+ variable if you have a preinstalled version of omniORB products. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>sip 4.1</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">sip -V</span> \r
+ command. The <span \r
+ style="font-weight: bold;">sip</span> executable should \r
+ be in the <span \r
+ style="font-weight: bold;">PATH</span> environment variable. \r
+ Version number should be equal to &quot;4.1&quot;.<br>\r
+Set the <span \r
+ style="font-weight: bold;">SIPDIR</span> environment variable \r
+ to the directory where you have sip executable preinstalled. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>PyQt 3.13</li>\r
+</ul>\r
+\r
+Version number is defined by <span \r
+ style="font-weight: bold;">pyqtconfig.py</span> \r
+ Python module file which is part of the <span \r
+ style="font-weight: bold;">PyQt</span> \r
+ distribution. Version should be equal to &quot;3.13&quot;.<br>\r
+Set the <span \r
+ style="font-weight: bold;">PYQTDIR </span>environment variable \r
+ if you have a preinstalled version of PyQt. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>netgen 4.5</li>\r
+</ul>\r
+\r
+Unfortunarely we can't find anything about netgen version. We just check \r
+ if <span \r
+ style="font-weight: bold;">NETGENROOT</span> environment variable \r
+ is set.<br>\r
+Set the <span \r
+ style="font-weight: bold;">NETGENROOT</span> environment \r
+ variable if you have a preinstalled version of netgen mesher. \r
+\r
+<!--begin!kadov{{--><br><!--}}end!kadov--><!--kadov_tag{{<implicit_p>}}-->&nbsp; \r
\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span \r
+ style="font-weight: bold;"><b style="font-weight: bold;"><img src="../note1.gif"\r
+       x-maintain-ratio=TRUE\r
+       style="border: none;\r
+                       width: 36px;\r
+                       height: 38px;\r
+                       float: none;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=36\r
+       height=38\r
+       border=0></b>Note: </span>netgen 4.5 provided with the SALOME installation \r
+ Wizard has been patched to improve its performance. </p>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>Numeric 23.7</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">python -c \r
+ 'import Numeric; print Numeric.__version__'</span> command. The <span \r
+ style="font-weight: bold;">python</span> executable should be in the <span \r
+ style="font-weight: bold;">PATH</span> environment variable and <span \r
+ style="font-weight: bold;">Numeric</span> module should be available for \r
+ the Python (for example it should be in the <span \r
+ style="font-weight: bold;">PYTHONPATH</span> \r
+ environment variable). Version number should be equal to &quot;23.7&quot;. \r
+ If you have any problem with a preinstalled version of Numeric 23.7, please, \r
+ reinstall it.<br>\r
+Add the directory where&nbsp;you have a preinstalled version of Numeric \r
+ package to the the <span \r
+ style="font-weight: bold;">PYTHONHOME </span>environment \r
+ variable. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>graphviz 2.2.1</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">dot -V</span> \r
+ command. The <span \r
+ style="font-weight: bold;">dot</span> executable should \r
+ be in the <span \r
+ style="font-weight: bold;">PATH</span> environment variable. \r
+ Version number should be equal to &quot;2.2.1&quot;.<br>\r
+Add <span \r
+ style="font-weight: bold;">graphviz</span> bin directory to the \r
+ the <span \r
+ style="font-weight: bold;">PATH</span> environment variable. \r
\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>doxygen 1.4.6</li>\r
+</ul>\r
+\r
+Version number is checked by <span \r
+ style="font-weight: bold;">doxygen --version</span> \r
+ command. The <span \r
+ style="font-weight: bold;">doxygen</span> executable \r
+ should be in the <span \r
+ style="font-weight: bold;">PATH</span> environment \r
+ variable. Version number should be equal to &quot;1.4.6&quot;. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-weight: bold; color: rgb(0, 0, 153);">SALOME \r
+ </span>module <span style="font-weight: bold; color: rgb(0, 0, 153);">sources</span> \r
+ (3.2.4).</li>\r
+</ul>\r
+\r
+For each SALOME module sources package (KERNEL, GUI, GEOM, etc...) the \r
+ root directory contains file configure.in (configure.ac) which defines \r
+ version information.<br>\r
+Set the <span \r
+ style="font-weight: bold;">&lt;MODULE&gt;_SRC_DIR</span> \r
+ environment variable for each SALOME <span \r
+ style="font-weight: bold;">MODULE</span> \r
+ sources package installed (where <span \r
+ style="font-weight: bold;">MODULE</span> \r
+ is KERNEL, GUI, GEOM, ...). \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-weight: bold; color: rgb(0, 0, 153);">SALOME \r
+ </span>module <span style="font-weight: bold; color: rgb(0, 0, 153);">binaries \r
+ </span>(3.2.4)</li>\r
+</ul>\r
+\r
+For each SALOME module binaries package (KERNEL, GUI, GEOM, etc...) the \r
+ <span \r
+ style="font-weight: bold;">bin/salome</span> directory contains \r
+ file <span \r
+ style="font-weight: bold;">VERSION</span> which defines version \r
+ information.<br>\r
+Set <span \r
+ style="font-weight: bold;">&lt;MODULE&gt;_ROOT_DIR</span> environment \r
+ variable for each SALOME <span \r
+ style="font-weight: bold;">MODULE</span> \r
+ binaries package installed (where <span \r
+ style="font-weight: bold;">MODULE</span> \r
+ is KERNEL, GUI, GEOM, ...). \r
+\r
+<p>If you have native products installed to directories different from \r
+ default ones (not <b>/usr/bin</b>, <b>/usr/lib</b>...), it is recommended \r
+ to follow the above mentioned instructions. Or you should properly set \r
+ <span \r
+ style="font-weight: bold;">PATH</span> and <span \r
+ style="font-weight: bold;">LD_LIBRARY_PATH</span> \r
+ variables <b><font style="color: #ff0000;"\r
+                                       color=#FF0000>before</font></b> starting the Installation \r
+ Wizard. Otherwise the installation script will fail to find preinstalled/native \r
+ products. </p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span><b \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></b></span><b style="font-weight: bold;">Note:</b> for some native \r
+ products (e.g. gcc, Python) the rules of version checking are not so strict \r
+ as described above. Only major and minor version numbers should coincide \r
+ with the prerequisite. Newer version of the product can also be used. \r
+ If some native product has version number larger than that required by \r
+ the installation procedure, the user will be prompted by the warning message \r
+ like this: <i>&quot;You have newer version of gcc installed on your computer \r
+ than that is required (3.4.1). Continue?&quot;</i>. You can click <i>&quot;Yes&quot;</i> \r
+ to proceed with the installation but in this case you should be aware \r
+ of what you are doing. SALOME binaries (including other products) are \r
+ compiled with the predefined prerequisites and most likely can not be \r
+ run successfully if these products are not found. This can be helpful \r
+ only if you plan to build all products from sources. </p>\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<h3><a name=pick_up_env></a>Pick up the <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>environment</font></h3>\r
+\r
+Please, read the following information carefully . This section describes \r
+ how the installation procedure generates the environment scripts for the \r
+ SALOME platform being installed. \r
+\r
+<p>After installing each product shell the script creates a special environment \r
+ file for the product in its installation folder. The name of the file \r
+ is generated from the name of product by the following scheme: <b>env_&lt;product_name&gt;.sh</b> \r
+ (for example <b>env_Vtk.sh </b>for the Vtk). This file includes all necessary \r
+ environment settings. At the final step of the installation the script \r
+ picks up all the settings files and generates two common environment files \r
+ from them: <b>salome.sh</b> and <b>salome.csh </b>for <span \r
+ style="font-weight: bold;">bash</span> \r
+ and <span \r
+ style="font-weight: bold;">csh</span> shells correspondingly. \r
+ Such approach helps to save time when reinstalling products and you may \r
+ not bother about setting all environment variables manually to build/launch \r
+ SALOME. What you simply need is to source one of these environment files. \r
+ </p>\r
+\r
+<p>This also concerns those products which are not being installed. For \r
+ example, you install some SALOME binaries to the directory where you have \r
+ previously installed other products.&nbsp; The Installation procedure \r
+ tries to collect environment files from the target directory if it finds \r
+ necessary products installed there. If some product is not found in the \r
+ target directory the corresponding section of <b>salome.sh/salome.csh</b> \r
+ files will be skipped. <br>\r
+For native products (like <i><b>gcc, tcl, etc...)</b></i> the installation \r
+ procedure tries to find them first using <b>PATH</b> / <b>LD_LIBRARY_PATH</b> \r
+ variables and then in the system default directories (<b>/usr/bin, /usr/lib</b> \r
+ etc., depending on the product). </p>\r
+\r
+<p>In any case you may edit <b>salome.*</b> files after the installation \r
+ procedure finishes, if you want.</p>\r
+\r
+&nbsp; \r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><span><b \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></b></span><span \r
+ style="font-weight: bold;">Note:</span> \r
+ as it was mentioned <a href="#env_files">above</a> there are other environment \r
+ files which are generated by the installation procedure: <span \r
+ style="font-weight: bold;">env_products.csh</span> \r
+ + <span \r
+ style="font-weight: bold;">env_products.sh</span> and <span \r
+ style="font-weight: bold;">env_build.csh</span> \r
+ + <span \r
+ style="font-weight: bold;">env_build.sh</span>. These files can \r
+ be found in the target installation root directory.</p>\r
+\r
+<!--kadov_tag{{<implicit_empty_p>}}-->&nbsp;<br><!--kadov_tag{{</implicit_empty_p>}}-->\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<h3><a name=xml_files></a>Modifying <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>XML</font> configuration \r
+ <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>file</font></h3>\r
+\r
+You can create your own XML configuration file. The Installation Wizard \r
+ can then take it as a command line argument to provide a list of products \r
+ you want to install with it. The list of products and some other settings \r
+ for the Installation Wizard are provided in the XML file. The default \r
+ file which Installation Wizard looks for if no command line arguments \r
+ are given, is <b>config.xml</b>.<br>\r
+This section describes the structure of the configuration file. <br>\r
+XML tags are in bold blue, optional sections/tags are in brackets. \r
+\r
+<p><font style="font-family: Courier;"\r
+               face=Courier><b style="font-weight: bold;"><font style="color: #000099;"\r
+                                                                                                               color=#000099>&lt;document&gt;</font></b> \r
+ <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&nbsp;&nbsp;&nbsp; </b>[</font><b><font style="color: #000099;"\r
+                                                                               color=#000099> &lt;config</font></b><font style="color: #000000;"\r
+               color=#000000> [ version=&lt;install_wizard_version&gt; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ caption=&lt;install_wizard_caption&gt; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ copyright=&lt;install_wizard_copyright&gt;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ license=&lt;install_wizard_license_info&gt; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ os=&lt;target_platform&gt; ]</font><b><font style="color: #000099;"\r
+                                                                               color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;</font></b><font style="color: #000000;"\r
+               color=#000000> <br>\r
+&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&nbsp;&nbsp;&nbsp; </b>[ </font><b><font style="color: #000099;"\r
+                                                                               color=#000099>&lt;path</font></b><font style="color: #000000;"\r
+               color=#000000>&nbsp;&nbsp; [ targetdir=&lt;target_directory&gt; ]</font> \r
+ <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ tempdir=&lt;temp_directory&gt;&nbsp;&nbsp;&nbsp;&nbsp; ]</font><b><font style="color: #000099;"\r
+                                                                               color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></b><font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&nbsp;&nbsp;&nbsp; </b>[ </font><b><font style="color: #000099;"\r
+                                                                               color=#000099>&lt;button</font></b><font style="color: #000000;"\r
+               color=#000000> &nbsp; label=&lt;button_label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> \r
+ <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
+ [ tooltip=&lt;button_tooltip&gt; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
+ &nbsp; script=&lt;button_script&gt;&nbsp;&nbsp;&nbsp;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ [ disable=&lt;disable_flag&gt;&nbsp;&nbsp;&nbsp;]</font><b><font style="color: #000099;"\r
+                                                                               color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></b><font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; [</font><b><font style="color: #000099;"\r
+                                                                               color=#000099> &lt;button</font></b><font style="color: #000000;"\r
+               color=#000000> ... </font><font style="color: #000099;"\r
+                                                                       color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<b>&gt;</b></font><font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; [</font><b><font style="color: #000099;"\r
+                                                                               color=#000099> &lt;product</font></b><font style="color: #000000;"\r
+               color=#000000>&nbsp; name=&lt;product_name&gt;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ version=&lt;product_version&gt;</font> <br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; [ context=&lt;product_context&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ ]<br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; [ description=&lt;product_description&gt; \r
+ ]<font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ install=&lt;installation_mode&gt;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ supported=&lt;supported_installation_modes&gt;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ disable=&lt;disable_flag&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br>\r
+&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; [ pickupenv=&lt;pickup_env_flag&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ ]<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ dependancies=&lt;list_of_prerequisites&gt;</font>&nbsp;<font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
+ installdiskspace=&lt;install_disk_space&gt;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; \r
+ temporarydiskspace=&lt;tmp_disk_space&gt;</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; \r
+ script=&lt;installation_script_name&gt;</font><font style="color: #000099;"\r
+                                                                       color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<b>&gt;</b></font><font style="color: #000000;"\r
+               color=#000000> \r
+ <br>\r
+&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
+               color=#000000><br>\r
+&nbsp;&nbsp;&nbsp; [</font><b><font style="color: #000099;"\r
+                                                                               color=#000099> &lt;product</font></b><font style="color: #000000;"\r
+               color=#000000> ... </font><font style="color: #000099;"\r
+                                                                       color=#000099><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<b>&gt;</b></font><font style="color: #000000;"\r
+               color=#000000> \r
+ <br>\r
+&nbsp;&nbsp;&nbsp; ]<br>\r
+&nbsp;&nbsp;&nbsp; ...</font><b><font style="color: #000099;"\r
+                                                                               color=#000099><br>\r
+&lt;/document&gt;</font></b> </font></p>\r
+\r
+<h4><font style="color: #000000;"\r
+                       color=#000000>&lt;config&gt; section</font></h4>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This is an optional section; it provides general \r
+ information about the Installation Wizard itself.<br>\r
+<br>\r
+Attributes:</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">version</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The application version number to be shown in the \r
+ caption.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">caption</b></font></li>\r
+</ul>\r
+\r
+The application main window caption - if this string contains '%1' text \r
+ the title will contain the version number in this place (see above). \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">copyright</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The application copyright information (shown in the \r
+ first page).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">license</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The application license information (shown in the \r
+ first page).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">os</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This parameter defines the directory (relative from \r
+ ./Products/BINARIES) where the Installation Wizard will search precompiled \r
+ binaries packages. If this tag is not provided, binaries packages are \r
+ looked for in the ./Products/BINARIES directory.</font> \r
+\r
+<h4><b style="font-weight: bold;"><font style="color: #000000;"\r
+                                                                               color=#000000>&lt;path&gt; section</font></b></h4>\r
+\r
+This is an optional section; it defines default installation directories.<font style="color: #000000;"\r
+                       color=#000000><br>\r
+<br>\r
+Attributes:</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">targetdir</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The target directory - the path to the directory \r
+ where products should be installed.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">tempdir</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The temporary directory - the path to the directory \r
+ for the temporary files.</font> \r
+\r
+<h4><b style="font-weight: bold;">&lt;product&gt; section</b></h4>\r
+\r
+This section describes product to be installed with the Installation Wizard. \r
+ The XML file should include a &lt;product&gt; section for each product \r
+ to be installed. The products appear in the tree view and are installed \r
+ in the order they are described in the configuration file. It is recommended \r
+ (but not obligatory) to define native products at the top of the list \r
+ before all other products.<font style="color: #000000;"\r
+                       color=#000000><br>\r
+<br>\r
+Attributes:</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">name</b></font></li>\r
+</ul>\r
+\r
+Product name. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">version</b></font></li>\r
+</ul>\r
+\r
+<span>Product</span> version. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">description</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Product description (optional).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">context</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Context (optional). The possible values are <b>'salome \r
+ sources'</b>, <b>'salome binaries'</b> and <b>'prerequisite'</b> (several \r
+ contexts can be given separated by &quot;:&quot; symbol).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">supported</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Supported modes of installation. Several modes can \r
+ be separated by comma. Possible value are: <i>install sources</i>, <i>install \r
+ binaries</i>, <i>use native</i>. The Installation script should contain \r
+ the corresponding functions for each of the supported installation modes \r
+ (see <a href="#new_products">here</a>).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">install</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Default (starting) installation mode.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">disable</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>If this optional flag has 'true' value, the corresponding \r
+ product will not appear in the list of products and will not be installed.</font> \r
\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">pickupenv</b></li>\r
+</ul>\r
+\r
+This flag points that pickup environment procedure should be performed \r
+ for this product. If this flag equal to 'true', &nbsp;salome.sh and salome.csh \r
+ files will&nbsp; be created in the product installation directory. Usually \r
+ this option is set to true for SALOME KERNEL module sources and binaries \r
+ package. This is an optional key, default value is 'false'<b>.</b> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">dependancies</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>List of prerequisite products, which are necessary \r
+ to build this product, separated by comma.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">installdiskspace</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Total amount of space (integer, in Kbytes), which \r
+ the product occupies on the hard drive after the installation.</font> \r
\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">temporarydiskspace</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>Disk space (integer, in Kbytes) for temporary files, \r
+ which is necessary to build the product from the sources.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">script</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The installation script name. This script is in charge \r
+ of the installation of the product. It is called automatically by the \r
+ Installation Wizard when necessary from the main program. See the <a href="#new_products">next \r
+ section</a> for more information.</font> \r
+\r
+<h4><b style="font-weight: bold;">&lt;button&gt; section</b></h4>\r
+\r
+This is an optional section. It allows customization of the last <i>&quot;Finish \r
+ installation&quot;</i> page of the Installation Wizard by adding one or \r
+ more buttons in the lower part of the wizard's window. The script which \r
+ is attached to each such button, can perform some specific action, for \r
+ example, launch the application or show the Release Notes file by using \r
+ an external program. See <a href="#finish_buttons">here</a> for more details \r
+ about writing scripts.<font style="color: #000000;"\r
+                       color=#000000><br>\r
+<br>\r
+Attributes:</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">label</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This is the button text.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">tooltip</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The button tooltip (optional).</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">script</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>The script attached to the button.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">disable</b></font></li>\r
+</ul>\r
+\r
+<p style="background-color: #ffffff;">If this optional flag has 'true' \r
+ value, the corresponding button will not appear in the <i>&quot;Finish \r
+ installation&quot;</i> page - the section of XML file is silently ignored.<b>&nbsp;</b></p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b \r
+ style="font-weight: bold;"><span style="font-weight: bold;"><img src="../note1.gif"\r
+       x-maintain-ratio=TRUE\r
+       style="border: none;\r
+                       width: 36px;\r
+                       height: 38px;\r
+                       float: none;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=36\r
+       height=38\r
+       border=0></span><span style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');">Note:</span></b><span style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"> \r
+ If you add new products to be installed with Installation Wizard, you \r
+ should also provide installation script for this product. See the next \r
+ section for more details. </span></p>\r
+\r
+<!--kadov_tag{{<implicit_empty_p>}}-->&nbsp;<br><!--kadov_tag{{</implicit_empty_p>}}-->\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+<h3><a name=new_products></a>Implementing <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>installation \r
+ scripts</font> for the new products</h3>\r
+\r
+When you want some product to be installed with the Installation Wizard, \r
+ you should add its description <a href="#xml_files">to the configuration \r
+ file</a> and create the installation script, following the rules described \r
+ in this section. <br>\r
+<br>\r
+There are some obligatory functions which should be implemented in this \r
+ installation script. These functions are automatically called by the master \r
+ installation script or/and its GUI shell when it is necessary.<font style="color: #000000;"\r
+                       color=#000000><br>\r
+File <b>common.sh</b> contains some service functions which can be used \r
+ in your installation script, like <b>make_env()</b>,<b> make_dir()</b>, \r
+ <b>try_existing()</b>, <b>sort_path()</b>,<b> find_in_path()</b>, etc.</font> \r
\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">check_version()</b></li>\r
+</ul>\r
+\r
+This function allows to check the version of the product already installed \r
+ on the computer. It should try to find the product (native or preinstalled \r
+ in the target directory) and check its version. This helps to avoid unnecessary \r
+ reinstallation. This is an internal function and is not called from the \r
+ master installation script. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><b style="font-weight: bold;"><font style="color: #000000;"\r
+                                                                               color=#000000>try_native()</font></b></li>\r
+</ul>\r
+\r
+This function is called when the <i>'use native' </i>installation mode \r
+ is selected by the user. The function should try to find a native version \r
+ of the product and define possibility of its use. It should create the \r
+ environment file for the product in the temporary directory (see also \r
+ the description of <b>print_env(</b><span \r
+ style="font-weight: bold;">)</span> \r
+ function). It is not necessary to implement this function if you do not \r
+ provide native mode installation. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">install_source()</b></font></li>\r
+</ul>\r
+\r
+This function is called when the <i>'install sources</i>' installation \r
+ mode is selected by the user. The function is responsible for building \r
+ the product from the sources package. It should create the environment \r
+ file for the product in the temporary directory (see also description \r
+ of <b>print_env(</b><span \r
+ style="font-weight: bold;">)</span> function). \r
+ It is not necessary to implement this function if you do not provide sources \r
+ mode installation. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">install_source_and_build()</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This function is called when SALOME module is installed \r
+ and the <span style="font-weight: bold;">--all-from-sources</span> (<span style="font-weight: bold;">-a</span>) option is used (<span style="font-style: italic;">&quot;Build \r
+ SALOME sources&quot;</span> check box in GUI mode). This function should \r
+ be used to unpack SALOME sources package and then call the build/install \r
+ procedure for it.<br>\r
+For more details please refer to the <a href="#install_from_wizard">this</a> \r
+ and <a href="#gui_mode">this</a> sections for more details.</font> \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">install_binary()</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This function is called when the <i>'install binaries'</i> \r
+ installation mode is selected by the user. The function is responsible \r
+ for the extracting of the product from the binaries package. It should \r
+ create environment for the product in the temporary directory (see also \r
+ description of <b>print_env(</b>) function). It is not necessary to implement \r
+ this function if you do not provide binaries mode installation. \r
+\r
+</font><ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">try_preinstalled()</b></li>\r
+</ul>\r
+\r
+This function is called when<i><span style="font-style: normal;"> the</span> \r
+ 'not install'</i> installation mode is selected by the user. In this case \r
+ the script should inspect the target directory to try to find an already \r
+ preinstalled product, pick up and check the environment from there. See \r
+ <a href="#pick_up_env">here</a> for more details. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">print_env()</b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+                       color=#000000>This function is in charge of creating the environment \r
+ script. It should create a file with name </font><b>env_&lt;product_name&gt;.sh</b> \r
+ in the temporary directory and then copy it into the product installation \r
+ directory. The file should contain all necessary environment variables \r
+ settings for the product. It will be collected during the 'pick-up-environment' \r
+ procedure. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">pickup_env()</b></li>\r
+</ul>\r
+\r
+This procedure corresponds to the <b>pickupenv</b> tag of the configuration \r
+ xml file (see previous section). It should call the <b>make_env</b> procedure \r
+ to perform the pick-up environment procedure for the product.<font style="color: #000000;"\r
+                       color=#000000><br>\r
+<br>\r
+The calling signature of the product installation script is the following:</font> \r
+ <b><font style="color: #000000;"\r
+                       color=#000000><br>\r
+&lt;product_script_name&gt; &lt;function_name&gt; &lt;temp_folder&gt; &lt;products_directory&gt; \r
+ &lt;target_directory&gt; &lt;dependancies&gt; &lt;product_name&gt;</font></b> \r
\r
+\r
+<p><font style="color: #000000;"\r
+                       color=#000000>where</font> </p>\r
+\r
+<p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;">&lt;product_script_name&gt;</b> \r
+ - installation script name (described in the configuration xml file);</font> \r
+ <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;function_name&gt;</b> - the name of function, corresponding to the \r
+ selected installation mode: <i>try_native, install_source, install_binary</i> \r
+ or <i>try_preinstalled</i>;</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;temp_folder&gt;</b> - temporary files directory;</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;products_directory&gt;</b> - directory where the sources/binaries package \r
+ can be found. You should provide the sources package in the <i>&lt;Install_Wizard_root_directory&gt;/Products/SOURCES</i> \r
+ directory and binaries package in the <i>&lt;InstallWizard_root_directory&gt;/Products/BINARIES/&lt;os_version&gt;</i>, \r
+ where &lt;os_version&gt; is the target platform description, which appears \r
+ in the corresponding section of the <a href="#xml_files">configuration \r
+ xml file</a>.</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;target_directory&gt;</b> - root target directory where the product \r
+ should be installed to;</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;dependancies&gt;</b> - single-quoted list of prerequisite products, \r
+ separated by space;</font> <font style="color: #000000;"\r
+               color=#000000><b><br>\r
+&lt;product_name&gt; </b>- product name itself.</font> </p>\r
+\r
+<p><font style="font-weight: bold;">Example:</font> <i><br>\r
+med-2.2.3.sh install_binary /tmp/work ./Products/BINARIES/Mandrake10.1 \r
+ /usr/salome 'gcc Hdf' med</i> </p>\r
+\r
+<p><font style="color: #000000;"\r
+                       color=#000000>Copy the created script into the <i>&lt;Install_Wizard_root_directory&gt;/config_files</i> \r
+ sub-directory where all installation scripts are stored. Installation \r
+ Wizard will automatically search and call your script during the installation \r
+ procedure.</font> </p>\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+&nbsp; \r
+\r
+<h3><a name=finish_buttons></a>Customizing <font \r
+ style="color: #ff0000;"\r
+       color=#FF0000>Readme page</font> \r
+ buttons</h3>\r
+\r
+The Installation Wizard allows customizing the look-n-feel of the last \r
+ <i>&quot;Finish installation&quot;</i> page. If you want to add one or \r
+ more buttons to this page in order to perform some specific actions at \r
+ the end of the installation (for example, to show the Release Notes file \r
+ by using Open Office) you can put an additional section to the XML configuration \r
+ file. This is the <b>&lt;button&gt;</b> section (see <a href="#xml_files">here</a> \r
+ for more details). \r
+\r
+<!--begin!kadov{{--><br><!--}}end!kadov--><!--kadov_tag{{<implicit_p>}}-->&nbsp; \r
\r
+\r
+<!--begin!kadov{{--><br><!--}}end!kadov--><!--kadov_tag{{<implicit_p>}}-->To \r
+ implement the action which will be performed when the user clicks the \r
+ button, you need to create a script and put it to the <i>&lt;Install_Wizard_root_directory&gt;/config_files</i> \r
+ directory.<br>\r
+There are some obligatory functions which should be implemented in this \r
+ script. These functions are automatically called by the Installation Wizard \r
+ GUI. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">check_enabled()</b></li>\r
+</ul>\r
+\r
+This procedure is called by the Installation Wizard when the <i>&quot;Finish \r
+ installation&quot;</i> page is displayed and the status of the buttons \r
+ should be modified according to the installation options. This procedure \r
+ should return <b>0</b> if the corresponding action can be performed and, \r
+ thus, the button should become enabled. Otherwise, it should return <b>1</b> \r
+ - in this case the corresponding button will be disabled. \r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;">execute()</b></li>\r
+</ul>\r
+\r
+This procedure is invoked when the user clicks the button. This procedure \r
+ should return <b>0</b> if the corresponding action is done successfully \r
+ and <b>1</b> if any error occurs.<br>\r
+<br>\r
+The calling signature of the script is the following:<b><font style="color: #000000;"\r
+                       color=#000000><br>\r
+&lt;product_script_name&gt; &lt;function_name&gt; &lt;target_directory&gt; \r
+ &lt;temp_folder&gt;</font></b> \r
+\r
+<p><font style="color: #000000;"\r
+                       color=#000000>where</font> </p>\r
+\r
+<p><b style="font-weight: bold;">&lt;product_script_name&gt;</b> - the \r
+ script name itself (retrieved from the XML configuration xml file); <b><br>\r
+&lt;function_name&gt;</b> - the name of function; <b><br>\r
+&lt;target_directory&gt;</b> - root target directory where the product \r
+ is installed to; <b><br>\r
+&lt;temp_folder&gt; </b>- temporary files directory; <b><br>\r
+&nbsp;</b></p>\r
+\r
+<p style="background-image: url('../Texture_horiz_ltbluebubbles.jpg');"><b><span \r
+ style="font-weight: bold;"><img src="../note1.gif"\r
+                                                               x-maintain-ratio=TRUE\r
+                                                               style="border: none;\r
+                                                                               width: 36px;\r
+                                                                               height: 38px;\r
+                                                                               float: none;\r
+                                                                               border-style: none;\r
+                                                                               border-style: none;"\r
+                                                               width=36\r
+                                                               height=38\r
+                                                               border=0></span>Note:</b> The standard \r
+ Installation Wizard buttons &quot;Launch SALOME&quot; and &quot;Release \r
+ Notes&quot; are implemented with this feature. Refer to scripts <b>start_salome.sh</b> \r
+ and <b>release_notes.sh</b> for sample implementation.<b><span \r
+ style="font-weight: bold;"><br>\r
+<br>\r
+<img src="../note1.gif"\r
+       x-maintain-ratio=TRUE\r
+       style="border: none;\r
+                       width: 36px;\r
+                       height: 38px;\r
+                       float: none;\r
+                       border-style: none;\r
+                       border-style: none;"\r
+       width=36\r
+       height=38\r
+       border=0></span>Note:</b> Any button (even standard) can be \r
+ ignored by the Installation Wizard if the attribute <b>&lt;disable&gt;</b> \r
+ in the XML configuration file is set to the &quot;true&quot; value. </p>\r
+\r
+\r
+<!--(HR)============================================================-->\r
+<hr style="/*begin!kadov{{*/ float: aligncenter; /*}}end!kadov*/ ">\r
+\r
+\r
+&nbsp; \r
+\r
+</body>\r
+\r
+</html>\r
diff --git a/doc/salome/gui/GUI/kernel/intropage.png b/doc/salome/gui/GUI/kernel/intropage.png
new file mode 100644 (file)
index 0000000..226793c
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/intropage.png differ
diff --git a/doc/salome/gui/GUI/kernel/logocorp.png b/doc/salome/gui/GUI/kernel/logocorp.png
new file mode 100644 (file)
index 0000000..ab3c370
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/logocorp.png differ
diff --git a/doc/salome/gui/GUI/kernel/productpage.png b/doc/salome/gui/GUI/kernel/productpage.png
new file mode 100644 (file)
index 0000000..bc05c8b
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/productpage.png differ
diff --git a/doc/salome/gui/GUI/kernel/productpage1.png b/doc/salome/gui/GUI/kernel/productpage1.png
new file mode 100644 (file)
index 0000000..b666166
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/productpage1.png differ
diff --git a/doc/salome/gui/GUI/kernel/productpage2.png b/doc/salome/gui/GUI/kernel/productpage2.png
new file mode 100644 (file)
index 0000000..998d286
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/productpage2.png differ
diff --git a/doc/salome/gui/GUI/kernel/progresspage.png b/doc/salome/gui/GUI/kernel/progresspage.png
new file mode 100644 (file)
index 0000000..0779fcc
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/progresspage.png differ
diff --git a/doc/salome/gui/GUI/kernel/progresspage1.png b/doc/salome/gui/GUI/kernel/progresspage1.png
new file mode 100644 (file)
index 0000000..efaa4d1
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/progresspage1.png differ
index 2f9ad432ddcb05bdcc6528bf792449cb125a5578..0b4411a6cc34517b9e9ed7b9cb1815b5f5db8524 100755 (executable)
@@ -3,58 +3,36 @@
 <html>\r
 \r
 <head>\r
-<title>Installation Wizard</title>\r
+<title>SALOME Installation Wizard Help</title>\r
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="../default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>\r
 <!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='../default.css'>");}\r
-//-->\r
-</script>\r
-<style>\r
-<!--\r
-body {  }\r
+A:visited { color:#551a8b; }\r
+A:active { color:#ff0000; }\r
+A:link { color:#0000ee; }\r
 -->\r
 </style><style type="text/css">\r
 <!--\r
-h1.whs1 { font-size:24pt; }\r
-hr.whs2 { float:aligncenter; }\r
-p.whs3 { background-color:#ffffff; }\r
-p.whs4 { font-weight:bold; }\r
-table.whs5 { x-cell-content-align:top; width:100%; border-left-style:Solid; border-left-color:#c0c0c0; border-left-width:0px; border-top-style:Solid; border-top-color:#c0c0c0; border-top-width:0px; border-right-style:Solid; border-right-color:#c0c0c0; border-right-width:0px; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:0px; border-spacing:0px; }\r
-col.whs6 { width:19.092%; }\r
-col.whs7 { width:80.908%; }\r
-tr.whs8 { x-cell-content-align:top; }\r
-td.whs9 { width:19.092%; padding-right:10px; padding-left:10px; border-left-color:#c0c0c0; border-top-style:Solid; border-top-color:#c0c0c0; border-right-style:Solid; border-right-color:#c0c0c0; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; border-top-width:1px; }\r
-td.whs10 { width:80.908%; padding-right:10px; padding-left:10px; border-top-style:Solid; border-top-color:#c0c0c0; border-right-style:Solid; border-right-color:#c0c0c0; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:1px; border-top-width:1px; border-right-width:1px; }\r
-td.whs11 { width:19.092%; padding-right:10px; padding-left:10px; border-left-color:#c0c0c0; border-right-style:Solid; border-right-color:#c0c0c0; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; }\r
-td.whs12 { width:80.908%; padding-right:10px; padding-left:10px; border-right-style:Solid; border-right-color:#c0c0c0; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:1px; border-right-width:1px; }\r
-td.whs13 { width:80.908%; padding-right:10px; padding-left:10px; border-right-color:#c0c0c0; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#c0c0c0; border-bottom-width:1px; border-right-width:1px; }\r
-p.whs14 { text-align:center; }\r
-img_whs15 { border:none; width:586px; height:366px; float:none; }\r
-p.whs16 { text-align:center; font-style:italic; }\r
-img_whs17 { border:none; width:586px; height:553px; border-style:none; float:none; }\r
-p.whs18 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
-img_whs19 { border:none; width:36px; height:38px; float:none; border-style:none; }\r
-img_whs20 { border:none; width:586px; height:553px; float:none; border-style:none; }\r
-img_whs21 { border:none; width:586px; height:366px; float:none; border-style:none; }\r
-img_whs22 { border:none; width:35px; height:37px; float:none; border-style:none; }\r
-img_whs23 { border:none; width:586px; height:486px; float:none; border-style:none; }\r
-table.whs24 { background-repeat:repeat; background-attachment:scroll; width:100%; background-image:url('../texture_horiz_ltbluebubbles.jpg'); float:alignleft; x-cell-content-align:Center; border-spacing:0px; }\r
-tr.whs25 { x-cell-content-align:center; }\r
-th.whs26 { border-top-style:Solid; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; border-left-color:#000080; border-left-width:1px; border-left-style:Solid; border-top-color:#000080; border-top-width:1px; }\r
-p.whs27 { text-align:center; font-size:12pt; }\r
-th.whs28 { border-top-style:Solid; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; border-top-color:#000080; border-top-width:1px; }\r
-th.whs29 { border-top-style:Solid; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-top-color:#000080; border-top-width:1px; border-right-color:#000080; border-right-width:1px; }\r
-td.whs30 { border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; border-left-color:#000080; border-left-width:1px; border-left-style:Solid; }\r
-td.whs31 { border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; }\r
-td.whs32 { x-cell-content-align:top; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; border-left-color:#000080; border-left-width:1px; border-left-style:Solid; }\r
-td.whs33 { x-cell-content-align:top; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; }\r
-td.whs34 { vertical-align:top; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; border-left-color:#000080; border-left-width:1px; border-left-style:Solid; }\r
-td.whs35 { vertical-align:top; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; border-right-color:#000080; border-right-width:1px; }\r
-td.whs36 { border-right-style:Solid; border-bottom-style:Solid; border-right-color:#000080; border-right-width:1px; border-left-color:#000080; border-left-width:1px; border-left-style:Solid; border-bottom-color:#000080; border-bottom-width:1px; }\r
-td.whs37 { border-right-style:Solid; border-bottom-style:Solid; border-right-color:#000080; border-right-width:1px; border-bottom-color:#000080; border-bottom-width:1px; }\r
+p.whs1 { text-align:center; }\r
+table.whs2 { width:100%; }\r
+img_whs3 { width:139px; height:47px; border-style:none; }\r
+h3.whs4 { text-align:center; }\r
+div.whs5 { text-align:right; }\r
+img_whs6 { width:109px; height:47px; border-style:none; }\r
+hr.whs7 { float:aligncenter; }\r
+div.whs8 { margin-left:40px; }\r
+h3.whs9 { margin-left:40px; }\r
+img_whs10 { width:586px; height:364px; border-style:none; }\r
+p.whs11 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
+img_whs12 { border:none; width:35px; height:37px; float:none; border-style:none; }\r
+img_whs13 { float:none; width:586px; height:525px; border-style:none; }\r
+img_whs14 { border:none; width:36px; height:38px; float:none; border-style:none; }\r
+img_whs15 { width:586px; height:525px; border-style:none; }\r
+img_whs16 { width:586px; height:485px; border-style:none; }\r
+p.whs17 { text-align:justify; }\r
+img_whs18 { width:586px; height:484px; border-style:none; }\r
+img_whs19 { width:660px; height:410px; border-style:none; }\r
+p.whs20 { background-color:#ffffff; }\r
 -->\r
 </style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
 <!--\r
@@ -109,16 +87,36 @@ else
 //-->\r
 </script>\r
 </head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
+<body style="color: #000000;"><script type="text/javascript" language="javascript1.2">\r
 <!--\r
 if (window.writeIntopicBar)\r
        writeIntopicBar(4);\r
 //-->\r
 </script>\r
-<h1 class="whs1">Installing SALOME</h1>\r
+<p align="center" class="whs1">&nbsp; </p>\r
+\r
+<table nosave x-use-null-cells width="100%" class="whs2">\r
+\r
+<tr nosave>\r
+<td nosave>\r
+<h1><a href="http://www.opencascade.com"><img src="logocorp.png" width="139px" height="47px" border="0" class="img_whs3"> </a></td>\r
+<td>\r
+<h3 align="center" class="whs4"><font style="font-size: xx-large;"\r
+                                               size=7><font style="color: #000099;"\r
+                                                                       color=#000099>SALOME Installation Wizard \r
+ Help</font></font></td>\r
+<td>\r
+<div align="right" class="whs5">\r
+<a href="http://www.opencascade.org/SALOME/"><img src="application.png" width="109px" height="47px" border="0" class="img_whs6"> </a>\r
+</div></td></tr>\r
+</table>\r
 \r
+<div align="right" class="whs5">\r
+&nbsp; \r
+</div>\r
 \r
-<hr class="whs2">\r
+\r
+<hr class="whs7">\r
 \r
 \r
 <ul>\r
@@ -127,6 +125,18 @@ if (window.writeIntopicBar)
                class=kadov-p><a href="#install_from_wizard">Installing products \r
  with the Installation Wizard</a></li>\r
        \r
+       <ul>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#gui_mode">GUI mode</a></li>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#batch_mode">Batch mode</a></li>\r
+               \r
+               <li class=kadov-p\r
+                       class=kadov-p><a href="#env_files">Environment files</a></li>\r
+       </ul>\r
+       \r
        <li class=kadov-p\r
                class=kadov-p><a href="#check_version_proc">Notes on check products \r
  version procedure</a></li>\r
@@ -138,794 +148,1026 @@ if (window.writeIntopicBar)
                class=kadov-p><a href="#xml_files">Modifying XML configuration \r
  file</a></li>\r
        \r
-       <li class=kadov-p><p class="whs3"><a href="#new_products">Implementing \r
- installation scripts for the new products</a></p></li>\r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#new_products">Implementing installation \r
+ scripts for the new products</a></li>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><a href="#finish_buttons">Customizing Readme page \r
+ buttons</a></li>\r
 </ul>\r
 \r
 \r
-<hr class="whs2">\r
+<hr class="whs7">\r
 \r
 \r
 <h3><a name=install_from_wizard></a>Installing products with the <font \r
  style="color: #ff0000;"\r
        color=#FF0000>Installation Wizard</font></h3>\r
 \r
-<p>The Installation Wizard can be launched in two modes: GUI and batch. \r
- <br>\r
-The root directory of the Installation Wizard contains python script <span \r
- style="font-weight: bold;"><B>runInstall</B></span>. To run the Installation \r
- Wizard just type <b>runInstall</b> in terminal window:</p>\r
-\r
-<p class="whs4">[ python ] runInstall [&lt;options&gt;]. \r
- &nbsp;<span style="font-weight: normal;">Each \r
- option has short and long notation:</span></p>\r
-\r
-<p class="whs4">&nbsp;</p>\r
-\r
-<table x-use-null-cells cellspacing="0" width="100%" class="whs5">\r
-<script language='JavaScript'><!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='100%' border='1' bordercolor='silver' bordercolorlight='silver' bordercolordark='silver'>");\r
-//--></script>\r
-<col class="whs6">\r
-<col class="whs7">\r
-\r
-<tr valign="top" class="whs8">\r
-<td width="19.092%" class="whs9">\r
-<p class="whs4"><b style="font-weight: bold;">-g &nbsp;/ \r
- &nbsp;--gui </b></td>\r
-<td width="80.908%" class="whs10">\r
-<p>Runs the Installation Wizard in the GUI mode (default option). In this \r
- case only<span style="font-weight: bold;"><B> &lt;xml-file&gt;</B></span> key \r
- is taken into account. Other parameters are ignored. &nbsp;</td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td width="19.092%" class="whs11">\r
-<p><b style="font-weight: bold;">-b &nbsp;/ \r
- &nbsp;--batch \r
- </b></td>\r
-<td width="80.908%" class="whs12">\r
-<p>Runs the Installation Wizard in command-line mode. </td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td width="19.092%" class="whs11">\r
-<p><b style="font-weight: bold;">-f &nbsp;&lt;</b><span \r
- style="font-weight: bold;"><B>FILE&gt; / &nbsp;--file=&lt;FILE&gt;</B></span> \r
- </td>\r
-<td width="80.908%" class="whs12">\r
-<p>The configuration file to be used by the Installation Wizard.&nbsp; \r
- If this parameter is not used then the installation script tries to define \r
- the <i><span style="font-style: italic;"><I>Linux</I></span> </i>version and \r
- use the corresponding xml file. For example, <b>config_Mandrake10_1.xml</b>&nbsp; \r
- file is to be used for &nbsp;<i>Linux \r
- Mandrake 10.1</i>. If the appropriate file is not found, the file <b>config.xml</b> \r
- will be used.&nbsp; This file refers to the basic target platform which \r
- is Linux Mandrake 10.1 for SALOME 3.0 and higher. If config.xml file is \r
- also not found, the warning message box is shown (in GUI mode) or printed \r
- to the console (in batch mode) and the Installation Wizard quits.</td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td colspan="1" rowspan="1" width="19.092%" class="whs11">\r
-<p><span style="font-weight: bold;"><B>-d &lt;DIR&gt; / --target=&lt;DIR&gt;</B></span> \r
- </td>\r
-<td colspan="1" rowspan="1" width="80.908%" class="whs12">\r
-<p>The target directory for SALOME platform to be installed to. If used, \r
- &nbsp;this option \r
- overrides the default target directory, defined in the configuration XML \r
- file (usually ${HOME}/salome_&lt;version&gt;).</td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td colspan="1" rowspan="1" width="19.092%" class="whs11">\r
-<p>&nbsp;<b>-t &lt;</b><span style="font-weight: bold;"><B>DIR&gt; / --tmp=&lt;DIR&gt;</B></span> \r
- </td>\r
-<td colspan="1" rowspan="1" width="80.908%" class="whs12">\r
-<p>The directory, which is used for temporary files. If used, this option \r
- overrides the default temporary directory, given in the configuration \r
- xml file (usually <span style="font-weight: bold;"><B>/tmp</B></span>, see <a \r
- href="#xml_files">here</a>).</td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td width="19.092%" class="whs11">\r
-<p><span style="font-weight: bold;"><B>-h / &nbsp;--help</B></span> \r
- </td>\r
-<td width="80.908%" class="whs12">\r
-<p>Prints help information about available options. </td></tr>\r
-\r
-<tr valign="top" class="whs8">\r
-<td colspan="1" rowspan="1" width="19.092%" class="whs11">\r
-<p class="whs4">-v / --version </td>\r
-<td colspan="1" rowspan="1" width="80.908%" class="whs13">\r
-<p>Prints version information (Note: this is the Installation Wizard's \r
- version number, not of SALOME platform). &nbsp;</td></tr>\r
-<script language='JavaScript'><!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
-//--></script>\r
-</table>\r
-\r
-<p>&nbsp;&nbsp;&nbsp; \r
- &nbsp; &nbsp;<b><span style="font-weight: normal;"><br>\r
-T</span></b>o run the Installation Wizard in the GUI mode, just type <b>runInstall</b>. \r
- </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>The installation procedure can support some different Linux platforms \r
- and various number of products. As it was mentioned above the basic target \r
- platform for SALOME 3.0.0 and higher is <i>Linux Mandrake 10.1</i>.<br>&nbsp;</p>\r
-\r
-<p>The using of configuration xml files gives flexible way to modify the \r
- list of products to be installed by the Installation Wizard without changing \r
- program's source code. Just create your own configuration file and implement \r
- installation scripts for products you want to be provided by Wizard. See \r
- <a href="#xml_files">modifying XML configuration file</a> and <a href="#new_products">implementing \r
- installation scripts for the new products</a> for more information. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>The <font style="color: #ff0000;"\r
-                       color=#FF0000>Installation Wizard</font> was built with using \r
- of the <span style="font-style: italic;"><I>Trolltech's</I></span> <b><i>Qt&nbsp; \r
- 3.0.5 </i></b>library. The program contains several pages. To navigate \r
- between pages use <i>&quot;Next&quot;</i> and <i>&quot;Back&quot;</i> \r
- buttons in the lower part of the wizard window. <i>&quot;Cancel&quot;</i> \r
- button closes dialog window and quits the installation procedure. To invoke \r
- this help information click <i>&quot;Help&quot;</i> button. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>Skip the first <i>&quot;Introduction&quot;</i> page by pressing <i>&quot;Next&quot;</i> \r
- button: </p>\r
-\r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The Installation Wizard can be launched \r
+ in two modes: </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>GUI \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>batch</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. <br>\r
+The root directory of the Installation Wizard contains Python script </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>runInstall</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. \r
+ To run the Installation Wizard just type <b>runInstall</b> in the terminal \r
+ window: </font></span>\r
 \r
-<p align="center" class="whs14"><img src="../pics/intropage.png" x-maintain-ratio="TRUE" width="586px" height="366px" border="0" class="img_whs15"></p>\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">[ python ] </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">runInstall \r
+ </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">[options]</font></span></p>\r
 \r
-<p>&nbsp;</p>\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Without options this script will launch \r
+ the SALOME Installation Wizard in the default mode (GUI).<br>\r
+The default installation settings can be overridden by using command line \r
+ options. Each option has a short and a long notation:</font></span></p>\r
 \r
-<p align="center" class="whs14"><b style="font-weight: bold;">Figure 1:</b> &quot;Introduction&quot; \r
- page</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-g / --gui</font></span></b></p>\r
 \r
-<p>&nbsp;</p>\r
-\r
-<p>In the second page you are proposed to enter the target directory where \r
- all selected products should be installed to. You can also press the <i>&quot;Browse...&quot;</i> \r
- button and choose the folder for installation using standard <b><i>Qt</i></b>'s \r
- browse directory dialog box. <br>\r
-If the directory you want to install products to does not exist you will \r
- be prompted to confirm the directory creation. If you type a wrong directory \r
- path, or if you have no permission for the directory you use, the corresponding \r
- message box will appear. </p>\r
-\r
-<p>The Installation Wizard has two modes of the installation: basic (default) \r
- and advanced. In the basic mode it is necessary just to enter the target \r
- directory. If you want to use the advanced mode, click the <i>&quot;More...&quot;</i> \r
- button. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>In the advanced mode you have the possibility to select products to \r
- be installed (see <a href="#ProductPage">Fig.2</a> ). Each product can \r
- have several options of installation: you have a possibility to use native \r
- products, install already precompiled binaries, build product from the \r
- sources or not install it at all. Possible options and default choice \r
- are provided by the configuration file. You can mark the products you \r
- want to install by clicking the corresponding radio buttons in the list \r
- view in the left part of the page. Note that some products can be installed \r
- only together with other products (or these prerequisite products should \r
- be already installed on your computer). The installation procedure has \r
- a special feature to automatically mark these products in the list view. \r
- For example, in order to install <b><i>PyQt</i></b> it is necessary to \r
- have <b><i>gcc, Python</i></b>,<b><i> Qt</i></b> and <b><i>Sip</i></b> \r
- installed. Therefore all these products will be marked when you check \r
- <b><i>PyQt</i></b>. This feature can be switched off by clicking the <i>&quot;Auto \r
- set prerequisites products&quot;</i> checkbox. <br>&nbsp;</p>\r
-\r
-<p>Special button in the right part of the page - <i>&quot;Unselect All&quot; \r
- </i>- allows to quickly reset all products to the <i>&quot;not install&quot;</i> \r
- state. <br>\r
-If you want to use native products (like <span style="font-weight: bold;"><B>gcc</B></span>, \r
- <span style="font-weight: bold;"><B>tcl</B></span>, etc.), select the <i>&quot;use \r
- native&quot; </i>option. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>There are also two checkboxes on this page: <i>&quot;SALOME sources&quot;</i> \r
- and <i>&quot;SALOME binaries&quot;</i>. These three-state checkboxes allow \r
- quick selecting/unselecting SALOME packages for the installation.</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>The box in the right part of the page displays the information about \r
- currently highlighted product: name, version, short description (if provided \r
- in XML file), required disk space, disk space required for temporary files, \r
- list of prerequisites and current user choice. &nbsp;</p>\r
-\r
-<a name=ProductPage></a>\r
-\r
-<p align="center" class="whs16"><img src="../pics/productpage.png" x-maintain-ratio="TRUE" width="586px" height="553px" border="0" class="img_whs17"></p>\r
-\r
-<p align="center" class="whs14">&nbsp;</p>\r
-\r
-<p align="center" class="whs14"><b style="font-weight: bold;">Figure 2:</b> &quot;Installation \r
- settings&quot; page in the advanced mode</p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Runs the Installation Wizard in the GUI \r
+ mode (this is the default mode). </font></span>\r
+</div>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-b / --batch</font></span></b></p>\r
 \r
-<p>The <i>&quot;Total disk space required:&quot;</i> field displays how \r
- much disk space on the hard drive is required for installation of selected \r
- products. </p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Runs the Installation Wizard in the terminal \r
+ mode. </font></span>\r
+</div>\r
 \r
-<p>&nbsp;</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-f FILE \r
+ / --file=</font></span></b><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>FILE</B></font></span></p>\r
+\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The XML configuration file to be used by \r
+ the Installation Wizard.&nbsp; If this option is not used then the installation \r
+ script tries to define the <i>Linux </i>version and use the corresponding \r
+ XML file if it exists. For examle, for </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux \r
+ Mandrake 10.1</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; the <b>config_Mandrake_10.1.xml</b>&nbsp; \r
+ file will be used by default. If no appropriate file is found, the file \r
+ <b>config.xml</b> will be used. This file refers to the basic target platform \r
+ which is </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux \r
+ Mandrake 10.1</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for SALOME 3.0 and \r
+ newer. If </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>config.xml</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> file is not found either, a warning message \r
+ box is shown (in GUI mode) or printed to the console (in batch mode) and \r
+ the Installation Wizard quits. </font></span>\r
+</div>\r
 \r
-&nbsp; \r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-d DIR \r
+ / --target=DIR</font></span></b></p>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"> </b>Please, take into account \r
- that the displayed amount of required disk space is approximate and may \r
- differ when you install products on your hard drive. </p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The target directory SALOME platform is \r
+ to be installed to. If used, this option overrides the default target \r
+ directory, given in the configuration XML file (usually</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B> \r
+ ${HOME}/salome_&lt;version&gt;</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, \r
+ see <a href="#xml_files"\r
+               style="font-size: 12pt;">here</a> for more details). </font></span>\r
+</div>\r
 \r
-<p>&nbsp;</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-t DIR \r
+ / --tmp=DIR </font></span></b></p>\r
 \r
-<p>The installation procedure uses a special directory to store temporary \r
- files. The <i>&quot;Space for temporary files:&quot;</i> field shows the \r
- information about required disk space on the hard drive for extracting \r
- and compiling of the selected products. You can change the default directory \r
- - just type path to the folder you want to use or click on the corresponding \r
- <i>&quot;Browse...&quot;</i> button. </p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The directory, which should be used for \r
+ temporary files. If given, this option overrides the default temporary \r
+ directory, given in the configuration xml file (usually </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>/tmp</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, see <a href="#xml_files"\r
+                                                                       style="font-size: 12pt;">here</a> for \r
+ more information). </font></span>\r
+</div>\r
 \r
-<p>&nbsp;</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-a / --all-from-sources</font></span></b></p>\r
+\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Forces all the products to be installed \r
+ from sources (including all SALOME modules). If this option is used, all \r
+ default installation modes for all products are ignored.<br>\r
+This option is helpful when the user wants to install SALOME on the platform \r
+ which is not officially supported. In this case, the user can try to run \r
+ the SALOME Installation Wizard with the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>-a</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> option in order to build all the products from \r
+ sources.</font></span><span style="font-weight: bold;\r
+                                                               font-size: 12pt;\r
+                                                               color: #ff0000;"><font size=3 color=red style="font-size:12.000000pt;"><B><br>\r
+Note, that this is a time-consuming operation which can take more than \r
+ 24 hours depending on the computer.</B></font></span><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+</div>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></b> In fact, temporary files \r
- are not stored in the directory entered by user. The Installation Wizard \r
- creates in this directory an additional folder named something like INSTALLWORK<span \r
- style="font-weight: bold;"><B>XXXXX</B></span> where XXXXX is a unique number. \r
- This allows to launch several Installation Wizards simultaneously. This \r
- temporary directory is removed automatically when the installation finishes.</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-h / --help</font></span></b></p>\r
 \r
-<p>&nbsp;</p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Prints help information on the Installation \r
+ Wizard's use. </font></span>\r
+</div>\r
 \r
-<p>The installation procedure also checks the available disk space in the \r
- selected directories according to the products selected. If there is not \r
- enough disk space on your hard drive you will see the corresponding error \r
- message box.</p>\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">-v / --version</font></span></b></p>\r
 \r
-<p>&nbsp;</p>\r
+<div class="whs8">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Prints version information (</font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Note: </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">this \r
+ is the Installation Wizard's version number, not the number of SALOME \r
+ platform version). </font></span>\r
+</div>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"> </b>Unfortunately, the configure \r
- procedure has a very annoying bug under Linux platform. The directory \r
- should be obligatory entered without spaces. For example, the configure \r
- procedure for <b><i>gcc</i></b> won't work if you pass the following parameter: \r
- <i>--prefix=&quot;/New Folder 1&quot;</i>. <b>Therefore you are strongly \r
- recommended not to use directory names containing spaces.</b></p>\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The installation procedure supports different \r
+ </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux </font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">platforms and installs various installation 3d-party \r
+ prerequisite products which are required by SALOME platform. As it was \r
+ mentioned above, the basic target platform for SALOME 3.0 and newer is \r
+ </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux Mandrake \r
+ 10.1</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.<br>\r
+Use of configuration XML files gives a flexible way to modify the list \r
+ of products to be installed by the Installation Wizard without changing \r
+ the program source code. Just create your own XML configuration file and \r
+ implement installation scripts for the prerequisite products you need \r
+ and then use this XML file with the Installation Wizard. This can be done, \r
+ for example, for some </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux \r
+ </font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">platform which is not supported \r
+ directly by the Installation Wizard. See </font></span><a href="#xml_files"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Modifying XML configuration file</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><a href="#new_products"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Implementing \r
+ installation scripts for the new products</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ sections for more information. </font></span></p>\r
+\r
+<h3 class="whs9"><a name=gui_mode></a>GUI mode</h3>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The </font></span><font style="color: #ff0000;"\r
+                                                                                                       color=#FF0000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Installation Wizard</font></span></font><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ GUI has been developed using </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Trolltech's \r
+ </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Qt 3.0.5 </B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">toolkit. After launching the Installation Wizard \r
+ in the GUI mode the wizard window is shown to the user. This wizard guides \r
+ the user through several subsequent pages. To navigate between the pages \r
+ use </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Next&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Back&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> buttons in the lower part of the wizard window. \r
+ The </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Cancel&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> button closes the wizard window&nbsp;and quits \r
+ the installation procedure after the user's confirmation. The </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Help&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ button opens an additional window to show help information. </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The first &quot;</font></span><span style="font-style: italic; font-size: 12pt;"><font size=3 style="font-size:12pt;"><I>Introduction&quot;</I></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> page is shown in </font></span><a href="#IntroPage"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure 1</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. \r
+ Skip this page by clicking </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Next&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">: </font></span></p>\r
+\r
+<a name=IntroPage></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img alt="Intro page" src="intropage.png" width="586px" height="364px" border="0" class="img_whs10"> </font></span></p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 1:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Introduction&quot; \r
+ page</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In the second page you are proposed to \r
+ enter the target directory where the SALOME platform should be installed \r
+ to. You can also click </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Browse...&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and choose the destination folder using the \r
+ standard browse directory dialog box. <br>\r
+If the directory you want to install products to does not exist you are \r
+ prompted to confirm directory creation. If you type a wrong directory \r
+ path, or if you do not have write permissions for the directory you use, \r
+ the corresponding message box is shown.</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">You can also change the temporary directory \r
+ (which is used to store temporary files required for the installation).<br>\r
+In the bottom part of the window the total disk space required for the \r
+ installation and for the temporary files is displayed (see below for more \r
+ details).</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In the GUI mode the Installation Wizard \r
+ provides two different options to install the SALOME platform: </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>basic</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ (default option) and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>advanced.</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> In the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>basic</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> mode the user should enter the target installation \r
+ directory and temporary folder. All other installation options are taken \r
+ from the XML configuration file (see </font></span><a href="#Product_page1"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Fig.2</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">):</font></span></p>\r
+\r
+<a name=Product_page1></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img alt="Intro page" src="productpage1.png" width="586px" height="364px" border="0" class="img_whs10"> </font></span></p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 2:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Installation settings&quot; \r
+ </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In addition, you have a choice to use \r
+ &quot;Install all products from sources&quot; check box. If this option \r
+ is turned on, all the products will be installed from the sources (using \r
+ their own build procedures). This check box corresponds to the </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>--all-from-sources</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>-a</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) option of the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>runInstall</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> script (see </font></span><a href="#install_from_wizard"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">). \r
+ </font></span></p>\r
+\r
+<p class="whs11"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs12"></font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B> \r
+ Installation of all products from sources is a long-time operation.</B></font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To switch to the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>advanced</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> option, click </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;More...&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (see </font></span><a href="#ProductPage2"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Fig.3</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> ).</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In the advanced mode you have a possibility \r
+ to select products to be installed. Each product can have several options \r
+ of installation: you have a possibility to use the native product (provided \r
+ with Linux distribution and installed in the system folders), install \r
+ already precompiled binaries, build the product from sources or not install \r
+ it at all. Available options and default option are taken from the XML \r
+ configuration file. You can mark the products you want to install by clicking \r
+ the corresponding radio-buttons in the list view in the left part of the \r
+ page. <br>\r
+Note, that some products may require some other pre-requisite products \r
+ to be installed (or these prerequisite products should be already available \r
+ on your computer). The installation procedure has a special feature to \r
+ automatically mark these products in the list view. For example, in order \r
+ to install </font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">PyQt</font></span></i></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> it is necessary to have </font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">gcc, \r
+ Python</font></span></i></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">,</font></span><b><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Qt</font></span></i></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ and </font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Sip</font></span></i></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> installed. Therefore all these products will \r
+ also be &nbsp;turned \r
+ on when you check on </font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">PyQt</font></span></i></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. This feature can be switched off by clicking \r
+ the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Automatic dependencies&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> checkbox. Turn on this checkbox if you want \r
+ all prerequisite products to be automatically checked when you select \r
+ some product to be installed. Turn off this checkbox if you want to disable \r
+ this feature.</font></span></p>\r
+\r
+<a name=ProductPage2></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><img src="productpage.png" alt="Products page" width="586px" height="525px" border="0" class="img_whs13"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 3:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Installation settings&quot; \r
+ page in the 'advanced' mode</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">If you want to use native products (like \r
+ </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>gcc</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>tcl</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, etc.), select </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;use \r
+ native&quot; </font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">option. <br>\r
+Special button in the right part of the page - </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Unselect \r
+ All&quot; </font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">- allows to reset \r
+ quickly all products to the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;not \r
+ install&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> state. </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">There are also two checkboxes on this \r
+ page: </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;SALOME sources&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;SALOME \r
+ binaries&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. These three-state \r
+ checkboxes allow quick selecting/unselecting sources/binaries packages \r
+ of SALOME modules for installation.</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In addition, when some SALOME sources \r
+ are selected, one more check box becomes available: </font></span><span style="font-style: italic; font-size: 12pt;"><font size=3 style="font-size:12pt;"><I>&quot;Build \r
+ SALOME sources&quot;</I></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. If this option \r
+ is turned on, the selected SALOME modules will be built and installed \r
+ from sources.</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><br>\r
+&nbsp;</B></font></span></p>\r
+\r
+<p class="whs11"><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"> If this check \r
+ box is turned on, the corresponding SALOME module binaries package installation \r
+ is disabled, because of &nbsp;SALOME \r
+ module sources and binaries packages conflict </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">(see \r
+ </font></span><a href="#ProductPage3"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Fig. 4</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> below). </font></span></p>\r
+\r
+<a name=ProductPage3></a>\r
+\r
+<p align="center" class="whs1"><img src="productpage2.png" alt="Products page" width="586px" height="525px" border="0" class="img_whs15"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 4:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Build SALOME sources&quot; \r
+ check box usage</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The box at the right side of the page \r
+ displays the information about currently highlighted product: name, version \r
+ and short description, required disk space, disk space required for temporary \r
+ files, list of prerequisites (this information is provided in the XML \r
+ file) and current user choice. </font></span></p>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Disk \r
+ space required:&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> field \r
+ displays how much disk space on the hard drive is required for installation \r
+ of selected products. </font></span>\r
+\r
+<p class="whs11"><b \r
+ style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></font></span></b><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Please, \r
+ take into account that the displayed amount of required disk space is \r
+ approximate and may differ when you install products on your hard drive.</B></font></span><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The installation procedure uses a special \r
+ directory to store temporary files. The </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Space \r
+ for temporary files:&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> field \r
+ shows the information about required disk space on the hard drive for \r
+ extracting and compiling the selected products. You can change the temporary \r
+ directory - just type a path to the folder you want to use or click on \r
+ the corresponding </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Browse...&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> button. </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><br>\r
+&nbsp;</B></font></span></p>\r
+\r
+<p class="whs11"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></b></font></span><b><span \r
+ style="font-weight: normal; font-size: 12pt;"><font size=3 style="font-size:12pt;">A</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">ctually, \r
+ temporary files are not stored directly in the directory entered by the \r
+ user. The Installation Wizard creates an additional folder in this directory \r
+ named something like INSTALLWORK</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>XXXXX</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> where XXXXX is a unique number. This allows \r
+ to launch several Installation Wizards simultaneously. This temporary \r
+ directory is removed automatically when the installation finishes.</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The installation procedure also checks \r
+ the available disk space. If there is not enough disk space on your hard \r
+ drive you will see a corresponding error message box. </font></span></p>\r
+\r
+<p class="whs11"><b \r
+ style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14">You are strongly recommended not to use directory names containing \r
+ spaces. </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Otherwise you can experience \r
+ some troubles with the installation.</font></span><b><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span></b></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To proceed further click </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Next&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. \r
+ At this moment the program will make some tests to check installation \r
+ settings: if there is enough disk space on the hard drive, check for native \r
+ products installation, dependencies (prerequisites) for each product you \r
+ have selected to be installed. If any test fails you will see the corresponding \r
+ warning message box. Otherwise the wizard will proceed to the next page: \r
+ </font></span></p>\r
+\r
+<a name=ChoicePage></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><img src="choicepage.png" alt="Choice page" width="586px" height="485px" border="0" class="img_whs16"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 5:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Check your choice&quot; \r
+ page</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This page summarizes the installation \r
+ options you've made on the previous pages. You can check again your choice \r
+ and change it if necessary by getting back to the previous page. <br>\r
+When you are sure that everything is OK, click </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Next&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> to follow to the </font></span><a href="#ProgressPage"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">next page</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. \r
+ </font></span></p>\r
+\r
+<a name=ProgressPage></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><img alt="Progress page" src="progresspage1.png" width="586px" height="364px" border="0" class="img_whs10"></p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 6:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Installation progress&quot; \r
+ page</font></span></p>\r
+\r
+<p class="whs17"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To start \r
+ installation of the selected products click &quot;Start&quot;. It launches \r
+ the shell installation script and you will be able to see the output of \r
+ the script in the &nbsp;dialog \r
+ topmost frame. If any errors occur during the installation progress the \r
+ corresponding messages will be printed to the log window in bold red font.</font></span></p>\r
+\r
+<p class="whs17"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">It is possible \r
+ to break the installation at any time by clicking &quot;Stop&quot;. Then \r
+ you can get back to the previous pages if you wish to change installation \r
+ settings or restart installation by pressing again &quot;Start&quot; button.</font></span></p>\r
+\r
+<p class="whs11"><b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"> I</B></font></span></b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>n the current implementation \r
+ it is not possible to resume the stopped installation process; it will \r
+ be re-started from the very beginning.</B></font></span><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<a name=ProgressPage1></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><img alt="Progress page" src="progresspage.png" width="586px" height="364px" border="0" class="img_whs10"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 7:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Installation progress&quot; \r
+ page: installation in progress</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Installation \r
+ Status&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> frame window shows \r
+ you the progress of installation. &quot;</font></span><font style="color: #ff0000;"\r
+                                                                                                               color=#FF0000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Waiting</font></span></font><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot; \r
+ status means that installation of this product has not been started yet. \r
+ The product currently being installed is marked as &quot;</font></span><font \r
+ style="color: #ff9900;"\r
+       color=#FF9900><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Processing</font></span></font><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;. All installed products have &quot;</font></span><font \r
+ style="color: #33ff33;"\r
+       color=#33FF33><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Completed</font></span></font><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot; status. </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">You can abort installation and close \r
+ the installation procedure using </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Cancel&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> button. </font></span></p>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; </font></span>\r
+\r
+<p class="whs11"><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14">T</b>his button sends the signal &quot;SIGTERM&quot; to the \r
+ shell script. The script tries to clear all temporary files. The process \r
+ of removing temporary files can take some time, so the installation wizard \r
+ will wait 3 seconds before closing.</B></font></span><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">At the end of installation (all selected \r
+ products have been installed successfully) you can go back to the previous \r
+ pages to start a new installation or click </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Next&quot; \r
+ </font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">to go the Readme page: </font></span></p>\r
+\r
+<a name=readmepage></a>\r
+\r
+<p align="center" class="whs1">&nbsp;</p>\r
+\r
+<p align="center" class="whs1"><img alt="Read page" src="readmepage.png" width="586px" height="484px" border="0" class="img_whs18"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 8:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &quot;Finish installation&quot; \r
+ page</font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In this page you can read important information \r
+ about the Instalation Wizard itself and some tips: how to run and test \r
+ SALOME or how to build SALOME from the sources. This is the contents of \r
+ the README file which you can find in the root directory of the Installation \r
+ Wizard. <br>\r
+You can also launch SALOME Desktop from this page or read the Release Notes \r
+ file by clicking on the corresponding buttons in the lower part of the \r
+ page (see </font></span><a href="#xml_files"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><a href="#finish_buttons"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for more information about customizing these \r
+ buttons).</font></span></p>\r
+\r
+<h3 class="whs9"><a name=batch_mode></a>Batch mode</h3>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To launch the Installation Wizard in \r
+ the batch mode use </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>-b</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>--batch</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) parameter.<br>\r
+In this mode the GUI wizard is not shown but all the installation status \r
+ is displayed directly in the console. In the batch mode the user does \r
+ not have a possibility to change installation settings which are given \r
+ in the configuration file, except target and temporary directories which \r
+ can be overridden by the corresponding command line options.<br>\r
+The only exception is </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>--all-from-sources</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>-a</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) option which enables special installation mode \r
+ in which all the products (including SALOME modules) are installed from \r
+ sources, ignoring the default mode defined in the XML configuration file \r
+ (see </font></span><a href="#install_from_wizard"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for details).</font></span></p>\r
+\r
+<p align="center" class="whs1">&nbsp;<a \r
+ name=BatchMode></a><br>\r
+<br>\r
+<img alt="Batch mode" src="batchmode.png" width="660px" height="410px" border="0" class="img_whs19"> </p>\r
+\r
+<p align="center" class="whs1"><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Figure \r
+ 9:</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Batch mode</font></span></p>\r
+\r
+<h3 class="whs9"><a name=env_files></a>Environment files</h3>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">During the process of installation the \r
+ script creates some environment files to simplify the procedure of launching \r
+ SALOME. These shell scripts set all necessary environment variables for \r
+ all products you have installed. To learn how installation scripts collects \r
+ the environment, see </font></span><a href="#pick_up_env"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. These files are: </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.csh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> + </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the </font></span><span style="font-style: italic;\r
+                                                                                                               font-weight: bold;\r
+                                                                                                               font-size: 12pt;"><font size=3 style="font-size:12pt;"><I><B>KERNEL \r
+ module</B></I></font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> sources</font></span></i></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-style: italic;\r
+                                                                                                       font-weight: bold;\r
+                                                                                                       font-size: 12pt;"><font size=3 style="font-size:12pt;"><I><B>KERNEL \r
+ module</B></I></font></span><b><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> binaries</font></span></i></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> root directories and </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">env_products.csh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> + </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">env_products.sh \r
+ </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_build.csh \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">+ </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_build.sh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the target installation directory.</font></span></p>\r
+\r
+<p class="whs11"><b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></B></font></span></b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Note:</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ there is some difference between these files: </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_build.*</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> files are optimized to be used for building \r
+ SALOME modules from sources (see </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>README \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">file provided with the installation \r
+ procedure on the CD). The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_products.*</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (and</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B> \r
+ salome.*</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) files are optimized for \r
+ SALOME launching. The behavior is defined by the environment variable</font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"> <font size=3 style="font-size:12pt;"><B></B></font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">ENV_FOR_LAUNCH</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> which is set to </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>0</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in env_build.* files and to </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>1</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in env_products.* (salome.*) files. </font></span></p>\r
+\r
+&nbsp;<br>\r
+\r
+\r
+<hr class="whs7">\r
 \r
-<p>&nbsp;</p>\r
 \r
-<p>To proceed further click the <i>&quot;Next&quot;</i> button. At this \r
- moment the program will make some tests to check installation settings: \r
- whether there is enough disk space on the hard drive, whether native products \r
- are preinstalled, and the dependencies (prerequisites) for each product \r
- you have selected to be installed. If any test fails you will see the \r
- corresponding warning message box. Otherwise the wizard will follow to \r
- the next page:</p>\r
+<h3><a name=check_version_proc></a>Notes on<font style="color: #ff0000;"\r
+                                                                                               color=#FF0000> check products \r
+ version</font> procedure</h3>\r
 \r
-&nbsp;\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Unfortunately there is no exact algorithm \r
+ to identify the product version under Linux platform. The information \r
+ in this section gives an idea how the version is checked for the native/preinstalled \r
+ products (this information refers to the base platform </font></span><span style="font-size: 12pt; color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;">Linux \r
+ Mandrake 10.1</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">; and the same algorithms \r
+ are used for other platforms). <br>\r
+The general rule for all products is that the path to the binaries should \r
+ be set via the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable, path to the libraries \r
+ should be set via the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>LD_LIBRARY_PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> variable and the python modules should be available \r
+ via the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PYTHONPATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> variable. </font></span>\r
+\r
+<p class="whs11"><b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></B></font></span></b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Note:</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ the information given in this section refers to the prerequisite products \r
+ for SALOME version 3.2.4. </font></span></p>\r
 \r
-<p align="center" class="whs14"><img src="../pics/choicepage.png" x-maintain-ratio="TRUE" width="586px" height="553px" border="0" class="img_whs20"></p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">gcc 3.4.1</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>gcc -dumpversion</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>gcc</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version should be equal \r
+ to &quot;3.4.1&quot;. It is recommended to use native gcc on Mandrake \r
+ 10.1. </font></span>\r
 \r
-<p align="center" class="whs14"><b style="font-weight: bold;">Figure 3:</b> &quot;Check \r
- your choice&quot; page</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">tcl/tk 8.4.5</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number for </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>tcl/tk</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> can be found in tclConfig.sh and tkConfig.sh \r
+ files (</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>TCL_VERSION</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>TK_VERSION</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> variables correspondingly). Version number should \r
+ be equal to &quot;8.4&quot; (release number is not checked). <br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>TCLHOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable to the root directory of \r
+ tcl/tk installation.<br>\r
+It is recommended to use native tcl/tk on Mandrake 10.1. </font></span>\r
 \r
-<p>This page summarizes the installation settings you've made on the previous \r
- pages. You can check again your choice to change it if necessary. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">boost 1.31.0</font></span></li>\r
+</ul>\r
 \r
-&nbsp; \r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>version.hpp</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ file which is part of the boost distribution. This file defines the </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>BOOST_VERSION</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> macro which should be equal to &quot;103100&quot;. \r
+ In addition the existence of boost libraries is checked. <br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>BOOSTDIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of boost. </font></span>\r
 \r
-<p>When you are sure that everything is OK, press the <i>&quot;Next&quot;</i> \r
- button to follow to the next page. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Python 2.3.4</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>python -V</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>python</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version number should \r
+ be equal to &quot;2.3.4&quot;. It is recommended to use native Python \r
+ on Mandrake 10.1.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PYTHONHOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of Python. </font></span>\r
 \r
-<p align="center" class="whs14">&nbsp;<img src="../pics/progresspage.png" x-maintain-ratio="TRUE" width="586px" height="366px" border="0" class="img_whs21"></p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Swig 1.3.24</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>swig -version</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>swig</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version number should \r
+ be equal to &quot;1.3.24&quot;. </font></span>\r
 \r
-<p align="center" class="whs14"><b style="font-weight: bold;">Figure 4:</b> &quot;Installation \r
- progress&quot; page</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Qt 3.3.3</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>qglobal.h</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ file which is part of the Qt distribution. This file defines </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>QT_VERSION_STR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> macro which should be equal to &quot;3.3.3&quot;. \r
+ It is recommended to use native Qt on Mandrake 10.1.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>QTDIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of qt. </font></span>\r
 \r
-<p>To start installation of the selected products click <i>&quot;Start&quot;</i> \r
- button. It launches the shell installation script and you will be able \r
- to see the output of the script in the dialog's topmost &nbsp;frame. \r
- In case of any installation problems (for example, you have accidentally \r
- removed the temporary directory) the script will ask you: <i>&quot;Would \r
- you like to continue : (Y,N) ?&quot;</i>. You can answer this question \r
- by typing [Y] or [N] in the middle text edit control frame. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">msg2qm</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp; </p>\r
+<span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>msg2qm</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ is a Qt tool which is used to convert text *.po files to *.qm resource \r
+ files. Unfortunately this tool is not included to the Linux distribution \r
+ and provided only in Qt sources package. This is the reason why this tool \r
+ is supplied with the SALOME Installation Wizard.<br>\r
+There is no way to check the version number of msg2qm tool. Just set </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MSG2QM_ROOT</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ environment variable if you have a preinstalled version of msg2qm tool. \r
+ </font></span>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../tip1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs22"></b> press [Enter] when you finish \r
- typing data. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Open CASCADE 6.1.2a2</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Standard_Version.hxx</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> file which is part of the Open CASCADE distribution. \r
+ This file defines </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>OCC_VERSION_MAJOR,</B></font></span><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>OCC_VERSION_MINOR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>OCC_VERSION_MAINTENANCE</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> macros which should refer to version 6.1.2.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>CASROOT</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of Open CASCADE. </font></span>\r
 \r
-<p>The <i>&quot;Installation Status&quot;</i> frame window shows you the \r
- progress of installation. It contains a list of all selected products \r
- with brief descriptions. &quot;<font style="color: #ff0000;"\r
-                                                                               color=#FF0000>Waiting</font>&quot; \r
- description means that installation of this product have not started yet. \r
- Currently the product being installed is marked as &quot;<font style="color: #ff9900;"\r
-       color=#FF9900>Processing</font>&quot;. All installed products have \r
- &quot;<font style="color: #33ff33;"\r
-                       color=#33FF33>Completed</font>&quot; description. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">qwt 4.2.0/0.4.2</font></span></li>\r
+</ul>\r
 \r
-<p>You can abort installation and close the installation procedure using \r
- the <i>&quot;Cancel&quot;</i> button. It sends the signal &quot;SIGTERM&quot; \r
- to the shell script. The script has a signal handler and will try to clear \r
- all temporary files. The process of removing temporary files can take \r
- some time, so the installation wizard will wait 3 seconds before closing. \r
- </p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>qwt_global.h</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ file which is part of the qwt distribution. This file defines </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>QWT_VERSION_STR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> macro which should be equal to &quot;4.2.0&quot;.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>QWTHOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of qwt. </font></span>\r
 \r
-<p>At the end of installation (when all selected products have been installed \r
- successfully) you can go back to the previous pages to start a new installation \r
- or click the <i>&quot;Next&quot;</i> button to go the Readme page: </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">hdf 5-1.6.4</font></span></li>\r
+</ul>\r
 \r
-&nbsp;\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>libhdf5.settings</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> file which is part of the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>hdf5</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> distribution. Version should be equal to 1.6.4.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>HDF5HOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of hdf5. </font></span>\r
 \r
-<p align="center" class="whs14"><img src="../pics/readmepage.png" x-maintain-ratio="TRUE" width="586px" height="486px" border="0" class="img_whs23"></p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">med 2.2.3</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Unfortunately there is no formal way to \r
+ check med version number. We check existence of libmed.so.1.0.2 library \r
+ on the computer. If you have any problem with a preinstalled version of \r
+ med, please, reinstall it.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MED2HOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of med. </font></span>\r
 \r
-<p align="center" class="whs14"><b style="font-weight: bold;">Figure 5:</b> &quot;Finish \r
- installation&quot; page</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Vtk 4.2.6</font></span></li>\r
+</ul>\r
 \r
-<p align="center" class="whs14">&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Unfortunately there is no formal way to \r
+ check VTK version number. We just check the existence of </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>libvtkCommon.so</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> library on the computer and hope that it is \r
+ of version we need. If you have any problem with a preinstalled version \r
+ of Vtk, please, reinstall it.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>VTKHOME</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of Vtk. </font></span>\r
 \r
-<p>In this page you can read some important information about the Instalation \r
- Wizard itself and some hints: how to run and test SALOME or how to build \r
- SALOME from the sources. This is the content of the README file which \r
- you can find in the root directory of the Installation Wizard. <br>\r
-You can also launch SALOME Desktop from this page by clicking the <i>&quot;Launch \r
- SALOME&quot; </i>button. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">OmniORB 4.0.5, OmniORBpy \r
+ 2.5, OmniNotify 2.1</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">We just check existence of some omniORB \r
+ libraries and executable on the computer, like </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>libomniORB4.so.0.5</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>_omnipymodule.so.2.4</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>libCOSNotify4.so.0.1</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>notifd</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>OMNIORBDIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of omniORB products. </font></span>\r
 \r
-<p><a name=env_files></a>During the process of installation the script \r
- creates some environment files to simplify the procedure of launching \r
- SALOME. These shell scripts set all necessary environment variables for \r
- all products you have installed. To learn how installation scripts collect \r
- the environment, see&nbsp;<a href="#pick_up_env"> here</a>. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">sip 4.1</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>sip -V</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>sip</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version number should \r
+ be equal to &quot;4.1&quot;.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>SIPDIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable to the directory where \r
+ you have sip executable preinstalled. </font></span>\r
 \r
-<p>These files are: <b>salome.csh</b> + <b>salome.sh</b> in the <span style="font-weight: bold;"><B>KERNEL \r
- module</B></span><b><i> sources</i></b> and <span style="font-weight: bold;"><B>KERNEL \r
- module</B></span><b><i> binaries</i></b> root directories and <b>env_products.csh</b> \r
- + <b>env_products.sh </b>in the target directory.</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">PyQt 3.13</font></span></li>\r
+</ul>\r
 \r
-&nbsp; \r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is defined by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>pyqtconfig.py</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Python module file which is part of the </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PyQt</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ distribution. Version should be equal to &quot;3.13&quot;.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PYQTDIR \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">environment variable if you have \r
+ a preinstalled version of PyQt. </font></span>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../tip1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs22"></b> <b>salome.(c)sh</b> and <b>env_products.(c)sh \r
- files</b> are slightly different: env_products.* files are optimized to \r
- be used for the building of SALOME modules from the sources (see <span \r
- style="font-weight: bold;"><B>README </B></span>file provided with the installation \r
- procedure on the CD). The salome.* files are optimized for the SALOME \r
- launching. This difference is defined by the environment variable<span \r
- style="font-weight: bold;"> <B></B></span><b>ENV_FOR_LAUNCH</b> which is set \r
- to 0 in env_products.* files and to 1 in salome.* files. </p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">netgen 4.5</font></span></li>\r
+</ul>\r
 \r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Unfortunarely we can't find anything about \r
+ netgen version. We just check if </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>NETGENROOT</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable is set.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>NETGENROOT</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable if you have a preinstalled \r
+ version of netgen mesher. </font></span>\r
 \r
-<hr class="whs2">\r
+<br><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; </font></span>\r
 \r
+<p class="whs11"><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></b>Note: </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">netgen 4.5 \r
+ provided with the SALOME installation Wizard has been patched to improve \r
+ its performance. </font></span></p>\r
 \r
-<h3><a name=check_version_proc></a>Notes on<font style="color: #ff0000;"\r
-                                                                                               color=#FF0000> check products \r
- version</font> procedure</h3>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Numeric 23.7</font></span></li>\r
+</ul>\r
 \r
-<p>Unfortunately under Linux platform there is no exact algorithm to identify \r
- the product's version. The table below gives an idea how the version is \r
- checked for the preinstalled products for the Linux Mandrake 10.1 platform. \r
- </p>\r
-\r
-<p>&nbsp; </p>\r
-\r
-<div align=left>\r
-<table nosave x-use-null-cells cellspacing="0" background="../texture_horiz_ltbluebubbles.jpg" width="100%" class="whs24">\r
-\r
-<tr nosave valign="middle" class="whs25">\r
-<th nosave class="whs26">\r
-<p align="center" class="whs27">Product </th>\r
-<th nosave class="whs28">\r
-<p align="center" class="whs27">Algorithm of checking </th>\r
-<th nosave class="whs28">\r
-<p align="center" class="whs27">Preliminary steps before launching <br>\r
-the installation procedure </th>\r
-<th nosave class="whs29">\r
-<p align="center" class="whs27">Notes </th></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">gcc 3.4.1</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>ver</B></span>=`gcc \r
- -dumpversion`</td>\r
-<td class="whs31">\r
-<p align="center" class="whs14">- </td>\r
-<td class="whs31">It is recommended to use the native \r
- gcc for Mandrake 10.1.</td></tr>\r
-\r
-<tr nosave valign="middle" class="whs25">\r
-<td class="whs30">tcl 8.4.5</td>\r
-<td nosave class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- check if <span style="font-weight: bold;"><B>TCLHOME</B></span> variable is set<span \r
- style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of tclsh8.4<span style="font-weight: bold;"><B><br>\r
-3)</B></span> existence of wish8.4 <span style="font-weight: bold;"><B><br>\r
-4)</B></span> existence of libtcl8.4.so <span style="font-weight: bold;"><B><br>\r
-5)</B></span> existence of libtk8.4.so</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>TCLHOME</B></span> \r
- if you have a preinstalled version of tcl. <br>\r
-add a directory where libraries can be found to the <span style="font-weight: bold;"><B>LD_LIBRARY_PATH</B></span></td>\r
-<td class="whs31">Unfortunately there is no strict \r
- way to check the tcl version number.<br>\r
-It is recommended to use the native tcl/tk for Mandrake 10.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td valign="top" class="whs32">boost 1.31.0</td>\r
-<td valign="top" class="whs33"><span style="font-weight: bold;"><B>1)</B></span> check if <span \r
- style="font-weight: bold;"><B>BOOSTDIR</B></span> variable is set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=`egrep 'BOOST_VERSION \r
- [0-9]+' ${BOOSTDIR}/boost/version.hpp | sed 's/.*BOOST_VERSION \([0-9]\+\)/\1/g'`</td>\r
-<td valign="top" class="whs33">set <span style="font-weight: bold;"><B>BOOSTDIR</B></span> if \r
- you have a preinstalled version of boost</td>\r
-<td valign="top" class="whs33">we use file version.hpp in the boost distribution to get \r
- the version information.<span style="font-weight: bold;"><B><br>\r
-ver</B></span> should be equal to 103100.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Open CASCADE \r
-<p>Technology 6.1</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- check if <span style="font-weight: bold;"><B>CASROOT</B></span> variable is set<span \r
- style="font-weight: bold;"><B><br>\r
-2)</B></span> ver_major=`grep &quot;!define OCC_VERSION_MAJOR&quot; ${CASROOT}/inc/Standard_Version.hxx \r
- | awk '{print $3}'`<span style="font-weight: bold;"><B><br>\r
-3)</B></span> ver_minor=`grep &quot;!define OCC_VERSION_MINOR&quot; ${CASROOT}/inc/Standard_Version.hxx \r
- | awk '{print $3}'`<span style="font-weight: bold;"><B><br>\r
-4)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=&quot;$ver_major.$ver_minor&quot;<span \r
- style="font-weight: bold;"><B><br>\r
-5)</B></span> Check the existence of libStdPlugin.so in OpenCASCADE distribution,</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>CASROOT</B></span> \r
- if you have a preinstalled version of Open CASCADE</td>\r
-<td class="whs31">Open CASCADE's Standard_Version.hxx \r
- file provides the version information.<span style="font-weight: bold;"><B><br>\r
-ver</B></span> should be equal to 6.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Python 2.3.4</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- <span style="font-weight: bold;"><B>PYTHONHOME</B></span> variable should be \r
- set<span style="font-weight: bold;"><B><br>\r
-2)</B></span> isPython=`which python` <span style="font-weight: bold;"><B><br>\r
-3)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=`python -V`</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>PYTHONHOME</B></span> \r
- to root Python distribution folder;<br>\r
-add the directory where python can be found to the <span style="font-weight: bold;"><B>PATH</B></span> \r
- variable</td>\r
-<td class="whs31">Python should exist and <span style="font-weight: bold;"><B>ver</B></span> \r
- should be equal to 2.3.4 <br>\r
-It is recommended to use the native Python for Mandrake 10.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Swig 1.3.24</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>ver</B></span>=`swig \r
- -version 2&gt;&amp;1 | grep -i version | awk '{ print $3 }' | sed -e 's/^\([0-9.]*\)\(.*\)/\1/'`</td>\r
-<td class="whs31">add the directory where swig binary \r
- can be found to the <span style="font-weight: bold;"><B>PATH</B></span> variable</td>\r
-<td class="whs31">Swig should exist and <span style="font-weight: bold;"><B>ver</B></span> \r
- should be equal to 1.3.24.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Qt 3.3.3</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- QTDIR</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2) ver</B></span>=`grep &quot;QT_VERSION_STR&quot; ${QTDIR}/include/qglobal.h \r
- | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\&quot;%%g'`</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>QTDIR</B></span> \r
- if you have a preinstalled version of qt</td>\r
-<td class="whs31">Qt's qglobal.h file provides version \r
- information: <span style="font-weight: bold;"><B>ver</B></span> should be equal \r
- to 3.3.3.<br>\r
-It is recommended to use the native Qt for Mandrake 10.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs34">msg2qm (Qt 3.3.3 compatible)</td>\r
-<td class="whs35"><span style="font-weight: bold;"><B>MSG2QM_ROOT</B></span> \r
- variable should be set.</td>\r
-<td class="whs35">set&nbsp; <span style="font-weight: bold;"><B>MSG2QM_ROOT</B></span> \r
- if you have preinstalled version of msg2qm tool</td>\r
-<td class="whs35">msg2qm is a Qt tool used to convert \r
- text *.po files to *.qm resource files. Unfortunately this tool is not \r
- included in the Qt distribution and is provided only in its sources package. \r
- We distribute this tool with the Installation Wizard.<br>\r
-In addition there is no way to check the version number of msg2qm tool.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Qwt 4.2.0/0.2.4</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- <span style="font-weight: bold;"><B>QWTHOME</B></span> variable should be set.<span \r
- style="font-weight: bold;"><B><br>\r
-2)</B></span> check if libqwt.so.4.2.0 exists</td>\r
-<td class="whs31">set&nbsp; <span style="font-weight: bold;"><B>QWTHOME</B></span> \r
- if you have a preinstalled version of qwt</td>\r
-<td class="whs31">Unfortunately there is no strict \r
- way to check the qwt version number.<br>\r
-We try to find libqwt.so.4.2.0 in the ${<span style="font-weight: bold;"><B>QWTHOME</B></span>}/lib \r
- folder.&nbsp;</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Hdf 51.6.3</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- HDF5HOME</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of libhdf5.so.0.0.0 <span style="font-weight: bold;"><B><br>\r
-3)</B></span> existence of libhdf5.settings<span style="font-weight: bold;"><B><br>\r
-4)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=`grep &quot;HDF5 \r
- Version:&quot; ${HDF5HOME}/lib/libhdf5.settings | awk '{print $3}'`</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>HDF5HOME</B></span> \r
- if you have a preinstalled version of hdf</td>\r
-<td class="whs31">We try to find libhdf5.so.0.0.0 and \r
- libhdf5.settings in ${<span style="font-weight: bold;"><B>HDF5HOME</B></span>}/lib \r
- folder. <br>\r
-File libhdf5.settings contains the following version information: <br>\r
-HDF5 Version: 1.6.3</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Med 2.2.3</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- MED2HOME</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of libmed.so.1.0.1</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>MED2HOME</B></span> \r
- if you have a preinstalled version of med</td>\r
-<td class="whs31">Unfortunately there is no strict \r
- way to check the med version number.<br>\r
-We try to find libmed.so.1.0.1 in ${<span style="font-weight: bold;"><B>MED2HOME</B></span>}/lib \r
- folder. <br>\r
-If you have a problem with the preinstalled version of med, please, reinstall \r
- it.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Vtk 4.2.6</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- VTKHOME</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of libvtkCommon.so</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>VTKHOME</B></span> \r
- if you have a preinstalled version of vtk</td>\r
-<td class="whs31">Unfortunately there is no strict \r
- way to check the VTK version number.<br>\r
-We try to find libvtkCommon.so in ${<span style="font-weight: bold;"><B>VTKHOME</B></span>}/lib/vtk \r
- folder. <br>\r
-If you have a problem with the preinstalled version of vtk, please, reinstall \r
- it.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td valign="top" class="whs32">Netgen 4.5</td>\r
-<td valign="top" class="whs33"><span style="font-weight: bold;"><B>NETGENROOT</B></span> variable \r
- should be set. </td>\r
-<td valign="top" class="whs33">set <span style="font-weight: bold;"><B>NETGENROOT</B></span> if \r
- you have a preinstalled version of Netgen.</td>\r
-<td valign="top" class="whs33">Unfortunately we can't find anything about NETGEN version.<br>\r
-We just check if the <span style="font-weight: bold;"><B>NETGENROOT</B></span> \r
- environment variable is set. The NETGEN version should be patched.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">OmniORB 4.0.5, <br>\r
-OmniORBpy 2.5, <br>\r
-OmniNotify 2.1</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- OMNIORBDIR</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of libomniORB4.so.0.5 <span style="font-weight: bold;"><B><br>\r
-3)</B></span> existence of _omnipymodule.so.2.5 <span style="font-weight: bold;"><B><br>\r
-4)</B></span> existence of libCOSNotify4.so.0.1 <span style="font-weight: bold;"><B><br>\r
-5)</B></span> existence of notifd</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>OMNIORBDIR</B></span> \r
- if you have a preinstalled version of omni</td>\r
-<td class="whs31">We try to find several omni libraries \r
- and binaries in the ${<span style="font-weight: bold;"><B>OMNIORBDIR</B></span>}/lib \r
- and ${<span style="font-weight: bold;"><B>OMNIORBDIR</B></span>}/bin directories.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Numeric 23.7</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>ver</B></span>=`python \r
- -c 'import Numeric; print Numeric.__version__' 2&gt;/dev/null`</td>\r
-<td class="whs31">add the directory where&nbsp;you \r
- have the preinstalled version of Numeric package to your <span style="font-weight: bold;"><B>PYTHONHOME \r
- </B></span>variable</td>\r
-<td class="whs31">If you have problem with the preinstalled \r
- version of Numeric 23.7, please, reinstall it.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Sip 4.1</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- SIPDIR</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2) ver</B></span>=`${SIPDIR}/sip -V | awk '{print $1}'`</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>SIPDIR</B></span> \r
- to the directory where you have sip preinstalled</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>ver</B></span> \r
- should be equal to 4.1. </td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">PyQt 3.13</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- PYQTDIR</B></span> variable should be set.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of qt.so library</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>PYQTDIR</B></span> \r
- to the directory where you have PyQt preinstalled</td>\r
-<td class="whs31">Unfortunately we can't exactly check \r
- the PyQt version number. <br>\r
-We just try to find qt.so in ${<span style="font-weight: bold;"><B>PYQTDIR</B></span>}. \r
\r
-<p>Note that PyQt officially doesn't support Qt 3.3.3, but nevertheless \r
- it can be used.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Doxygen 1.4.6</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- existence of doxygen <span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of doxytag <span style="font-weight: bold;"><B><br>\r
-3)</B></span> existence of doxywizard<span style="font-weight: bold;"><B><br>\r
-4)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=`doxygen --version`</td>\r
-<td class="whs31">add the directory where you have \r
- doxygen binaries preinstalled to the&nbsp; <span style="font-weight: bold;"><B>PATH</B></span> \r
- variable.</td>\r
-<td class="whs31">doxygen, doxytag, doxywizard binaries \r
- should exist; <span style="font-weight: bold;"><B>ver</B></span> should be equal \r
- to 1.4.6.<br>\r
-If you have problems with the preinstalled version of doxygen, reinstall \r
- it. <br>\r
-It is recommended to use the native doxygen for Mandrake 10.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30">Graphviz 2.2.1</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1)</B></span> \r
- existence of dot binary.<span style="font-weight: bold;"><B><br>\r
-2)</B></span> <span style="font-weight: bold;"><B>ver</B></span>=`dot -V 2&gt;&amp;1 \r
- | awk '{print $3}'`</td>\r
-<td class="whs31">add the graphviz bin directory to \r
- the <span style="font-weight: bold;"><B>PATH</B></span> environment variable</td>\r
-<td class="whs31">We try to find dot program in the \r
- ${<span style="font-weight: bold;"><B>PATH</B></span>}.<span style="font-weight: bold;"><B><br>\r
-ver</B></span> should be equal to 2.2.1.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs30"><span style="font-weight: bold;"><B>MODULE</B></span> \r
- binaries<br>\r
-(where <span style="font-weight: bold;"><B>MODULE</B></span> = KERNEL, GUI, GEOM, \r
- ...)</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>1) \r
- MODULE_ROOT_DIR</B></span> variable should be set<span style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of VERSION file <span style="font-weight: bold;"><B><br>\r
-3) ver</B></span>=`cat ${<span style="font-weight: bold;"><B>MODULE_ROOT_DIR</B></span>}/bin/salome/VERSION \r
- | awk -F: '{print $NF}' | tr -d '[:space:]'`</td>\r
-<td class="whs31">set <span style="font-weight: bold;"><B>MODULE_ROOT_DIR</B></span> \r
- if you have preinstalled binaries of <span style="font-weight: bold;"><B>MODULE</B></span> \r
- version 3.2.0.</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>MODULE</B></span> \r
- binaries should exist and <span style="font-weight: bold;"><B>ver</B></span> \r
- should be equal to 3.2.0.</td></tr>\r
-\r
-<tr valign="middle" class="whs25">\r
-<td class="whs36"><span style="font-weight: bold;"><B>MODULE</B></span> \r
- sources<br>\r
-(where <span style="font-weight: bold;"><B>MODULE</B></span> = KERNEL, GUI, GEOM, \r
- ...)</td>\r
-<td class="whs37"><span style="font-weight: bold;"><B>1)</B></span> \r
- existence of <span style="font-weight: bold;"><B>MODULE_SRC_DIR</B></span> <span \r
- style="font-weight: bold;"><B><br>\r
-2)</B></span> existence of VERSION file <span style="font-weight: bold;"><B><br>\r
-3) ver</B></span>=`cat ${<span style="font-weight: bold;"><B>MODULE_SRC_DIR</B></span>}/bin/VERSION \r
- | awk -F: '{print $NF}' | tr -d '[:space:]'`</td>\r
-<td class="whs37">set <span style="font-weight: bold;"><B>MODULE_SRC_DIR</B></span> \r
- if you have preinstalled sources of <span style="font-weight: bold;"><B>MODULE</B></span> \r
- version 3.2.0.</td>\r
-<td class="whs31"><span style="font-weight: bold;"><B>MODULE</B></span> \r
- sources should exist and ver should be equal to 3.2.0.</td></tr>\r
-</table>\r
-</div>\r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>python -c 'import Numeric; \r
+ print Numeric.__version__'</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> command. \r
+ The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>python</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Numeric</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> module should be available for the Python (for \r
+ example it should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PYTHONPATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable). Version number should \r
+ be equal to &quot;23.7&quot;. If you have any problem with a preinstalled \r
+ version of Numeric 23.7, please, reinstall it.<br>\r
+Add the directory where&nbsp;you have a preinstalled version of Numeric \r
+ package to the the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PYTHONHOME \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">environment variable. </font></span>\r
 \r
-<p>&nbsp;</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">graphviz 2.2.1</font></span></li>\r
+</ul>\r
 \r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></b> For native products the installation \r
- procedure sets proper environment variables itself, and you do not need \r
- to set such variables like, e.g. <b>TCLHOME</b> or <b>PYTHONHOME</b>. \r
- <br>\r
-If you have native products installed to directories different from default \r
- ones (not <b>/usr/bin</b>, <b>/usr/lib</b>...), it is recommended to follow \r
- the above description. Or you should properly set <span style="font-weight: bold;"><B>PATH</B></span> \r
- and <span style="font-weight: bold;"><B>LD_LIBRARY_PATH</B></span> variables \r
- <b><font style="color: #ff0000;"\r
-                       color=#FF0000>before</font></b> starting the Installation Wizard. \r
- Otherwise the installation script will fail to find the preinstalled products.</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>dot -V</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>dot</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version number should \r
+ be equal to &quot;2.2.1&quot;.<br>\r
+Add </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>graphviz</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> bin directory to the the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. </font></span>\r
 \r
-<p>&nbsp;</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">doxygen 1.4.6</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp; </p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Version number is checked by </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>doxygen --version</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> command. The </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>doxygen</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> executable should be in the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable. Version number should \r
+ be equal to &quot;1.4.6&quot;. </font></span>\r
 \r
-<p class="whs18"><span \r
- style="font-weight: bold;"><B><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></b> </B></span>For some native products (e.g. gcc, Python) the \r
- rules of version checking are not so strict as described in the table. \r
- Only major and minor version numbers should coincide with the prerequisite. \r
- Release number can be larger. This is done to give a possibility to use \r
- native products for newer versions of Linux. If some native product has \r
- a version number larger than the one required by the installation procedure, \r
- the user will be prompted by the warning message like this: <i>&quot;You \r
- have a newer version of gcc installed on your computer than that is required \r
- (3.4.1). Continue?&quot;</i>. You can press the <i>&quot;Yes&quot;</i> \r
- button to proceed with the installation but in this case you should be \r
- aware of what you are doing. SALOME binaries (including other products) \r
- are compiled with the predefined prerequisites and most likely can not \r
- be run successfully if these products are not found. This can be only \r
- helpful if you intend to build all products from the sources.</p>\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-weight: bold;\r
+                                                                       font-size: 12pt;\r
+                                                                       color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;"><B>SALOME </B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">module </font></span><span style="font-weight: bold;\r
+                                                                                                               font-size: 12pt;\r
+                                                                                                               color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;"><B>sources</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (3.2.4).</font></span></li>\r
+</ul>\r
 \r
-<p>&nbsp;</p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">For each SALOME module sources package (KERNEL, \r
+ GUI, GEOM, etc...) the root directory contains file configure.in (configure.ac) \r
+ which defines version information.<br>\r
+Set the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>&lt;MODULE&gt;_SRC_DIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable for each SALOME </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MODULE</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ sources package installed (where </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MODULE</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> is KERNEL, GUI, GEOM, ...). </font></span>\r
 \r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><span style="font-weight: bold;\r
+                                                                       font-size: 12pt;\r
+                                                                       color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;"><B>SALOME </B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">module </font></span><span style="font-weight: bold;\r
+                                                                                                               font-size: 12pt;\r
+                                                                                                               color: rgb(0, 0, 153);"><font size=3 style="font-size:12pt;"><B>binaries \r
+ </B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">(3.2.4)</font></span></li>\r
+</ul>\r
 \r
-<hr class="whs2">\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">For each SALOME module binaries package \r
+ (KERNEL, GUI, GEOM, etc...) the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>bin/salome</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> directory contains file </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>VERSION</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> which defines version information.<br>\r
+Set </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>&lt;MODULE&gt;_ROOT_DIR</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> environment variable for each SALOME </font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MODULE</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ binaries package installed (where </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>MODULE</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> is KERNEL, GUI, GEOM, ...). </font></span>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">If you have native products installed \r
+ to directories different from default ones (not </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">/usr/bin</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">/usr/lib</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">...), it is recommended to follow the above mentioned \r
+ instructions. Or you should properly set </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>LD_LIBRARY_PATH</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> variables </font></span><b><font style="color: #ff0000;"\r
+                                                                                                       color=#FF0000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">before</font></span></font></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ starting the Installation Wizard. Otherwise the installation script will \r
+ fail to find preinstalled/native products. </font></span></p>\r
+\r
+<p class="whs11"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></b></font></span><b \r
+ style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Note:</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for some native products (e.g. gcc, Python) \r
+ the rules of version checking are not so strict as described above. Only \r
+ major and minor version numbers should coincide with the prerequisite. \r
+ Newer version of the product can also be used. If some native product \r
+ has version number larger than that required by the installation procedure, \r
+ the user will be prompted by the warning message like this: </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;You have newer version of gcc installed \r
+ on your computer than that is required (3.4.1). Continue?&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. You can click </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Yes&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> to proceed with the installation but in this \r
+ case you should be aware of what you are doing. SALOME binaries (including \r
+ other products) are compiled with the predefined prerequisites and most \r
+ likely can not be run successfully if these products are not found. This \r
+ can be helpful only if you plan to build all products from sources. </font></span></p>\r
+\r
+\r
+<hr class="whs7">\r
 \r
 \r
 <h3><a name=pick_up_env></a>Pick up the <font style="color: #ff0000;"\r
                                                                                                color=#FF0000>environment</font></h3>\r
 \r
-<p>Please, read carefully the following information. This section describes \r
- how the installation procedure collects the environment. </p>\r
-\r
-<p>After installing each product the shell script creates a special environment \r
- file for each product in its target folder . The name of the file is generated \r
- from the name of the product according to the following scheme: <b>env_&lt;product_name&gt;.sh.</b> \r
- This file includes all necessary product settings. For example for Vtk \r
- the file is <b>env_Vtk.sh</b>. Environment files allow to pick up all \r
- environment settings which are necessary to build and launch SALOME. When \r
- installing SALOME sources and/or binaries, the installation procedure \r
- picks up all the settings files and generates two scripts: <b>salome.sh</b> \r
- and <b>salome.csh </b>for sh and csh correspondingly. Such approach helps \r
- to save time when reinstalling products and you may not care about setting \r
- all environment variables manually to build/launch SALOME. What you need \r
- is just to use one of these scripts. </p>\r
-\r
-<p>This also concerns those products which are not currently installed. \r
- For example, you install some SALOME binaries to the directory where you \r
- have previously installed other products.&nbsp; The installation procedure \r
- still tries to collect the environment files from the target directory \r
- if it finds necessary products there. If some product are not found in \r
- the target directory the corresponding section of <b>salome.sh/salome.csh</b> \r
- files will be skipped. <br>\r
-For native products (like <i><b>gcc, tcl, etc...)</b></i> the installation \r
- procedure tries to find them first using <b>PATH</b> / <b>LD_LIBRARY_PATH</b> \r
- variables and then in the system default directories (<b>/usr/bin, /usr/lib</b> \r
- etc., depending on the product). </p>\r
-\r
-<p>In any case you may edit <b>salome.*</b> files after the installation \r
- procedure finishes, as you want.<span style="font-weight: bold;"><B><br>\r
-&nbsp;</B></span></p>\r
-\r
-<p class="whs18"><b \r
- style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></b> Note: as it was mentioned \r
- <a href="#env_files"\r
-       style="font-weight: normal;">above</a> there are two more environment \r
- files which are generated by the installation procedure: env_products.csh \r
- and env_products.sh. These files can be found in the target installation \r
- root directory.</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-\r
-<hr class="whs2">\r
+P<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">lease, read the following information carefully \r
+ . This section describes how the installation procedure generates the \r
+ environment scripts for the SALOME platform being installed. </font></span>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">After installing each product shell the \r
+ script creates a special environment file for the product in its installation \r
+ folder. The name of the file is generated from the name of product by \r
+ the following scheme: </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">env_&lt;product_name&gt;.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (for example </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">env_Vtk.sh \r
+ </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">for the Vtk). This file includes \r
+ all necessary environment settings. At the final step of the installation \r
+ the script picks up all the settings files and generates two common environment \r
+ files from them: </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.csh \r
+ </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">for </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>bash</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>csh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> shells correspondingly. Such approach helps \r
+ to save time when reinstalling products and you may not bother about setting \r
+ all environment variables manually to build/launch SALOME. What you simply \r
+ need is to source one of these environment files. </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This also concerns those products which \r
+ are not being installed. For example, you install some SALOME binaries \r
+ to the directory where you have previously installed other products.&nbsp; \r
+ The Installation procedure tries to collect environment files from the \r
+ target directory if it finds necessary products installed there. If some \r
+ product is not found in the target directory the corresponding section \r
+ of </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.sh/salome.csh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> files will be skipped. <br>\r
+For native products (like </font></span><i><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">gcc, \r
+ tcl, etc...)</font></span></b></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> the installation \r
+ procedure tries to find them first using </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">PATH</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> / </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">LD_LIBRARY_PATH</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> variables and then in the system default directories \r
+ (</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">/usr/bin, /usr/lib</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> etc., depending on the product). </font></span></p>\r
+\r
+<p><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">In any case you may edit </font></span><b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">salome.*</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ files after the installation procedure finishes, if you want.</font></span></p>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; </font></span>\r
+\r
+<p class="whs11"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><b style="font-weight: bold;"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></b></font></span><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>Note:</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ as it was mentioned </font></span><a href="#env_files"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">above</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> there are other environment files which are \r
+ generated by the installation procedure: </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_products.csh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> + </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_products.sh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_build.csh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> + </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>env_build.sh</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. These files can be found in the target installation \r
+ root directory.</font></span></p>\r
+\r
+&nbsp;<br>\r
+\r
+\r
+<hr class="whs7">\r
 \r
 \r
 <h3><a name=xml_files></a>Modifying <font style="color: #ff0000;"\r
@@ -933,420 +1175,888 @@ For native products (like <i><b>gcc, tcl, etc...)</b></i> the installation
  <font style="color: #ff0000;"\r
                color=#FF0000>file</font></h3>\r
 \r
-<p>You can create your own configuration file. The Installation Wizard \r
- can then take it as a command line argument to provide a list of products \r
- you want to install with it. The list of products and some other settings \r
- for the Installation Wizard are provided in the XML file. The default \r
- file the Installation Wizard looks for if no command line arguments are \r
- given, is <b>config.xml</b>. This section describes the structure of the \r
- configuration file. <br>\r
-XML tags are in bold blue, optional sections/tags are in brackets. </p>\r
-\r
-<p><b style="font-weight: bold;"><font style="color: #000099;"\r
-                                                                               color=#000099>&lt;document&gt;</font></b> \r
- <font style="color: #000000;"\r
-               color=#000000><b><br>\r
-&nbsp;&nbsp;&nbsp; </b>[</font><b><font style="color: #000099;"\r
-                                                                               color=#000099> &lt;config</font></b><font \r
- style="color: #000000;"\r
-       color=#000000> [ version=&lt;install_wizard_version&gt; ]</font> <font \r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">You can create your own XML configuration \r
+ file. The Installation Wizard can then take it as a command line argument \r
+ to provide a list of products you want to install with it. The list of \r
+ products and some other settings for the Installation Wizard are provided \r
+ in the XML file. The default file which Installation Wizard looks for \r
+ if no command line arguments are given, is </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">config.xml</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.<br>\r
+This section describes the structure of the configuration file. <br>\r
+XML tags are in bold blue, optional sections/tags are in brackets. </font></span>\r
+\r
+<p><font style="font-family: Courier;"\r
+               face=Courier><b style="font-weight: bold;"><font style="color: #000099;"\r
+                                                                                                               color=#000099><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;document&gt;</font></span></font></b><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">[</font></span></font><b><font \r
+ style="color: #000099;"\r
+       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &lt;config</font></span></font></b><font \r
  style="color: #000000;"\r
-       color=#000000><br>\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> [ version=&lt;install_wizard_version&gt; \r
+ ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
- caption=&lt;install_wizard_caption&gt; ]</font> <font style="color: #000000;"\r
-                                                                                                               color=#000000><br>\r
+ caption=&lt;install_wizard_caption&gt; ]</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
- copyright=&lt;install_wizard_copyright&gt;&nbsp; ]</font> <font style="color: #000000;"\r
-       color=#000000><br>\r
+ copyright=&lt;install_wizard_copyright&gt;&nbsp; ]</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
- license=&lt;install_wizard_license_info&gt; ]</font> <font style="color: #000000;"\r
-                                                                                                                       color=#000000><br>\r
+ license=&lt;install_wizard_license_info&gt; ]</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
- os=&lt;target_platform&gt; ]</font><b><font style="color: #000099;"\r
-                                                                                       color=#000099><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;</font></b><font style="color: #000000;"\r
-                                                                                                       color=#000000> <br>\r
-&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
-                                                                       color=#000000><b><br>\r
-&nbsp;&nbsp;&nbsp; </b>[ </font><b><font style="color: #000099;"\r
-                                                                               color=#000099>&lt;path</font></b><font \r
+ os=&lt;target_platform&gt; ]</font></span></font><b><font style="color: #000099;"\r
+                                                                                                       color=#000099><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;</font></span></font></b><font style="color: #000000;"\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
  style="color: #000000;"\r
-       color=#000000>&nbsp;&nbsp; [ targetdir=&lt;target_directory&gt; ]</font> \r
- <font style="color: #000000;"\r
-               color=#000000><br>\r
+       color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">[ </font></span></font><b><font \r
+ style="color: #000099;"\r
+       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;path</font></span></font></b><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp;&nbsp; [ targetdir=&lt;target_directory&gt; \r
+ ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
- tempdir=&lt;temp_directory&gt;&nbsp;&nbsp;&nbsp;&nbsp; ]</font><b><font \r
+ tempdir=&lt;temp_directory&gt;&nbsp;&nbsp;&nbsp;&nbsp; ]</font></span></font><b><font \r
  style="color: #000099;"\r
-       color=#000099><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></b><font style="color: #000000;"\r
-                                                                                                               color=#000000><br>\r
-&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
-                                                                       color=#000000><br>\r
-&nbsp;&nbsp;&nbsp; [</font><b><font style="color: #000099;"\r
-                                                                       color=#000099> &lt;product</font></b><font \r
+       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></span></font></b><font style="color: #000000;"\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
  style="color: #000000;"\r
-       color=#000000>&nbsp; name=&lt;product_name&gt;</font> <font style="color: #000000;"\r
-       color=#000000><br>\r
+       color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">[ </font></span></font><b><font \r
+ style="color: #000099;"\r
+       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;button</font></span></font></b><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> &nbsp; label=&lt;button_label&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
+ [ tooltip=&lt;button_tooltip&gt; ]</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
+ &nbsp; script=&lt;button_script&gt;&nbsp;&nbsp;&nbsp;</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+ [ disable=&lt;disable_flag&gt;&nbsp;&nbsp;&nbsp;]</font></span></font><b><font \r
+ style="color: #000099;"\r
+       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></span></font></b><font style="color: #000000;"\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; [</font></span></font><b><font style="color: #000099;"\r
+                                                                                       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ &lt;button</font></span></font></b><font style="color: #000000;"\r
+                                                                       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ ... </font></span></font><font style="color: #000099;"\r
+                                               color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&gt;</font></span></b></font><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; [</font></span></font><b><font style="color: #000099;"\r
+                                                                                       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ &lt;product</font></span></font></b><font style="color: #000000;"\r
+                                                                       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; \r
+ name=&lt;product_name&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- version=&lt;product_version&gt;</font> <br>\r
+ version=&lt;product_version&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; [ context=&lt;product_context&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
  ]<br>\r
 &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; [ description=&lt;product_description&gt; \r
- ]<font style="color: #000000;"\r
-               color=#000000><br>\r
+ ]</font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- install=&lt;installation_mode&gt;</font> <font style="color: #000000;"\r
-                                                                                               color=#000000><br>\r
+ install=&lt;installation_mode&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- supported=&lt;supported_installation_modes&gt;</font> <font style="color: #000000;"\r
-                                                                                                                       color=#000000><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- disable=&lt;disable_flag&gt;<br>\r
+ supported=&lt;supported_installation_modes&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ \r
+ disable=&lt;disable_flag&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br>\r
 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; [ pickupenv=&lt;pickup_env_flag&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- ]</font><font style="color: #000000;"\r
-                               color=#000000><br>\r
+ ]<br>\r
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
- dependancies=&lt;list_of_prerequisites&gt;</font>&nbsp;<font style="color: #000000;"\r
-       color=#000000><br>\r
+ dependancies=&lt;list_of_prerequisites&gt;</font></span></font><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp;</font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; \r
- installdiskspace=&lt;install_disk_space&gt;</font> <font style="color: #000000;"\r
-                                                                                                                       color=#000000><br>\r
+ installdiskspace=&lt;install_disk_space&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; \r
- temporarydiskspace=&lt;tmp_disk_space&gt;</font> <font style="color: #000000;"\r
-                                                                                                               color=#000000><br>\r
+ temporarydiskspace=&lt;tmp_disk_space&gt;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; \r
- script=&lt;installation_script_name&gt;</font><font style="color: #000099;"\r
-                                                                                                       color=#000099><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<b>&gt;</b></font><font style="color: #000000;"\r
-                                                                                                               color=#000000> \r
- <br>\r
-&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
-                                                                       color=#000000><br>\r
-&nbsp;&nbsp;&nbsp; [</font><b><font style="color: #000099;"\r
-                                                                       color=#000099> &lt;product</font></b><font \r
+ script=&lt;installation_script_name&gt;</font></span></font><font style="color: #000099;"\r
+                                                                                                                       color=#000099><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&gt;</font></span></b></font><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; [</font></span></font><b><font style="color: #000099;"\r
+                                                                                       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ &lt;product</font></span></font></b><font style="color: #000000;"\r
+                                                                       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ ... </font></span></font><font style="color: #000099;"\r
+                                               color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&gt;</font></span></b></font><font \r
  style="color: #000000;"\r
-       color=#000000> ... </font><font style="color: #000099;"\r
-                                                                       color=#000099><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<b>&gt;</b></font><font style="color: #000000;"\r
-                                                                                                               color=#000000> \r
- <br>\r
-&nbsp;&nbsp;&nbsp; ]</font> <font style="color: #000000;"\r
-                                                                       color=#000000><br>\r
-&nbsp;&nbsp;&nbsp;<b> .</b></font><b><font style="color: #000099;"\r
-                                                                                       color=#000099>..</font></b> \r
- <b><font style="color: #000099;"\r
-                       color=#000099><br>\r
-&lt;/document&gt;</font></b> </p>\r
+       color=#000000><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"><br>\r
+&nbsp;&nbsp;&nbsp; ]<br>\r
+&nbsp;&nbsp;&nbsp; ...</font></span></font><b><font style="color: #000099;"\r
+                                                                                       color=#000099><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;/document&gt;</font></span></font></b><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></font></p>\r
 \r
 <h4><font style="color: #000000;"\r
-                       color=#000000>&lt;config&gt; section</font></h4>\r
+                       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;config&gt; \r
+ section</font></span></font></h4>\r
 \r
 <font style="color: #000000;"\r
-               color=#000000>This is an optional section - it contains general \r
- information the Installation Wizard itself.</font> \r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This is an optional \r
+ section; it provides general information about the Installation Wizard \r
+ itself.<br>\r
+<br>\r
+Attributes:</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
 \r
 <ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">version</b>: \r
- Installation Wizard version number;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">version</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The application version \r
+ number to be shown in the caption.</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
-               class=kadov-p><b style="font-weight: bold;">caption</b>: Installation \r
- Wizard main window title - if this string contains the '%1' text - the \r
- title will contain a version number in this place (see above);</li>\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">caption</font></span></b></font></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The application main window caption - if \r
+ this string contains '%1' text the title will contain the version number \r
+ in this place (see above). </font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">copyright</b>: \r
- Installation Wizard copyright information (appears on the first page of \r
- the program);</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">copyright</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The application copyright \r
+ information (shown in the first page).</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">license</b>: \r
- Installation Wizard license information (appears on the first page of \r
- the program);</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">license</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The application license \r
+ information (shown in the first page).</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">os</b>: \r
- Contains directory name (relative from ./Products/BINARIES) where the \r
- Installation Wizard should search precompiled binaries packages. If this \r
- tag is skipped, binaries are implied to be in the ./Products/BINARIES \r
- directory.</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">os</font></span></b></font></li>\r
 </ul>\r
 \r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This parameter defines \r
+ the directory (relative from ./Products/BINARIES) where the Installation \r
+ Wizard will search precompiled binaries packages. If this tag is not provided, \r
+ binaries packages are looked for in the ./Products/BINARIES directory.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
 <h4><b style="font-weight: bold;"><font style="color: #000000;"\r
-                                                                               color=#000000>&lt;path&gt; section</font></b></h4>\r
+                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;path&gt; \r
+ section</font></span></font></b></h4>\r
 \r
-This is an optional section - it contains default directories. \r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This is an optional section; it defines \r
+ default installation directories.</font></span><font style="color: #000000;"\r
+                                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+<br>\r
+Attributes:</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
 \r
 <ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">targetdir</b>: \r
- Starting target directory - path to the directory where products should \r
- be installed;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">targetdir</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The target directory \r
+ - the path to the directory where products should be installed.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">tempdir</b>: \r
Starting temp directory - path to the directory for the temporary files.</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
style="font-size: 12pt;"><font size=3 style="font-size:12pt;">tempdir</font></span></b></font></li>\r
 </ul>\r
 \r
-<h4><b style="font-weight: bold;">&lt;product&gt; section</b></h4>\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The temporary directory \r
+ - the path to the directory for the temporary files.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<h4><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;product&gt; \r
+ section</font></span></b></h4>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This section describes product to be installed \r
+ with the Installation Wizard. The XML file should include a &lt;product&gt; \r
+ section for each product to be installed. The products appear in the tree \r
+ view and are installed in the order they are described in the configuration \r
+ file. It is recommended (but not obligatory) to define native products \r
+ at the top of the list before all other products.</font></span><font style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+<br>\r
+Attributes:</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">name</font></span></b></font></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Product name. </font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">version</font></span></b></font></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Product version. </font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">description</font></span></b></font></li>\r
+</ul>\r
 \r
-This section describes the products that are to be installed with the Installation \r
- Wizard. Products appear in the products tree and are installed in the \r
- order they are described in the configuration file. It is recommended \r
- to insert native products at the top of the list before all other products. \r
\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Product description \r
+ (optional).</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
 \r
 <ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">name</b>: \r
- Name of the product;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">context</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Context (optional). \r
+ The possible values are </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'salome \r
+ sources'</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'salome \r
+ binaries'</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'prerequisite'</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ (several contexts can be given separated by &quot;:&quot; symbol).</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">version</b>: \r
- Version of the product;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">supported</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Supported modes of \r
+ installation. Several modes can be separated by comma. Possible value \r
+ are: </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install sources</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install \r
+ binaries</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">use \r
+ native</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">. The Installation script \r
+ should contain the corresponding functions for each of the supported installation \r
+ modes (see </font></span><a href="#new_products"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">).</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">description</b>: \r
- Description of the product (optional);</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Default (starting) \r
+ installation mode.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">context</b>: \r
- Context of the product (optional); the possible values are <b>'salome \r
- sources'</b>, <b>'salome binaries'</b> and <b>'prerequisite'</b>;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">disable</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">If this optional flag \r
+ has 'true' value, the corresponding product will not appear in the list \r
+ of products and will not be installed.</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">pickupenv</font></span></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This flag points that pickup environment \r
+ procedure should be performed for this product. If this flag equal to \r
+ 'true', &nbsp;salome.sh and salome.csh files will&nbsp; be created in \r
+ the product installation directory. Usually this option is set to true \r
+ for SALOME KERNEL module sources and binaries package. This is an optional \r
+ key, default value is 'false'</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.</font></span></b><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">supported</b>: \r
- Supported modes of installation, should contain one or more of the following \r
- options, separated by a comma: <i>install sources</i>, <i>install binaries</i>, \r
- <i>use native</i>. The Installation script should contain corresponding \r
- functions for each of supported installation modes;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">dependancies</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">List of prerequisite \r
+ products, which are necessary to build this product, separated by comma.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">install</b>: \r
- Default (starting) installation mode;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">installdiskspace</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Total amount of space \r
+ (integer, in Kbytes), which the product occupies on the hard drive after \r
+ the installation.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">disable</b>: \r
- If this flag has 'true' value, the corresponding product will not appear \r
- in the list of products tree and will not be installed;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">temporarydiskspace</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Disk space (integer, \r
+ in Kbytes) for temporary files, which is necessary to build the product \r
+ from the sources.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
-               class=kadov-p><b style="font-weight: bold;">pickupenv</b>: This \r
- flag points that the pickup environment procedure should be performed \r
- for this module. If this flag is equal to <b>true</b>, &nbsp;salome.sh \r
- and salome.csh files will&nbsp; be created in the product's installation \r
- directory. Usually this option is set to true for SALOME KERNEL module \r
- sources and the binaries package. This is an optional key, the default \r
- value is <b>false.</b></li>\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">script</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The installation script \r
+ name. This script is in charge of the installation of the product. It \r
+ is called automatically by the Installation Wizard when necessary from \r
+ the main program. See the </font></span><a href="#new_products"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">next \r
+ section</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for more information.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<h4><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;button&gt; \r
+ section</font></span></b></h4>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This is an optional section. It allows customization \r
+ of the last </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Finish installation&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> page of the Installation Wizard by adding one \r
+ or more buttons in the lower part of the wizard's window. The script which \r
+ is attached to each such button, can perform some specific action, for \r
+ example, launch the application or show the Release Notes file by using \r
+ an external program. See </font></span><a href="#finish_buttons"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for more details about writing scripts.</font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+<br>\r
+Attributes:</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">dependancies</b>: \r
- list of prerequisite products, which are necessary to build this product, \r
- separated by a comma;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">label</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This is the button \r
+ text.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">installdiskspace</b>: \r
- Total amount of space (integer, in Kbytes), which the product occupies \r
- on the hard drive after the installation;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">tooltip</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The button tooltip \r
+ (optional).</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">temporarydiskspace</b>: \r
- Disk space (integer, in Kbytes) for the temporary files, which are necessary \r
- to build the product from the sources;</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">script</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The script attached \r
+ to the button.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">script</b>: \r
- Installation script name. This script is in charge of installation of \r
- the product. It is called when necessary from the main program. See the \r
- <a href="#new_products">next section</a> for more information.</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">disable</font></span></b></font></li>\r
 </ul>\r
 \r
-&nbsp; \r
+<p class="whs20"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">If \r
+ this optional flag has 'true' value, the corresponding button will not \r
+ appear in the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Finish installation&quot;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> page - the section of XML file is silently ignored.</font></span><b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp;</font></span></b></p>\r
 \r
-<p class="whs18"><span \r
- style="font-weight: bold;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></B></span> If you add new products \r
- to be installed with the Installation Wizard, you should also provide \r
- the installation script for this product. See the next section for more \r
details. </p>\r
+<p class="whs11"><b \r
+ style="font-weight: bold;"><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></B></font></span><span style="font-size:12pt; background-image:url('../texture_horiz_ltbluebubbles.jpg'); "><font size=3 style="font-size:12pt;">Note:</font></span></b><span style="font-size:12pt; background-image:url('../texture_horiz_ltbluebubbles.jpg'); "><font size=3 style="font-size:12pt;"> \r
+ If you add new products to be installed with Installation Wizard, you \r
+ should also provide installation script for this product. See the next \r
section for more details. </font></span></p>\r
 \r
+&nbsp;<br>\r
 \r
-<hr class="whs2">\r
+\r
+<hr class="whs7">\r
 \r
 \r
 <h3><a name=new_products></a>Implementing <font style="color: #ff0000;"\r
                                                                                                color=#FF0000>installation \r
  scripts</font> for the new products</h3>\r
 \r
-<p>When you want some product to be installed with the Installation Wizard, \r
- you should add its description <a href="#xml_files">in the configuration \r
- file</a> and create a bash installation script, following the rules described \r
- in this section. <br>\r
-There are some obligatory functions to be provided in this installation \r
- script. These functions are automatically called by the master installation \r
- script or/and its GUI shell when it is necessary.<br>\r
-File <b>common.sh</b> contains some service functions which can be used \r
- in your installation script, like <b>make_env()</b>,<b> make_dir()</b>, \r
- <b>try_existing()</b>, <b>sort_path()</b>,<b> find_in_path()</b>, etc. \r
- </p>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">When you want some product to be installed \r
+ with the Installation Wizard, you should add its description </font></span><a \r
+ href="#xml_files"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">to the configuration \r
+ file</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and create the installation \r
+ script, following the rules described in this section. <br>\r
+<br>\r
+There are some obligatory functions which should be implemented in this \r
+ installation script. These functions are automatically called by the master \r
+ installation script or/and its GUI shell when it is necessary.</font></span><font \r
+ style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+File </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">common.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> contains some service functions which can be \r
+ used in your installation script, like </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">make_env()</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">,</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> make_dir()</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">try_existing()</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">sort_path()</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">,</font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> find_in_path()</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, etc.</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span>\r
 \r
 <ul>\r
        \r
        <li class=kadov-p\r
-               class=kadov-p><b style="font-weight: bold;">check_version()</b>:&nbsp; \r
- This function allows to check the version of the product already installed \r
- on the computer. It should try to find the product (native or preinstalled \r
- in the target directory) and check it version. This helps to avoid unnecessary \r
- reinstallation. This is internal function and is not called</li>\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">check_version()</font></span></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function allows to check the version \r
+ of the product already installed on the computer. It should try to find \r
+ the product (native or preinstalled in the target directory) and check \r
+ its version. This helps to avoid unnecessary reinstallation. This is an \r
+ internal function and is not called from the master installation script. \r
+ </font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><b style="font-weight: bold;"><font style="color: #000000;"\r
-                                                                                                                       color=#000000>try_native()</font></b><font \r
- style="color: #000099;"\r
-       color=#000099>: </font><font style="color: #000000;"\r
-                                                               color=#000000>This function is called when \r
- the <i>'use native' </i>installation mode is selected by the user. The \r
- function should try to find the native version of the product and define \r
- the possibility of it usage. It should create the environment for the \r
- product in the temporary directory (see also the description of <b>print_env(</b>) \r
- function). If you do not provide the native mode installation, you can \r
- omit this function.</font></li>\r
+                                                                                                                       color=#000000><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">try_native()</font></span></font></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is called when the </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'use native' </font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">installation \r
+ mode is selected by the user. The function should try to find a native \r
+ version of the product and define possibility of its use. It should create \r
+ the environment file for the product in the temporary directory (see also \r
+ the description of </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">print_env(</font></span></b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>)</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ function). It is not necessary to implement this function if you do not \r
+ provide native mode installation. </font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
+               class=kadov-p><font style="color: #000000;"\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install_source()</font></span></b></font></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is called when the </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'install sources</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">' \r
+ installation mode is selected by the user. The function is responsible \r
+ for building the product from the sources package. It should create the \r
+ environment file for the product in the temporary directory (see also \r
+ description of </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">print_env(</font></span></b><span \r
+ style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>)</B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ function). It is not necessary to implement this function if you do not \r
+ provide sources mode installation. </font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">install_source()</b>: \r
- This function is called when the <i>'install sources</i>' installation \r
- mode is selected by the user. The function is responsible for the building \r
- of the product from the sources package. It should create the environment \r
- for the product in the temporary directory (see also the description of \r
- <b>print_env(</b>) function). If you do not provide the sources mode installation, \r
- you can omit this function</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install_source_and_build()</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is called \r
+ when SALOME module is installed and the </font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>--all-from-sources</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> (</font></span><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B>-a</B></font></span><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) option is used (</font></span><span style="font-style: italic; font-size: 12pt;"><font size=3 style="font-size:12pt;"><I>&quot;Build \r
+ SALOME sources&quot;</I></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> check box in \r
+ GUI mode). This function should be used to unpack SALOME sources package \r
+ and then call the build/install procedure for it.<br>\r
+For more details please refer to the </font></span><a href="#install_from_wizard"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">this</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ and </font></span><a href="#gui_mode"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">this</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> sections for more details.</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
                style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">install_binary()</b>: \r
- This function is called when the <i>'install binaries'</i> installation \r
- mode is selected by the user. The function is responsible for the extracting \r
- the product from the binaries package. Should create environment for the \r
- product in the temporary directory (see also the description of <b>print_env(</b>) \r
- function). If you do not provide the binaries mode installation, you can \r
- omit this function.</font></li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">install_binary()</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is called \r
+ when the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">'install binaries'</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> installation mode is selected by the user. The \r
+ function is responsible for the extracting of the product from the binaries \r
+ package. It should create environment for the product in the temporary \r
+ directory (see also description of </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">print_env(</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">) function). It is not necessary to implement \r
+ this function if you do not provide binaries mode installation. </font></span></font>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
-               class=kadov-p><b style="font-weight: bold;">try_preinstalled()</b>: \r
- <font style="color: #000000;"\r
-               color=#000000>This function is called when the<i> 'not install'</i> \r
- installation mode is selected by the user. In this case the script should \r
- inspect the target directory to try to find the already preinstalled product, \r
- pick up and check the environment from there. See <a href="#pick_up_env">here</a> \r
- for more details.</font></li>\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">try_preinstalled()</font></span></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is called when</font></span><i><span \r
+ style="font-style: normal; font-size: 12pt;"><font size=3 style="font-size:12pt;"> the</font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ 'not install'</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> installation mode \r
+ is selected by the user. In this case the script should inspect the target \r
+ directory to try to find an already preinstalled product, pick up and \r
+ check the environment from there. See </font></span><a href="#pick_up_env"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ for more details. </font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
+               style="/*begin!kadov{{*/ color: #000000; /*}}end!kadov*/ "\r
                class=kadov-p><font style="color: #000000;"\r
-                                                       color=#000000><b style="font-weight: bold;">print_env()</b>: \r
- This function is in charge of the environment script creation. It should \r
- create a file with the name </font><b>env_&lt;product_name&gt;.sh</b> \r
- in the temporary directory and then copy it into the product installation \r
- directory. The file should contain all necessary environment variables \r
- settings for the product. It will be collected during the 'pick-up-environment' \r
- procedure.</li>\r
+                                                       color=#000000><b style="font-weight: bold;"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">print_env()</font></span></b></font></li>\r
+</ul>\r
+\r
+<font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This function is in \r
+ charge of creating the environment script. It should create a file with \r
+ name </font></span></font><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">env_&lt;product_name&gt;.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the temporary directory and then copy it \r
+ into the product installation directory. The file should contain all necessary \r
+ environment variables settings for the product. It will be collected during \r
+ the 'pick-up-environment' procedure. </font></span>\r
+\r
+<ul>\r
        \r
        <li class=kadov-p\r
-               class=kadov-p><b style="font-weight: bold;">pickup_env()</b>: This \r
- procedure corresponds to the <b>pickupenv</b> tag of the configuration \r
- xml file (see previous section). Should call the <b>make_env</b> procedure \r
- to perform the pick-up environment procedure for the product.</li>\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">pickup_env()</font></span></b></li>\r
 </ul>\r
 \r
-<font style="color: #000000;"\r
-               color=#000000>The calling signature of the product installation \r
- script is the following:</font> <b><font style="color: #000000;"\r
-                                                                                       color=#000000><br>\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This procedure corresponds to the </font></span><b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">pickupenv</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ tag of the configuration xml file (see previous section). It should call \r
+ the </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">make_env</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> procedure to perform the pick-up environment \r
+ procedure for the product.</font></span><font style="color: #000000;"\r
+                                                                               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+<br>\r
+The calling signature of the product installation script is the following:</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><b><font style="color: #000000;"\r
+                                                                                       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
 &lt;product_script_name&gt; &lt;function_name&gt; &lt;temp_folder&gt; &lt;products_directory&gt; \r
- &lt;target_directory&gt; &lt;dependancies&gt; &lt;product_name&gt;</font></b> \r
\r
-\r
-<p>where <b><br>\r
-&lt;product_script_name&gt;</b> - installation script name (described in \r
- configuration xml file); <b><br>\r
-&lt;function_name&gt;</b> - name of the function, corresponding to the \r
- selected installation mode: <i>try_native, install_source, install_binary</i> \r
- or <i>try_preinstalled</i>; <b><br>\r
-&lt;temp_folder&gt;</b> - temporary files directory; <b><br>\r
-&lt;products_directory&gt;</b> - directory where the sources/binaries package \r
- can be found. You should provide the sources package in the <i>&lt;Install_Wizard_root_directory&gt;/Products/SOURCES</i> \r
- directory and binaries package in the <i>&lt;InstallWizard_root_directory&gt;/Products/BINARIES/&lt;os_version&gt;</i>, \r
- where &lt;os_version&gt; is target platform description, which appears \r
- in the corresponding section of the <a href="#xml_files">configuration \r
- xml file</a>. <b><br>\r
-&lt;target_directory&gt;</b> - root target directory where the product \r
- should be installed to; <b><br>\r
-&lt;dependancies&gt;</b> - single-quoted list of prerequisite products, \r
- separated by space; <b><br>\r
-&lt;product_name&gt; </b>- product name itself. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs18"><i \r
- style="font-style: italic;"><img src="../pics/exemple.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs19"></i><i>med-2.2.2.sh install_binary \r
- /tmp/work ./Products/BINARIES/Mandrake10.1 /usr/salome 'gcc Hdf' med</i> \r
- </p>\r
-\r
-<p class="whs18"><i \r
- style="font-style: italic;"><span style="background-image:url('../texture_horiz_ltbluebubbles.jpg'); "><font \r
+ &lt;target_directory&gt; &lt;dependancies&gt; &lt;product_name&gt;</font></span></font></b><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<p><font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">where</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><font style="color: #000000;"\r
+               color=#000000><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;product_script_name&gt;</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - installation script name (described in the \r
+ configuration xml file);</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;function_name&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - the name \r
+ of function, corresponding to the selected installation mode: </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">try_native, install_source, install_binary</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> or </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">try_preinstalled</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">;</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;temp_folder&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - temporary \r
+ files directory;</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font \r
  style="color: #000000;"\r
-       color=#000000>C</i>opy the created script into the <i>&lt;Install_Wizard_root_directory&gt;/config_files</i> \r
- sub-directory where all installation scripts are stored. Installation \r
- Wizard will automatically search and call your script during the installation \r
- procedure.</font> </span></p>\r
+       color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;products_directory&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - \r
+ directory where the sources/binaries package can be found. You should \r
+ provide the sources package in the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;Install_Wizard_root_directory&gt;/Products/SOURCES</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> directory and binaries package in the </font></span><i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;InstallWizard_root_directory&gt;/Products/BINARIES/&lt;os_version&gt;</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">, where &lt;os_version&gt; is the target platform \r
+ description, which appears in the corresponding section of the </font></span><a \r
+ href="#xml_files"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">configuration xml file</font></span></a><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">.</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;target_directory&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - root \r
+ target directory where the product should be installed to;</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;dependancies&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - single-quoted \r
+ list of prerequisite products, separated by space;</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><font style="color: #000000;"\r
+                                                                               color=#000000><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;product_name&gt; </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">- product \r
+ name itself.</font></span></font><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><font style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Example:</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+med-2.2.3.sh install_binary /tmp/work ./Products/BINARIES/Mandrake10.1 \r
+ /usr/salome 'gcc Hdf' med</font></span></i><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Copy the created script \r
+ into the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;Install_Wizard_root_directory&gt;/config_files</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> sub-directory where all installation scripts \r
+ are stored. Installation Wizard will automatically search and call your \r
+ script during the installation procedure.</font></span></font><span style="font-size: 12pt;"> \r
+ <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+\r
+<hr class="whs7">\r
 \r
 \r
-<hr class="whs2">\r
+&nbsp; \r
 \r
+<h3><a name=finish_buttons></a>Customizing <font style="color: #ff0000;"\r
+                                                                                               color=#FF0000>Readme page</font> \r
+ buttons</h3>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">The Installation Wizard allows customizing \r
+ the look-n-feel of the last </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Finish \r
+ installation&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> page. If \r
+ you want to add one or more buttons to this page in order to perform some \r
+ specific actions at the end of the installation (for example, to show \r
+ the Release Notes file by using Open Office) you can put an additional \r
+ section to the XML configuration file. This is the </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;button&gt;</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> section (see </font></span><a href="#xml_files"><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">here</font></span></a><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ for more details). </font></span>\r
+\r
+<br><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&nbsp; </font></span>\r
+\r
+<br><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;">To implement the action which will be performed \r
+ when the user clicks the button, you need to create a script and put it \r
+ to the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;Install_Wizard_root_directory&gt;/config_files</font></span></i><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> directory.<br>\r
+There are some obligatory functions which should be implemented in this \r
+ script. These functions are automatically called by the Installation Wizard \r
+ GUI. </font></span>\r
 \r
-&nbsp; \r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">check_enabled()</font></span></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This procedure is called by the Installation \r
+ Wizard when the </font></span><i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&quot;Finish \r
+ installation&quot;</font></span></i><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> page is displayed \r
+ and the status of the buttons should be modified according to the installation \r
+ options. This procedure should return </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">0</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> if the corresponding action can be performed \r
+ and, thus, the button should become enabled. Otherwise, it should return \r
+ </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">1</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ - in this case the corresponding button will be disabled. </font></span>\r
+\r
+<ul>\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">execute()</font></span></b></li>\r
+</ul>\r
+\r
+<span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">This procedure is invoked when the user \r
+ clicks the button. This procedure should return </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">0</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> if the corresponding action is done successfully \r
+ and </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">1</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> \r
+ if any error occurs.<br>\r
+<br>\r
+The calling signature of the script is the following:</font></span><b><font style="color: #000000;"\r
+       color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;product_script_name&gt; &lt;function_name&gt; &lt;target_directory&gt; \r
+ &lt;temp_folder&gt;</font></span></font></b><span style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span>\r
+\r
+<p><font style="color: #000000;"\r
+               color=#000000><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">where</font></span></font><span \r
+ style="font-size: 12pt;"> <font size=3 style="font-size:12pt;"></font></span></p>\r
+\r
+<p><b style="font-weight: bold;"><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;product_script_name&gt;</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - the script name itself (retrieved from the \r
+ XML configuration xml file); </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;function_name&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - the name \r
+ of function; </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;target_directory&gt;</font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> - root \r
+ target directory where the product is installed to; </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&lt;temp_folder&gt; </font></span></b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">- temporary \r
+ files directory; </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;"><br>\r
+&nbsp;</font></span></b></p>\r
+\r
+<p class="whs11"><b \r
+ style="font-weight: bold;"><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Note:</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> The standard Installation Wizard buttons &quot;Launch \r
+ SALOME&quot; and &quot;Release Notes&quot; are implemented with this feature. \r
+ Refer to scripts </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">start_salome.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> and </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">release_notes.sh</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> for sample implementation.</font></span><b><span style="font-weight: bold; font-size: 12pt;"><font size=3 style="font-size:12pt;"><B><br>\r
+<br>\r
+<img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs14"></B></font></span><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">Note:</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> Any button (even standard) can be ignored by \r
+ the Installation Wizard if the attribute </font></span><b><span style="font-size: 12pt;"><font size=3 style="font-size:12pt;">&lt;disable&gt;</font></span></b><span \r
+ style="font-size: 12pt;"><font size=3 style="font-size:12pt;"> in the XML configuration file is set to the \r
+ &quot;true&quot; value. </font></span></p>\r
+\r
+\r
+<hr class="whs7">\r
 \r
-<br>&nbsp; \r
\r
+\r
+&nbsp; \r
 \r
 <script type="text/javascript" language="javascript1.2">\r
 <!--\r
diff --git a/doc/salome/gui/GUI/kernel/readmepage.png b/doc/salome/gui/GUI/kernel/readmepage.png
new file mode 100644 (file)
index 0000000..b6aee29
Binary files /dev/null and b/doc/salome/gui/GUI/kernel/readmepage.png differ
index 1bcad1704bafc3b1a16d01b574d792bfa911b568..0ef619a7c68a5a9f920a32c2b7d0cc42c14ad67c 100755 (executable)
@@ -215,14 +215,15 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
  <span style="font-weight: bold;"><B>-l</B></span> &nbsp;&nbsp;</td>\r
 <td colspan="1" rowspan="1" width="421px" class="whs21">\r
 <p>redirects &nbsp;log \r
- messages into a file defined by the command --file or -f</td></tr>\r
+ messages in the file <span style="font-style: italic;"><I>logger.log</I></span></td></tr>\r
 \r
 <tr valign="top" class="whs16">\r
 <td colspan="1" rowspan="1" width="645px" class="whs20">\r
 <p class="whs22">--file=&lt;FILE&gt; <span style="font-weight: normal; font-style: italic;"><I>or</I></span> \r
  -f=&lt;FILE&gt;</td>\r
 <td colspan="1" rowspan="1" width="421px" class="whs21">\r
-<p>allows to define a file for log messages </td></tr>\r
+<p>redirects &nbsp;log \r
+ messages in a custom file</td></tr>\r
 \r
 <tr valign="top" class="whs16">\r
 <td colspan="1" rowspan="1" width="645px" class="whs20">\r
@@ -322,7 +323,6 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
 <p class="whs31">\r
 <a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;}  if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','About SALOME architecture','about_salome_pro_architecture.htm','Introduction to SALOME ','introduction_to_salome_pro.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
 \r
-\r
  </p>\r
 \r
 <p class="whs31">&nbsp;</p>\r
diff --git a/doc/salome/gui/GUI/mesh_preferences.htm b/doc/salome/gui/GUI/mesh_preferences.htm
deleted file mode 100755 (executable)
index 024d1a5..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>MESH preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; border-style:none; width:752px; height:646px; float:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { margin-left:48px; }\r
-p.whs5 { font-weight:bold; margin-left:0px; }\r
-p.whs6 { margin-left:0px; font-weight:bold; }\r
-p.whs7 { font-weight:bold; margin-left:48px; }\r
-p.whs8 { margin-left:0px; font-weight:normal; }\r
-p.whs9 { margin-left:38px; }\r
-p.whs10 { margin-left:38px; font-weight:bold; }\r
-p.whs11 { font-weight:bold; margin-left:38px; }\r
-p.whs12 { font-weight:normal; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
-  var strNSS = "<style type='text/css'>";\r
-  strNSS += "p.whs5 {margin-left:1pt; }";\r
-  strNSS += "p.whs6 {margin-left:1pt; }";\r
-  strNSS += "p.whs8 {margin-left:1pt; }";\r
-  strNSS +="</style>";\r
-  document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nSetting Preferences\nMesh preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Mesh preferences</h1>\r
-\r
-<p>In the Mesh module you can set mesh preferences, which can be used in \r
- later sessions with this module. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1">General Preferences</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p><img src="pics/pref21.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Update</p></li>\r
-       \r
-       <ul type="disc" class="whs3">\r
-               \r
-               <li class=kadov-p><p class="whs1">&nbsp;<span \r
- style="font-weight: normal;">If you toggle</span> \r
- Automatic Update<span style="font-weight: normal;"> checkbox, the model \r
- in your viewer automatically updated whenever you make changes in it.</span></p></li>\r
-       </ul>\r
-       \r
-       <li class=kadov-p><p class="whs1">Quality Controls.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Display entity, </B></span>both faces and edges \r
- of an object will be displayed in the viewer by default .<span style="font-weight: bold;"> \r
- <B></B></span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Use precision</B></span> checkbox, you can display \r
- numbers in<span style="font-weight: bold;"><B> Quality Control</B></span> diagrams \r
- at the necessary level of precision.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs5">Precision \r
- - <span style="font-weight: normal;">can be defined by</span> <span style="font-weight: normal;">the \r
- </span>Number of digits after point<span style="font-weight: normal;"> \r
- in the corresponding field. By default, numbers in </span>Quality Control<span \r
- style="font-weight: normal;"> diagrams are presented as integers.</span> \r
- </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs5">Display \r
- mode - <span style="font-weight: normal;">allows to set Wireframe, Shading, \r
- Nodes or Shrink presentation mode as default.</span> </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs6">Mesh \r
- export </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Automatically create groups for MED export</B></span> \r
- checkbox, this operation will be carried out automatically.</p></li>\r
-</ul>\r
-\r
-<p class="whs7">&nbsp;</p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<p class="whs6">Mesh Preferences</p>\r
-\r
-<p class="whs8">&nbsp;</p>\r
-\r
-<p class="whs1"><img src="pics/pref22.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Nodes</B></span> \r
- </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Color</B></span> \r
- - &nbsp;allows \r
- to select the color of nodes. Click on the colored line to access to the \r
- <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select \r
- Color</a></B></span> dialog box. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs10">Size \r
- - <span style="font-weight: normal;">allows to define the size of nodes.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs1">Elements</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Fill \r
- </B></span>&nbsp;- \r
- allows to select the color of surface of elements (seen in Shading mode). \r
- Click on the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Outline</B></span> \r
- - allows to select the color of borders of elements. Click on the colored \r
- line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select \r
- Color</a></B></span> dialog box. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Back \r
- Face</B></span> - allows to select the color of interior surface of elements. \r
- Click on the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of lines (edges and borders of elements).</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs10">Shrink \r
- coef. - <span style="font-weight: normal;">allows to define relative space \r
- of elements compared to gaps between them in shrink mode</span></p></li>\r
-</ul>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1">Selection Preferences</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p><img src="pics/pref23.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Selection - <span style="font-weight: normal;">performed \r
- with mouse-indexing (preselection) and left-clicking on an object, whose \r
- appearance changes as defined in the</span> Preferences.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">Object \r
- Color - &nbsp;<span style="font-weight: normal;">allows \r
- to select the color of mesh (edges and borders of meshes) of the selected \r
- entity. Click on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">Element \r
- color - <span style="font-weight: normal;">allows to select the color \r
- of surface of selected elements (seen in Shading mode).</span> <span style="font-weight: normal;">Click \r
- on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of selected edges.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs1">Preselection - <span \r
- style="font-weight: normal;">performed with mouse-indexing on an object, \r
- whose appearance changes as defined in the</span> Preferences.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">Highlight \r
- Color - &nbsp;<span style="font-weight: normal;">allows \r
- to select the color of mesh (edges and borders of meshes) of the entity \r
- . Click on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of preselected edges.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs1">Precision<span style="font-weight: normal;"> \r
- - in this menu you can set the value of precision used for </span>Nodes<span \r
- style="font-weight: normal;"> and </span>Elements<span style="font-weight: normal;">.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<p class="whs1">Scalar Bar Preferences</p>\r
-\r
-<p class="whs12">&nbsp;</p>\r
-\r
-<p class="whs12"><img src="pics/pref24.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Font - </B></span>in \r
- this menu you can set type, face and color for the font of<span style="font-weight: bold;"><B> \r
- Title</B></span> and<span style="font-weight: bold;"><B> Labels.</B></span></p></li>\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Colors &amp; \r
- Labels - </B></span>in this menu you can set the<span style="font-weight: bold;"><B> \r
- number of colors </B></span>and the<span style="font-weight: bold;"><B> number \r
- of labels</B></span> in use<span style="font-weight: bold;"><B>.</B></span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs1">Orientation - <span \r
- style="font-weight: normal;">here you can choose between vertical and \r
- horizontal orientation of the</span> Scalar Bar.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs5">Origin \r
- &amp; Size Vertical &amp; Horizontal - a<span style="font-weight: normal;">llows \r
- to define placement (</span>X <span style="font-weight: normal;">and</span> \r
- Y<span style="font-weight: normal;">) and lookout (</span>Width and Height) \r
- <span style="font-weight: normal;">of Scalar Bars</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">X: \r
- <span style="font-weight: normal;">abscissa of the point of origin (from \r
- the left side)</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">Y: \r
- <span style="font-weight: normal;">ordinate of the origin of the bar (from \r
- the bottom)</span></p></li>\r
-</ul>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/note1.gif b/doc/salome/gui/GUI/note1.gif
deleted file mode 100755 (executable)
index b53e21d..0000000
Binary files a/doc/salome/gui/GUI/note1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/pics/clipping.png b/doc/salome/gui/GUI/pics/clipping.png
new file mode 100644 (file)
index 0000000..6d73855
Binary files /dev/null and b/doc/salome/gui/GUI/pics/clipping.png differ
diff --git a/doc/salome/gui/GUI/pics/graduatedaxes1.png b/doc/salome/gui/GUI/pics/graduatedaxes1.png
new file mode 100644 (file)
index 0000000..cf021ba
Binary files /dev/null and b/doc/salome/gui/GUI/pics/graduatedaxes1.png differ
index 5ecbe66245ada30ce5437905e0322ee48aae34dd..0cfa37ae050a1c9a07e31e61a0c072c9fe048e8b 100755 (executable)
Binary files a/doc/salome/gui/GUI/pics/icon_about.png and b/doc/salome/gui/GUI/pics/icon_about.png differ
diff --git a/doc/salome/gui/GUI/pics/image100.gif b/doc/salome/gui/GUI/pics/image100.gif
new file mode 100644 (file)
index 0000000..c44d68f
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image100.gif differ
diff --git a/doc/salome/gui/GUI/pics/image102.gif b/doc/salome/gui/GUI/pics/image102.gif
new file mode 100644 (file)
index 0000000..3507814
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image102.gif differ
diff --git a/doc/salome/gui/GUI/pics/image103.gif b/doc/salome/gui/GUI/pics/image103.gif
new file mode 100644 (file)
index 0000000..be534c3
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image103.gif differ
diff --git a/doc/salome/gui/GUI/pics/image105.gif b/doc/salome/gui/GUI/pics/image105.gif
new file mode 100644 (file)
index 0000000..4f6173f
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image105.gif differ
diff --git a/doc/salome/gui/GUI/pics/image106.gif b/doc/salome/gui/GUI/pics/image106.gif
new file mode 100644 (file)
index 0000000..2bbcb4d
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image106.gif differ
diff --git a/doc/salome/gui/GUI/pics/image108.gif b/doc/salome/gui/GUI/pics/image108.gif
new file mode 100644 (file)
index 0000000..bec69e6
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image108.gif differ
diff --git a/doc/salome/gui/GUI/pics/image109.gif b/doc/salome/gui/GUI/pics/image109.gif
new file mode 100644 (file)
index 0000000..5dbba46
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image109.gif differ
diff --git a/doc/salome/gui/GUI/pics/image157.gif b/doc/salome/gui/GUI/pics/image157.gif
new file mode 100644 (file)
index 0000000..2f66e05
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image157.gif differ
diff --git a/doc/salome/gui/GUI/pics/image77.gif b/doc/salome/gui/GUI/pics/image77.gif
new file mode 100644 (file)
index 0000000..ef7a62f
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image77.gif differ
diff --git a/doc/salome/gui/GUI/pics/image86.gif b/doc/salome/gui/GUI/pics/image86.gif
new file mode 100644 (file)
index 0000000..3397331
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image86.gif differ
diff --git a/doc/salome/gui/GUI/pics/image88.gif b/doc/salome/gui/GUI/pics/image88.gif
new file mode 100644 (file)
index 0000000..9466aa6
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image88.gif differ
diff --git a/doc/salome/gui/GUI/pics/image89.gif b/doc/salome/gui/GUI/pics/image89.gif
new file mode 100644 (file)
index 0000000..373a6c0
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image89.gif differ
diff --git a/doc/salome/gui/GUI/pics/image91.gif b/doc/salome/gui/GUI/pics/image91.gif
new file mode 100644 (file)
index 0000000..9e93c1c
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image91.gif differ
diff --git a/doc/salome/gui/GUI/pics/image95.gif b/doc/salome/gui/GUI/pics/image95.gif
new file mode 100644 (file)
index 0000000..fb293e2
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image95.gif differ
diff --git a/doc/salome/gui/GUI/pics/image96.gif b/doc/salome/gui/GUI/pics/image96.gif
new file mode 100644 (file)
index 0000000..4580d5b
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image96.gif differ
diff --git a/doc/salome/gui/GUI/pics/image97.gif b/doc/salome/gui/GUI/pics/image97.gif
new file mode 100644 (file)
index 0000000..1d78de1
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image97.gif differ
diff --git a/doc/salome/gui/GUI/pics/image98.gif b/doc/salome/gui/GUI/pics/image98.gif
new file mode 100644 (file)
index 0000000..6519dbb
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image98.gif differ
diff --git a/doc/salome/gui/GUI/pics/image99.gif b/doc/salome/gui/GUI/pics/image99.gif
new file mode 100644 (file)
index 0000000..3711be8
Binary files /dev/null and b/doc/salome/gui/GUI/pics/image99.gif differ
diff --git a/doc/salome/gui/GUI/pics/ppref1.png b/doc/salome/gui/GUI/pics/ppref1.png
new file mode 100755 (executable)
index 0000000..dd91013
Binary files /dev/null and b/doc/salome/gui/GUI/pics/ppref1.png differ
diff --git a/doc/salome/gui/GUI/pics/ppref2.png b/doc/salome/gui/GUI/pics/ppref2.png
new file mode 100755 (executable)
index 0000000..5a15f0e
Binary files /dev/null and b/doc/salome/gui/GUI/pics/ppref2.png differ
diff --git a/doc/salome/gui/GUI/pics/ppref3.png b/doc/salome/gui/GUI/pics/ppref3.png
new file mode 100755 (executable)
index 0000000..767c5cf
Binary files /dev/null and b/doc/salome/gui/GUI/pics/ppref3.png differ
index 101fec3d3cd3a057919daf6668c5e2c71c7bc5ef..10053fb116654ba52217722216fa7c83f91077a5 100755 (executable)
Binary files a/doc/salome/gui/GUI/pics/pref15.png and b/doc/salome/gui/GUI/pics/pref15.png differ
index 74ea331b40ab5499a2150a77a218cc35649e6982..bdc9b764321d30d8a9c20fce0ab63b6b8ca353af 100755 (executable)
Binary files a/doc/salome/gui/GUI/pics/pref33.png and b/doc/salome/gui/GUI/pics/pref33.png differ
diff --git a/doc/salome/gui/GUI/pics/set_rotation_point_dialog1.png b/doc/salome/gui/GUI/pics/set_rotation_point_dialog1.png
new file mode 100644 (file)
index 0000000..bdab73b
Binary files /dev/null and b/doc/salome/gui/GUI/pics/set_rotation_point_dialog1.png differ
diff --git a/doc/salome/gui/GUI/pics/set_rotation_point_dialog2.png b/doc/salome/gui/GUI/pics/set_rotation_point_dialog2.png
new file mode 100644 (file)
index 0000000..7f3696a
Binary files /dev/null and b/doc/salome/gui/GUI/pics/set_rotation_point_dialog2.png differ
diff --git a/doc/salome/gui/GUI/pics/view_rotation_point.png b/doc/salome/gui/GUI/pics/view_rotation_point.png
new file mode 100644 (file)
index 0000000..7fe8f83
Binary files /dev/null and b/doc/salome/gui/GUI/pics/view_rotation_point.png differ
diff --git a/doc/salome/gui/GUI/post-pro_preferences.htm b/doc/salome/gui/GUI/post-pro_preferences.htm
deleted file mode 100755 (executable)
index 801ff87..0000000
+++ /dev/null
@@ -1,677 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Post-Pro Preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; border-style:none; width:752px; height:646px; float:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { font-weight:normal; }\r
-p.whs5 { font-weight:bold; margin-left:57px; }\r
-p.whs6 { font-weight:bold; margin-left:0px; }\r
-p.whs7 { font-weight:bold; margin-left:38px; }\r
-p.whs8 { margin-left:0px; font-weight:bold; }\r
-p.whs9 { margin-left:38px; font-weight:bold; }\r
-p.whs10 { margin-left:0px; text-align:justify; }\r
-p.whs11 { margin-left:38px; }\r
-img_whs12 { border:none; width:752px; height:646px; float:none; }\r
-p.whs13 { font-weight:bold; margin-left:36px; }\r
-p.whs14 { margin-left:0px; text-align:justify; font-weight:bold; }\r
-p.whs15 { margin-left:0px; text-align:justify; font-weight:normal; }\r
-p.whs16 { text-align:justify; font-weight:bold; margin-left:38px; }\r
-ol.whs17 { list-style:disc; }\r
-ul.whs18 { list-style:square; }\r
-p.whs19 { font-style:normal; }\r
-p.whs20 { margin-left:76px; }\r
-p.whs21 { text-align:justify; font-weight:bold; margin-left:0px; }\r
-p.whs22 { margin-left:38px; text-align:justify; font-weight:bold; }\r
-p.whs23 { text-align:justify; font-weight:bold; margin-left:76px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
-  var strNSS = "<style type='text/css'>";\r
-  strNSS += "p.whs6 {margin-left:1pt; }";\r
-  strNSS += "p.whs8 {margin-left:1pt; }";\r
-  strNSS += "p.whs10 {margin-left:1pt; }";\r
-  strNSS += "p.whs14 {margin-left:1pt; }";\r
-  strNSS += "p.whs15 {margin-left:1pt; }";\r
-  strNSS += "p.whs21 {margin-left:1pt; }";\r
-  strNSS +="</style>";\r
-  document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nSetting Preferences\nPost-Pro Preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Post-Pro Preferences</h1>\r
-\r
-<p>In the Post-Pro module you can set preferences, default settings, which \r
- can be used in later sessions with this module. </p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1">Scalar Bar Preferences</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p><img src="pics/pref31.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Scalar Range </p></li>\r
-       \r
-       <ul type="disc" class="whs3">\r
-               \r
-               <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Scalar \r
- Mode</B></span> - this feature allows refining the value to be inspected:</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs5">Modulus: \r
- <span style="font-weight: normal;">value of a scalar or modulus of a vector.</span></p></li>\r
-               \r
-               <li class=kadov-p><p class="whs5">Component \r
- N: <span style="font-weight: normal;">Nth component of a vector, a tensor \r
- or a matrix..</span></p></li>\r
-               \r
-               <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Logarithmic \r
- Scaling</B></span> - this checkbox toggles logarithmic scaling.</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Ranges \r
- to Use</B></span> - you can use either Field Range or Imposed Range.<span \r
- style="margin-left: 0px;"> </span><span style="margin-left: 0px; text-indent: 12px;">.</span></p></li>\r
-       </ul>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Min and Max for \r
- Imposed Range</B></span> - in this menu &nbsp;you \r
- can set the limits for your Imposed Range, if you have chosen to use it.</p></li>\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Font - </B></span>in \r
- this menu you can set type, face and color for the font of<span style="font-weight: bold;"><B> \r
- Title</B></span> and<span style="font-weight: bold;"><B> Labels.</B></span></p></li>\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Colors &amp; \r
- Labels - </B></span>in this menu you can set the<span style="font-weight: bold;"><B> \r
- number of colors </B></span>and the<span style="font-weight: bold;"><B> number \r
- of labels</B></span> in the Scalar bar<span style="font-weight: bold;"><B>.</B></span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs1">Orientation - <span \r
- style="font-weight: normal;">here you can choose between vertical and \r
- horizontal orientation of the</span> <span style="font-weight: normal;">Scalar \r
- Bar.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs6">Origin \r
- &amp; Size Vertical &amp; Horizontal - a<span style="font-weight: normal;">llows \r
- to define placement (</span>X <span style="font-weight: normal;">and</span> \r
- Y<span style="font-weight: normal;">) and lookout (</span>Width and Height) \r
- <span style="font-weight: normal;">of Scalar Bars</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">X: \r
- <span style="font-weight: normal;">abscissa of the point of origin (from \r
- the left side)</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Y: \r
- <span style="font-weight: normal;">ordinate of the origin of the bar (from \r
- the bottom)</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs8">Scalar \r
- bars default position</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9">Arrange \r
- Scalar Bars - <span style="font-weight: normal;">this option prevents \r
- superposition of scalar bars during visualisation of several fields in \r
- the same window. If checked, a separate scalar bar is displayed for each \r
- presentation.</span></p></li>\r
-</ul>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs1">Sweep, MED Import Preferences</p>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<p class="whs4"><img src="pics/pref32.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs4">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Sweeping preferences</p></li>\r
-       \r
-       <ul type="disc" class="whs3">\r
-               \r
-               <li class=kadov-p><p class="whs10"><span \r
- style="font-weight: bold;"><B>Time step -</B></span> in this menu you can set \r
- the<span style="font-weight: bold;"> <B></B></span>time of representation of \r
- one step.</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs10"><span \r
- style="font-weight: bold;"><B>Number of cycles -</B></span> in this menu you \r
- can define the number of times this animation will be repeated.</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs10"><span \r
- style="font-weight: bold;"><B>Number of steps</B></span> - in this menu you can \r
- define the number of steps, which will compose the whole animation.</p></li>\r
-       </ul>\r
-</ul>\r
-\r
-<p class="whs10">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">MED files import &nbsp;</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Use \r
- Build Progress - <span style="font-weight: normal;">when this option is \r
- checked you can choose all other import MED options at the moment of loading \r
- of each file using </span>Build Progress<span style="font-weight: normal;"> \r
- menu, otherwise the loading will be done according to the </span>Preferences<span \r
- style="font-weight: normal;"> without addressing to the user.</span> </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Full \r
- MED Loading - <span style="font-weight: normal;">when this option is checked, \r
- the MED file is fully loaded in the study, and no additional access to \r
- the MED file is needed during the session. Reversibly, when unchecked, \r
- the MED file is loaded on demand. This is the default behaviour in SALOME \r
- and recommended for big files to optimize memory usage.</span> </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Build \r
- at once</B></span> - when this option is checked, you can't perform any operations \r
- until the MED file is fully loaded and processed. </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Build \r
- fields - &nbsp;<span style="font-weight: normal;">when \r
- this</span> <span style="font-weight: normal;">option is checked, the \r
- fields are built automatically at loading. </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Build \r
- min/max - <span style="font-weight: normal;">when this option is checked, \r
- minimum and maximum values of the time stamps are found at loading. </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Build \r
- groups - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
- is checked, the groups and families are built automatically at loading. \r
- </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Close \r
- dialog at finish - <span style="font-weight: normal;">when this option \r
- is checked, the dialog box is closed after loading of the selected MED \r
- file. When unchecked, it allows loading other MED files. </span></p></li>\r
-</ul>\r
-\r
-<p class="whs7">&nbsp;</p>\r
-\r
-<p class="whs8">Representation Preferences</p>\r
-\r
-<p class="whs8">&nbsp;</p>\r
-\r
-<p class="whs6"><img src="pics/pref33.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs12"></p>\r
-\r
-<p class="whs6">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Representation properties \r
- - <span style="font-weight: normal;">these checkboxes allow to choose \r
- the default representation type for each field presentation.</span><span \r
- style="margin-left: 40px; text-align: justify;"> </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Use \r
- Shading - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
- is checked, the objects will be displayed with shading.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs6">&nbsp;</p>\r
-\r
-<p class="whs6">&nbsp;</p>\r
-\r
-<p class="whs6">Gauss Points Preferences</p>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<p class="whs6"><img src="pics/pref34.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Primitive - <span style="font-weight: normal;">this \r
- menu allows user to choose the graphic primitive to use to present the \r
- results at Gauss points in the viewer.</span><span style="margin-left: 40px; text-align: justify;"> \r
- </span></p></li>\r
-       \r
-       <ul type="disc" class="whs3">\r
-               \r
-               <li class=kadov-p><p class="whs14">Primitive type \r
- - <span style="font-weight: normal;">provides choice between </span>Point \r
- sprites<span style="font-weight: normal;">, </span>Open GL points<span \r
- style="font-weight: normal;"> and </span>Geometrical Spheres<span style="font-weight: normal;">.</span></p></li>\r
-               \r
-               <li class=kadov-p><p class="whs15"><span style="font-weight: bold;"><B>Maximum \r
- Size</B></span> <span style="font-weight: bold;"><B>(Clamp)</B></span> - defines \r
- the maximum size of sprite points ranging from 1 to 512. By default the \r
- value is set to 256 pixels. </p></li>\r
-               \r
-               <li class=kadov-p><p class="whs14">Main Texture - \r
- &nbsp;<span style="font-weight: normal;">path \r
- to the </span>Main Texture<span style="font-weight: normal;"> (16x16 pixels) \r
- which defines the shape of the point sprite used for rendering.</span></p></li>\r
-               \r
-               <li class=kadov-p><p class="whs10"><span \r
- style="font-weight: bold;"><B>Alpha Channel Texture (16*16) -</B></span> path \r
- to the <span style="font-weight: bold;"><B>Alpha Channel Texture</B></span> which \r
- defines the transparency of the point sprite.</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs14">Alpha Channel Threshold \r
- - <span style="font-weight: normal;">defines the level of transparency \r
- ranging from 0 to 1.</span> </p></li>\r
-               \r
-               <li class=kadov-p><p class="whs14">Geometrical Sphere \r
- Resolution - <span style="font-weight: normal;">defines the number of \r
- faces of</span> Geometry Spheres.</p></li>\r
-               \r
-               <li class=kadov-p><p class="whs14">Notify when number \r
- of faces exceeds -<span style="font-weight: normal;"> limitation of the \r
- number of faces;</span> <span style="font-weight: normal;">the user will \r
- be warned if it exceeds the given value.</span></p></li>\r
-       </ul>\r
-</ul>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Size - in this menu \r
- you can define</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs16">Range value for min \r
- and max size - <span style="font-weight: normal;">these two parameters \r
- will be respectively multiplied by a reference length (average size of \r
- cells of the mesh) to define the range for minimum and maximum size of \r
- a point during rendering (at magnification = 100%). Default values are:</span></p></li>\r
-       \r
-       <ol type="disc" class="whs17">\r
-               \r
-               <ul type="disc" class="whs3">\r
-                       \r
-                       <li style="list-style: circle;"\r
-                               type=circle\r
-                               class=kadov-p><p><span style="font-weight: bold;"><B>Rainbow</B></span> \r
- scale: <span style="font-weight: bold;"><B>min = 10%</B></span>, <span style="font-weight: bold;"><B>max \r
- = 33%</B></span></p></li>\r
-                       \r
-                       <ul type="square" class="whs18">\r
-                               \r
-                               <li class=kadov-p><p class="whs19">Min size \r
- is associated to the smallest real value (including negative values).</p></li>\r
-                               \r
-                               <li class=kadov-p><p class="whs19">Max size \r
- is associated to the largest real value.</p></li>\r
-                       </ul>\r
-                       \r
-                       <li style="list-style: circle;"\r
-                               type=circle\r
-                               class=kadov-p><p><span style="font-weight: bold;"><B>Bicolor</B></span> \r
- scale: <span style="font-weight: bold;"><B>min = 0</B></span> (not editable), \r
- <span style="font-weight: bold;"><B>max = 33%</B></span></p></li>\r
-                       \r
-                       <ul type="square" class="whs18">\r
-                               \r
-                               <li class=kadov-p><p class="whs19">Null size \r
- is associated to the 0 scalar value.</p></li>\r
-                               \r
-                               <li class=kadov-p><p class="whs19">Max size \r
- is associated to the largest absolute value.</p></li>\r
-                       </ul>\r
-               </ul>\r
-       </ol>\r
-</ul>\r
-\r
-<p class="whs20">Both values are dynamically updated by the \r
- system according to the selected scalar bar. In the case of a <span style="font-weight: bold;"><B>Bicolor</B></span> \r
- scale, the minimum value is set to 0 in the dialog and the control is \r
- disabled.</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Magnification \r
- (%)</B></span> corresponds to the change of size of results at Gauss point \r
- primitives in 2D space. Acceptable values range from 0 to N; 100% means \r
- no magnification, 50% means half of its size, 200% mean twice its size \r
- and so forth. By default this value is set to 100%.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>+/- \r
- Ratio</B></span> corresponds to the number by which the magnification will \r
- be respectively multiplied or divided at edition, ranging from 0.01 to \r
- 10. By default this value is set to 2.</p></li>\r
-</ul>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Geometry </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Size \r
- of points (%) </B></span>defines a value that will be multiplied by a reference \r
- length (representative of the average size of cells of the mesh) to define \r
- the size of points during rendering (at magnification = 100%). Default \r
- values 10%.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs13">Background \r
- Color - <span style="font-weight: normal;">&nbsp;allows \r
- to select the color of points used for presentations. Click on the colored \r
- line to access to the </span><a href="select_color_and_font.htm">Select \r
- Color</a><span style="font-weight: normal;"> dialog box. </span></p></li>\r
-</ul>\r
-\r
-<p class="whs14">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Gauss Points Scalar \r
- Bar</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Active \r
- Bar - <span style="font-weight: normal;">this option allows to choose</span> \r
- Local<span style="font-weight: normal;"> or</span> Global <span style="font-weight: normal;">Bar \r
- as active.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Display \r
- Global Bar - <span style="font-weight: normal;">this option allows to \r
- visualize or to hide the Global Bar.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Scalar \r
- Bar Mode - <span style="font-weight: normal;">this option allows to choose</span> \r
- <span style="font-weight: normal;">between</span> Bicolor <span style="font-weight: normal;">and</span> \r
- Rainbow <span style="font-weight: normal;">Scalar Bar Mode.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs7">Spacing \r
- - <span style="font-weight: normal;">allows to define Spacing from 0.01 \r
- to 1.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs14">&nbsp;</p>\r
-\r
-<p class="whs6">Inside <span style="font-weight: normal;">and</span> \r
- Outside Cursor Preferences<span style="font-weight: normal;"> allow to \r
- set</span> Primitives, Size<span style="font-weight: normal;"> and</span> \r
- Magnification<span style="font-weight: normal;"> for the respective zones.</span> \r
- &nbsp;</p>\r
-\r
-<p class="whs6">&nbsp;</p>\r
-\r
-<p class="whs21">Picking Preferences</p>\r
-\r
-<p class="whs21">&nbsp;</p>\r
-\r
-<p class="whs21"><img src="pics/pref37.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Cursor</B></span> \r
- - allows to adjust the Size of the cursor used for Picking (ranging from \r
- 0.1 to 1), the Height of the pyramids (ranging from 0 to 10) and the Selection \r
- cursor color. </p></li>\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Tolerance</B></span> \r
- - defines at which distance of the cursor from the point it becomes selected \r
- (ranges from 0.001 to 10). </p></li>\r
-       \r
-       <li class=kadov-p><p><span style="font-weight: bold;"><B>Information window \r
- -</B></span> allows to define the <span style="font-weight: bold;"><B>Transparency</B></span> \r
- (from 0% = opaque to 100% = transparent) and <span style="font-weight: bold;"><B>Position</B></span> \r
- of the window, which can be: </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Centred \r
- below the point</B></span>, or</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11">located at <span style="font-weight: bold;"><B>Top-left \r
- corner of the 3D view</B></span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs8">Movement \r
- of the Camera <span style="font-weight: normal;">can also be define by \r
- the user. </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Zoom \r
- at first selected point -</B></span> This value is used to define the focal \r
- distance at the first selected point (at the end of the movement of the \r
- camera). This value is a ratio that will be multiplied by the current \r
- zoom value.</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs9">Number \r
- of steps between two positions - <span style="font-weight: normal;">defines \r
- the smoothness of camera movement at selection by the number of iterations. \r
- If set to 1 the camera is zoomed and centered at the point momentarily. \r
- Greater numbers mean very slow camera movement.</span> &nbsp;&nbsp;</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs6">Display \r
- parent mesh element - <span style="font-weight: normal;">allows to visualize \r
- or hide the patent mesh element of the selected gauss point.</span> </p></li>\r
-</ul>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p class="whs21">Navigation Preferences</p>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p class="whs21"><img src="pics/pref38.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs22">&nbsp;</p>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Mouse</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs16">Mouse Behaviour - <span \r
- style="font-weight: normal;">this option allows to choose one of the modes \r
- of work with mouse in Gauss Viewer. </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs23">Salome Standard Controls \r
- - <span style="font-weight: normal;">allows to manipulate objects in the \r
- viewer with the mouse and locked Ctrl button: increase or decrease the \r
- zoom ratio with the left mouse button, translate object in any direction \r
- with the central mouse button or rotate it with the right mouse button. \r
- </span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs23">Keyboard Free - <span \r
- style="font-weight: normal;">allows to manipulate objects in the viewer \r
- with the mouse without locking Ctrl button</span>. <span style="font-weight: normal;">In \r
- this case the operations are assigned to the buttons differently: rotation \r
- is made with the left button, translation with the right and zoom with \r
- both pressed in the same time.</span> &nbsp;&nbsp;</p></li>\r
-</ul>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Keyboard</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs16">[+]/[-] Speed Increment \r
- - <span style="font-weight: normal;">defines the number of units by which \r
- the speed increases or respectively decreases after pressing [+] or [-] \r
- keyboard buttons.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs13">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Spacemouse -<span style="font-weight: normal;"> \r
- a mouse-like manipulator device specially designed for working with 3D \r
- presentations, objects, etc. You can reassign the actions listed below \r
- to any of its buttons. </span></p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs16">Decrease Speed Increment \r
- - <span style="font-weight: normal;">decreases by 1 the speed increment \r
- used for the keyboard (same as [-] key).</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Increase Speed Increment \r
- - <span style="font-weight: normal;">increase by 1 the speed increment \r
- used for the keyboard (same as [+] key).</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Decrease Gauss Points \r
- Magnification - <span style="font-weight: normal;">divides the current \r
- magnification by the magnification ratio.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Increase Gauss Points \r
- Magnification -<span style="font-weight: normal;"> multiplies the current \r
- magnification by the magnification ratio.</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Dominant / combined \r
- switch -<span style="font-weight: normal;"> toggles button to switch to \r
- dominant or combined movements.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p class="whs21">Recorder Preferences</p>\r
-\r
-<p class="whs21">&nbsp;</p>\r
-\r
-<p class="whs21"><img src="pics/pref39.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1">&nbsp;</p>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs1">Settings</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
-       \r
-       <li class=kadov-p><p class="whs16">Mode - <span style="font-weight: normal;">allows \r
- to choose from</span> <span style="font-weight: normal;">two recording \r
- regimes:</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs23">Recording all displayed \r
- frames - <span style="font-weight: normal;">records exactly at the FPS \r
- rate specified by the user.</span> &nbsp;</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs23">Recording at a given \r
- FPS - <span style="font-weight: normal;">records only when the contents \r
- of the viewer change (some activity is performed). &nbsp;In \r
- the AVI file non-recorded images are substituted with the copies of the \r
- latest recorded image, which produces files with lower quality but requires \r
- less system resources.</span> &nbsp;</p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">FPS - <span style="font-weight: normal;">allows \r
- to define the FPS (frames per second) rate for the clip. Set greater value \r
- for better quality. &nbsp;</span></p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Quality - <span style="font-weight: normal;">allows \r
- to set the quality of the clip in the interval between 0 and 100.</span> \r
- </p></li>\r
-       \r
-       <li class=kadov-p><p class="whs16">Progressive - <span \r
- style="font-weight: normal;">allows to record a progressive API file.</span> \r
- </p></li>\r
-</ul>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p class="whs16">&nbsp;</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/robohhre.lng b/doc/salome/gui/GUI/robohhre.lng
deleted file mode 100755 (executable)
index 297538b..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-[GlossaryTab]\r
-TabCaption=&Glossary\r
-TermCaption=&Term\r
-DefinitionCaption=&Definition For:\r
-\r
-[BrowseSequence]\r
-PreCaption=Previous\r
-PreTooltip=Previous Topic\r
-NextCaption=Next\r
-NextTooltip=Next Topic\r
-BlockTooltip=Select Block\r
-\r
-[Common]\r
-Contents=Contents\r
-Index=Index\r
-Search=Search\r
-Glossary=Glossary\r
-Logo/Author=Powered By\r
-Show=Show\r
-Hide=Hide\r
-SyncToc=SyncToc\r
-Prev=<<\r
-Next=>>\r
-Disabled Prev=<<\r
-Disabled Next=>>\r
-Seperate = |\r
-\r
-[WebHelp]\r
-Cancel=Cancel\r
-CantOpenURLorFile=Can't open URL or file\r
-CompletingContents=Completing Contents...\r
-Display=Display\r
-Term=Term:\r
-Definition=Definition:\r
-Done=Done\r
-Find=Find\r
-IndexInputPrompt=Type in the keyword to find:\r
-RelateTopicListPrompt=Click a topic, then click Display.\r
-LoadingData=Loading data, please wait...\r
-LoadingContents=Loading contents, please wait...\r
-LoadingContentsData=Loading, click here to cancel...\r
-LoadingFTS=Reading Search Data...\r
-LoadingIndex=Loading Index...\r
-LoadingTOCItem=Loading Table of Contents:\r
-Searching=Searching...\r
-FtsInputPrompt=Type in the word(s) to search for:\r
-TopicsFound=Topics Found\r
-BrowserLimitedMessage=Your browser does not support frames. We recommend that you update your browser to a version that supports frames.\r
-SuggestViewNoFrameMessage=To view the Help system without frames click on this\r
-SuggestViewNoFrameMsg2=hyperlink.\r
-TopicsNotFound=No Topics Found.\r
-CantSearch=Cannot search for that phrase.\r
-JS_alert_appletNotLoad = Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.\r
-JS_alert_colorlimitation=WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.\r
-Blank_topic_text=This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink.\r
-JS_alert_ProjectLoadingFail=Could not load correctly, please click Refresh.\r
-JS_alert_cantLoadProject=Can't load project:\r
-JS_alert_ErrorInLoading=Error in Loading navigation component. Please regenerate WebHelp.\r
-IndexBtnText=Go\r
-FtsBtnText=Go\r
-ToolBarSearchBtnText=Go\r
-InTopicSearchBtnText=Go\r
-SearchLabel=Search\r
-SearchPrompt=- Search -\r
-PreTooltip=Previous Topic\r
-NextTooltip=Next Topic\r
-WebSearch=WebSearch\r
-SyncTocTooltip=Sync TOC\r
-Book=Book\r
-Page=Page\r
-Remote_Page=Remote Page\r
-Show_Navigation_Component=Show Navigation Component\r
-Hide_Navigation_Component=Hide Navigation Component\r
-nls_edit_label=Type in your question:\r
-nls_button_go_hint=Go Search\r
-nls_button_go_text=Go\r
-nls_body_instruction=Enter your question in the text box above, then click GO.\r
-nls_body_empty=Sorry, we were unable to find a good answer for your question.\r
-IndexSelectTopicTitle=Select a Topic\r
-IndexSelectTopicLabel=Select a topic, then click Display\r
-IndexSelectTopicError=Please select a topic.\r
-IndexAlphabetBookmarks=ABCDEFGHIJKLMNOPQRSTUVWXYZ\r
-MergeError1=The merged Help system\r
-MergeError2=is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.\r
-PoweredBy=Powered by\r
-GeneratedBy=Generated by\r
-Author=Author\r
-About=About\r
-Print=Print\r
-\r
-[PrintedDoc]\r
-TableOfContents=Table Of Contents\r
-TitlePage=Title Page\r
-ChapterFileNamePrefix=Chapter_\r
-TitlePageFileName=Chapter__Title_Page.doc\r
-CrossReferencePrefix=See\r
-GlossaryHeadingStyleName=Glossary Heading\r
-GlossaryTermStyleName=Glossary Term\r
-GlossaryDefinitionStyleName=Glossary Definition\r
-TitlePageTitleStyleName=Title Page Title\r
-TocPageTitleStyleName=Table of Contents Page Title\r
diff --git a/doc/salome/gui/GUI/select_color_and_font.htm b/doc/salome/gui/GUI/select_color_and_font.htm
deleted file mode 100755 (executable)
index 33ad83d..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Select Color and Font</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { margin-left:40px; }\r
-img_whs2 { border:none; width:492px; height:392px; float:none; border-style:none; }\r
-p.whs3 { font-family:'Times New Roman' , serif; }\r
-img_whs4 { border:none; width:510px; height:393px; float:none; border-style:none; }\r
-p.whs5 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nSetting Preferences\nSelect Color and Font");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Select Color and Font</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>Select Color</B></span> and <span style="font-weight: bold;"><B>Select \r
- Font</B></span> menus are used in many Preferences.</p>\r
-\r
-<h3>Select color</h3>\r
-\r
-<p class="whs1"><img src="pics/selectcolor.png" x-maintain-ratio="TRUE" width="492px" height="392px" border="0" class="img_whs2"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p class="whs3">This menu &nbsp;allows \r
- to choose from either predefined <span style="font-weight: bold;"><B>Basic \r
- Colors </B></span>grouped in the upper left corner of the window or <span \r
- style="font-weight: bold;"><B>Custom Colors,</B></span> which you can define \r
- yourselves. To define a Custom Color, click on one of the Custom Color \r
- cells, select the color you need in the field of colors or by typing in \r
- its numeric parameters in the lower right corner of the window, then click \r
- <span style="font-weight: bold;"><B>Add to Custom Colors</B></span> button. The \r
- chosen color will be added to <span style="font-weight: bold;"><B>Custom \r
- Colors</B></span> table. &nbsp;</p>\r
-\r
-<h3>Select Font</h3>\r
-\r
-<p class="whs1"><img src="pics/selectfont.png" x-maintain-ratio="TRUE" width="510px" height="393px" border="0" class="img_whs4"></p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<p class="whs5"><span \r
- style="font-weight: normal;">This menu provides a wide choice of </span>Fonts, \r
- Font Styles <span style="font-weight: normal;">and</span> Sizes. <span \r
- style="font-weight: normal;">Characters can be underlined or struck out. \r
- It is possible to preview them in the</span> Sample <span style="font-weight: normal;">window.</span> \r
- <span style="font-family: 'Times New Roman', serif; font-weight: bold;"><B>Script</B></span><span \r
- style="font-family: 'Times New Roman', serif; font-weight: normal;"> dialog-box \r
- gives the possibility to use not only Latin and Latin Extended but also \r
- Cyrillic, Greek, Arabic, Runic and many other subsets. &nbsp;</span></p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/setting_preferences.htm b/doc/salome/gui/GUI/setting_preferences.htm
deleted file mode 100755 (executable)
index bf28eb8..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Setting Preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{   document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-img_whs1 { border:none; width:541px; height:309px; float:none; border-style:none; }\r
-p.whs2 { font-family:'Times New Roman' , serif; }\r
-p.whs3 { margin-left:0px; background-image:url('texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
-img_whs4 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
-p.whs5 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
-  var strNSS = "<style type='text/css'>";\r
-  strNSS += "p.whs3 {margin-left:1pt; }";\r
-  strNSS +="</style>";\r
-  document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
-  if (innerWidth != origWidth || innerHeight != origHeight)\r
-     location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
-       origWidth = innerWidth;\r
-       origHeight = innerHeight;\r
-       onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       addTocInfo("GUI module\nSetting Preferences\nSetting Preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       setRelStartPage("index.htm");\r
-\r
-               autoSync(1);\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Setting Preferences</h1>\r
-\r
-<p>In <span style="font-weight: bold;"><B>SALOME </B></span>you can set preferences \r
- for each module in the common editor of preferences. SALOME preferences \r
- refer to the whole GUI SALOME session, other preferences are module-specific \r
- and are accessible only after you load a respective module. </p>\r
-\r
-<p>When you change settings (click <span style="font-weight: bold;"><B>OK</B></span> \r
- or <span style="font-weight: bold;"><B>Apply</B></span> button) each module receives \r
- the notification about what preferences are changed. You can also click \r
- <span style="font-weight: bold;"><B>Defaults</B></span> button to restore default \r
- preferences or <span style="font-weight: bold;"><B>Close</B></span> button to \r
- quit the menu without any changes. </p>\r
-\r
-<p><span style="font-weight: bold;"><B>Import</B></span> button allows to load \r
- a user file containing preferences from your home directory through a \r
- standard Import dialog box.</p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p><img src="pics/import.png" x-maintain-ratio="TRUE" width="541px" height="309px" border="0" class="img_whs1"></p>\r
-\r
-<p>&nbsp;</p>\r
-\r
-<p>This file has no extension and by default starts with .SalomeApprc. \r
- followed by Salome version number. There exists one file for each Salome \r
- version in use.</p>\r
-\r
-<p>The preferences, set during the current study session, are automatically \r
- saved in this file at the end of the session. Next time you launch SALOME \r
- application, these preferences will be restored.</p>\r
-\r
-<p class="whs2">&nbsp;</p>\r
-\r
-<p class="whs3"><img src="note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs4">The preferences you set \r
- will be default preferences for all <span style="font-weight: bold;"><B>new</B></span> \r
- objects, but they are not retroactive and do not automatically apply to \r
- the existing objects. </p>\r
-\r
-<p class="whs5">&nbsp;</p>\r
-\r
-<p class="whs2">&nbsp;</p>\r
-\r
-<p class="whs2">&nbsp;</p>\r
-\r
-<p class="whs2">&nbsp;</p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/ss_btn_related_topics.gif b/doc/salome/gui/GUI/ss_btn_related_topics.gif
deleted file mode 100755 (executable)
index 5158bc4..0000000
Binary files a/doc/salome/gui/GUI/ss_btn_related_topics.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/static/footer.html b/doc/salome/gui/GUI/static/footer.html
new file mode 100755 (executable)
index 0000000..56d52a6
--- /dev/null
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+</head>
+<body>
+<hr style="width: 100%; height: 2px;">
+<div style="text-align: center;">Copyright &copy; 2003-2007 CEA, EDF<br>
+</div>
+</body>
+</html>
diff --git a/doc/salome/gui/GUI/static/header.html b/doc/salome/gui/GUI/static/header.html
new file mode 100755 (executable)
index 0000000..a70a95e
--- /dev/null
@@ -0,0 +1,12 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <title>$title</title>
+   <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<hr>
+<center>
+SALOME documentation central
+</center>
+<hr>
diff --git a/doc/salome/gui/GUI/texture_horiz_ltbluebubbles.jpg b/doc/salome/gui/GUI/texture_horiz_ltbluebubbles.jpg
deleted file mode 100755 (executable)
index a10d494..0000000
Binary files a/doc/salome/gui/GUI/texture_horiz_ltbluebubbles.jpg and /dev/null differ
diff --git a/doc/salome/gui/GUI/tip1.gif b/doc/salome/gui/GUI/tip1.gif
deleted file mode 100755 (executable)
index bb74c87..0000000
Binary files a/doc/salome/gui/GUI/tip1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/webhelp.cab b/doc/salome/gui/GUI/webhelp.cab
deleted file mode 100755 (executable)
index b942f64..0000000
Binary files a/doc/salome/gui/GUI/webhelp.cab and /dev/null differ
diff --git a/doc/salome/gui/GUI/webhelp.jar b/doc/salome/gui/GUI/webhelp.jar
deleted file mode 100755 (executable)
index 53b2666..0000000
Binary files a/doc/salome/gui/GUI/webhelp.jar and /dev/null differ
diff --git a/doc/salome/gui/GUI/whcsh_home.htm b/doc/salome/gui/GUI/whcsh_home.htm
deleted file mode 100755 (executable)
index 5a486ba..0000000
+++ /dev/null
@@ -1,600 +0,0 @@
-<html>\r
-<script language="javascript1.2" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(gbIE4||gbNav61)\r
-{\r
-       document.write("<body></body>");\r
-}\r
-else\r
-{\r
-       document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");\r
-}\r
-var gCSHFileName="whcshdata.htm";\r
-\r
-var gHomePage="index.htm";\r
-var gaProj=new Array();\r
-gaProj[0]=new Object();\r
-gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));\r
-gaProj[0].nLoadState=0;\r
-var gCurrent=0;\r
-\r
-var gsTopicURL="";\r
-var gnCurProj=0;\r
-var gnCommand=-1;\r
-var CMD_SHOWTOC=1;\r
-var CMD_SHOWINDEX=2;\r
-var CMD_SHOWSEARCH=3;\r
-var CMD_SHOWGLOSSARY=4;\r
-var CMD_SHOWNONE=0;\r
-\r
-var RHWO_LOCATION=0x01;                /*need location bar?*/\r
-var RHWO_MENUBAR=0x02;         /*need menubar?*/               \r
-var RHWO_RESIZABLE=0x04;       /*resizable window?*/\r
-var RHWO_TOOLBAR=0x08;         /*need toolbar?*/\r
-var RHWO_STATUS=0x10;          /*need statusbar?*/\r
-var RHWO_SCROLLBARS=0x20;      /*need scrollbars?*/\r
-\r
-var gsStr="";\r
-var gnId=-1;\r
-var gsWindow="";\r
-var gsJava="false";\r
-var gbUseStr=false;\r
-var gbURLReady=false;\r
-var goWnd=new Object();\r
-goWnd.sName="whCshDefault";\r
-goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
-goWnd.sBLeft="49%";\r
-goWnd.sBTop="0";\r
-goWnd.sBWidth="49%";\r
-goWnd.sBHeight="49%";\r
-goWnd.nPanes=1;\r
-var goFullWnd=new Object();\r
-goFullWnd.sName="whDefault";\r
-goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
-goFullWnd.sBLeft="20%";\r
-goFullWnd.sBTop="0";\r
-goFullWnd.sBWidth="79%";\r
-goFullWnd.sBHeight="79%";\r
-goFullWnd.nPanes=2;\r
-\r
-var goNewWnd=null;\r
-var gbLoadWnd=false;\r
-var gsURL="";\r
-\r
-function showCSH(sParam)\r
-{\r
-       //id=\r
-       //str=\r
-       //url=\r
-       //cmd=\r
-       //with the format #<a=xxx>>b=xxx>>c=xxx...\r
-       parseParam(sParam);\r
-       SwitchURL();\r
-}\r
-\r
-function IsWndReady()\r
-{\r
-       if(gaProj[0].nLoadState==0)\r
-       {\r
-               var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);\r
-               gaProj[0].nLoadState=1;\r
-               setTimeout("loadFail("+0+");",3000);\r
-               loadDataCsh(sCshFile);\r
-               gbLoadWnd=true;\r
-               return false;\r
-       }\r
-       else\r
-               return true;\r
-}\r
-\r
-function SwitchURL()\r
-{\r
-       if(gbURLReady)\r
-       {\r
-               var sURL="";\r
-               var oWnd=null;\r
-               if(gsTopicURL)\r
-               {\r
-                       sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;\r
-                       oWnd=goWnd;\r
-               }\r
-               else\r
-               {\r
-                       if(gnCommand!=-1)\r
-                               sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;\r
-                       else\r
-                               sURL=_getPath(document.location.href)+gHomePage;\r
-                       oWnd=goFullWnd;\r
-               }\r
-               if(gsWindow)\r
-               {\r
-                       if(!IsWndReady())\r
-                               return false;\r
-                       if(gaProj[gnCurProj].aWnd)\r
-                       {\r
-                               var aWnd=gaProj[gnCurProj].aWnd;\r
-                               var bFound=false;\r
-                               for(var i=0;i<aWnd.length;i++)\r
-                               {\r
-                                       if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())\r
-                                       {\r
-                                               oWnd=aWnd[i];\r
-                                               bFound=true;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               if(!bFound&&gnCurProj!=0)\r
-                               {\r
-                                       var aWnd=gaProj[0].aWnd;\r
-                                       for(var j=0;j<aWnd.length;j++)\r
-                                       {\r
-                                               if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())\r
-                                               {\r
-                                                       oWnd=aWnd[j];\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               if(sURL&&oWnd)\r
-               {\r
-                       strURLOpt="";\r
-                       if(oWnd.sCaption)\r
-                               strURLOpt+=">>cap="+oWnd.sCaption;\r
-                       if(oWnd.nPanes==1)\r
-                               strURLOpt+=">>pan="+oWnd.nPanes;\r
-                       else if(oWnd.nPanes==2)\r
-                       {\r
-                               strURLOpt+=">>pan="+oWnd.nPanes;\r
-                               if(oWnd.nPOptions)\r
-                                       strURLOpt+=">>pot="+oWnd.nPOptions;\r
-                               if(oWnd.sPButtons)\r
-                                       strURLOpt+=">>pbs="+oWnd.sPButtons;\r
-                               if(oWnd.sPDefBtn)\r
-                                       strURLOpt+=">>pdb="+oWnd.sPDefBtn;\r
-                       }\r
-                       if(strURLOpt)\r
-                       {\r
-                               if(sURL.indexOf("#")==-1)\r
-                                       sURL+="#";\r
-                               sURL+=strURLOpt;\r
-                       }\r
-                       if(gsJava=="false")\r
-                       {\r
-                               var strOpt=getBrowserOptionString(oWnd);\r
-                               var sNewName=convertWindowName(oWnd.sName);\r
-                               if(gbNav4)\r
-                               {\r
-                                       if (gbNav6)\r
-                                       {\r
-                                               gsURL = sURL;\r
-                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
-                                               setTimeout("postWindowNSOpen();",100);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               window.open("about:blank",sNewName,strOpt);\r
-                                               var oNewWnd=window.open(sURL,sNewName);\r
-                                               window.close();\r
-                                               oNewWnd.focus();\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(gbIE5)\r
-                                       {\r
-                                               window.open("about:blank",sNewName,strOpt);\r
-                                               goNewWnd=window.open(sURL,sNewName);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               gsURL = sURL; // IE4 had hard time to handle bookmark.\r
-                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
-                                       }\r
-                                       setTimeout("postWindowOpen();",100);\r
-                               }\r
-                       }\r
-                       else\r
-                               document.location=sURL;\r
-               }\r
-       }\r
-}\r
-\r
-function convertWindowName(strName)\r
-{\r
-       var strNewName = strName;\r
-       var strResultName = "";\r
-       var re=new RegExp("_","g");\r
-       strNewName = strName.replace(re,"__");\r
-       for (var i=0;i<strNewName.length;i++)\r
-               if (!(strNewName[i] == '_' ||\r
-                       (strNewName[i] <= '9' && strNewName[i] >= '0') ||\r
-                       (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||\r
-                       (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))\r
-               {\r
-                       strResultName += "_" + strNewName.charCodeAt(i);\r
-               }\r
-               else\r
-                       strResultName += strNewName[i];\r
-       return strResultName;\r
-}\r
-\r
-function postWindowNSOpen()\r
-{\r
-       if(goNewWnd)\r
-       {\r
-               if (gsURL)\r
-                       goNewWnd.document.location.href=gsURL;\r
-               window.close();\r
-               goNewWnd.focus();\r
-       }\r
-}\r
-\r
-function postWindowOpen()\r
-{\r
-       if(goNewWnd)\r
-       {\r
-               if (gsURL&&!gbIE5&&gbIE4)\r
-                       goNewWnd.document.location.href=gsURL;\r
-               goNewWnd.focus();\r
-       }\r
-}\r
-\r
-function parseParam(sParam)\r
-{\r
-       if(sParam)\r
-       {\r
-               var nBPos=0;\r
-               do\r
-               {\r
-                       var nPos=sParam.indexOf(">>",nBPos);\r
-                       if(nPos!=-1)\r
-                       {\r
-                               if(nPos>0)\r
-                               {\r
-                                       var sPart=sParam.substring(nBPos,nPos);\r
-                                       parsePart(sPart);\r
-                               }\r
-                               nBPos=nPos+2;\r
-                       }\r
-                       else\r
-                       {\r
-                               var sPart=sParam.substring(nBPos);\r
-                               parsePart(sPart);\r
-                               break;\r
-                       }\r
-               }while(nBPos<sParam.length);\r
-       }\r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
-       if(sPart.toLowerCase().indexOf("id=")==0)\r
-       {\r
-               fetchURLById(sPart.substring(3));\r
-               gbURLReady=false;\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("str=")==0)\r
-       {\r
-               fetchURLByStr(sPart.substring(4));\r
-               gbURLReady=false;\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("url=")==0)\r
-       {\r
-               gsTopicURL=sPart.substring(4);\r
-               gbURLReady=true;\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("cmd=")==0)\r
-       {\r
-               var sCmd=sPart.substring(4);\r
-               if(sCmd.toLowerCase()=="toc")\r
-               {\r
-                       gnCommand=CMD_SHOWTOC;\r
-               }\r
-               else if(sCmd.toLowerCase()=="idx")\r
-               {\r
-                       gnCommand=CMD_SHOWINDEX;\r
-               }\r
-               else if(sCmd.toLowerCase()=="fts")\r
-               {\r
-                       gnCommand=CMD_SHOWSEARCH;\r
-               }\r
-               else if(sCmd.toLowerCase()=="glo")\r
-               {\r
-                       gnCommand=CMD_SHOWGLOSSARY;\r
-               }\r
-               else if(sCmd.toLowerCase()=="none")\r
-               {\r
-                       gnCommand=CMD_SHOWNONE;\r
-               }\r
-               gbURLReady=true;\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("wnd=")==0)\r
-       {\r
-               gsWindow=_browserStringToText(sPart.substring(4));\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("java=")==0)\r
-       {\r
-               gsJava=sPart.substring(5);\r
-       }\r
-}\r
-\r
-function fetchURLById(sId)\r
-{\r
-       var nId=parseInt(sId);\r
-       gsTopicURL="";\r
-       fetchURL("",nId,false);\r
-}\r
-\r
-function fetchURLByStr(sStr)\r
-{\r
-       gsTopicURL="";\r
-       fetchURL(sStr,0,true);\r
-}\r
-\r
-function fetchURL(sStr,nId,bUseStr)\r
-{\r
-       var bNeedLoad=false;\r
-       var bFound=false;\r
-       for(var i=0;i<gaProj.length;i++)\r
-       {\r
-               if(gaProj[i].nLoadState==3)\r
-               {\r
-                       if(gaProj[i].aCsh)\r
-                       {\r
-                               for(var j=0;j<gaProj[i].aCsh.length;j++)\r
-                               {\r
-                                       var sTopicURL="";\r
-                                       if(bUseStr)\r
-                                       {\r
-                                               if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())\r
-                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               if(gaProj[i].aCsh[j].nTopicNum==nId)\r
-                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
-                                       }\r
-                                       if(sTopicURL)\r
-                                       {\r
-                                               if(i!=0)\r
-                                               {\r
-                                                       gnCurProj=i;\r
-                                                       if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)\r
-                                                       {\r
-                                                               var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);\r
-                                                               gsTopicURL=sRelPath+sTopicURL;\r
-                                                       }\r
-                                                       else\r
-                                                               gsTopicURL=gaProj[i].sProjPath+sTopicURL;\r
-                                               }\r
-                                               else\r
-                                                       gsTopicURL=sTopicURL;\r
-                                               bFound=true;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       \r
-               }\r
-               else if(gaProj[i].nLoadState==0)\r
-               {\r
-                       gsStr=sStr;\r
-                       gnId=nId;\r
-                       gbUseStr=bUseStr;\r
-                       var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);\r
-                       gaProj[i].nLoadState=1;\r
-                       setTimeout("loadFail("+i+");",3000);\r
-                       loadDataCsh(sCshFile);\r
-                       bNeedLoad=true;\r
-               }\r
-               if(bFound||bNeedLoad)\r
-                       break;\r
-       }\r
-       if(!bNeedLoad)\r
-       {\r
-               gbURLReady=true;\r
-               SwitchURL();\r
-       }\r
-}\r
-\r
-function loadDataCsh(sFile)\r
-{\r
-       if(gbIE4||gbNav61)\r
-               loadData(sFile);\r
-       else\r
-       {\r
-               window.frames[0].location=sFile;\r
-       }\r
-}\r
-\r
-function loadFail(nProj)\r
-{\r
-       if(gaProj[nProj].nLoadState==1)\r
-       {\r
-               gaProj[nProj].nLoadState=2;\r
-               if(!gbLoadWnd)\r
-                       fetchURL(gsStr,gnId,gbUseStr);\r
-               else\r
-                       SwitchURL();\r
-       }\r
-}\r
-\r
-function putCshData(strProj,aCsh,aWnd,aRmtProj)\r
-{\r
-       if(strProj)\r
-       {\r
-               strProj=_replaceSlash(strProj);\r
-               if(strProj.lastIndexOf("/")!=strProj.length-1)\r
-                       strProj+="/";\r
-               for(var i=0;i<gaProj.length;i++)\r
-               {\r
-                       if(gaProj[i].sProjPath)\r
-                       {\r
-                               if(isSamePath(gaProj[i].sProjPath,strProj))\r
-                               {\r
-                                       gaProj[i].nLoadState=3;\r
-                                       gaProj[i].aCsh=aCsh;\r
-                                       gaProj[i].aWnd=aWnd;\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-               if(aRmtProj&&aRmtProj.length)\r
-               {\r
-                       for(var j=0;j<aRmtProj.length;j++)\r
-                       {\r
-                               var strRPath=_getFullPath(strProj,aRmtProj[j]);\r
-                               var bFound=false;\r
-                               for (var k=0;k<gaProj.length;k++)\r
-                               {\r
-                                       if(gaProj[k].sProjPath)\r
-                                       {\r
-                                               if(isSamePath(gaProj[k].sProjPath,strRPath))\r
-                                               {\r
-                                                       bFound=true;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if(!bFound)\r
-                               {\r
-                                       var len=gaProj.length;\r
-                                       gaProj[len]=new Object();\r
-                                       gaProj[len].sProjPath=strRPath;\r
-                                       gaProj[len].nLoadState=0;\r
-                               }\r
-                       }\r
-               }\r
-               if(!gbLoadWnd)\r
-                       fetchURL(gsStr,gnId,gbUseStr);\r
-               else\r
-                       SwitchURL();\r
-                       \r
-       }\r
-}\r
-\r
-function isSamePath(strPath1,strPath2)\r
-{\r
-       return strPath1.toLowerCase()==strPath2.toLowerCase();\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
-       var strCurPPath=_getPath(strLocation);\r
-       var strOriPPath=_getPath(getHomePage());\r
-       var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);\r
-       var strURL=getHomePage()+"#"+strRelPath;\r
-       return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
-       var strHomePage;\r
-       var strTmp=location.toString();\r
-       var nPos=strTmp.indexOf("#");\r
-       if(nPos!=-1)\r
-       {\r
-               strHomePage=strTmp.substring(0,nPos);\r
-       }\r
-       else\r
-       {\r
-               strHomePage=strTmp;\r
-       }\r
-       return strHomePage;\r
-}\r
-\r
-function getBrowserOptionString(oWnd)\r
-{\r
-       var strOpts="";\r
-       if(oWnd.bUseDefault)\r
-               return strOpts;\r
-       if(oWnd.nBOptions&RHWO_LOCATION)\r
-               strOpts+="location=yes";\r
-       else\r
-               strOpts+="location=no";\r
-       if(oWnd.nBOptions&RHWO_TOOLBAR)\r
-               strOpts+=",toolbar=yes";                \r
-       else\r
-               strOpts+=",toolbar=no";         \r
-       if(oWnd.nBOptions&RHWO_MENUBAR)\r
-               strOpts+=",menubar=yes";                \r
-       else\r
-               strOpts+=",menubar=no";\r
-       if(oWnd.nBOptions&RHWO_STATUS)\r
-               strOpts+=",status=yes";         \r
-       else\r
-               strOpts+=",status=no";          \r
-       if(oWnd.nBOptions&RHWO_SCROLLBARS)\r
-               strOpts+=",scrollbars=yes";\r
-       else\r
-               strOpts+=",scrollbars=no";      \r
-       if(oWnd.nBOptions&RHWO_RESIZABLE)\r
-               strOpts+=",resizable=yes";\r
-       else\r
-               strOpts+=",resizable=no";\r
-       if(oWnd.sBTop)\r
-       {\r
-               var nTop=getSValue(oWnd.sBTop,screen.height);\r
-               strOpts+=",top="+nTop;\r
-               strOpts+=",screenY="+nTop;\r
-       }\r
-       if(oWnd.sBLeft)\r
-       {\r
-               var nLeft=getSValue(oWnd.sBLeft,screen.width);\r
-               strOpts+=",left="+nLeft;\r
-               strOpts+=",screenX="+nLeft;\r
-       }\r
-       if(oWnd.sBWidth)\r
-       {\r
-               var nWidth=getSValue(oWnd.sBWidth,screen.width);\r
-               strOpts+=",width="+nWidth;\r
-               strOpts+=",outerWidth="+nWidth;\r
-       }\r
-       if(oWnd.sBHeight)\r
-       {\r
-               var nHeight=getSValue(oWnd.sBHeight,screen.height);\r
-               strOpts+=",height="+nHeight;\r
-               strOpts+=",outerHeight="+nHeight;\r
-       }\r
-       return strOpts;\r
-}\r
-\r
-function getSValue(sValue,nLength)\r
-{\r
-       var nValue=0;\r
-       var nPos=sValue.indexOf("%");\r
-       if(nPos!=-1)\r
-       {\r
-               if(nPos>0)\r
-               {\r
-                       var nPart=parseInt(sValue.substring(0,nPos));\r
-                       nValue=nLength*nPart/100;\r
-               }\r
-       }\r
-       else\r
-               nValue=parseInt(sValue);\r
-       return nValue;\r
-}\r
-\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
-       if(document.location.hash.length>0)\r
-       {\r
-               showCSH(document.location.hash.substring(1));\r
-       }\r
-\r
-       if(gsJava=="false")\r
-               window.moveTo(screen.width,screen.height);\r
-}\r
-//-->\r
-</script>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whcshdata.htm b/doc/salome/gui/GUI/whcshdata.htm
deleted file mode 100755 (executable)
index 2832d87..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="javascript1.2" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="JavaScript">\r
-<!--\r
-var gaCsh=new Array();\r
-\r
-var gaWindow=new Array();\r
-\r
-var gaRmtProj=new Array();\r
-\r
-var gsProjPath=_getPath(document.location.href);\r
-\r
-function CshEntityItem(strAliasId,nTopicNum,strUrl)\r
-{\r
-       this.strAliasId=strAliasId;\r
-       this.nTopicNum=nTopicNum;\r
-       this.strUrl=strUrl;\r
-}\r
-\r
-function CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
-{\r
-       this.sName=sWName;\r
-       this.bUseDefault=bBUseDefault;\r
-       if(!this.bUseDefault)\r
-       {\r
-               this.nBOptions=nWBOptions;\r
-               this.sBLeft=sWBLeft;\r
-               this.sBTop=sWBTop;\r
-               this.sBWidth=sWBWidth;\r
-               this.sBHeight=sWBHeight;\r
-       }\r
-       this.sCaption=sWCaption;\r
-       this.nPanes=nWPanes;\r
-       if(this.nPanes==2)\r
-       {\r
-               this.nPOptions=nWPOptions;\r
-               this.sPButtons=sWPButtons;\r
-               this.sPDefBtn=sWPDefBtn;\r
-       }\r
-}\r
-\r
-function addRemoteProject(sPath)\r
-{\r
-       if(sPath.length!=0)\r
-       {\r
-               if(sPath.lastIndexOf("/")!=sPath.length-1)\r
-                       sPath+="/";\r
-               gaRmtProj[gaRmtProj.length]=sPath;      \r
-       }\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n,strAliasId,nTopicNum,strUrl)\r
-{\r
-       gaCsh[n]=new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-function addWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
-{\r
-       gaWindow[gaWindow.length]=new CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn);\r
-}\r
-\r
-\r
-\r
-\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
-       if(parent&&parent!=this&&parent.putCshData)\r
-       {\r
-               parent.putCshData(gsProjPath,gaCsh,gaWindow,gaRmtProj);\r
-       }\r
-}\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whd_dpns.htm b/doc/salome/gui/GUI/whd_dpns.htm
deleted file mode 100755 (executable)
index 1bca236..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<html>\r
-<head>\r
-<title>Navigator Pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body border=0 topmargin=0 bottommargin=0 rightmargin=0 leftmargin=0 scroll=no>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whphost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsNavReDirect="whgdata/whnvp30.htm";\r
-var gbReDirectThis=false;\r
-  var bPreferXML             = false;\r
-  var strProjectFileXML =  "whproj.xml";\r
-  var strProjectFileHTM =  "whproj.htm";       \r
-if(window.gbWhPHost)\r
-{\r
-         addProject(bPreferXML, strProjectFileXML, strProjectFileHTM);\r
-         addPane("toc","whtdhtml.htm");\r
-  addPane("fts","whfdhtml.htm");\r
-  addPane("glo","whgdhtml.htm");\r
-  setShowPane("toc");\r
-\r
-}\r
-else\r
-       document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
-       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whd_hide0.gif b/doc/salome/gui/GUI/whd_hide0.gif
deleted file mode 100755 (executable)
index 97ea0bb..0000000
Binary files a/doc/salome/gui/GUI/whd_hide0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_hide1.gif b/doc/salome/gui/GUI/whd_hide1.gif
deleted file mode 100755 (executable)
index 97ea0bb..0000000
Binary files a/doc/salome/gui/GUI/whd_hide1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_hide2.gif b/doc/salome/gui/GUI/whd_hide2.gif
deleted file mode 100755 (executable)
index 97ea0bb..0000000
Binary files a/doc/salome/gui/GUI/whd_hide2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_next0.gif b/doc/salome/gui/GUI/whd_next0.gif
deleted file mode 100755 (executable)
index d92dda5..0000000
Binary files a/doc/salome/gui/GUI/whd_next0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_next1.gif b/doc/salome/gui/GUI/whd_next1.gif
deleted file mode 100755 (executable)
index d92dda5..0000000
Binary files a/doc/salome/gui/GUI/whd_next1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_next2.gif b/doc/salome/gui/GUI/whd_next2.gif
deleted file mode 100755 (executable)
index d92dda5..0000000
Binary files a/doc/salome/gui/GUI/whd_next2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_nvp10.htm b/doc/salome/gui/GUI/whd_nvp10.htm
deleted file mode 100755 (executable)
index 2097064..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>\r
-<head>\r
-<title>Navigation Pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-</head>\r
-<frameset rows="30,*" border="0" frameborder="0">\r
-       <frame name="navtabs" title="tab selection frame" src="whd_tabs.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
-       <frame name="navpane" title="navigation frame" src="whd_dpns.htm" ></frame>\r
-</frameset>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whd_nvp20.htm b/doc/salome/gui/GUI/whd_nvp20.htm
deleted file mode 100755 (executable)
index c5754bc..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-<html>\r
-<head>\r
-<title>navigation pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsInitPane="toc";\r
-var gsCurrentPane="";\r
-var gbLoading = "unknown";\r
-var gbTryTime = 0;\r
-var gbMaxTryTime = 6;\r
-var gbPassPhase0 = 0;\r
-var gbretried = 0;\r
-var gbmaxretry = 3;\r
-var gbretrytime = new Array();\r
-\r
-var origWidth = 0;\r
-var origHeight = 0;\r
-\r
-gbretrytime[0]= 5000;\r
-gbretrytime[1]= 30000;\r
-gbretrytime[2]= 60000;\r
-\r
-function addPane(sName, sFile)\r
-{\r
-}\r
-\r
-function setShowPane(sName)\r
-{\r
-       gsInitPane=sName;\r
-}\r
-\r
-  addPane("toc","whtdhtml.htm");\r
-  addPane("fts","whfdhtml.htm");\r
-  addPane("glo","whgdhtml.htm");\r
-  setShowPane("toc");\r
-\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
-       UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
-       UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
-       UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
-       UnRegisterListener2(this, WH_MSG_SYNCTOC);\r
-       UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
-       UnRegisterListener2(this, WH_MSG_GETPANEINFO);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       var bHidePane=false;\r
-       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
-       if (SendMessage(oMsg))\r
-       {\r
-               if(oMsg.oParam>0)\r
-               {\r
-                       if(oMsg.oParam==1)\r
-                               gsInitPane="toc";\r
-                       else if(oMsg.oParam==2)\r
-                               gsInitPane="idx";\r
-                       else if(oMsg.oParam==3)\r
-                               gsInitPane="fts";\r
-                       else if(oMsg.oParam==4)\r
-                               gsInitPane="glo";\r
-               }\r
-               else if(oMsg.oParam==0)\r
-               {\r
-                       bHidePane=true;\r
-               }\r
-       }\r
-       if (bHidePane)\r
-       {\r
-               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
-               SendMessage(oMsg);\r
-       }\r
-       else if (gsInitPane == "toc")\r
-       {\r
-               oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
-               SendMessage(oMsg);      \r
-       }\r
-       else if (gsInitPane=="idx")\r
-       {\r
-               oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
-               SendMessage(oMsg);      \r
-       }\r
-       else if (gsInitPane=="fts")\r
-       {\r
-               oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
-               SendMessage(oMsg);      \r
-       }\r
-       else if (gsInitPane=="glo")\r
-       {\r
-               oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
-               SendMessage(oMsg);      \r
-       }\r
-}\r
-\r
-function CheckLoadingPhase0()\r
-{\r
-       if (!gbPassPhase0) {\r
-               setTimeout("CheckLoadingPhase0()", 1000);\r
-               document.applets[0];\r
-               gbPassPhase0 = 1;\r
-       }\r
-       else {\r
-               CheckLoadingPhase1();\r
-       }\r
-}\r
-\r
-function CheckLoadingPhase1()\r
-{\r
-       if (gbNav4) {\r
-               if ("unknown" == gbLoading && document.readystate < 4) {\r
-                       setTimeout("CheckLoadingPhase1()", 1000);\r
-               }\r
-               else if ("unknown" == gbLoading) {\r
-                       CheckLoadingPhase2();\r
-               }\r
-       }\r
-}\r
-\r
-function CheckLoadingPhase2()\r
-{\r
-       if (gbNav4) {\r
-               gbTryTime ++;\r
-               if ("unknown" == gbLoading) {\r
-                       if (gbTryTime <= gbMaxTryTime )\r
-                               setTimeout("CheckLoadingPhase2()", 1000);\r
-                       else {\r
-                               if (gnVerMinor != 4.60) {\r
-                                       alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");\r
-                               }\r
-                       }       \r
-               }\r
-       }\r
-}\r
-\r
-function CheckAppletLoaded()\r
-{\r
-       if (typeof(document.webhelp) == "undefined")\r
-       {\r
-               document.location.reload();\r
-               if (gbretried < gbmaxretry)\r
-               {\r
-                       gbretried ++;\r
-                       setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
-               }\r
-       }\r
-}\r
-\r
-function reDo() \r
-{\r
-       if (innerWidth != origWidth || innerHeight != origHeight)  \r
-       {\r
-               //reloaded applet if nessary\r
-               gbretried = 0;\r
-\r
-               if (gnVerMinor == 4.60) \r
-               {\r
-                       //reload the applet again.\r
-                       document.location.reload();\r
-                       gbretried ++;\r
-               }\r
-               setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
-       }\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if (oMsg)\r
-       {       \r
-               var nMsgId = oMsg.nMessageId;\r
-               var WebHelpApplet = null;\r
-               if (gbNav4)\r
-               {\r
-                       WebHelpApplet = document.applets["WebHelp"];\r
-                       if (!WebHelpApplet.Command)\r
-                               document.location="whgdata/whnvp30.htm";\r
-               }\r
-               else\r
-                       WebHelpApplet = WebHelp;\r
-\r
-               if(nMsgId==WH_MSG_GETPANEINFO)\r
-               {\r
-                       oMsg.oParam=gsCurrentPane;\r
-                       return false;\r
-               }\r
-               else if (gbLoading!="unknown"||gbNav6)\r
-               {\r
-                       if (nMsgId == WH_MSG_SHOWTOC)\r
-                       {\r
-                               gsCurrentPane="toc";\r
-                               WebHelpApplet .Command("Contents", null);\r
-                               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
-                               SendMessage(onMsg);\r
-                               onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                               SendMessage(onMsg);\r
-                       }\r
-                       else if (nMsgId == WH_MSG_SHOWIDX)\r
-                       {\r
-                               gsCurrentPane="idx";\r
-                               WebHelpApplet .Command("Index", null);\r
-                               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
-                               SendMessage(onMsg);\r
-                               onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                               SendMessage(onMsg);\r
-                       }\r
-                       else if (nMsgId == WH_MSG_SHOWFTS)\r
-                       {\r
-                               gsCurrentPane="fts";\r
-                               WebHelpApplet .Command("Search", null);\r
-                               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
-                               SendMessage(onMsg);\r
-                               onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                               SendMessage(onMsg);\r
-                       }\r
-                       else if (nMsgId == WH_MSG_SHOWGLO)\r
-                       {\r
-                               gsCurrentPane="glo";\r
-                               WebHelpApplet .Command("Glossary", null);\r
-                               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
-                               SendMessage(onMsg);\r
-                               onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                               SendMessage(onMsg);\r
-                       }\r
-                       else if (nMsgId == WH_MSG_SYNCTOC)\r
-                       {\r
-                               gsCurrentPane="toc";\r
-                               var oTopicParam = oMsg.oParam;\r
-                               if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)\r
-                               {\r
-                                       var sPPath = _browserStringToText(oTopicParam.sPPath);\r
-                                       var sParam = "";\r
-                                       for (var i = 0; i < oTopicParam.aPaths.length; i ++)\r
-                                       {\r
-                                               sParam += oTopicParam.aPaths[i] + "\r\r";\r
-                                       }\r
-                                       WebHelpApplet.Command("SyncToc", sPPath,  sParam);\r
-                               }\r
-                       }\r
-                       else if(nMsgId==WH_MSG_SEARCHTHIS)\r
-                       {\r
-                               gsCurrentPane="fts";\r
-                               WebHelpApplet .Command("Search", oMsg.oParam);\r
-                               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
-                               SendMessage(onMsg);\r
-                               onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                               SendMessage(onMsg);\r
-                       }\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-function getInitTocInfo()\r
-{\r
-       // send message ask for the first time sync toc info.\r
-       var oParam = new Object();\r
-       oParam.oTocInfo = null;\r
-       var oMsg = new whMessage(WH_MSG_GETTOCPATHS, this, 1, oParam);\r
-       if (SendMessage(oMsg ))\r
-       {\r
-               var oTopicParam = oMsg.oParam.oTocInfo;\r
-               if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)\r
-               {\r
-                       var sPPath = _browserStringToText(oTopicParam.sPPath);\r
-                       var sParam = "";\r
-                       for (var i = 0; i < oTopicParam.aPaths.length; i ++)\r
-                       {\r
-                               sParam += oTopicParam.aPaths[i] + "\r\r";\r
-                       }\r
-                       var WebHelpApplet;\r
-                       if (gbNav4)\r
-                               WebHelpApplet = document.applets["WebHelp"];\r
-                       else\r
-                               WebHelpApplet = WebHelp;\r
-                       WebHelpApplet.Command("SyncToc", sPPath,  sParam);\r
-               }\r
-       }\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
-       RegisterListener2(this, WH_MSG_SHOWTOC);\r
-       RegisterListener2(this, WH_MSG_SHOWIDX);\r
-       RegisterListener2(this, WH_MSG_SHOWFTS);\r
-       RegisterListener2(this, WH_MSG_SHOWGLO);\r
-       RegisterListener2(this, WH_MSG_SYNCTOC);\r
-       RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
-       RegisterListener2(this, WH_MSG_GETPANEINFO);\r
-\r
-       window.onunload = window_unload;\r
-       window.onload=window_OnLoad;\r
-       window.onerror = null;\r
-       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
-\r
-       if (gbNav4 && !gbNav6 && gbWindows) {\r
-               setTimeout("CheckLoadingPhase0()", 1000);\r
-       }\r
-\r
-       if (gbNav4) \r
-       {\r
-               origWidth = innerWidth;\r
-               origHeight = innerHeight;\r
-               onresize = reDo;\r
-       }\r
-}\r
-else\r
-       document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
-       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" bgcolor="c0c0c0">\r
-<applet code=WebHelp.class name=WebHelp  archive=webhelp.jar width=100% height=100% MAYSCRIPT hspace=0 vspace=0>\r
-<PARAM name=ProjectFile value=whproj.xml><PARAM name=ResourceFile value=whres.xml>\r
-<PARAM name=Frame value=bsscright>\r
-<PARAM name=cabbase value=webhelp.cab>\r
-</applet>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whd_prev0.gif b/doc/salome/gui/GUI/whd_prev0.gif
deleted file mode 100755 (executable)
index 518561a..0000000
Binary files a/doc/salome/gui/GUI/whd_prev0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_prev1.gif b/doc/salome/gui/GUI/whd_prev1.gif
deleted file mode 100755 (executable)
index 518561a..0000000
Binary files a/doc/salome/gui/GUI/whd_prev1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_prev2.gif b/doc/salome/gui/GUI/whd_prev2.gif
deleted file mode 100755 (executable)
index 518561a..0000000
Binary files a/doc/salome/gui/GUI/whd_prev2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_show0.gif b/doc/salome/gui/GUI/whd_show0.gif
deleted file mode 100755 (executable)
index 60e8e68..0000000
Binary files a/doc/salome/gui/GUI/whd_show0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_show1.gif b/doc/salome/gui/GUI/whd_show1.gif
deleted file mode 100755 (executable)
index 60e8e68..0000000
Binary files a/doc/salome/gui/GUI/whd_show1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_show2.gif b/doc/salome/gui/GUI/whd_show2.gif
deleted file mode 100755 (executable)
index 60e8e68..0000000
Binary files a/doc/salome/gui/GUI/whd_show2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_sync0.gif b/doc/salome/gui/GUI/whd_sync0.gif
deleted file mode 100755 (executable)
index 1a9785c..0000000
Binary files a/doc/salome/gui/GUI/whd_sync0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_sync1.gif b/doc/salome/gui/GUI/whd_sync1.gif
deleted file mode 100755 (executable)
index 1a9785c..0000000
Binary files a/doc/salome/gui/GUI/whd_sync1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_sync2.gif b/doc/salome/gui/GUI/whd_sync2.gif
deleted file mode 100755 (executable)
index 1a9785c..0000000
Binary files a/doc/salome/gui/GUI/whd_sync2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab0.gif b/doc/salome/gui/GUI/whd_tab0.gif
deleted file mode 100755 (executable)
index 955c42f..0000000
Binary files a/doc/salome/gui/GUI/whd_tab0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab1.gif b/doc/salome/gui/GUI/whd_tab1.gif
deleted file mode 100755 (executable)
index b3ec41d..0000000
Binary files a/doc/salome/gui/GUI/whd_tab1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab2.gif b/doc/salome/gui/GUI/whd_tab2.gif
deleted file mode 100755 (executable)
index 08fb0ce..0000000
Binary files a/doc/salome/gui/GUI/whd_tab2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab3.gif b/doc/salome/gui/GUI/whd_tab3.gif
deleted file mode 100755 (executable)
index 1819c8e..0000000
Binary files a/doc/salome/gui/GUI/whd_tab3.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab4.gif b/doc/salome/gui/GUI/whd_tab4.gif
deleted file mode 100755 (executable)
index 1a6fc4f..0000000
Binary files a/doc/salome/gui/GUI/whd_tab4.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab5.gif b/doc/salome/gui/GUI/whd_tab5.gif
deleted file mode 100755 (executable)
index 9340192..0000000
Binary files a/doc/salome/gui/GUI/whd_tab5.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab6.gif b/doc/salome/gui/GUI/whd_tab6.gif
deleted file mode 100755 (executable)
index fe312d2..0000000
Binary files a/doc/salome/gui/GUI/whd_tab6.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab7.gif b/doc/salome/gui/GUI/whd_tab7.gif
deleted file mode 100755 (executable)
index 3b95ae2..0000000
Binary files a/doc/salome/gui/GUI/whd_tab7.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tab8.gif b/doc/salome/gui/GUI/whd_tab8.gif
deleted file mode 100755 (executable)
index c80acc8..0000000
Binary files a/doc/salome/gui/GUI/whd_tab8.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_tabs.htm b/doc/salome/gui/GUI/whd_tabs.htm
deleted file mode 100755 (executable)
index 1568f57..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-<HTML>\r
-<HEAD>\r
-<TITLE>WebHelp Tabs Frame in Navigation Pane</TITLE>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<!-- WebHelp version 5.10 -->\r
-</HEAD>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgColor="#c0c0c0"\r
-var gsBgImage="";\r
-var gnCurPane=0;\r
-var gsFirstPane="";\r
-var goTocFont=null;\r
-var goIdxFont=null;\r
-var goFtsFont=null;\r
-var goGloFont=null;\r
-var gPane=new Array();\r
-var gShowFirst=0;\r
-var gnTabType=0;\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
-       UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
-       UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
-       UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-}\r
-\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Toc") goTocFont=vFont;\r
-       else if(sType=="Idx") goIdxFont=vFont;\r
-       else if(sType=="Fts") goFtsFont=vFont;\r
-       else if(sType=="Glo") goGloFont=vFont;\r
-}\r
-\r
-function TocWriteClassStyle()\r
-{\r
-       var sStyle="<STYLE TYPE='text/css'>";\r
-       sStyle+=".TextTabToc {"+getFontStyle(goTocFont)+"}";\r
-       sStyle+=".TextTabIdx {"+getFontStyle(goIdxFont)+"}";\r
-       sStyle+=".TextTabFts {"+getFontStyle(goFtsFont)+"}";\r
-       sStyle+=".TextTabGlo {"+getFontStyle(goGloFont)+"}";\r
-       sStyle+="A:hover {text-decoration:underline;}";\r
-       sStyle+="</STYLE>";\r
-       document.write(sStyle);\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       if(sBgColor!=null&&sBgColor.length>0)\r
-               gsBgColor=sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       if(sBgImage!=null&&sBgImage.length>0)\r
-               gsBgImage=sBgImage;\r
-}\r
-\r
-function selectToc()\r
-{\r
-       var oMessage=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
-       SendMessage(oMessage);\r
-}\r
-\r
-function selectIdx()\r
-{\r
-       var oMessage=new whMessage(WH_MSG_SHOWIDX,this,1,null);\r
-       SendMessage(oMessage);\r
-}\r
-function selectFts()\r
-{\r
-       var oMessage=new whMessage(WH_MSG_SHOWFTS,this,1,null);\r
-       SendMessage(oMessage);\r
-}\r
-\r
-function selectGlo()\r
-{\r
-       var oMessage=new whMessage(WH_MSG_SHOWGLO,this,1,null);\r
-       SendMessage(oMessage);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if(oMsg)\r
-       {\r
-               var nMsgId=oMsg.nMessageId;\r
-               if(nMsgId==WH_MSG_SHOWTOC)\r
-               {\r
-                       setTimeout("showTabByName(\"toc\");",1);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWIDX)\r
-               {\r
-                       setTimeout("showTabByName(\"idx\");",1);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWFTS)\r
-               {\r
-                       setTimeout("showTabByName(\"fts\");",1);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWGLO)\r
-               {\r
-                       setTimeout("showTabByName(\"glo\");",1);\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-function showTabByName(sTabName)\r
-{\r
-       for(var i=0;i<gPane.length;i++)\r
-       {\r
-               if(gPane[i]==sTabName)\r
-               {\r
-                       showTab(i);\r
-                       break;\r
-               }\r
-       }\r
-}\r
-\r
-function showTab(n)\r
-{\r
-       gnCurPane=n;\r
-       if(gnTabType==0)\r
-       {\r
-               if(n<gPane.length)\r
-               {\r
-                       if(document.images["TocTab"]&&document.images["TocTab"]!=null){\r
-                               if(gPane[n]=="toc")\r
-                                       document.images["TocTab"].src=getBtnImage("toc",1);\r
-                               else\r
-                                       document.images["TocTab"].src=getBtnImage("toc",0);\r
-                       }\r
-                       if(document.images["IndexTab"]&&document.images["IndexTab"]!=null){\r
-                               if(gPane[n]=="idx")\r
-                                       document.images["IndexTab"].src=getBtnImage("idx",1);\r
-                               else\r
-                                       document.images["IndexTab"].src=getBtnImage("idx",0);\r
-                       }\r
-                       if(document.images["FtsTab"]&&document.images["FtsTab"]!=null){\r
-                               if(gPane[n]=="fts")\r
-                                       document.images["FtsTab"].src=getBtnImage("fts",1);\r
-                               else\r
-                                       document.images["FtsTab"].src=getBtnImage("fts",0);\r
-                       }\r
-                       if(document.images["GloTab"]&&document.images["GloTab"]!=null){\r
-                               if(gPane[n]=="glo")\r
-                                       document.images["GloTab"].src=getBtnImage("glo",1);\r
-                               else\r
-                                       document.images["GloTab"].src=getBtnImage("glo",0);\r
-                       }\r
-               }\r
-       }\r
-       else if(gnTabType==1)\r
-       {\r
-       }\r
-       else if(gnTabType==2)\r
-       {\r
-               if(n<gPane.length)\r
-               {\r
-                       if(document.images["tabSelection"]!=null)\r
-                               document.images["tabSelection"].src=getMapImage(gPane[n]);\r
-               }\r
-       }\r
-}\r
-\r
-function addPane(sName)\r
-{\r
-       gPane[gPane.length]=sName;\r
-}\r
-\r
-function setShowPane(sName)\r
-{\r
-       if(gsFirstPane!="")\r
-               sName=gsFirstPane;\r
-       for(var i=0;i<gPane.length;i++)\r
-       {\r
-               if(gPane[i]==sName)\r
-                       gShowFirst=i;\r
-       }\r
-}\r
-\r
-function selectDefaultTab()\r
-{\r
-       showTab(gShowFirst);\r
-       if(document.body)\r
-       {\r
-               if(gsBgImage&&gsBgImage.length>0)\r
-               {\r
-                       document.body.background=gsBgImage;\r
-               }\r
-               if(gsBgColor&&gsBgColor.length>0)\r
-               {\r
-                       document.body.bgColor=gsBgColor;\r
-               }\r
-       }\r
-}\r
-\r
-function getTabsHTML()\r
-{\r
-       var sHTML="";\r
-       for(var i=0;i<gPane.length;i++)\r
-       {\r
-               if(gnTabType==0)\r
-                       sHTML+=getTabHTML(gPane[i]);\r
-               else if(gnTabType==1)\r
-               {\r
-                       if(sHTML.length>0)\r
-                       {\r
-                               sHTML+=getSeparator();\r
-                       }\r
-                       sHTML+=getTabHTMLText(gPane[i]);\r
-               }\r
-\r
-       }\r
-       return sHTML;\r
-}\r
-\r
-function getSeparator()\r
-{\r
-       var sSep="";\r
-       \r
-       return sSep;\r
-}\r
-\r
-function getTabHTML(sTabName)\r
-{\r
-       if (sTabName == "toc")\r
-               return "<a title=\"Contents\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\" onmouseover=\"mouseOverToc();\" onmouseout=\"mouseOutToc();\"><img name=\"TocTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
-       else if (sTabName =="idx")\r
-               return "<a title=\"Index\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\" onmouseover=\"mouseOverIdx();\" onmouseout=\"mouseOutIdx();\"><img name=\"IndexTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
-       else if (sTabName == "fts")\r
-               return "<a title=\"Search\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\" onmouseover=\"mouseOverFts();\" onmouseout=\"mouseOutFts();\"><img name=\"FtsTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
-       else if (sTabName == "glo")\r
-               return "<a title=\"Glossary\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\"onmouseover=\"mouseOverGlo();\" onmouseout=\"mouseOutGlo();\"><img name=\"GloTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
-       return "";\r
-}\r
-\r
-function mouseOverToc()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "toc")\r
-       {\r
-               sImg = getBtnImage("toc", 3);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("toc", 2);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["TocTab"].src = sImg;\r
-}\r
-\r
-function mouseOverIdx()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "idx")\r
-       {\r
-               sImg = getBtnImage("idx", 3);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("idx", 2);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["IndexTab"].src = sImg;\r
-}\r
-\r
-function mouseOverFts()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "fts")\r
-       {\r
-               sImg = getBtnImage("fts", 3);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("fts", 2);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["FtsTab"].src = sImg;\r
-}\r
-\r
-function mouseOverGlo()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "glo")\r
-       {\r
-               sImg = getBtnImage("glo", 3);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("glo", 2);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["GloTab"].src = sImg;\r
-}\r
-\r
-function mouseOutToc()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "toc")\r
-       {\r
-               sImg = getBtnImage("toc", 1);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("toc", 0);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["TocTab"].src = sImg;\r
-}\r
-\r
-function mouseOutIdx()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "idx")\r
-       {\r
-               sImg = getBtnImage("idx", 1);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("idx", 0);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["IndexTab"].src = sImg;\r
-}\r
-\r
-function mouseOutFts()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "fts")\r
-       {\r
-               sImg = getBtnImage("fts", 1);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("fts", 0);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["FtsTab"].src = sImg;\r
-}\r
-\r
-function mouseOutGlo()\r
-{\r
-       var sImg = "";\r
-       if (gPane[gnCurPane] == "glo")\r
-       {\r
-               sImg = getBtnImage("glo", 1);\r
-       }\r
-       else\r
-       {\r
-               sImg = getBtnImage("glo", 0);\r
-       }\r
-       if (sImg.length > 0)\r
-               document.images["GloTab"].src = sImg;\r
-}\r
-\r
-function getTabHTMLText(sTabName)\r
-{\r
-       if (sTabName == "toc")\r
-               return "<a class=\"TextTabToc\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">Contents</a>&nbsp;";\r
-       else if (sTabName =="idx")\r
-               return "<a class=\"TextTabIdx\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">Index</a>&nbsp;";\r
-       else if (sTabName == "fts")\r
-               return "<a class=\"TextTabFts\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">Search</a>&nbsp;";\r
-       else if (sTabName == "glo")\r
-               return "<a class=\"TextTabGlo\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">Glossary</a>&nbsp;";\r
-       return "";\r
-}\r
-\r
-function getImageMap()\r
-{\r
-       var sHTML = "<map name=\"tabSelectionMap\">";\r
-       for (var i = 0; i < gPane.length; i ++)\r
-       {\r
-               sHTML += getMapArea(gPane[i]);\r
-       }\r
-       sHTML += "</map>";\r
-       return sHTML;\r
-}\r
-\r
-function getMapArea(sTabName)\r
-{\r
-       if (sTabName == "toc")\r
-               return "<area title=\"Contents\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">";\r
-       else if (sTabName =="idx")\r
-               return "<area title=\"Index\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">";\r
-       else if (sTabName == "fts")\r
-               return "<area title=\"Search\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">";\r
-       else if (sTabName == "glo")\r
-               return "<area title=\"Glossary\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">";\r
-       return "";\r
-}\r
-\r
-function getBtnImage(sTabName, nStatus)\r
-{\r
-       if (sTabName == "toc")\r
-       {\r
-               if (nStatus == 0)\r
-                       return "whd_tab2.gif";\r
-               else if (nStatus == 1)\r
-                       return "whd_tab1.gif";\r
-               else if (nStatus == 2)\r
-                       return "";\r
-               else if (nStatus == 3)\r
-                       return "";\r
-       }\r
-       else if (sTabName =="idx")\r
-       {\r
-               if (nStatus == 0)\r
-                       return "whd_tab4.gif";\r
-               else if (nStatus == 1)\r
-                       return "whd_tab3.gif";\r
-               else if (nStatus == 2)\r
-                       return "";\r
-               else if (nStatus == 3)\r
-                       return "";\r
-       }\r
-       else if (sTabName == "fts")\r
-       {\r
-               if (nStatus == 0)\r
-                       return "whd_tab6.gif";\r
-               else if (nStatus == 1)\r
-                       return "whd_tab5.gif";\r
-               else if (nStatus == 2)\r
-                       return "";\r
-               else if (nStatus == 3)\r
-                       return "";\r
-       }\r
-       else if (sTabName == "glo")\r
-       {\r
-               if (nStatus == 0)\r
-                       return "whd_tab8.gif";\r
-               else if (nStatus == 1)\r
-                       return "whd_tab7.gif";\r
-               else if (nStatus == 2)\r
-                       return "";\r
-               else if (nStatus == 3)\r
-                       return "";\r
-       }\r
-       return "";\r
-}\r
-\r
-function getMapImage(sTabName)\r
-{\r
-       if (sTabName == "toc")\r
-               return "";\r
-       else if (sTabName =="idx")\r
-               return "";\r
-       else if (sTabName == "fts")\r
-               return "";\r
-       else if (sTabName == "glo")\r
-               return "";\r
-       return "";\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
-       window.onload = selectDefaultTab;\r
-       RegisterListener2(this, WH_MSG_SHOWTOC);\r
-       RegisterListener2(this, WH_MSG_SHOWIDX);\r
-       RegisterListener2(this, WH_MSG_SHOWFTS);\r
-       RegisterListener2(this, WH_MSG_SHOWGLO);\r
-       window.onunload = window_unload;\r
-       goTocFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-       goIdxFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-       goFtsFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-       goGloFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-\r
-       if (navigator.currentNavPen)\r
-               gsFirstPane = navigator.currentNavPen;\r
-\r
-       setBackgroundcolor("");\r
-       setBackground("whd_tab0.gif");\r
-       \r
-       \r
-       \r
-       \r
-         addPane("toc","whtdhtml.htm");\r
-  addPane("fts","whfdhtml.htm");\r
-  addPane("glo","whgdhtml.htm");\r
-  setShowPane("toc");\r
-\r
-\r
-       gnTabType = 0; // 0 button. // 1 text. // 2 image mapping.\r
-       TocWriteClassStyle();\r
-       var sHTML = "<body scroll=\"no\" bgcolor=\"#c0c0c0\"    background=\"whd_tab0.gif\" style=\"margin-top:0;margin-bottom:0;margin-left:0;margin-right:0\">";\r
-       if (gPane.length > 0)\r
-       {\r
-               if (gnTabType == 0 || gnTabType == 1)\r
-               {\r
-                       sHTML += "<table width=\"100%\">";\r
-                       sHTML += "<tr>";\r
-                       sHTML += "<td>";\r
-                       sHTML += "<nobr>";\r
-                       sHTML += getTabsHTML();\r
-                       sHTML += "</nobr></td></tr>";\r
-                       sHTML += " <tr><td height=\"2\"></td></tr>";\r
-                       sHTML += "</table>";\r
-               }\r
-               else if (gnTabType == 2)\r
-               {\r
-                       sHTML += getImageMap();\r
-                       sHTML +="<img name=\"tabSelection\" src=\"" + getMapImage(gPane[0]) + "\" x-maintain-ratio=\"true\" usemap=\"#tabSelectionMap\"";\r
-                       if (gbIE)\r
-                               sHTML +=" style=\"border: none; width:px; height:px; float: none;\"";\r
-                       sHTML +=" width=\"\" height=\"\" border=\"0\">";\r
-               }\r
-       }\r
-       sHTML += "</body>";\r
-       document.write(sHTML);\r
-}\r
-else\r
-       document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
-       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
-       SendMessage(oMsg);\r
-}\r
-//-->\r
-</script>\r
-</HTML>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whd_toc1.gif b/doc/salome/gui/GUI/whd_toc1.gif
deleted file mode 100755 (executable)
index 1101725..0000000
Binary files a/doc/salome/gui/GUI/whd_toc1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_toc2.gif b/doc/salome/gui/GUI/whd_toc2.gif
deleted file mode 100755 (executable)
index 975e5f6..0000000
Binary files a/doc/salome/gui/GUI/whd_toc2.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_toc3.gif b/doc/salome/gui/GUI/whd_toc3.gif
deleted file mode 100755 (executable)
index 4b8122f..0000000
Binary files a/doc/salome/gui/GUI/whd_toc3.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_toc4.gif b/doc/salome/gui/GUI/whd_toc4.gif
deleted file mode 100755 (executable)
index 3f9a036..0000000
Binary files a/doc/salome/gui/GUI/whd_toc4.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_topic.xml b/doc/salome/gui/GUI/whd_topic.xml
deleted file mode 100755 (executable)
index a1b0320..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>\r
-<topictemplate>\r
- <topic type="normal">\r
-  <add tag="head" pos="endbefore" >\r
-   <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_PROXY_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
-       if (window.setRelStartPage)\r
-       {\r
-       ";\r
-         OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
-         OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
-         OutputInTopicNavBarDataButtons("addButton(\"%s\",%s, \"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%d,%d);\r\n");\r
-       "\r
-       }\r
-\r
-\r
-       if (window.setRelStartPage)\r
-       {\r
-       ";\r
-         OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
-         OutputInTopicNavBarDataWebSearch.href("addSearchFormHref(\"%s\");\r\n");\r
-       "\r
-               autoSync(";WH_USER_OPTIONS.autosync_toc;");\r
-               sendSyncInfo();\r
-               sendAveInfoOut();\r
-       }\r
-\r
-}\r
-else\r
-       if (window.gbIE4)\r
-               document.location.reload();\r
-//-->\r
-</script>\r
-"]]>\r
-  </add>\r
-  <add tag="body" pos="beginafter">\r
-    <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(";WH_WEBSKIN.topic.bar.top.pos;");\r
-//-->\r
-</script>"]]>  \r
-  </add>\r
-  <add tag="body" pos="endbefore">\r
-   <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.writeIntopicBar)\r
-       writeIntopicBar(";WH_WEBSKIN.topic.bar.bottom.pos;");\r
-//-->\r
-</script>";\r
-OutputInTopicNavBarDataWebSearch.form();]]>    \r
-  </add>\r
- </topic>\r
- <topic type="frameset">\r
-  <add tag="head" pos="endbefore" >\r
-   <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_FRAMESET_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.setRelStartPage)\r
-{\r
-";\r
-  OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
-  OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
-  OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
-"\r
-if (window.autoSync)\r
-       autoSync(1);\r
-}\r
-//-->\r
-</script>\r
-"]]>\r
-  </add>\r
- </topic>\r
-</topictemplate>\r
diff --git a/doc/salome/gui/GUI/whd_wbsh0.gif b/doc/salome/gui/GUI/whd_wbsh0.gif
deleted file mode 100755 (executable)
index 383688e..0000000
Binary files a/doc/salome/gui/GUI/whd_wbsh0.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_wbsh1.gif b/doc/salome/gui/GUI/whd_wbsh1.gif
deleted file mode 100755 (executable)
index 383688e..0000000
Binary files a/doc/salome/gui/GUI/whd_wbsh1.gif and /dev/null differ
diff --git a/doc/salome/gui/GUI/whd_wbsh2.gif b/doc/salome/gui/GUI/whd_wbsh2.gif
deleted file mode 100755 (executable)
index 383688e..0000000
Binary files a/doc/salome/gui/GUI/whd_wbsh2.gif and /dev/null differ
index ec80b72541294de3c5b03359eaf9461c57e71af7..dff115e529ae68ba4c0f8667a52a1fdfa5f0b001 100755 (executable)
@@ -26,7 +26,7 @@ aTE("Introduction","kernel/introduction.htm");
 aTE("Introduction to SALOME","kernel/introduction_to_salome_pro.htm");\r
 aTE("Navigating topics","kernel/navigating_topics.htm");\r
 aTE("Opening studies","kernel/opening_studies.htm");\r
-aTE("Installation Wizard","kernel/readme.html");\r
+aTE("SALOME Installation Wizard Help","kernel/readme.html");\r
 aTE("Running SALOME","kernel/running_salome_pro.htm");\r
 aTE("SALOME desktop","kernel/salome_pro_desktop.htm");\r
 aTE("Saving a study","kernel/saving_a_study.htm");\r
@@ -36,9 +36,11 @@ aTE("Using left-hand tabs","kernel/using_left-hand_tabs.htm");
 aTE("Using Object Browser","kernel/using_object_browser.htm");\r
 aTE("Using Registry tool","kernel/using_registry.htm");\r
 aTE("MESH preferences","mesh_preferences.htm");\r
+aTE("OCC 3D Viewer","occ_3d_viewer.htm");\r
 aTE("Post-Pro Preferences","post-pro_preferences.htm");\r
 aTE("Select Color and Font","select_color_and_font.htm");\r
 aTE("Setting Preferences","setting_preferences.htm");\r
+aTE("VTK 3D Viewer","vtk_3d_viewer.htm");\r
 \r
 //-->\r
 </script>\r
index e5eee4ffbcb53bc714c20308825a844a8313c34d..09a752158c93ce39b5d3b88155a755b10b5e0c76 100755 (executable)
 <!--\r
 aWE("__version__",14);\r
 aWE("_omnipymodul",14);\r
-aWE("0",6,14,2,24,16);\r
-aWE("001",24);\r
-aWE("01",24);\r
-aWE("1",5,14,24,15);\r
-aWE("10",14,24);\r
-aWE("100",24);\r
+aWE("_root_dir",14);\r
+aWE("_src_dir",14);\r
+aWE("0",6,2,25,16,14);\r
+aWE("001",25);\r
+aWE("01",25);\r
+aWE("1",5,25,15,14);\r
+aWE("10",25,14);\r
+aWE("100",25);\r
 aWE("103100",14);\r
 aWE("13",14);\r
-aWE("16",24);\r
-aWE("16x16",24);\r
-aWE("2",5,14,24,15);\r
-aWE("200",24);\r
+aWE("16",25);\r
+aWE("16x16",25);\r
+aWE("2",5,25,15,14);\r
+aWE("200",25);\r
 aWE("23",14);\r
 aWE("24",14);\r
-aWE("256",24);\r
-aWE("2d",6,10,2,24);\r
-aWE("3",6,14,2,15,16);\r
+aWE("256",25);\r
+aWE("2a2",14);\r
+aWE("2d",6,10,2,25);\r
+aWE("3",6,2,15,16,14);\r
 aWE("31",14);\r
-aWE("33",24);\r
-aWE("3d",10,2,24,18);\r
+aWE("33",25);\r
+aWE("3d",10,2,24,25,14,18,28);\r
 aWE("4",14);\r
 aWE("5",14);\r
-aWE("50",24);\r
-aWE("51",14);\r
-aWE("512",24);\r
+aWE("50",25);\r
+aWE("512",25);\r
 aWE("6",14);\r
 aWE("7",14);\r
 aWE("8",14);\r
 aWE("9",14);\r
-aWE("abl",3,6,14,18);\r
+aWE("abl",3,6,24,14,18,28);\r
 aWE("abort",14);\r
 aWE("abov",8,14);\r
-aWE("abscissa",23,24);\r
-aWE("absolut",24);\r
+aWE("abscissa",23,25);\r
+aWE("absolut",25);\r
 aWE("abstraction",5);\r
-aWE("acceptabl",24);\r
-aWE("acces",3,1,23,24,16,18,21);\r
-aWE("accessibl",10,26);\r
-aWE("accidental",14);\r
-aWE("accord",14,24,15,16);\r
+aWE("ac",14);\r
+aWE("acceptabl",25);\r
+aWE("acces",3,1,23,24,25,16,18,21,28);\r
+aWE("accessibl",10,27);\r
+aWE("accord",25,15,16,14);\r
 aWE("account",14);\r
 aWE("achiev",3);\r
 aWE("acquaint",4);\r
-aWE("action",24);\r
-aWE("activ",5,6,24,16,17);\r
+aWE("action",25,14);\r
+aWE("activ",5,6,25,16,17);\r
 aWE("activat",5,16,17);\r
-aWE("activity",24);\r
-aWE("actual",5);\r
-aWE("ad",0,25,19);\r
+aWE("activity",25);\r
+aWE("actual",5,14);\r
+aWE("ad",0,14,26,19);\r
 aWE("adapt",3);\r
-aWE("add",14,15,16,25,18,19);\r
+aWE("add",15,16,14,26,18,19);\r
 aWE("addition",5,14);\r
-aWE("additional",3,14,2,24,15,16,21);\r
-aWE("addres",24);\r
-aWE("adjust",24);\r
+aWE("additional",3,2,25,15,16,14,21);\r
+aWE("addres",25);\r
+aWE("adjust",25);\r
 aWE("advanc",14,19);\r
 aWE("affect",3);\r
-aWE("again",6,14,12,17);\r
-aWE("algorithm",3,14,11);\r
-aWE("allow",3,0,7,1,14,11,23,24,15,16,17,25,18,26,19,22);\r
+aWE("again",6,12,14,17);\r
+aWE("algorithm",3,11,14);\r
+aWE("allow",3,0,7,1,11,23,24,25,15,16,14,17,26,18,27,19,22,28);\r
 aWE("almost",17);\r
-aWE("along",11,18);\r
+aWE("along",11,18,28);\r
 aWE("alongsid",19);\r
-aWE("alpha",24);\r
+aWE("alpha",25);\r
 aWE("already",14);\r
 aWE("alway",11);\r
 aWE("amount",14);\r
-aWE("animation",24);\r
-aWE("annoy",14);\r
+aWE("animation",25);\r
 aWE("anoth",3,17);\r
-aWE("answ",14);\r
-aWE("any",3,4,6,8,14,11,12,24,15,16,17,26);\r
+aWE("any",3,4,6,1,8,11,12,25,15,16,14,17,27);\r
 aWE("anyth",14);\r
-aWE("ap",26);\r
-aWE("api",0,24);\r
+aWE("ap",27);\r
+aWE("api",0,25);\r
 aWE("appear",0,8,9,14,18,19,22);\r
 aWE("appearanc",23);\r
 aWE("applet",4);\r
-aWE("application",3,6,0,10,2,15,16,17,18,26,19);\r
-aWE("approach",14,11,16);\r
-aWE("appropriat",14,10);\r
+aWE("appli",1);\r
+aWE("application",3,6,0,10,2,15,16,14,17,18,27,19);\r
+aWE("approach",11,16,14);\r
+aWE("appropriat",10,14);\r
 aWE("approximat",14);\r
-aWE("arabic",25);\r
+aWE("arabic",26);\r
 aWE("architectur",3,0,10);\r
-aWE("area",6,16,18);\r
+aWE("area",6,24,16,18,28);\r
 aWE("argument",14);\r
-aWE("arrang",24);\r
+aWE("around",24,28);\r
+aWE("arrang",25);\r
 aWE("ascii",17,18);\r
-aWE("ask",14);\r
-aWE("assign",24);\r
-aWE("associat",13,24,21);\r
-aWE("attach",10);\r
-aWE("attribut",21);\r
+aWE("assign",25);\r
+aWE("associat",13,25,21);\r
+aWE("attach",10,14);\r
+aWE("attribut",14,21);\r
 aWE("author",8,19);\r
-aWE("auto",14,18);\r
-aWE("automatic",23,18);\r
-aWE("automatical",0,14,23,13,24,15,16,17,26);\r
+aWE("auto",18);\r
+aWE("automatic",23,14,18);\r
+aWE("automatical",0,23,13,25,15,16,14,17,27);\r
 aWE("availability",7);\r
-aWE("availabl",3,5,7,14,10);\r
-aWE("averag",24);\r
-aWE("avi",24);\r
+aWE("availabl",3,5,7,10,24,14,28);\r
+aWE("averag",25);\r
+aWE("avi",25);\r
 aWE("avoid",0,14);\r
 aWE("awar",14);\r
-aWE("awk",14);\r
-aWE("ax",18);\r
-aWE("axi",18);\r
+aWE("ax",24,18,28);\r
+aWE("axi",18,28);\r
 aWE("b",14);\r
-aWE("back",14,23);\r
-aWE("background",24,18);\r
-aWE("bar",23,24,21);\r
-aWE("bas",3,10,2,17);\r
+aWE("back",23,14);\r
+aWE("background",25,18);\r
+aWE("bar",23,25,21);\r
+aWE("bas",3,10,2,24,14,17);\r
 aWE("bash",14);\r
-aWE("basi",3);\r
-aWE("basic",3,14,11,16,25);\r
-aWE("batch",3,0,14,15);\r
-aWE("be",14);\r
-aWE("becom",6,24);\r
+aWE("basi",3,24,25);\r
+aWE("basic",3,11,16,14,26);\r
+aWE("batch",3,0,15,14);\r
+aWE("be",1,14);\r
+aWE("becom",6,25,14);\r
 aWE("befor",14);\r
-aWE("begin",18,22);\r
+aWE("begin",14,18,22);\r
 aWE("behav",3);\r
-aWE("behavior",10);\r
-aWE("behaviour",24);\r
-aWE("below",14,12,24);\r
-aWE("bet",24);\r
-aWE("bicolor",24);\r
-aWE("big",24);\r
-aWE("bin",14,15,19);\r
+aWE("behavior",10,14);\r
+aWE("behaviour",25);\r
+aWE("below",12,25,14);\r
+aWE("bet",25);\r
+aWE("bicolor",25);\r
+aWE("big",25);\r
+aWE("bin",15,14,19);\r
 aWE("binari",14);\r
-aWE("binary",14,17);\r
+aWE("binary",17);\r
 aWE("blu",14);\r
 aWE("blur",3);\r
+aWE("bmp",24,28);\r
 aWE("bold",14);\r
 aWE("book",20);\r
 aWE("boost",14);\r
 aWE("boost_version",14);\r
 aWE("boostdir",14);\r
 aWE("border",23,16);\r
-aWE("both",2,23,24);\r
-aWE("bottom",10,23,24,18);\r
-aWE("box",0,1,8,14,23,13,24,17,25,18,26,19,22);\r
+aWE("both",2,23,25,14);\r
+aWE("bottom",10,23,25,14,18);\r
+aWE("bound",24,28);\r
+aWE("boundari",1);\r
+aWE("box",0,1,8,23,24,13,25,14,17,26,18,27,19,22,28);\r
 aWE("bracket",14);\r
+aWE("break",14);\r
 aWE("brep",10);\r
-aWE("brief",6,14,12);\r
+aWE("brief",6,12);\r
 aWE("bring",2);\r
-aWE("brows",4,5,6,0,14,2,13,16,17,18,19,21);\r
-aWE("bug",14);\r
-aWE("build",14,24,19);\r
-aWE("built",14,11,24);\r
-aWE("button",14,2,12,13,24,17,25,18,26,19,22);\r
-aWE("c",3,14,15);\r
+aWE("brows",4,5,6,0,2,13,25,16,14,17,18,19,21);\r
+aWE("build",25,14,19);\r
+aWE("built",11,25,14);\r
+aWE("button",2,12,24,13,25,14,17,26,18,27,19,22,28);\r
+aWE("button_label",14);\r
+aWE("button_script",14);\r
+aWE("button_tooltip",14);\r
+aWE("c",3,15,14);\r
 aWE("ca",10);\r
 aWE("cad",10,11);\r
 aWE("cal",3,0,14);\r
 aWE("calculation",9,10,11);\r
 aWE("call",14,17,19,22);\r
 aWE("cam",3);\r
-aWE("camera",24);\r
+aWE("camera",25);\r
 aWE("cancel",14);\r
 aWE("capability",19);\r
 aWE("caption",14);\r
-aWE("car",14,10);\r
+aWE("car",10);\r
 aWE("careful",14);\r
 aWE("carri",23);\r
 aWE("carry",10);\r
-aWE("cas",3,8,14,11,24,16,17);\r
-aWE("cascad",14);\r
+aWE("cas",3,8,11,25,16,14,17);\r
+aWE("cascad",24,14);\r
 aWE("casroot",14);\r
-aWE("cat",14);\r
 aWE("catalog",19);\r
 aWE("catalogmodulegeneral",19);\r
 aWE("catalogmodulepersonnel",19);\r
 aWE("catalogu",2,15);\r
 aWE("categori",20);\r
 aWE("cd",14);\r
-aWE("cel",24,25);\r
-aWE("center",24);\r
-aWE("centr",24);\r
-aWE("central",24);\r
+aWE("cel",25,26);\r
+aWE("cent",24,28);\r
+aWE("center",25);\r
+aWE("centr",25);\r
+aWE("central",25);\r
 aWE("centraliz",15);\r
-aWE("chang",3,6,8,14,23,24,16,17,18,26);\r
-aWE("channel",24);\r
+aWE("chang",3,6,8,23,24,25,16,14,17,18,27,28);\r
+aWE("channel",25);\r
 aWE("chapter",4);\r
-aWE("character",25);\r
+aWE("character",26);\r
 aWE("charg",14);\r
-aWE("check",0,14,24,16,18);\r
+aWE("check",0,25,16,14,18,28);\r
+aWE("check_enabl",14);\r
 aWE("check_version",14);\r
-aWE("checkbox",14,23,24,18);\r
-aWE("choic",0,14,24,25);\r
-aWE("choos",5,7,1,8,14,23,13,24,16,25,19,22);\r
-aWE("chosen",24,25,19);\r
-aWE("clamp",24);\r
+aWE("checkbox",23,25,14,18);\r
+aWE("choic",0,25,14,26);\r
+aWE("choos",5,7,1,8,23,24,13,25,16,14,26,19,22,28);\r
+aWE("chosen",25,26,19);\r
+aWE("clamp",25);\r
 aWE("classic",16);\r
+aWE("clean",25);\r
 aWE("clear",14);\r
 aWE("clearall",16);\r
-aWE("click",5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22);\r
+aWE("click",5,6,0,7,1,8,23,12,24,13,25,16,14,17,26,18,27,19,20,21,22,28);\r
 aWE("clickabl",12);\r
 aWE("client",3);\r
-aWE("clip",24);\r
-aWE("clos",3,14,12,24,17,26,20);\r
+aWE("clip",24,25);\r
+aWE("clon",24);\r
+aWE("clos",3,12,25,14,17,27,20);\r
 aWE("cluster",3);\r
 aWE("cod",3,14);\r
 aWE("coef",23);\r
 aWE("coincid",14);\r
 aWE("collect",14);\r
-aWE("color",1,23,24,25,18);\r
+aWE("color",1,23,25,26,18,28);\r
 aWE("column",18,21,22);\r
-aWE("combin",11,24);\r
+aWE("combin",11,25);\r
 aWE("comfortabl",16);\r
 aWE("comma",14);\r
-aWE("command",3,0,14,15);\r
-aWE("common",14,2,11,16,17,26);\r
+aWE("command",3,0,15,14);\r
+aWE("common",2,11,16,14,17,27);\r
 aWE("compar",3,23);\r
-aWE("compatibl",14);\r
 aWE("compil",14);\r
 aWE("complet",8,14,20,22);\r
 aWE("complex",3,10);\r
-aWE("component",3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22);\r
-aWE("compos",24);\r
+aWE("component",3,4,0,7,10,2,11,12,13,25,16,17,18,19,21,22);\r
+aWE("compos",25);\r
 aWE("comput",14,18);\r
 aWE("computation",3,10);\r
 aWE("computational",10);\r
 aWE("concept",3,12);\r
-aWE("concern",14,10);\r
+aWE("concern",10,14);\r
 aWE("conclusion",3);\r
 aWE("config",14);\r
 aWE("config_fil",14);\r
-aWE("config_mandrake10_1",14);\r
-aWE("configur",14,10);\r
+aWE("config_mandrake_10",14);\r
+aWE("configur",10,14);\r
 aWE("configurabl",11);\r
 aWE("configuration",14);\r
 aWE("confirm",0,14);\r
+aWE("confirmation",14);\r
+aWE("conflict",14);\r
 aWE("connect",9,11,13,16,18);\r
 aWE("consist",16);\r
-aWE("consol",6,14,10,15,16,17,18);\r
+aWE("consol",6,10,15,16,14,17,18);\r
 aWE("constant",3,15);\r
-aWE("construction",10,11);\r
-aWE("consum",0);\r
-aWE("contain",3,4,5,0,8,14,13,15,16,26,19,20,21,22);\r
+aWE("construction",10,11,24);\r
+aWE("consum",0,14);\r
+aWE("contain",3,4,5,0,8,13,15,16,14,27,19,20,21,22);\r
 aWE("container",15);\r
-aWE("content",0,14,24,20);\r
-aWE("context",14,16,21);\r
+aWE("content",0,24,25,14,20,28);\r
+aWE("context",16,14,21);\r
 aWE("continu",14);\r
-aWE("control",5,14,23,24);\r
+aWE("control",5,23,25);\r
 aWE("convert",0,14);\r
 aWE("cooperat",11);\r
-aWE("coordinat",18);\r
-aWE("copi",24);\r
-aWE("copy",7,14,16,17);\r
+aWE("coordinat",24,18,28);\r
+aWE("copi",25);\r
+aWE("copy",7,16,14,17);\r
 aWE("copyright",14);\r
 aWE("corba",3,5,2,15);\r
-aWE("corn",24,17,25);\r
+aWE("corn",25,17,26);\r
 aWE("correct",16);\r
-aWE("correspond",14,23,13,24,15,20);\r
+aWE("correspond",23,13,25,15,14,20);\r
 aWE("cost",10);\r
 aWE("coupl",3,10);\r
 aWE("cpp",15);\r
 aWE("cppcontain",15);\r
-aWE("creat",3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21);\r
-aWE("creation",3,14,2);\r
-aWE("cros",12,17);\r
-aWE("csh",14,15);\r
+aWE("creat",3,4,5,6,0,9,10,2,11,23,24,13,25,15,16,14,17,18,19,21);\r
+aWE("creation",3,2,25,14);\r
+aWE("cros",12,24,17);\r
+aWE("csh",15,14);\r
 aWE("cshell",15);\r
-aWE("ctrl",24);\r
-aWE("current",6,0,8,14,12,24,15,17,18,26,21,22);\r
-aWE("cursor",24);\r
-aWE("curv",18);\r
-aWE("custom",10,25,18,19);\r
-aWE("customization",3);\r
-aWE("cycl",24);\r
-aWE("cyrillic",25);\r
+aWE("ctrl",25);\r
+aWE("current",6,0,8,12,24,25,15,14,17,18,27,21,22);\r
+aWE("cursor",25);\r
+aWE("curv",25,18);\r
+aWE("custom",10,15,26,18,19);\r
+aWE("customiz",14);\r
+aWE("customization",3,14);\r
+aWE("cut",25);\r
+aWE("cutlin",25);\r
+aWE("cycl",25);\r
+aWE("cyrillic",26);\r
 aWE("d",14);\r
 aWE("dat",8,22);\r
-aWE("data",3,5,0,9,14,10,2,11,17,18,19);\r
+aWE("data",3,5,0,9,10,2,11,25,17,18,19);\r
 aWE("databas",3);\r
 aWE("debug",21);\r
-aWE("decreas",24);\r
-aWE("default",5,1,14,23,24,15,16,17,18,26,21);\r
-aWE("defin",3,0,1,14,10,23,24,15,25);\r
+aWE("decreas",25);\r
+aWE("default",5,1,23,24,25,15,16,14,17,18,27,21,28);\r
+aWE("defin",3,0,1,10,23,24,25,14,26,28);\r
 aWE("definit",3,5,7,15,16,21,22);\r
-aWE("definition",3,10,20);\r
+aWE("definition",3,1,10,20);\r
+aWE("deform",28);\r
 aWE("delay",10);\r
 aWE("delet",17);\r
-aWE("demand",10,2,24);\r
-aWE("depend",7,14,21);\r
+aWE("demand",10,2,25);\r
+aWE("depend",7,25,14,21);\r
 aWE("dependanci",14);\r
 aWE("dependenci",14);\r
 aWE("deriv",3);\r
 aWE("describ",3,4,14,19);\r
-aWE("description",14,15,19);\r
-aWE("design",10,24);\r
+aWE("description",15,14,19);\r
+aWE("design",10,25);\r
 aWE("desir",19);\r
-aWE("desktop",6,9,14,2,16,17);\r
+aWE("desktop",6,9,2,16,14,17);\r
 aWE("destin",9,16,21,22);\r
-aWE("destination",12);\r
+aWE("destination",12,14);\r
 aWE("detail",14,18);\r
-aWE("dev",14);\r
-aWE("develop",3);\r
+aWE("develop",3,24,14);\r
 aWE("development",3,10);\r
-aWE("devic",24);\r
+aWE("devic",25);\r
 aWE("diagram",23);\r
-aWE("dialog",0,1,8,14,23,13,24,16,17,25,18,26,19,22);\r
+aWE("dialog",0,1,8,23,13,25,16,14,17,26,18,27,19,22);\r
 aWE("dif",14);\r
 aWE("differ",16);\r
-aWE("differenc",3,14,16,17);\r
-aWE("different",3,4,5,9,14,13,24,15,16,17,21);\r
+aWE("differenc",3,16,14,17);\r
+aWE("different",3,4,5,9,13,25,15,16,14,17,21);\r
 aWE("digit",23);\r
 aWE("digital",10);\r
 aWE("dir",14);\r
-aWE("direction",6,24);\r
+aWE("direct",14);\r
+aWE("direction",6,24,25);\r
 aWE("directori",14,18);\r
-aWE("directory",14,15,17,18,26,19);\r
-aWE("disabl",14,24,15);\r
+aWE("directory",15,14,17,18,27,19);\r
+aWE("disabl",25,15,14);\r
 aWE("disable_flag",14);\r
-aWE("disk",14,15);\r
-aWE("display",6,1,14,23,12,24,15,16,17,18,20,21,22);\r
-aWE("distanc",24);\r
+aWE("disk",15,14);\r
+aWE("display",6,1,23,12,24,25,15,16,14,17,18,20,21,22,28);\r
+aWE("distanc",25,28);\r
 aWE("distinction",3);\r
-aWE("distribut",3,14);\r
+aWE("distribut",3);\r
 aWE("distribution",14);\r
-aWE("divid",4,24,22);\r
+aWE("divid",4,25,22);\r
 aWE("do",7,14);\r
 aWE("dockabl",6,2,16,17);\r
-aWE("document",5,0,9,14,16);\r
-aWE("doesn",14);\r
+aWE("document",5,0,9,16,14);\r
+aWE("doesn",24);\r
 aWE("domain",3,11);\r
-aWE("dominant",24);\r
-aWE("don",14,24,19);\r
+aWE("dominant",25);\r
+aWE("don",24,25,14,19,28);\r
 aWE("dot",14);\r
 aWE("doubl",22);\r
 aWE("down",8,12);\r
+aWE("downward",24,28);\r
 aWE("doxygen",14);\r
-aWE("doxytag",14);\r
-aWE("doxywizard",14);\r
-aWE("drag",16);\r
+aWE("drag",24,16,28);\r
 aWE("dramatical",3);\r
+aWE("drawn",24,28);\r
 aWE("driv",14);\r
 aWE("drop",12,16);\r
-aWE("dump",0);\r
+aWE("dump",0,24,28);\r
 aWE("dumpversion",14);\r
+aWE("duplicat",24);\r
 aWE("dynamic",2);\r
-aWE("dynamical",11,24);\r
-aWE("e",14,2,15,16,17);\r
+aWE("dynamical",11,25);\r
+aWE("e",2,15,16,14,17);\r
 aWE("easi",3,10);\r
 aWE("easy",3);\r
 aWE("economical",3);\r
-aWE("edg",23);\r
-aWE("edit",7,8,14,2,15);\r
-aWE("editabl",24);\r
-aWE("edition",24);\r
-aWE("editor",26);\r
+aWE("edg",1,23);\r
+aWE("edit",7,8,2,25,15,14);\r
+aWE("editabl",25);\r
+aWE("edition",25);\r
+aWE("editor",27);\r
 aWE("efficient",10);\r
-aWE("egrep",14);\r
-aWE("eith",24,25,18,19);\r
+aWE("eith",25,14,26,18,19);\r
 aWE("electrical",10);\r
 aWE("electronic",10);\r
-aWE("element",10,23,24);\r
+aWE("element",10,23,25);\r
 aWE("embed",15);\r
 aWE("empty",6);\r
-aWE("enabl",18,20);\r
+aWE("enabl",14,18,20);\r
 aWE("encourag",3);\r
-aWE("end",3,14,24,18,26);\r
+aWE("end",3,25,14,18,27);\r
 aWE("enforc",3);\r
 aWE("engin",3);\r
 aWE("enough",14);\r
 aWE("ensur",3,10);\r
-aWE("ent",8,14,15,17);\r
+aWE("ent",8,15,14,17);\r
 aWE("enter",14);\r
 aWE("entity",23);\r
 aWE("entry",18,21);\r
 aWE("env_",14);\r
+aWE("env_build",14);\r
 aWE("env_for_launch",14);\r
 aWE("env_product",14);\r
 aWE("env_vtk",14);\r
-aWE("environment",3,6,9,14,10,2,15);\r
+aWE("environment",3,6,9,10,2,15,14);\r
+aWE("environmentpleas",14);\r
 aWE("equal",3,14);\r
 aWE("equipment",10);\r
 aWE("error",0,14);\r
-aWE("etc",3,14,2,11,24,16);\r
+aWE("etc",3,2,11,25,16,14);\r
 aWE("ev",22);\r
-aWE("even",3,16);\r
-aWE("every",10,20);\r
+aWE("even",3,16,14);\r
+aWE("every",10,25,20);\r
 aWE("everyth",14);\r
 aWE("evolution",10);\r
 aWE("evolv",3);\r
 aWE("ex",15);\r
-aWE("exact",14,24);\r
-aWE("exampl",6,14,10,16,17,19);\r
-aWE("exceed",24);\r
-aWE("exception",2,15);\r
+aWE("exact",25,14);\r
+aWE("examl",14);\r
+aWE("exampl",6,10,16,14,17,19);\r
+aWE("exceed",25);\r
+aWE("except",14,28);\r
+aWE("exception",2,15,14);\r
 aWE("exchang",3);\r
+aWE("execut",14);\r
+aWE("executabl",14);\r
 aWE("execution",10,11);\r
-aWE("exist",3,14,11,13,17,26,19);\r
+aWE("exist",3,11,13,14,17,27,19);\r
 aWE("existenc",14);\r
 aWE("expand",12);\r
 aWE("expandability",3);\r
 aWE("expectation",10);\r
+aWE("experienc",14);\r
 aWE("expert",0);\r
 aWE("exploit",3);\r
 aWE("explor",4);\r
-aWE("export",10,23);\r
+aWE("export",10,23,24,28);\r
 aWE("expos",3);\r
-aWE("extend",25);\r
-aWE("extension",17,26);\r
-aWE("external",18);\r
+aWE("extend",24,26,28);\r
+aWE("extension",17,27);\r
+aWE("external",14,18);\r
 aWE("extract",14);\r
 aWE("extreme",10);\r
-aWE("f",14,15);\r
-aWE("fac",23,24,18);\r
+aWE("f",15,14);\r
+aWE("fac",23,25,18);\r
 aWE("facilitat",3,11);\r
-aWE("fact",14,16);\r
+aWE("fact",16);\r
 aWE("factory",19);\r
 aWE("fail",14);\r
 aWE("fals",14);\r
-aWE("famili",24);\r
-aWE("featur",4,14,24);\r
-aWE("field",8,14,10,23,24,25);\r
+aWE("famili",25);\r
+aWE("featur",4,25,14);\r
+aWE("feel",14);\r
+aWE("field",8,10,23,25,14,26);\r
 aWE("fig",14);\r
 aWE("figur",1,14);\r
-aWE("fil",5,0,8,14,11,13,24,15,16,17,18,26,19);\r
+aWE("fil",5,0,8,11,13,25,15,16,14,17,18,27,19);\r
 aWE("fill",23);\r
+aWE("final",14);\r
 aWE("find",14,19,20);\r
 aWE("find_in_path",14);\r
 aWE("fine",3);\r
-aWE("finish",14,12,24);\r
+aWE("finish",12,25,14);\r
 aWE("finit",10);\r
-aWE("first",0,14,24,18,21);\r
-aWE("fit",18);\r
+aWE("first",0,25,14,18,21);\r
+aWE("fit",24,18,28);\r
 aWE("flag",14);\r
 aWE("flexibility",3,0);\r
-aWE("flexibl",14,10,2);\r
-aWE("focal",24);\r
+aWE("flexibl",10,2,14);\r
+aWE("focal",25);\r
 aWE("focu",12);\r
 aWE("fold",14,17,21);\r
-aWE("follow",3,0,8,9,14,12,13,15,16,17,18,26,19,20,22);\r
-aWE("font",23,24,25,18);\r
+aWE("folder",14);\r
+aWE("follow",3,0,8,9,12,13,15,16,14,17,18,27,19,20,22);\r
+aWE("font",23,25,14,26,18,28);\r
+aWE("forc",14);\r
 aWE("forget",19);\r
-aWE("format",4,10,13,18);\r
-aWE("forth",24);\r
-aWE("fp",24);\r
-aWE("fram",14,24);\r
+aWE("formal",14);\r
+aWE("format",4,10,24,13,18,28);\r
+aWE("forth",25);\r
+aWE("fp",25);\r
+aWE("fram",24,25,14,28);\r
 aWE("framework",2);\r
-aWE("fre",10,24);\r
+aWE("fre",1,10,25);\r
 aWE("friend",10);\r
-aWE("ful",24);\r
+aWE("ful",25);\r
 aWE("fulfill",0);\r
-aWE("full",24,20);\r
-aWE("function",0,14,10,11,16,17);\r
+aWE("full",25,20);\r
+aWE("function",0,10,11,16,14,17);\r
 aWE("function_nam",14);\r
 aWE("functional",16);\r
-aWE("functionaliti",10);\r
-aWE("functionality",3,4,7,9,16,19);\r
+aWE("functionaliti",10,24,28);\r
+aWE("functionality",3,4,7,9,24,16,19,28);\r
 aWE("fundamental",3);\r
 aWE("furth",14);\r
-aWE("g",14,15);\r
+aWE("g",15,14);\r
 aWE("gap",23);\r
-aWE("gaus",2,24);\r
+aWE("gaus",2,25,28);\r
 aWE("gcc",14);\r
-aWE("general",9,14,23,16,18);\r
-aWE("generat",0,14,11,19);\r
+aWE("general",9,23,16,14,18);\r
+aWE("generat",0,11,25,14,19);\r
 aWE("generator",10,2,19);\r
 aWE("generic",10,11);\r
-aWE("geom",14,11);\r
-aWE("geometrical",1,10,11,24);\r
-aWE("geometry",3,1,11,24,16);\r
-aWE("get",4,9,14,10,21);\r
-aWE("giv",0,8,14,16,25);\r
-aWE("given",14,11,24);\r
-aWE("gl",24);\r
-aWE("global",24);\r
+aWE("geom",11,14);\r
+aWE("geometrical",1,10,11,24,25);\r
+aWE("geometry",3,1,11,24,25,16);\r
+aWE("get",4,9,10,14,21);\r
+aWE("giv",0,8,16,14,26);\r
+aWE("given",11,25,14);\r
+aWE("gl",25);\r
+aWE("global",24,25,28);\r
 aWE("glossary",20);\r
-aWE("go",14,12);\r
+aWE("go",12,14);\r
+aWE("good",24);\r
+aWE("graduat",28);\r
 aWE("graph",6,11,18);\r
-aWE("graphic",24);\r
+aWE("graphic",25);\r
 aWE("graphical",0,2);\r
 aWE("graphviz",14);\r
-aWE("great",0,24);\r
-aWE("greek",25);\r
-aWE("grep",14);\r
-aWE("group",23,24,25);\r
-aWE("gui",3,5,0,14,2,11,15,17,18,26);\r
-aWE("h",14,15);\r
-aWE("half",24);\r
+aWE("great",0,24,25,28);\r
+aWE("greek",26);\r
+aWE("group",23,24,25,26);\r
+aWE("gui",3,5,0,2,11,15,14,17,18,27);\r
+aWE("guid",14);\r
+aWE("h",15,14);\r
+aWE("half",25);\r
 aWE("hand",3,12,20);\r
-aWE("handl",14,10,2,15);\r
-aWE("hard",14,15);\r
+aWE("handl",10,2,15);\r
+aWE("hard",15,14);\r
 aWE("hasn",17);\r
 aWE("hav",11,12,21);\r
 aWE("haven",18);\r
-aWE("hdf",14,13,17,18);\r
+aWE("hdf",13,14,17,18);\r
 aWE("hdf5",14);\r
 aWE("hdf5hom",14);\r
 aWE("heal",10);\r
-aWE("height",23,24);\r
+aWE("height",23,25);\r
 aWE("hello",22);\r
-aWE("help",3,4,14,10,12,13,15,18,20,21);\r
+aWE("help",3,4,10,12,13,15,14,18,20,21);\r
 aWE("helpful",14);\r
-aWE("her",14,23,24,18);\r
+aWE("her",23,25,14,18);\r
 aWE("heterogeneou",10);\r
-aWE("hid",24,16,18,21);\r
-aWE("high",14,10);\r
-aWE("highlight",14,23,21);\r
-aWE("hint",14);\r
+aWE("hid",24,25,16,18,21,28);\r
+aWE("high",10);\r
+aWE("highlight",23,14,21);\r
 aWE("history",22);\r
-aWE("hom",14,26);\r
-aWE("horizontal",6,23,24,18);\r
+aWE("hom",14,27);\r
+aWE("hop",14);\r
+aWE("horizontal",6,23,25,18);\r
 aWE("host",3);\r
 aWE("hotspot",12);\r
+aWE("hour",14);\r
 aWE("how",3,14);\r
 aWE("hpp",14);\r
 aWE("html",4,20);\r
 aWE("hxx",14);\r
-aWE("i",14,2,15,16,17);\r
+aWE("i",2,15,16,17);\r
 aWE("icon",5,7,16,19);\r
 aWE("idea",14);\r
 aWE("identification",21,22);\r
 aWE("identify",14);\r
 aWE("idl",3,19);\r
 aWE("ie",18);\r
-aWE("if",5,6,0,7,14,23,13,24,15,16,17,18,19,21);\r
+aWE("if",5,6,0,7,23,24,13,25,15,16,14,17,18,19,21,28);\r
 aWE("ig",10);\r
 aWE("ignor",14);\r
-aWE("imag",10,24);\r
+aWE("imag",10,24,25,28);\r
 aWE("immediate",12);\r
 aWE("implement",3,14);\r
-aWE("implementation",3,19);\r
-aWE("impli",14);\r
-aWE("import",0,14,10,2,11,24,16,26);\r
+aWE("implementation",3,14,19);\r
+aWE("import",0,10,2,11,25,16,14,27);\r
 aWE("important",14);\r
-aWE("impos",24);\r
-aWE("improv",2);\r
-aWE("inc",14);\r
-aWE("includ",14,12,24,20);\r
+aWE("impos",25);\r
+aWE("improv",2,14);\r
+aWE("includ",12,25,14,20);\r
 aWE("inclusiv",3);\r
-aWE("increas",0,10,24);\r
-aWE("increment",1,24);\r
+aWE("increas",0,10,25);\r
+aWE("increment",1,25);\r
 aWE("incremental",3);\r
 aWE("independenc",3);\r
 aWE("independent",3);\r
 aWE("index",23,21);\r
 aWE("indicat",16,17);\r
-aWE("information",3,8,14,12,24,17,20,22);\r
+aWE("information",3,8,12,25,14,17,20,22);\r
 aWE("initial",9);\r
 aWE("input",10,19);\r
-aWE("insert",14);\r
-aWE("insid",3,6,12,24,19);\r
-aWE("inspect",14,24);\r
+aWE("insid",3,6,12,25,19);\r
+aWE("inspect",25,14);\r
 aWE("instal",14,19);\r
 aWE("instalation",14);\r
-aWE("install",14,15);\r
+aWE("install",15,14);\r
 aWE("install_binary",14);\r
 aWE("install_disk_spac",14);\r
 aWE("install_sourc",14);\r
+aWE("install_source_and_build",14);\r
 aWE("install_wizard_caption",14);\r
 aWE("install_wizard_copyright",14);\r
 aWE("install_wizard_license_info",14);\r
 aWE("install_wizard_root_directory",14);\r
 aWE("install_wizard_version",14);\r
-aWE("installation",14,15);\r
+aWE("installation",15,14);\r
 aWE("installation_mod",14);\r
 aWE("installation_script_nam",14);\r
 aWE("installdiskspac",14);\r
 aWE("installwizard_root_directory",14);\r
 aWE("installworkxxxxx",14);\r
 aWE("instanc",5);\r
+aWE("instruction",14);\r
 aWE("instrumental",3);\r
 aWE("integ",14);\r
 aWE("integer",23);\r
 aWE("integrat",3,10,2,11);\r
 aWE("integration",3,10,2,19);\r
-aWE("intend",14);\r
 aWE("interaction",2);\r
 aWE("interfac",3,0,10,2,16,19);\r
 aWE("interior",23);\r
@@ -593,146 +620,145 @@ aWE("interoperability",10);
 aWE("interoperabl",21);\r
 aWE("interp",15);\r
 aWE("interpret",2,16);\r
-aWE("interval",24,22);\r
-aWE("introduction",14,10,2,11);\r
+aWE("interval",25,22);\r
+aWE("introduction",10,2,11,14);\r
 aWE("invalid",17);\r
-aWE("invok",14,16);\r
+aWE("invert",24,25);\r
+aWE("invok",16,14);\r
 aWE("ior",18,21);\r
-aWE("isolin",18);\r
-aWE("ispython",14);\r
+aWE("isolat",1);\r
+aWE("isolin",1,18);\r
+aWE("isometric",24,28);\r
 aWE("item",8,10,2);\r
-aWE("iteration",24);\r
+aWE("iteration",25);\r
 aWE("itself",14);\r
 aWE("java",4);\r
+aWE("jpeg",24,28);\r
+aWE("jpg",24,28);\r
 aWE("just",14,18);\r
 aWE("k",15);\r
 aWE("kbyt",14);\r
-aWE("kernel",14,11,15);\r
-aWE("key",14,24);\r
-aWE("keyboard",24);\r
+aWE("kernel",11,15,14);\r
+aWE("key",25,14);\r
+aWE("keyboard",25);\r
 aWE("kill",15);\r
 aWE("killall",15);\r
 aWE("kind",8,12);\r
 aWE("know",19);\r
 aWE("knowledg",0);\r
 aWE("l",15);\r
-aWE("label",23,24);\r
+aWE("label",23,25,14,28);\r
 aWE("languag",3);\r
 aWE("larg",14);\r
-aWE("largest",24);\r
-aWE("last",18,22);\r
-aWE("latest",24);\r
-aWE("latin",25);\r
-aWE("launch",4,0,14,13,15,26,19,22);\r
+aWE("largest",25);\r
+aWE("last",14,18,22);\r
+aWE("latest",25);\r
+aWE("latin",26);\r
+aWE("launch",4,0,13,15,14,27,19,22);\r
 aWE("lay",5);\r
 aWE("layout",0,17);\r
 aWE("ld_library_path",14);\r
 aWE("lead",17);\r
-aWE("learn",14,10);\r
-aWE("left",14,23,24,25,18,20);\r
+aWE("learn",10,14);\r
+aWE("left",23,24,25,14,26,18,20,28);\r
 aWE("legend",18);\r
-aWE("length",24);\r
-aWE("les",24);\r
-aWE("level",3,23,24);\r
+aWE("length",25,28);\r
+aWE("les",25);\r
+aWE("level",3,23,25);\r
 aWE("lib",14);\r
 aWE("libcosnotify4",14);\r
 aWE("libhdf5",14);\r
 aWE("libm",14);\r
 aWE("libomniorb4",14);\r
-aWE("libqwt",14);\r
 aWE("librari",14);\r
-aWE("library",14,2);\r
-aWE("libstdplugin",14);\r
-aWE("libtcl8",14);\r
-aWE("libtk8",14);\r
+aWE("library",2,14);\r
 aWE("libvtkcommon",14);\r
 aWE("licens",14);\r
-aWE("lik",3,6,14,12,24,16,17,19,21);\r
+aWE("lik",3,6,12,25,16,14,17,19,21);\r
 aWE("like",14);\r
-aWE("limit",24);\r
-aWE("limitation",24);\r
-aWE("lin",4,1,14,23,24,15,18);\r
+aWE("limit",25);\r
+aWE("limitation",25);\r
+aWE("lin",4,1,23,25,15,14,18);\r
 aWE("linear",18);\r
 aWE("link",3,10,12);\r
 aWE("linux",4,14);\r
-aWE("list",8,14,12,24,15,18,20,22);\r
+aWE("list",8,12,25,15,14,18,20,22);\r
 aWE("list_of_prerequisit",14);\r
-aWE("ll",18);\r
-aWE("load",3,0,2,13,24,15,16,18,26,21);\r
-aWE("local",24);\r
-aWE("locat",3,24,15,16,18,20,21);\r
+aWE("ll",24,18,28);\r
+aWE("load",3,0,2,13,25,15,16,18,27,21);\r
+aWE("local",25);\r
+aWE("locat",3,24,25,15,16,18,20,21,28);\r
 aWE("location",0,19);\r
-aWE("lock",8,24);\r
-aWE("log",15);\r
-aWE("logarithmic",24,18);\r
+aWE("lock",8,24,25,28);\r
+aWE("log",15,14);\r
+aWE("logarithmic",25,18);\r
 aWE("long",3,14);\r
 aWE("look",14,19,20);\r
-aWE("lookout",23,24);\r
+aWE("lookout",23,25);\r
 aWE("lost",17);\r
 aWE("lot",16);\r
-aWE("low",14,24,25,20);\r
+aWE("low",25,14,26,20);\r
 aWE("m",15);\r
 aWE("machin",3,17,22);\r
 aWE("macintosh",4);\r
-aWE("macro",3);\r
-aWE("magnification",24);\r
-aWE("main",5,0,7,8,14,10,13,24,16,17,18,19,22);\r
+aWE("macro",3,14);\r
+aWE("magnification",25);\r
+aWE("main",5,0,7,8,10,13,25,16,14,17,18,19,22);\r
 aWE("major",14);\r
-aWE("mak",5,14,10,23);\r
+aWE("mak",5,10,23,14);\r
 aWE("make_dir",14);\r
 aWE("make_env",14);\r
 aWE("manag",10,18);\r
 aWE("management",10,2,16);\r
 aWE("mandrak",14);\r
 aWE("mandrake10",14);\r
-aWE("manipulat",24);\r
-aWE("manipulator",24);\r
-aWE("manual",4,0,14,18);\r
+aWE("manipulat",25);\r
+aWE("manipulator",25);\r
+aWE("manual",4,0,24,14,18,28);\r
 aWE("map",3);\r
-aWE("mark",14,18);\r
+aWE("mark",24,25,14,18,28);\r
 aWE("marker",18);\r
 aWE("market",10);\r
 aWE("massive",3);\r
 aWE("mast",14);\r
 aWE("match",20);\r
-aWE("matrix",24);\r
-aWE("max",24);\r
+aWE("matrix",25);\r
+aWE("max",25);\r
 aWE("maximiz",5);\r
-aWE("maximum",24);\r
-aWE("mean",6,9,14,24,16,17);\r
+aWE("maximum",25);\r
+aWE("mean",6,9,25,16,14,17);\r
 aWE("mechanism",0,2,15);\r
 aWE("med2hom",14);\r
 aWE("meet",10);\r
-aWE("memory",24);\r
+aWE("memoris",24);\r
+aWE("memory",25);\r
 aWE("mention",14);\r
-aWE("menu",3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22);\r
+aWE("menu",3,5,0,7,8,2,23,12,13,25,16,17,26,18,27,19,21,22);\r
 aWE("menubar",16);\r
-aWE("mesh",3,10,11,23,24,16);\r
-aWE("messag",8,14,2,15);\r
-aWE("middl",14);\r
-aWE("min",24);\r
+aWE("mesh",3,10,11,23,24,25,16,14,28);\r
+aWE("messag",8,2,15,14);\r
+aWE("min",25);\r
 aWE("minimiz",5);\r
-aWE("minimum",24);\r
+aWE("minimum",25);\r
 aWE("minor",14);\r
 aWE("mistak",16);\r
 aWE("mix",16);\r
-aWE("mod",3,0,1,14,23,24,15);\r
+aWE("mod",3,0,1,23,25,15,14);\r
 aWE("model",3,10,11,23);\r
 aWE("modern",10);\r
+aWE("modifi",14);\r
 aWE("modification",3,0,8);\r
-aWE("modify",0,14,10);\r
-aWE("modul",3,4,7,1,14,2,11,23,24,15,16,17,18,26,19);\r
-aWE("module_root_dir",14);\r
-aWE("module_src_dir",14);\r
+aWE("modify",0,10,14);\r
+aWE("modul",3,4,7,1,2,11,23,24,25,15,16,14,17,18,27,19,28);\r
 aWE("module1",15);\r
 aWE("module2",15);\r
 aWE("modulecatalog",15);\r
-aWE("modulu",24);\r
-aWE("moment",14,24);\r
-aWE("momentari",24);\r
-aWE("mous",23,24,16);\r
+aWE("modulu",25);\r
+aWE("moment",25,14);\r
+aWE("momentari",25);\r
+aWE("mous",23,24,25,16,28);\r
 aWE("mov",6);\r
-aWE("movement",24);\r
+aWE("movement",25);\r
 aWE("mozilla",18);\r
 aWE("msg2qm",14);\r
 aWE("msg2qm_root",14);\r
@@ -740,119 +766,121 @@ aWE("much",14);
 aWE("multi",6,9,10,2,16,19);\r
 aWE("multifil",17,18);\r
 aWE("multipl",17);\r
-aWE("multipli",24);\r
+aWE("multipli",25);\r
 aWE("multiti",3);\r
 aWE("must",3,10,11);\r
-aWE("n",14,24,15);\r
-aWE("nam",3,5,0,8,14,17,19,21,22);\r
+aWE("n",25,15,14);\r
+aWE("nam",3,5,0,8,14,17,19,21,22,28);\r
 aWE("nativ",14);\r
 aWE("natur",7);\r
 aWE("natural",3);\r
-aWE("navigat",14,12);\r
-aWE("navigation",4,12,24);\r
+aWE("navigat",12,14);\r
+aWE("navigation",4,12,25);\r
 aWE("navigator",4);\r
-aWE("ne",6,14,12,25,18);\r
-aWE("necessary",0,14,23,15,16,17,21);\r
-aWE("need",24);\r
-aWE("negativ",24);\r
+aWE("ne",6,12,14,26,18);\r
+aWE("necessary",0,23,15,16,14,17,21);\r
+aWE("need",25);\r
+aWE("negativ",25);\r
 aWE("netgen",14);\r
 aWE("netgenroot",14);\r
 aWE("netscap",4,18);\r
-aWE("nevertheles",14);\r
-aWE("new",3,5,8,9,14,10,17,18,26,19);\r
-aWE("next",8,14,15,26,19);\r
-aWE("nf",14);\r
+aWE("new",3,5,8,9,10,24,25,14,17,18,27,19);\r
+aWE("next",8,15,14,27,19);\r
 aWE("nod",23,19);\r
 aWE("normal",6);\r
-aWE("not",14,15);\r
+aWE("not",15,14);\r
 aWE("notation",14);\r
 aWE("noticeab",3);\r
 aWE("notifd",14);\r
-aWE("notification",26);\r
-aWE("notify",24);\r
+aWE("notification",27);\r
+aWE("notify",25);\r
 aWE("notion",9);\r
 aWE("now",16);\r
-aWE("nth",24);\r
-aWE("null",14,24);\r
-aWE("numb",14,11,23,24,15,18,26,22);\r
-aWE("number",14,23,24);\r
-aWE("numeric",14,10,11,25);\r
+aWE("nth",25);\r
+aWE("null",25);\r
+aWE("numb",11,23,25,15,14,18,27,22,28);\r
+aWE("number",23,25,14);\r
+aWE("numeric",10,11,14,26);\r
 aWE("numerical",3,9,10);\r
 aWE("numerou",15);\r
-aWE("object",3,5,6,0,7,2,23,13,24,16,17,18,26,21);\r
+aWE("object",3,5,6,0,7,2,23,24,13,25,16,17,18,27,21,28);\r
 aWE("objectiv",3);\r
 aWE("obligatory",14);\r
-aWE("occ",5,6,2,18);\r
+aWE("observ",25);\r
+aWE("occ",5,6,2,24,18);\r
+aWE("occ_version_maintenanc",14);\r
 aWE("occ_version_major",14);\r
 aWE("occ_version_minor",14);\r
 aWE("occupi",14);\r
+aWE("occur",14);\r
 aWE("off",14);\r
 aWE("offer",3);\r
+aWE("offic",14);\r
 aWE("official",14);\r
+aWE("offset",28);\r
 aWE("often",10);\r
-aWE("ok",14,13,26);\r
+aWE("ok",13,14,27);\r
 aWE("omg",3);\r
-aWE("omit",14);\r
-aWE("omni",14);\r
 aWE("omninotify",14);\r
 aWE("omniorb",14);\r
 aWE("omniorbdir",14);\r
 aWE("omniorbpy",14);\r
-aWE("on",3,6,0,7,14,2,12,13,24,15,16,17,25,18,26,19);\r
-aWE("onc",24);\r
+aWE("on",3,6,0,7,2,12,13,25,15,16,14,17,26,18,27,19);\r
+aWE("onc",25);\r
 aWE("onlin",20);\r
-aWE("opaqu",24);\r
-aWE("open",6,0,9,14,10,11,12,13,24,15,17,19,20);\r
-aWE("opencascad",14);\r
+aWE("opaqu",25);\r
+aWE("open",6,0,9,10,11,12,24,13,25,15,14,17,19,20);\r
 aWE("operat",0);\r
-aWE("operation",7,9,23,24,17);\r
-aWE("optimiz",14,10,24);\r
+aWE("operation",7,9,23,25,14,17);\r
+aWE("optimiz",10,25,14);\r
 aWE("optimization",11);\r
-aWE("option",7,8,14,13,24,15,16,17,18,21);\r
-aWE("optional",14,10,11);\r
+aWE("option",7,8,13,25,15,16,14,17,18,21);\r
+aWE("optional",10,11,14);\r
 aWE("ord",14);\r
-aWE("ordinat",23,24);\r
+aWE("ordinat",23,25);\r
 aWE("org",3);\r
-aWE("orientation",23,24);\r
-aWE("origin",23,24);\r
+aWE("orientat",24,28);\r
+aWE("orientation",23,24,25);\r
+aWE("origin",23,24,25,28);\r
 aWE("original",0);\r
 aWE("originality",11);\r
 aWE("os",14);\r
 aWE("os_version",14);\r
 aWE("other",4,0);\r
-aWE("otherwis",0,14,24,17);\r
-aWE("out",10,23,25);\r
+aWE("otherwis",0,25,14,17);\r
+aWE("out",10,23,24,26,28);\r
 aWE("outlin",23);\r
-aWE("output",14,2);\r
-aWE("outsid",24,16);\r
+aWE("output",2,14);\r
+aWE("outsid",25,16);\r
 aWE("overrid",14);\r
-aWE("own",14,2,11,16);\r
+aWE("overridden",14);\r
+aWE("own",2,11,16,14);\r
 aWE("p",15);\r
-aWE("packag",14,15,19);\r
+aWE("packag",15,14,19);\r
 aWE("pag",14,20);\r
-aWE("pan",12,17,20);\r
+aWE("pan",12,24,17,20,28);\r
 aWE("parallel",3);\r
 aWE("paramet",14,19);\r
-aWE("parameter",3,14,24,25,18,19);\r
-aWE("parent",24);\r
-aWE("part",6,14,16);\r
+aWE("parameter",3,25,26,18,19,28);\r
+aWE("parent",25);\r
+aWE("part",6,24,16,14,28);\r
 aWE("particular",10,17);\r
-aWE("party",11);\r
-aWE("pas",14);\r
+aWE("party",11,14);\r
 aWE("past",7,16);\r
 aWE("patch",14);\r
-aWE("patent",24);\r
-aWE("path",14,24);\r
+aWE("patent",25);\r
+aWE("path",25,14);\r
 aWE("pc",3);\r
-aWE("per",24);\r
-aWE("perform",14,10,11,23,24);\r
-aWE("performanc",3,9,10);\r
+aWE("per",25);\r
+aWE("perform",10,11,23,24,25,14,28);\r
+aWE("performanc",3,9,10,25,14);\r
+aWE("period",25);\r
 aWE("permission",14);\r
 aWE("phenomena",3);\r
 aWE("phras",20);\r
 aWE("physic",10);\r
 aWE("physical",3,10,11);\r
-aWE("pick",14,24);\r
+aWE("pick",25,14);\r
 aWE("pickup",14);\r
 aWE("pickup_env",14);\r
 aWE("pickup_env_flag",14);\r
@@ -860,59 +888,59 @@ aWE("pickupenv",14);
 aWE("pictur",8);\r
 aWE("pid",22);\r
 aWE("piec",3);\r
-aWE("pixel",24);\r
-aWE("plac",6,14,2,16);\r
-aWE("placement",23,24);\r
-aWE("platform",3,4,6,0,9,14,10,2,11,15,16,17,19,22);\r
+aWE("pixel",25);\r
+aWE("plac",6,2,24,16,14,28);\r
+aWE("placement",23,25);\r
+aWE("plan",24,14);\r
+aWE("platform",3,4,6,0,9,10,2,11,15,16,14,17,19,22);\r
 aWE("play",0);\r
 aWE("pleas",14);\r
-aWE("plot",6,2);\r
+aWE("plot",6,2,25);\r
 aWE("plot2d",5,18);\r
 aWE("plug",2);\r
+aWE("png",24,28);\r
 aWE("po",14);\r
-aWE("point",3,14,2,23,24,18);\r
+aWE("point",3,1,2,23,24,25,14,18,28);\r
 aWE("pop",12,13,16,21);\r
 aWE("popup",12);\r
 aWE("port",15);\r
 aWE("portkill",15);\r
-aWE("position",24,16,17,18);\r
+aWE("position",24,25,16,17,18,28);\r
 aWE("positive",16);\r
-aWE("possibility",3,0,14,15,25,19);\r
-aWE("possibl",3,0,14,16,17,25,21);\r
-aWE("post",3,10,11,24,16,17);\r
+aWE("possibility",3,0,15,14,26,19);\r
+aWE("possibl",3,0,16,14,17,26,21);\r
+aWE("post",3,10,11,25,16,17,28);\r
 aWE("powerful",2);\r
-aWE("pr",10,11);\r
+aWE("pr",10,11,14);\r
 aWE("precision",23);\r
 aWE("precompil",14);\r
-aWE("predefin",3,14,25);\r
+aWE("predefin",3,14,26);\r
 aWE("preferabl",15);\r
-aWE("preferenc",1,23,24,25,18,26,21);\r
-aWE("prefix",14);\r
+aWE("preferenc",1,23,25,26,18,27,21);\r
 aWE("preinstal",14);\r
-aWE("preliminary",14);\r
 aWE("prerequisit",14);\r
-aWE("pres",14,24,18);\r
+aWE("pres",24,25,14,18,28);\r
 aWE("preselect",23);\r
 aWE("preselection",23);\r
-aWE("present",23,24);\r
-aWE("presentation",5,23,24,16,18);\r
-aWE("prevent",24);\r
-aWE("preview",25);\r
-aWE("previou",14,13);\r
-aWE("previous",14,11,13,17);\r
-aWE("primitiv",24);\r
-aWE("print",14,15);\r
+aWE("present",23,25);\r
+aWE("presentation",5,23,25,16,18,28);\r
+aWE("prevent",25);\r
+aWE("preview",24,25,26);\r
+aWE("previou",13,14);\r
+aWE("previous",11,13,25,14,17);\r
+aWE("primitiv",25);\r
+aWE("print",15,14);\r
 aWE("print_env",14);\r
 aWE("priority",10);\r
-aWE("pro",3,11,24,16,17);\r
+aWE("pro",3,11,25,16,17,28);\r
 aWE("probab",5);\r
-aWE("problem",0,14,10);\r
+aWE("problem",0,10,14);\r
 aWE("proce",9,14);\r
-aWE("procedur",14,15);\r
-aWE("proces",3,0,14,10,2,11,24,22);\r
+aWE("procedur",15,14);\r
+aWE("proces",3,0,10,2,11,25,14,22);\r
 aWE("processor",3,10);\r
-aWE("produc",24);\r
-aWE("product",14,10,15);\r
+aWE("produc",25);\r
+aWE("product",10,15,14);\r
 aWE("product_context",14);\r
 aWE("product_description",14);\r
 aWE("product_nam",14);\r
@@ -923,190 +951,205 @@ aWE("products_directory",14);
 aWE("profil",15);\r
 aWE("program",3,14);\r
 aWE("programmatic",10);\r
-aWE("progres",14,24);\r
-aWE("progressiv",24);\r
-aWE("prompt",14,15);\r
+aWE("progres",25,14);\r
+aWE("progressiv",25);\r
+aWE("prompt",15,14);\r
 aWE("pron",0);\r
-aWE("prop",14);\r
 aWE("proper",14);\r
-aWE("properti",8,10,11,24,18);\r
-aWE("propos",14,2);\r
-aWE("provid",3,7,14,10,2,11,24,15,25,19,20,22);\r
+aWE("properti",8,10,11,25,18,28);\r
+aWE("proportional",25);\r
+aWE("propos",2,14);\r
+aWE("provid",3,7,10,2,11,24,25,15,14,26,19,20,22);\r
 aWE("publish",0,17);\r
 aWE("pur",3);\r
 aWE("purpos",9,21);\r
-aWE("py",15);\r
+aWE("put",14);\r
+aWE("py",15,14);\r
 aWE("pycontain",15);\r
 aWE("pyqt",14);\r
+aWE("pyqtconfig",14);\r
 aWE("pyqtdir",14);\r
-aWE("pyramid",24);\r
-aWE("python",3,6,0,14,10,2,15,16,17,18);\r
+aWE("pyramid",25);\r
+aWE("python",3,6,0,10,2,15,16,14,17,18);\r
 aWE("pythonhom",14);\r
+aWE("pythonpath",14);\r
 aWE("qglobal",14);\r
 aWE("qm",14);\r
 aWE("qt",14);\r
 aWE("qt_version_str",14);\r
 aWE("qtdir",14);\r
-aWE("quality",10,23,24);\r
+aWE("quality",10,23,25);\r
 aWE("quantiti",10);\r
-aWE("question",14);\r
 aWE("quick",14,18,21);\r
-aWE("quit",0,14,17,26);\r
+aWE("quit",0,14,17,27);\r
 aWE("quot",14);\r
 aWE("qwt",14);\r
+aWE("qwt_global",14);\r
+aWE("qwt_version_str",14);\r
 aWE("qwthom",14);\r
 aWE("r",15);\r
 aWE("radio",14);\r
-aWE("rainbow",24);\r
-aWE("rang",11,24);\r
+aWE("rainbow",25);\r
+aWE("rang",11,25);\r
 aWE("rapid",3);\r
-aWE("rat",24);\r
+aWE("rat",25);\r
 aWE("rath",0);\r
-aWE("ratio",24);\r
-aWE("re",0,12);\r
+aWE("ratio",25);\r
+aWE("re",0,12,14);\r
 aWE("reactivity",10);\r
-aWE("read",14,10,12);\r
+aWE("read",10,12,14);\r
 aWE("readm",14);\r
-aWE("real",24);\r
+aWE("real",25);\r
 aWE("realiz",9);\r
-aWE("reassign",24);\r
-aWE("receiv",26);\r
-aWE("recommend",14,24);\r
-aWE("record",8,24);\r
-aWE("red",21);\r
+aWE("reason",14);\r
+aWE("reassign",25);\r
+aWE("receiv",27);\r
+aWE("recommend",25,14);\r
+aWE("record",8,25);\r
+aWE("red",14,21);\r
+aWE("redefin",28);\r
 aWE("redirect",15);\r
 aWE("reduc",10);\r
-aWE("ref",18,26);\r
+aWE("ref",14,18,27);\r
 aWE("refer",14);\r
-aWE("referenc",4,12,24,18,21);\r
-aWE("refin",10,24);\r
+aWE("referenc",4,12,25,18,21);\r
+aWE("refin",10,25);\r
 aWE("refresh",22);\r
 aWE("refreshment",22);\r
-aWE("regim",24);\r
+aWE("regim",25);\r
 aWE("registry",2,15,22);\r
 aWE("reinstal",14);\r
 aWE("reinstall",14);\r
 aWE("reinstallation",14);\r
 aWE("relat",12,20);\r
-aWE("relativ",14,23,18);\r
+aWE("relativ",23,14,18);\r
 aWE("releas",14);\r
+aWE("release_not",14);\r
 aWE("relevant",12);\r
 aWE("reliability",10);\r
 aWE("reload",17);\r
 aWE("relocat",16);\r
-aWE("remain",3);\r
-aWE("remot",5);\r
-aWE("remov",14,18);\r
+aWE("remain",3,24);\r
+aWE("remot",5,24,28);\r
+aWE("remov",24,25,14,18);\r
 aWE("renam",17);\r
-aWE("render",24);\r
+aWE("rend",25);\r
+aWE("render",25);\r
 aWE("reopen",18);\r
-aWE("repeat",24);\r
-aWE("represent",3,9,10,11,20);\r
-aWE("representation",6,11,24,18);\r
-aWE("representativ",24);\r
-aWE("requir",14,10,13,24,17);\r
+aWE("repeat",25);\r
+aWE("represent",3,9,10,11,24,20,28);\r
+aWE("representation",6,11,24,25,18);\r
+aWE("representativ",25);\r
+aWE("requir",10,13,25,14,17);\r
 aWE("requirement",3,10,15);\r
-aWE("reset",14);\r
-aWE("resiz",18);\r
-aWE("resolution",24);\r
+aWE("requisit",14);\r
+aWE("reset",24,14,28);\r
+aWE("resiz",24,18,28);\r
+aWE("resolution",25);\r
 aWE("resolv",0);\r
-aWE("resourc",14,2,24,15);\r
-aWE("respectiv",24,26);\r
-aWE("respective",24);\r
+aWE("resourc",2,25,15,14);\r
+aWE("respectiv",1,25,27);\r
+aWE("respective",25);\r
 aWE("respond",3);\r
 aWE("responsibl",14);\r
 aWE("rest",18);\r
-aWE("restor",10,17,18,26);\r
-aWE("result",9,10,24);\r
-aWE("retroactiv",26);\r
+aWE("restart",14);\r
+aWE("restor",10,24,25,17,18,27,28);\r
+aWE("result",9,10,24,25);\r
+aWE("resum",14);\r
+aWE("retriev",14);\r
+aWE("retroactiv",27);\r
+aWE("return",24,14);\r
 aWE("reus",3);\r
 aWE("reusabl",10);\r
-aWE("reversib",0,24);\r
-aWE("right",6,14,12,13,24,16,17,25,18,20,21);\r
+aWE("reversib",0,25);\r
+aWE("right",6,12,13,25,16,14,17,26,18,20,21);\r
 aWE("risk",10);\r
 aWE("robustnes",10);\r
 aWE("rol",3);\r
 aWE("root",14);\r
-aWE("rotat",24);\r
-aWE("rotation",24);\r
+aWE("rotat",24,25,28);\r
+aWE("rotation",24,25,28);\r
 aWE("rul",14);\r
-aWE("run",3,14,15,19,22);\r
-aWE("runic",25);\r
+aWE("run",3,15,14,19,22);\r
+aWE("runic",26);\r
 aWE("runinstall",14);\r
 aWE("runsalom",15,19);\r
 aWE("runsalomewithport",19);\r
-aWE("s",3,14,12,15);\r
+aWE("s",3,12,15,14);\r
 aWE("saf",2);\r
-aWE("salom",3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22);\r
+aWE("salom",3,4,5,6,0,7,9,10,2,11,12,13,25,15,16,14,17,18,27,19,20,21,22);\r
 aWE("salome_",14);\r
 aWE("salome_modulecatalog_serv",19);\r
 aWE("salomeapp",15);\r
-aWE("salomeapprc",26);\r
+aWE("salomeapprc",27);\r
 aWE("salomed",0);\r
-aWE("sam",6,12,24,16,17,19,22);\r
-aWE("sampl",25);\r
-aWE("sav",3,0,14,10,2,16,17,18,26);\r
-aWE("scal",3,24,18);\r
-aWE("scalar",23,24);\r
-aWE("schem",3,14,10);\r
+aWE("sam",6,12,25,16,14,17,19,22);\r
+aWE("sampl",14,26);\r
+aWE("sav",3,0,10,2,24,16,14,17,18,27);\r
+aWE("scal",3,25,18,28);\r
+aWE("scalar",23,25);\r
+aWE("scen",24,28);\r
+aWE("schem",3,10,14);\r
 aWE("schema",10);\r
 aWE("scientific",3);\r
 aWE("screen",6,15);\r
-aWE("script",3,0,14,15,25,19);\r
+aWE("script",3,0,15,14,26,19);\r
 aWE("scroll",8);\r
-aWE("se",6,8,14,13,17,18,19,21);\r
-aWE("search",4,14,13,17,20);\r
-aWE("second",0,14,24);\r
-aWE("section",14,16,18);\r
-aWE("sectionthi",14);\r
-aWE("sed",14);\r
+aWE("se",6,8,24,13,14,17,18,19,21,28);\r
+aWE("search",4,13,14,17,20);\r
+aWE("second",0,25,14);\r
+aWE("section",24,16,14,18);\r
 aWE("seen",23);\r
-aWE("select",5,6,0,1,8,14,23,13,24,17,25,18,20);\r
+aWE("select",5,6,0,1,8,23,24,13,25,14,17,26,18,20,28);\r
 aWE("selectall",16);\r
-aWE("selection",2,23,24);\r
+aWE("selection",2,23,25);\r
 aWE("send",14);\r
 aWE("sensitiv",16,21);\r
-aWE("separat",3,14,24,16);\r
+aWE("separat",3,25,16,14);\r
 aWE("serv",3,19);\r
 aWE("server",3,15);\r
 aWE("servic",3,14,19);\r
-aWE("session",1,23,13,24,15,17,18,26,21,22);\r
-aWE("set",4,0,1,8,14,10,23,24,15,16,17,18,26,21,22);\r
-aWE("setting",14,24,16,17,18,26);\r
+aWE("session",1,23,13,25,15,17,18,27,21,22);\r
+aWE("set",4,0,1,8,10,23,24,25,15,16,14,17,18,27,21,22,28);\r
+aWE("setting",25,16,14,17,18,27);\r
 aWE("sever",10);\r
 aWE("sh",14);\r
-aWE("shad",1,23,24);\r
-aWE("shap",24);\r
+aWE("shad",1,23,25);\r
+aWE("shap",24,25);\r
 aWE("shar",15);\r
-aWE("shell",14,2,11,15);\r
+aWE("shel",14);\r
+aWE("shell",2,11,15,14);\r
 aWE("short",14,20);\r
 aWE("shot",6);\r
 aWE("should",9,14,17,19);\r
-aWE("show",14);\r
+aWE("show",24,25,14,28);\r
 aWE("shown",8,14);\r
 aWE("shrink",23);\r
-aWE("sid",23,24);\r
-aWE("signal",14,2);\r
+aWE("sid",23,25,14);\r
+aWE("signal",2,14);\r
 aWE("signatur",14);\r
 aWE("sigterm",14);\r
+aWE("silent",14);\r
+aWE("simp",14);\r
 aWE("simpl",3);\r
 aWE("simplify",14);\r
 aWE("simulat",3);\r
 aWE("simulation",10,11);\r
-aWE("simultaneous",6,9,14);\r
+aWE("simultaneous",6,9,25,14);\r
 aWE("sinc",2);\r
 aWE("singl",14);\r
 aWE("sip",14);\r
 aWE("sipdir",14);\r
 aWE("situation",3);\r
-aWE("siz",6,23,24,16,17,25,18);\r
+aWE("siz",6,23,25,16,17,26,18);\r
 aWE("skip",14);\r
-aWE("slight",14);\r
-aWE("slow",24);\r
-aWE("smallest",24);\r
+aWE("slow",25);\r
+aWE("small",24,28);\r
+aWE("smallest",25);\r
 aWE("smooth",18);\r
-aWE("smoothnes",24);\r
-aWE("so",3,7,14,24,15,20,21);\r
+aWE("smoothnes",25);\r
+aWE("so",3,7,25,15,14,20,21);\r
 aWE("softwar",3,10,11);\r
 aWE("solution",10);\r
 aWE("solv",10);\r
@@ -1114,154 +1157,169 @@ aWE("solver",10,11);
 aWE("someth",14);\r
 aWE("sort",18);\r
 aWE("sort_path",14);\r
-aWE("sourc",14,10,11,15);\r
-aWE("spac",14,23,24);\r
-aWE("spacemous",24);\r
-aWE("spe",24);\r
-aWE("special",3,14,13,24,15,16,17,18);\r
-aWE("specifi",3,24);\r
-aWE("specific",3,0,10,15,16,26,20);\r
+aWE("sourc",10,11,15,14);\r
+aWE("spac",23,25,14);\r
+aWE("spacemous",25);\r
+aWE("spe",25);\r
+aWE("special",3,13,25,15,16,14,17,18);\r
+aWE("specifi",3,25);\r
+aWE("specific",3,0,10,15,16,14,27,20);\r
 aWE("specification",11);\r
 aWE("specify",17,18,19);\r
-aWE("spher",24);\r
+aWE("spher",25);\r
 aWE("spin",1);\r
 aWE("splash",15);\r
 aWE("splin",18);\r
 aWE("split",6);\r
-aWE("sprit",24);\r
-aWE("stamp",24);\r
+aWE("sprit",25);\r
+aWE("stamp",25);\r
 aWE("standalon",2,15);\r
-aWE("standard",3,5,14,2,13,24,16,17,26,19);\r
+aWE("standard",3,5,2,13,25,16,14,17,27,19);\r
 aWE("standard_version",14);\r
-aWE("start",6,9,14,16,18,26,19,22);\r
+aWE("start",6,9,25,16,14,18,27,19,22);\r
+aWE("start_salom",14);\r
 aWE("stat",0,14,17,18);\r
 aWE("station",3);\r
 aWE("statu",14);\r
-aWE("step",1,14,10,24);\r
-aWE("still",14);\r
-aWE("stor",3,0,14,13,17,18,19);\r
+aWE("step",1,10,25,14);\r
+aWE("stop",14);\r
+aWE("stor",3,0,13,14,17,18,19);\r
 aWE("str",14);\r
-aWE("strict",14);\r
+aWE("stretch",28);\r
+aWE("strict",24,14,28);\r
 aWE("strong",14);\r
-aWE("struck",25);\r
-aWE("structur",3,14,10,2,13,21);\r
+aWE("struck",26);\r
+aWE("structur",3,10,2,13,25,14,21);\r
 aWE("structural",10);\r
 aWE("studi",5,6,7,9,10,2,13,16,17);\r
-aWE("study",3,5,6,0,7,8,9,10,2,13,24,15,16,17,18,26,19,21,22);\r
+aWE("study",3,5,6,0,7,8,9,10,2,13,25,15,16,17,18,27,19,21,22);\r
 aWE("study1",5);\r
-aWE("styl",25,18);\r
-aWE("sub",14,20);\r
+aWE("stuf",28);\r
+aWE("styl",26,18);\r
+aWE("sub",24,14,20);\r
 aWE("submenu",5,16,18);\r
-aWE("subset",25);\r
-aWE("substitut",24);\r
+aWE("subsequent",14);\r
+aWE("subset",26);\r
+aWE("substitut",25);\r
 aWE("successful",14);\r
 aWE("suit",2);\r
 aWE("summariz",14);\r
-aWE("superposition",24);\r
+aWE("superposition",25);\r
 aWE("superv",15);\r
 aWE("supervcontain",15);\r
 aWE("supervision",2,15,19);\r
 aWE("supervisor",11,18,19);\r
 aWE("supplementary",21,22);\r
-aWE("support",14,10,19);\r
+aWE("suppli",14);\r
+aWE("support",10,14,19);\r
 aWE("supported_installation_mod",14);\r
 aWE("sur",14);\r
 aWE("surfac",23);\r
-aWE("sweep",24);\r
+aWE("sweep",25);\r
 aWE("swig",14);\r
-aWE("switch",6,14,2,24);\r
-aWE("system",3,4,14,10,12,24,20);\r
-aWE("t",7,14,24,15,16,17,18,19);\r
+aWE("switch",6,2,25,14);\r
+aWE("symbol",14);\r
+aWE("system",3,4,10,12,25,14,20);\r
+aWE("t",7,24,25,15,16,14,17,18,19,28);\r
 aWE("tab",6,20,22);\r
-aWE("tabl",14,25);\r
+aWE("tabl",25,26);\r
 aWE("tag",14);\r
 aWE("tailor",10);\r
 aWE("tak",3,14);\r
-aWE("taken",14,15);\r
+aWE("taken",25,15,14);\r
 aWE("target",14);\r
 aWE("target_directory",14);\r
 aWE("target_platform",14);\r
 aWE("targetdir",14);\r
 aWE("task",0);\r
 aWE("tcl",14);\r
+aWE("tcl_version",14);\r
+aWE("tclconfig",14);\r
 aWE("tclhom",14);\r
-aWE("tclsh8",14);\r
 aWE("technologi",3);\r
 aWE("technological",10);\r
-aWE("technology",3,14);\r
-aWE("temp",14);\r
+aWE("technology",3,24);\r
 aWE("temp_directory",14);\r
 aWE("temp_fold",14);\r
 aWE("tempdir",14);\r
 aWE("temporary",14);\r
 aWE("temporarydiskspac",14);\r
-aWE("tensor",24);\r
+aWE("tensor",25);\r
 aWE("term",10,12,20);\r
-aWE("terminal",14,15);\r
+aWE("terminal",15,14);\r
 aWE("test",3,14,19);\r
-aWE("text",14,12,20);\r
-aWE("textur",24);\r
-aWE("them",3,6,14,10,23,15,16,25,22);\r
+aWE("text",12,14,20);\r
+aWE("textur",25);\r
+aWE("them",3,6,10,23,24,15,16,14,26,22,28);\r
 aWE("therefor",14);\r
 aWE("third",11);\r
 aWE("thos",14,18,20);\r
 aWE("thre",14);\r
-aWE("threshold",24);\r
-aWE("thu",3,0);\r
-aWE("tim",3,6,0,8,14,10,24,15,17,26,19,22);\r
-aWE("titl",14,23,24,18);\r
+aWE("threshold",25);\r
+aWE("thu",3,0,14);\r
+aWE("tick",28);\r
+aWE("tim",3,6,0,8,10,25,15,14,17,27,19,22);\r
+aWE("tip",14);\r
+aWE("titl",23,25,14,18);\r
 aWE("tk",14);\r
+aWE("tk_version",14);\r
+aWE("tkconfig",14);\r
 aWE("tmp",14);\r
 aWE("tmp_disk_spac",14);\r
-aWE("togeth",14);\r
-aWE("toggl",23,24,21);\r
-aWE("toleranc",24);\r
-aWE("tool",3,14,2,11,16,19,22);\r
-aWE("toolbar",3,5,7,2,13,16,17);\r
-aWE("toolkit",2);\r
-aWE("top",5,14,2,24,16,18);\r
+aWE("toggl",23,25,21);\r
+aWE("toleranc",25);\r
+aWE("tool",3,2,11,16,14,19,22);\r
+aWE("toolbar",3,5,7,2,24,13,16,17,28);\r
+aWE("toolkit",2,14);\r
+aWE("tooltip",14);\r
+aWE("top",5,2,25,16,14,18);\r
 aWE("topic",4,12,20);\r
 aWE("topmost",14);\r
 aWE("total",14);\r
 aWE("totality",3);\r
 aWE("touch",0);\r
-aWE("tr",14);\r
 aWE("train",10);\r
-aWE("translat",24);\r
-aWE("translation",24);\r
-aWE("transparency",24);\r
-aWE("transparent",24);\r
+aWE("transformation",24);\r
+aWE("translat",25);\r
+aWE("translation",25);\r
+aWE("transparency",25);\r
+aWE("transparent",25);\r
 aWE("tre",5,14,18,19,21);\r
 aWE("tri",14);\r
-aWE("trihedron",18);\r
+aWE("triangl",24,28);\r
+aWE("trihedron",24,18,28);\r
 aWE("trolltech",14);\r
+aWE("troubl",14);\r
 aWE("tru",14);\r
 aWE("try",8,14,17,19);\r
 aWE("try_exist",14);\r
 aWE("try_nativ",14);\r
 aWE("try_preinstal",14);\r
-aWE("twic",24);\r
-aWE("two",6,14,12,24,17,19);\r
-aWE("typ",0,14,23,24,25,18,19);\r
+aWE("turn",14);\r
+aWE("twic",25);\r
+aWE("two",6,12,25,14,17,19);\r
+aWE("typ",0,23,25,14,26,18,19);\r
 aWE("typical",19);\r
 aWE("u",18);\r
 aWE("ultimat",3);\r
-aWE("uncheck",24,16);\r
-aWE("underlin",25);\r
+aWE("uncheck",24,25,16,28);\r
+aWE("underlin",26);\r
+aWE("unfortunare",14);\r
 aWE("unfortunate",14);\r
 aWE("uniqu",14);\r
-aWE("unit",24);\r
+aWE("unit",25);\r
 aWE("unix",4);\r
 aWE("unload",13,17);\r
 aWE("unnecessary",14);\r
+aWE("unpack",14);\r
 aWE("unselect",14);\r
 aWE("unus",0);\r
-aWE("up",14,10,12,13,16,17,25,21);\r
-aWE("updat",23,24,16,17,19);\r
+aWE("up",10,12,13,16,14,17,26,21);\r
+aWE("updat",23,25,16,17,19);\r
 aWE("upload",2,16);\r
-aWE("us",3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22);\r
+aWE("us",3,0,1,8,9,10,2,11,23,24,25,15,16,14,17,26,18,27,19,20,21,22,28);\r
 aWE("usability",2);\r
-aWE("usag",14,24);\r
+aWE("usag",25,14);\r
 aWE("user",8,19);\r
 aWE("usr",14);\r
 aWE("usual",14);\r
@@ -1269,71 +1327,72 @@ aWE("utiliti",4);
 aWE("v",14,18);\r
 aWE("valid",18);\r
 aWE("validation",3);\r
-aWE("valu",1,14,23,24,18,21);\r
-aWE("variabl",14,15);\r
+aWE("valu",1,23,25,14,18,21);\r
+aWE("variabl",15,14);\r
 aWE("variety",4,12);\r
-aWE("variou",14,11);\r
+aWE("variou",11,14);\r
 aWE("ve",14,18);\r
-aWE("vector",24);\r
-aWE("ver",14);\r
-aWE("ver_major",14);\r
-aWE("ver_minor",14);\r
-aWE("version",6,14,2,16,26,19);\r
-aWE("vertical",6,23,24,18);\r
-aWE("very",14,10,2,24,16);\r
-aWE("view",3,5,8,14,2,23,12,24,16,18,20,22);\r
+aWE("vector",1,25);\r
+aWE("version",6,2,16,14,27,19);\r
+aWE("vertic",1);\r
+aWE("vertical",6,23,25,18);\r
+aWE("very",10,2,25,16,14);\r
+aWE("via",24,14,28);\r
+aWE("view",3,5,8,2,23,12,24,25,16,14,18,20,22,28);\r
 aWE("viewer",5,6,2,11,16,17,18);\r
+aWE("visibl",24,28);\r
 aWE("visual",11);\r
-aWE("visualisation",1,24);\r
-aWE("visualiz",10,24);\r
+aWE("visualisation",1,25);\r
+aWE("visualiz",10,24,25,28);\r
 aWE("visualization",9,10,2,11,16);\r
-aWE("vtk",5,6,14,2,18);\r
+aWE("vtk",5,6,2,14,18,28);\r
 aWE("vtkhom",14);\r
 aWE("wait",14);\r
-aWE("want",6,14,12);\r
-aWE("warn",8,14,24);\r
-aWE("way",14,11,19);\r
+aWE("want",6,12,14);\r
+aWE("warn",8,25,14);\r
+aWE("way",11,14,19);\r
 aWE("web",4);\r
 aWE("welcom",4,10);\r
-aWE("what",3,14,10,12,26,21);\r
+aWE("what",3,10,12,14,27,21);\r
 aWE("whenev",23,18);\r
 aWE("wherev",6);\r
-aWE("wheth",14);\r
 aWE("whil",3);\r
-aWE("whol",24,18,26);\r
+aWE("whol",25,18,27);\r
 aWE("whos",23);\r
-aWE("wid",4,11,25);\r
+aWE("why",14);\r
+aWE("wid",4,11,26);\r
 aWE("widget",11);\r
-aWE("width",23,24);\r
-aWE("will",4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22);\r
-aWE("window",4,5,6,9,14,2,12,24,15,16,17,25,18,22);\r
+aWE("width",23,25);\r
+aWE("will",4,5,0,8,23,24,13,25,15,16,14,17,26,18,27,19,21,22);\r
+aWE("window",4,5,6,9,2,12,25,15,16,14,17,26,18,22);\r
+aWE("wir",1);\r
 aWE("wirefram",1,23);\r
-aWE("wish",6);\r
-aWE("wish8",14);\r
+aWE("wish",6,24,14,28);\r
 aWE("within",3,5,7,22);\r
-aWE("without",3,0,14,24,15,26);\r
+aWE("without",3,0,25,15,14,27);\r
 aWE("wizard",14);\r
-aWE("won",7,14,15);\r
+aWE("won",7,15);\r
 aWE("word",20);\r
-aWE("work",3,6,0,9,14,11,24,16,17);\r
-aWE("would",14,16,17,19);\r
-aWE("writ",10,17);\r
+aWE("work",3,6,0,9,11,24,25,16,14,17);\r
+aWE("would",16,17,19);\r
+aWE("writ",10,14,17);\r
 aWE("written",3,17);\r
 aWE("wrong",14);\r
 aWE("www",3);\r
-aWE("x",23,24,15);\r
-aWE("xml",14,15,19);\r
+aWE("x",23,25,15);\r
+aWE("xml",15,14,19);\r
 aWE("xterm",15);\r
 aWE("xxxxx",14);\r
-aWE("y",14,23,24);\r
+aWE("xy",25);\r
+aWE("y",23,25);\r
 aWE("year",10);\r
 aWE("yes",8,14);\r
 aWE("yet",14,18);\r
-aWE("your",5,6,0,7,8,14,23,24,15,17,18,26,19);\r
-aWE("yourselv",25);\r
+aWE("your",5,6,0,7,8,23,25,15,14,17,18,27,19);\r
+aWE("yourselv",26);\r
 aWE("z",15);\r
-aWE("zon",5,6,24);\r
-aWE("zoom",24,17);\r
+aWE("zon",5,6,25);\r
+aWE("zoom",24,25,17,28);\r
 \r
 //-->\r
 </script>\r
index a037edb04a998875594b5e17127f70be29de0b64..15cf816cfc77253a6c781bb7c3e6b9a09d0483d2 100755 (executable)
@@ -18,7 +18,7 @@
    aTE(2,0,"SALOME architecture","kernel/about_salome_pro_architecture.htm");\r
    aTE(2,0,"Installing SALOME","kernel/readme.html");\r
    aTE(2,0,"Running SALOME","kernel/running_salome_pro.htm");\r
- aTE(1,21,"GUI module");\r
+ aTE(1,24,"GUI module");\r
    aTE(2,0,"Introduction to GUI","introduction_to_gui.htm");\r
    aTE(2,0,"Getting started","kernel/getting_started2.htm");\r
    aTE(2,0,"SALOME desktop","kernel/salome_pro_desktop.htm");\r
@@ -33,6 +33,9 @@
    aTE(2,0,"Using Object Browser","kernel/using_object_browser.htm");\r
    aTE(2,0,"Using Registry tool","kernel/using_registry.htm");\r
    aTE(2,0,"Using Catalog Generator","kernel/using_catalog_generator.htm");\r
+   aTE(1,2,"Viewers");\r
+     aTE(2,0,"OCC 3D Viewer","occ_3d_viewer.htm");\r
+     aTE(2,0,"VTK 3D Viewer","vtk_3d_viewer.htm");\r
    aTE(1,6,"Setting Preferences");\r
      aTE(2,0,"Setting Preferences","setting_preferences.htm");\r
      aTE(2,0,"Select Color and Font","select_color_and_font.htm");\r
diff --git a/doc/salome/gui/GUI/whfbody.htm b/doc/salome/gui/GUI/whfbody.htm
deleted file mode 100755 (executable)
index 5666e1b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<html>\r
-<head>\r
-<title>Search Result</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whfhost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(window.gbWhFHost)\r
-{\r
-       \r
-       \r
-       setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Error", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-       setActiveBgColor("#cccccc");\r
-       setMargin("0pt");\r
-       setIndent("9pt");\r
-       FtsWriteClassStyle();\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
-</body>\r
-</html>\r
-\r
diff --git a/doc/salome/gui/GUI/whfdhtml.htm b/doc/salome/gui/GUI/whfdhtml.htm
deleted file mode 100755 (executable)
index 3742960..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>\r
-<head>\r
-<title>Search Frame</TITLE>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-var gbIndexLayerInit = false;\r
-var strWrite="";\r
-if (window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
-{\r
-       if (gbMac)\r
-               strWrite="<FRAMESET ROWS='45,100%' framespacing=0  frameborder=1>";\r
-       else\r
-               strWrite="<FRAMESET ROWS='60,100%' framespacing=0  frameborder=1>";\r
-       strWrite +="<FRAME SRC='whfform.htm' title='search form frame' name='ftsform' noresize='yes' scrolling='no'>";\r
-       strWrite +="<FRAME SRC='whfbody.htm' title='search result frame' name='ftsbody' scrolling='yes'>";\r
-       strWrite +="</FRAMESET>";\r
-       document.write(strWrite);\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whfform.htm b/doc/salome/gui/GUI/whfform.htm
deleted file mode 100755 (executable)
index 87d754e..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<html>\r
-<head>\r
-<title>Search Form</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<style>\r
-<!--\r
-body {margin:0;}\r
--->\r
-</style>\r
-<body bgcolor="#c0c0c0">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whform.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gstrInput = "";\r
-function ftsLookup(bCR)\r
-{\r
-       if (bCR)\r
-       {\r
-               var strInput = document.FtsInputForm.keywordField.value.toUpperCase();\r
-               if (strInput != "") {\r
-                       var oMsg = new whMessage(WH_MSG_SEARCHFTSKEY, this, 1, strInput);\r
-                       if (!SendMessage(oMsg))\r
-                       {\r
-                               gstrInput = strInput;\r
-                       }\r
-                       else\r
-                               gstrInput = "";\r
-               }\r
-\r
-               if (gbMac) {\r
-                       document.FtsInputForm.keywordField.focus();\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-function beforeInit()\r
-{\r
-       var oParam = new Object();\r
-       oParam.sValue = "";\r
-       var oMsg = new whMessage(WH_MSG_GETSEARCHS, this, 1, oParam);\r
-       if (SendMessage(oMsg))\r
-       {\r
-               if (oParam.sValue != "" && oParam.sValue != "- Search -")\r
-               {\r
-                       document.FtsInputForm.keywordField.value = oParam.sValue;\r
-                       gfunLookUp(true);\r
-               }\r
-       }\r
-       init(); \r
-}\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
-       UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
-       UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
-       UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
-       UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
-       UnRegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if (oMsg.nMessageId == WH_MSG_SHOWFTS)\r
-       {\r
-               document.FtsInputForm.keywordField.focus();\r
-       }\r
-       else if (oMsg.nMessageId == WH_MSG_SHOWIDX ||\r
-               oMsg.nMessageId == WH_MSG_SHOWTOC || \r
-               oMsg.nMessageId == WH_MSG_SHOWGLO)\r
-       {\r
-               document.FtsInputForm.keywordField.blur();\r
-       }\r
-       else if (oMsg.nMessageId == WH_MSG_SEARCHTHIS)\r
-       {\r
-               if (oMsg.oParam != "- Search -")\r
-               {\r
-                       document.FtsInputForm.keywordField.value = oMsg.oParam;\r
-                       gfunLookUp(true);\r
-               }\r
-       }\r
-       else if (oMsg.nMessageId == WH_MSG_BACKUPSEARCH)\r
-       {\r
-               if (gstrInput)\r
-               {\r
-                       oMsg.oParam = gstrInput;\r
-                       gstrInput = "";\r
-                       return false;\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-if (window.gbWhForm)\r
-{\r
-       RegisterListener2(this, WH_MSG_SHOWTOC);\r
-       RegisterListener2(this, WH_MSG_SHOWIDX);\r
-       RegisterListener2(this, WH_MSG_SHOWFTS);\r
-       RegisterListener2(this, WH_MSG_SHOWGLO);\r
-       RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
-       RegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
-       gfunLookUp = ftsLookup;\r
-       gfunInit = null;\r
-       gstrFormName = "FtsInputForm"\r
-       gsTitle = "Type in the word(s) to search for:";\r
-       gsTitle = "Type in the word(s) to search for:";\r
-       setGoImage1("");\r
-       \r
-       \r
-       \r
-       \r
-       \r
-       \r
-       setGoText("Go");\r
-       setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
-       \r
-       \r
-       document.write(getFormHTML());\r
-       writeFormStyle();\r
-       window.onload = beforeInit;\r
-       window.onunload=window_unload;\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whfhost.js b/doc/salome/gui/GUI/whfhost.js
deleted file mode 100755 (executable)
index 167acc4..0000000
+++ /dev/null
@@ -1,945 +0,0 @@
-//     WebHelp 5.10.003\r
-var gsSK2=null;\r
-var gsSK=null;\r
-var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";\r
-var gnCLF=0;\r
-var gsHelpCannotSearch="Cannot search for that phrase.";\r
-var gsNoTopics="No Topics Found.";\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSearchMsg="Searching...";\r
-var gsResultDivID="ResultDiv";\r
-var gaaFCD=new Array();\r
-var gaaFTCD=new Array();\r
-var goCF=null;\r
-var goCTF=null;\r
-var gaTI=null;\r
-var gnCurrentOp=0;\r
-var gbNot=false;\r
-var gbReady=false;\r
-var gnLoadFts=1;\r
-var gnCacheLimits=5;\r
-var gaCCD=new Array();\r
-var gbXML=false;\r
-var gaData=new Array();\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var gsMargin="0pt";\r
-var gsIndent="0pt";\r
-var gsCheckKey=null;\r
-var gnIndexNum=0;\r
-var gaFtsContentsCon=null;\r
-var gaTopicCheckInfo=null;\r
-var gnTopicCheck=0;\r
-var goFont=null;\r
-var goErrFont=null;\r
-var goHoverFont=null;\r
-var gsABgColor="#cccccc";\r
-var gbWhFHost=false;\r
-var gbFirst=false;\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Normal")\r
-               goFont=vFont;\r
-       else if(sType=="Error")\r
-               goErrFont=vFont;\r
-       else if(sType=="Hover")\r
-               goHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
-       gsABgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
-       gsMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
-       gsIndent=sIndent;\r
-}\r
-\r
-function updateCache(oCF)\r
-{\r
-       var len=gaCCD.length;\r
-       if(len<gnCacheLimits*gnCLF)\r
-               gaCCD[len]=oCF;\r
-       else{\r
-               gaCCD[0].aTopics=null;\r
-               gaCCD[0].aFtsKeys=null;\r
-               removeItemFromArray(gaCCD,0);\r
-               gaCCD[len-1]=oCF;\r
-       }\r
-}\r
-\r
-function addFtsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
-       gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
-       if(gnLoadFts==1)\r
-       {\r
-               var aFCD=new Array();\r
-               var aFTCD=new Array();\r
-               ftsReady(aFCD,aFTCD);\r
-       }\r
-       else if(gnLoadFts==3)\r
-       {\r
-               var aTopics=new Array();\r
-               putFtsTData(aTopics);\r
-       }\r
-       else if(gnLoadFts==2)\r
-       {\r
-               putFtsWData(aFtsContents);\r
-               var aFtsContents=new Array();\r
-       }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
-       if(gnLoadFts==1)\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var oChild=node.firstChild;\r
-                       var aFCD=new Array();\r
-                       var aFTCD=new Array();\r
-                       while(oChild)\r
-                       {\r
-                               if(oChild.nodeName=="chunkinfo")\r
-                               {\r
-                                       var sURL=oChild.getAttribute("url");\r
-                                       var sFirst=oChild.getAttribute("first");\r
-                                       var sLast=oChild.getAttribute("last");\r
-                                       if(sURL&&sFirst&&sLast)\r
-                                       {\r
-                                               item=new Object();\r
-                                               item.sStartKey=sFirst;\r
-                                               item.sEndKey=sLast;\r
-                                               item.sFileName=sURL;\r
-                                               aFCD[aFCD.length]=item;\r
-                                       }\r
-                               }\r
-                               else if(oChild.nodeName=="tchunkinfo")\r
-                               {\r
-                                       var sURL=oChild.getAttribute("url");\r
-                                       var nB=parseInt(oChild.getAttribute("first"));\r
-                                       var nE=parseInt(oChild.getAttribute("last"));\r
-                                       if(sURL&&sFirst&&sLast)\r
-                                       {\r
-                                               item=new Object();\r
-                                               item.nBegin=nB;\r
-                                               item.nEnd=nE;\r
-                                               item.sFileName=sURL;\r
-                                               aFTCD[aFTCD.length]=item;\r
-                                       }\r
-\r
-                               }\r
-                               oChild=oChild.nextSibling;\r
-                       }\r
-                       ftsReady(aFCD,aFTCD);\r
-               }\r
-       }\r
-       else if(gnLoadFts==3)\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var oChild=node.firstChild;\r
-                       var aTopics=new Array();\r
-                       while(oChild)\r
-                       {\r
-                               if(oChild.nodeName=="topic")\r
-                               {\r
-                                       var name=oChild.getAttribute("name");\r
-                                       var sURL=oChild.getAttribute("url");\r
-                                       if(name&&name.length>0&&sURL)\r
-                                       {\r
-                                               var topic=new Object();\r
-                                               topic.sTopicTitle=name;\r
-                                               topic.sTopicURL=sURL;\r
-                                               aTopics[aTopics.length]=topic;\r
-                                       }\r
-                               }\r
-                               oChild=oChild.nextSibling;\r
-                       }\r
-                       putFtsTData(aTopics);\r
-               }\r
-       }\r
-       else if(gnLoadFts==2)\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var oChild=node.firstChild;\r
-                       var aFtsContents=new Array();\r
-                       while(oChild)\r
-                       {\r
-                               if(oChild.nodeName=="key")\r
-                               {\r
-                                       var name=oChild.getAttribute("name");\r
-                                       if(name&&name.length>0)\r
-                                       {\r
-                                               var item=new Object();\r
-                                               item.sItemName=name;\r
-                                               aFtsContents[aFtsContents.length]=item;\r
-                                               var oChildChild=oChild.firstChild;\r
-                                               while(oChildChild)\r
-                                               {\r
-                                                       if(oChildChild.nodeName=="#text")\r
-                                                       {\r
-                                                               var sIDs=oChildChild.nodeValue;\r
-                                                               if(sIDs)\r
-                                                               {\r
-                                                                       var nBPos=0;\r
-                                                                       do\r
-                                                                       {\r
-                                                                               var nPos=sIDs.indexOf(",",nBPos);\r
-                                                                               var sID=null;\r
-                                                                               if(nPos!=-1)\r
-                                                                                       sID=sIDs.substring(nBPos,nPos);\r
-                                                                               else\r
-                                                                                       sID=sIDs.substring(nBPos);\r
-\r
-                                                                               if(sID)\r
-                                                                               {\r
-                                                                                       var id=parseInt(sID);\r
-                                                                                       if(!isNaN(id))\r
-                                                                                       {\r
-                                                                                               if(!item.aTopics)\r
-                                                                                                       item.aTopics=new Array();\r
-                                                                                               item.aTopics[item.aTopics.length]=id;\r
-                                                                                       }\r
-                                                                               }\r
-                                                                               nBPos=nPos+1;\r
-                                                                       }while(nBPos!=0&&nBPos<sIDs.length);\r
-                                                               }\r
-                                                       }\r
-                                                       oChildChild=oChildChild.nextSibling;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               oChild=oChild.nextSibling;\r
-                       }\r
-                       putFtsWData(aFtsContents);\r
-               }\r
-       }\r
-}\r
-\r
-function ftsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
-       this.sPPath=sPPath;\r
-       this.sDPath=sDPath;\r
-       this.sFtsFile=sFtsFile;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-       {\r
-               document.body.background=gsBgImage;\r
-       }\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-       {\r
-               document.body.bgColor=gsBgColor;\r
-       }\r
-       writeResultDiv();\r
-       loadFts();\r
-       var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function writeResultDiv()\r
-{\r
-       var sHTML="<div id=\""+gsResultDivID+"\" style=\"POSITION:absolute;\"></div>";\r
-       document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-}\r
-\r
-function loadFts()\r
-{\r
-       if(!gbReady)\r
-       {\r
-               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
-               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
-               {\r
-                       gbReady=true;\r
-                       var oProj=oResMsg.oParam;\r
-                       var aProj=oProj.aProj;\r
-                       gbXML=oProj.bXML;\r
-                       if(aProj.length>0)\r
-                       {\r
-                               var sLangId=aProj[0].sLangId;\r
-                               for(var i=0;i<aProj.length;i++)\r
-                               {\r
-                                       if(aProj[i].sFts&&aProj[i].sLangId==sLangId)\r
-                                       {\r
-                                               addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);\r
-                                       }\r
-                               }\r
-                       }\r
-                       loadFD();\r
-\r
-               }                               \r
-       }\r
-}\r
-\r
-function loadFD()\r
-{\r
-       if(gnCLF<gaData.length)\r
-       {\r
-               gnLoadFts=1;\r
-               loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);\r
-       }\r
-       else \r
-       {\r
-               var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);\r
-               if (SendMessage(oMsg))\r
-               {\r
-                       if (oMsg.oParam)\r
-                       {\r
-                               gsSK=oMsg.oParam.toLowerCase();\r
-                               findFTSKey();\r
-                       }\r
-               }\r
-               RegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
-       }\r
-}\r
-\r
-function loadData2(sFile)\r
-{\r
-       if(gbXML)\r
-               loadDataXML(sFile);\r
-       else\r
-               loadData(sFile);\r
-}\r
-\r
-function findFTSKey()\r
-{\r
-       gaTI=new Array();\r
-       gnCurrentOp=1;\r
-       gbNot=false;\r
-       displayMsg(gsSearchMsg);\r
-       if(gsSK!="")\r
-       {\r
-               gbFirst=true;\r
-               findOneKey();\r
-       }\r
-}\r
-\r
-function findOneKey()\r
-{\r
-       if(gsSK && gsSK!="")\r
-       {\r
-               var sInput=gsSK;\r
-               var sCW="";\r
-               var nS=-1;\r
-               var nSep=-1;\r
-               for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){\r
-                       var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));\r
-                       if((nFound!=-1)&&((nS==-1)||(nFound<nS))){\r
-                               nS=nFound;\r
-                               nSep=nChar;\r
-                       }\r
-               }\r
-               if(nS==-1){\r
-                       sCW=sInput;\r
-                       sInput="";\r
-               }else{\r
-                       sCW=sInput.substring(0,nS);\r
-                       sInput=sInput.substring(nS+1);\r
-               }\r
-\r
-               gsSK=sInput;\r
-               \r
-               if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){\r
-                       gnCurrentOp=0;\r
-                       gbNot=false;\r
-               }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){\r
-                       gnCurrentOp=1;\r
-                       gbNot=false;\r
-               }else if((sCW=="not")||\r
-                       ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){\r
-                       gbNot=!gbNot;\r
-               }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){\r
-                       var sCurrentStem=GetStem(sCW);\r
-                       gsCW=sCurrentStem;\r
-                       ftsFindKeyword();\r
-                       return;\r
-               }\r
-               findOneKey();\r
-       }\r
-       else{\r
-               displayTopics();\r
-               checkAgain();\r
-       }\r
-}\r
-\r
-function checkAgain()\r
-{\r
-       gsCheckKey = "";\r
-       gnIndexNum = 0;\r
-       gsSK=gsSK2;\r
-       gsSK2=null;\r
-       if(gsSK!=null)\r
-               setTimeout("findFTSKey();",1);\r
-}\r
-\r
-function displayTopics()\r
-{\r
-       var sHTML="";\r
-       var sLine="";\r
-       for(var i=0;i<gaTI.length;i++){\r
-               sLine+="<dt><nobr><a href='"+gaTI[i].sTopicURL+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
-               if(i>>4<<4==i)\r
-               {\r
-                       sHTML+=sLine;\r
-                       sLine="";\r
-               }\r
-       }\r
-       if(sLine.length>0)\r
-               sHTML+=sLine;\r
-\r
-       if(sHTML.length==0)\r
-               sHTML="<P>"+gsNoTopics+"</P>"\r
-       else\r
-               sHTML="<dl>"+sHTML+"</dl>";\r
-\r
-       var resultDiv=getElement(gsResultDivID);\r
-       if(resultDiv)\r
-               resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function displayMsg(sErrorMsg)\r
-{\r
-       var sHTML="<P>"+sErrorMsg+"</P>";\r
-\r
-       var resultDiv=getElement(gsResultDivID);\r
-       if(resultDiv)\r
-               resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function ftsFindKeyword()\r
-{\r
-       var sKey=gsCW;\r
-       var bNeedLoad=false;\r
-       var aFtsContentsCon=null;\r
-       var s=0;\r
-       if(sKey==null) return;\r
-       if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)\r
-       {\r
-               aFtsContentsCon=new Array();\r
-               gnCheck=0;\r
-               gsCheckKey=sKey;\r
-               gnTopicCheck=0;\r
-               gaTopicCheckInfo=null;\r
-       }\r
-       else{\r
-               s=gnIndexNum;\r
-               aFtsContentsCon=gaFtsContentsCon;\r
-       }\r
-       for(var i=gnCheck;i<gaaFCD.length;i++)\r
-       {\r
-               var oCF=getChunkedFts(i,sKey);\r
-               if(oCF)\r
-               {\r
-                       if(!oCF.aFtsKeys&&oCF.sFileName!=null)\r
-                       {\r
-                               bNeedLoad=true;\r
-                               oCF.nProjId=i;\r
-                               goCF=oCF;\r
-                               gnIndexNum=s;\r
-                               gnCheck=i;\r
-                               gaFtsContentsCon=aFtsContentsCon;\r
-                               gnLoadFts=2;\r
-                               beginLoading();\r
-                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);\r
-                               break;\r
-                       }\r
-                       else{\r
-                               aFtsContentsCon[s++]=oCF;\r
-                       }\r
-               }\r
-       }\r
-       if(!bNeedLoad)\r
-       {\r
-               var aTI=gaTopicCheckInfo;\r
-               for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)\r
-               {\r
-                       var aTIPart=getTopics(aFtsContentsCon[m],sKey);\r
-                       if(aTIPart==null)\r
-                       {\r
-                               gnCheck=gaaFCD.length;\r
-                               gnTopicCheck=m;\r
-                               gaTopicCheckInfo=aTI;\r
-                               gaFtsContentsCon=aFtsContentsCon;\r
-                               return;\r
-                       }\r
-                       if(m==0)\r
-                               aTI=aTIPart;\r
-                       else\r
-                               aTI=mergeTopics(aTI,aTIPart);\r
-               }\r
-               if(mergewithPreviousResult(aTI))\r
-               {\r
-                       gbFirst=false;\r
-                       findOneKey();\r
-               }\r
-               else\r
-                       checkAgain();\r
-       }\r
-}\r
-\r
-function mergewithPreviousResult(aTI)\r
-{\r
-       if(aTI!=null&&aTI.length!=0)\r
-       {\r
-               var nNumTopics=aTI.length;\r
-               if(gnCurrentOp==0||gbFirst){\r
-                       if(gbNot){\r
-                               displayMsg(gsHelpCannotSearch);\r
-                               return false;\r
-                       }else{\r
-                               var aLS,aSS;\r
-                               if(gaTI.length>=aTI.length)\r
-                               {\r
-                                       aLS=gaTI;\r
-                                       aSS=aTI;\r
-                               }\r
-                               else\r
-                               {\r
-                                       aLS=aTI;\r
-                                       aSS=gaTI;\r
-                               }\r
-                               var s=0;\r
-                               for(var i=0;i<aSS.length;i++)\r
-                               {\r
-                                       var bAlreadyThere=false;\r
-                                       for(var j=s;j<aLS.length;j++)\r
-                                       {\r
-                                               if(aSS[i].equalTo(aLS[j]))\r
-                                               {\r
-                                                       bAlreadyThere=true;\r
-                                                       s=j;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       if(!bAlreadyThere)\r
-                                       {\r
-                                               insertTopic(aLS,aSS[i]);\r
-                                       }\r
-                               }\r
-                               gaTI=aLS;\r
-                       }\r
-               }else if(gnCurrentOp==1){\r
-                       if(gbNot){\r
-                               var s=0;\r
-                               for(var i=0;i<aTI.length;i++)\r
-                               {\r
-                                       for(var j=s;j<gaTI.length;j++)\r
-                                       {\r
-                                               if(aTI[i].equalTo(gaTI[j]))\r
-                                               {\r
-                                                       removeItemFromArray(gaTI,j);\r
-                                                       s=j;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }else{\r
-                               var s=0;\r
-                               for(var i=0;i<gaTI.length;i++)\r
-                               {\r
-                                       var bFound=false;\r
-                                       for(var j=s;j<aTI.length;j++)\r
-                                       {\r
-                                               if(gaTI[i].equalTo(aTI[j]))\r
-                                               {\r
-                                                       bFound=true;\r
-                                                       s=j;\r
-                                               }\r
-                                       }\r
-                                       if(!bFound)\r
-                                       {\r
-                                               removeItemFromArray(gaTI,i);\r
-                                               i--;\r
-                                       }\r
-                               }                               \r
-                       }\r
-               }\r
-       }else{\r
-               if((gnCurrentOp==1)&&(!gbNot)){\r
-                       gaTI.length=0;\r
-               }else if((gnCurrentOp==0)&&(gbNot)){\r
-                       displayMsg(gsHelpCannotSearch);\r
-                       return false;\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-function insertTopic(aTI,oTI)\r
-{\r
-       var nB=0;\r
-       var nE=aTI.length-1;\r
-       if(nE>=0)\r
-       {\r
-               var nM;\r
-               var bFound=false;\r
-               do{\r
-                       nM=(nB+nE)>>1;\r
-                       if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)\r
-                               nE=nM-1;\r
-                       else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
-                               nB=nM+1;\r
-                       else\r
-                       {\r
-                               bFound=true;\r
-                               break;\r
-                       }\r
-               }while(nB<=nE);\r
-               if(bFound)\r
-                       insertItemIntoArray(aTI,nM,oTI);\r
-               else\r
-               {\r
-                       if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
-                               insertItemIntoArray(aTI,nM+1,oTI);\r
-                       else\r
-                               insertItemIntoArray(aTI,nM,oTI);\r
-               }\r
-       }\r
-       else\r
-               aTI[0]=oTI;\r
-}\r
-\r
-function mergeTopics(aTI1,aTI2)\r
-{\r
-       var i1=0;\r
-       var i2=0;\r
-       var len1=aTI1.length;\r
-       var len2=aTI2.length;\r
-       var aTopicNew=new Array();\r
-       var i=0;\r
-       while(i1<len1||i2<len2)\r
-       {\r
-               if(i1<len1&&i2<len2)\r
-               {\r
-                       if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)\r
-                               aTopicNew[i++]=aTI1[i1++];\r
-                       else\r
-                               aTopicNew[i++]=aTI2[i2++];\r
-               }\r
-               else if(i1<len1)\r
-                       aTopicNew[i++]=aTI1[i1++];\r
-               else if(i2<len2)\r
-                       aTopicNew[i++]=aTI2[i2++];\r
-       }\r
-       return aTopicNew;\r
-}\r
-\r
-function getTopics(oCF,sKey)\r
-{\r
-       var aTIPart=new Array();\r
-       if(oCF&&oCF.aFtsKeys)\r
-       {\r
-               var keys=oCF.aFtsKeys;\r
-               var nB=0;\r
-               var nE=keys.length-1;\r
-               var nM=-1;\r
-               var bFound=false;\r
-               do{\r
-                       nM=(nB+nE)>>1;\r
-                       if(compare(keys[nM].sItemName,sKey)>0)\r
-                               nE=nM-1;\r
-                       else if(compare(keys[nM].sItemName,sKey)<0)\r
-                               nB=nM+1;\r
-                       else{\r
-                               bFound=true;\r
-                               break;\r
-                       }\r
-               }while(nB<=nE);\r
-               if(bFound)\r
-               {\r
-                       if(keys[nM].aTopics)\r
-                       {\r
-                               for(var i=0;i<keys[nM].aTopics.length;i++)\r
-                               {\r
-                                       var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);\r
-                                       if(oTC.aTopics)\r
-                                       {\r
-                                               aTIPart[aTIPart.length]=\r
-                                                       new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,\r
-                                                               gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);\r
-                                       }\r
-                                       else{\r
-                                               goCTF=oTC;\r
-                                               gnLoadFts=3;\r
-                                               beginLoading();\r
-                                               loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);\r
-                                               return null;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return aTIPart;\r
-}\r
-\r
-function getTopicChunk(aFTCD,nTopicId)\r
-{\r
-       if(aFTCD&&aFTCD.length)\r
-       {\r
-               var nB=0;\r
-               var nE=aFTCD.length-1;\r
-               var nM=-1;\r
-               var bFound=false;\r
-               do{\r
-                       nM=(nB+nE)>>1;\r
-                       if(aFTCD[nM].nBegin>nTopicId)\r
-                               nE=nM-1;\r
-                       else if(aFTCD[nM].nEnd<nTopicId)\r
-                               nB=nM+1;\r
-                       else{\r
-                               bFound=true;\r
-                               break;\r
-                       }\r
-               }while(nB<=nE);\r
-               if(bFound)\r
-                       return aFTCD[nM];\r
-       }\r
-       return null;\r
-}\r
-\r
-function endLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(oDiv)\r
-               oDiv.style.visibility="hidden";\r
-}\r
-\r
-function beginLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(!oDiv)\r
-       {\r
-               document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());\r
-               oDiv=getElement(gsLoadingDivID);\r
-       }\r
-       \r
-       if(oDiv)\r
-       {\r
-               oDiv.style.top=document.body.scrollTop;\r
-               oDiv.style.visibility="visible";\r
-       }\r
-}\r
-\r
-function writeLoadingDiv(nIIdx)\r
-{\r
-       return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-function topicInfo(sTopicTitle,sTopicURL)\r
-{\r
-       this.sTopicTitle=sTopicTitle;\r
-       this.sTopicURL=sTopicURL;\r
-       this.equalTo=function(oTI)\r
-       {\r
-               return ((this.sTopicTitle==oTI.sTopicTitle)&&\r
-                       (this.sTopicURL==oTI.sTopicURL));\r
-       }\r
-}\r
-\r
-function getChunkedFts(nIndex,sKey)\r
-{\r
-       var oCF=null;\r
-       if(nIndex<gaaFCD.length)\r
-       {\r
-               var len=gaaFCD[nIndex].length;\r
-               if(len>0)\r
-               {\r
-                       var nB=0;\r
-                       var nE=len-1;\r
-                       var bFound=false;\r
-                       do{\r
-                               var nM=(nB+nE)>>1;\r
-                               if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)\r
-                               {\r
-                                       nB=nM+1;\r
-                               }\r
-                               else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)\r
-                               {\r
-                                       nE=nM-1;\r
-                               }\r
-                               else{\r
-                                       bFound=true;\r
-                                       break;\r
-                               }\r
-                       }while(nE>=nB);\r
-                       if(bFound)\r
-                               oCF=gaaFCD[nIndex][nM];\r
-               }\r
-       }\r
-       return oCF;\r
-}\r
-\r
-function ftsReady(aFCD,aFTCD)\r
-{\r
-       endLoading();\r
-       gaaFTCD[gnCLF]=aFTCD;\r
-       gaaFCD[gnCLF++]=aFCD;\r
-       setTimeout("loadFD();",1);\r
-}\r
-\r
-function putFtsTData(aTopics)\r
-{\r
-       endLoading();\r
-       var oCTF=goCTF;\r
-       if(oCTF)\r
-       {\r
-               oCTF.aTopics=aTopics;\r
-               setTimeout("ftsFindKeyword();",1);\r
-       }\r
-}\r
-\r
-function putFtsWData(aFtsContents)\r
-{\r
-       endLoading();\r
-       var oCF=goCF;\r
-       if(oCF)\r
-       {\r
-               updateCache(oCF);\r
-               oCF.aFtsKeys=aFtsContents;\r
-               setTimeout("ftsFindKeyword();",1);\r
-       }\r
-}\r
-\r
-function IsStopWord(sCW,aFtsStopArray)\r
-{\r
-       var nStopArrayLen=aFtsStopArray.length;\r
-       var nB=0;\r
-       var nE=nStopArrayLen-1;\r
-       var nM=0;\r
-       var bFound=false;\r
-       var sStopWord="";\r
-       while(nB<=nE){\r
-               nM=(nB+nE);\r
-               nM>>=1;\r
-               sStopWord=aFtsStopArray[nM];\r
-               if(compare(sCW,sStopWord)>0){\r
-                       nB=(nB==nM)?nM+1:nM;\r
-               }else{\r
-                       if(compare(sCW,sStopWord)<0){\r
-                               nE=(nE==nM)?nM-1:nM;\r
-                       }else{\r
-                               bFound=true;\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-       return bFound;\r
-}\r
-\r
-function GetStem(szWord)\r
-{\r
-       if(gaFtsStem==null||gaFtsStem.length==0)return szWord;\r
-       var aStems=gaFtsStem;\r
-\r
-       var nStemPos=0;\r
-       var csStem="";\r
-       for(var iStem=0;iStem<aStems.length;iStem++){\r
-\r
-               if(aStems[iStem].length>=szWord.length-1)       continue;\r
-               nStemPos=szWord.lastIndexOf(aStems[iStem]);\r
-               if(nStemPos>0){\r
-                       var cssub=szWord.substring(nStemPos);\r
-                       if(cssub==aStems[iStem]){\r
-                               csStem=szWord;\r
-                               if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){\r
-                                       csStem=csStem.substring(0,nStemPos-1);\r
-                               }else{\r
-                                       csStem=csStem.substring(0,nStemPos);\r
-                               }\r
-                               return csStem;\r
-                       }\r
-               }\r
-       }\r
-       return szWord;\r
-}\r
-\r
-function FtsWriteClassStyle()\r
-{\r
-       var sStyle="<STYLE TYPE='text/css'>\n";\r
-       if (gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
-       sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
-       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
-       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
-       sStyle+="</STYLE>";\r
-       document.write(sStyle);\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId=oMsg.nMessageId;\r
-       if(nMsgId==WH_MSG_SEARCHFTSKEY)\r
-       {\r
-               if(oMsg.oParam)\r
-               {\r
-                       if(gsSK==null||gsSK=="")\r
-                       {\r
-                               gsSK=oMsg.oParam.toLowerCase();\r
-                               findFTSKey();\r
-                       }\r
-                       else\r
-                               gsSK2=oMsg.oParam.toLowerCase();\r
-               }\r
-       }\r
-       else if(nMsgId==WH_MSG_PROJECTREADY)\r
-       {\r
-               loadFts();\r
-       }\r
-       return true;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)\r
-{\r
-       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-       goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");\r
-       goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-       window.onload=window_OnLoad;\r
-       window.onbeforeunload=window_BUnload;\r
-       window.onunload=window_Unload;\r
-       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       gbWhFHost=true;\r
-}\r
-else\r
-       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whform.js b/doc/salome/gui/GUI/whform.js
deleted file mode 100755 (executable)
index 323fe8e..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-//     WebHelp 5.10.001\r
-var gfunLookUp;\r
-var gbInputEnable;\r
-var gfunInit;\r
-var gstrFormName= "";\r
-var gbWithButton = false;\r
-var gsTitle="";\r
-var gsOverImage = "";\r
-var gsOutImage = "";\r
-var gsClickImage = "";\r
-var gsText = "";\r
-var gsBgColor = "#c0c0c0";\r
-var gsBgImage = "";\r
-var gbInImage = 0;\r
-var gbInputEnable = 0;\r
-\r
-var goTitleFont=null;\r
-var goInputFont=null;\r
-var goNormalFont=null;\r
-var goHoverFont=null;\r
-var gnType=-1;\r
-var gbWhForm=false;\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       if (sBgImage != null && sBgImage.length > 0)\r
-               gsBgImage = sBgImage;\r
-\r
-       if  (gsBgImage  && gsBgImage .length > 0)\r
-       {\r
-               document.body.background = gsBgImage ;\r
-       }\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       if (sBgColor != null && sBgColor.length > 0)\r
-               gsBgColor = sBgColor;\r
-\r
-       if (gsBgColor&& gsBgColor.length > 0)\r
-       {\r
-               document.body.bgColor = gsBgColor;\r
-       }\r
-}\r
-\r
-function setBtnType(sType)\r
-{\r
-       if (sType == "image")\r
-       {\r
-               gnType = 0;\r
-       }\r
-       else if (sType == "text")\r
-       {\r
-               gnType = 1;\r
-       }\r
-}\r
-\r
-function setGoImage1(sImage1)\r
-{\r
-       gsOutImage = sImage1;\r
-       if (gsOutImage && gsOutImage.length > 0)\r
-               gbWithButton = true;\r
-}\r
-\r
-function setGoImage2(sImage2)\r
-{\r
-       gsOverImage = sImage2;\r
-       if (gsOverImage && gsOverImage.length > 0)\r
-               gbWithButton = true;\r
-}\r
-\r
-function setGoImage3(sImage3)\r
-{\r
-       gsClickImage = sImage3;\r
-       if (gsClickImage && gsClickImage.length > 0)\r
-               gbWithButton = true;\r
-}\r
-\r
-function setGoText(sText)\r
-{\r
-       gsText = sText;\r
-       if (gsText.length > 0)\r
-               gbWithButton = true;\r
-}\r
-\r
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
-{\r
-       var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
-       if (sType == "Title")\r
-       {\r
-               goTitleFont = vFont;\r
-               var vFont1 = new whFont(sFontName, sFontSize, "black", sFontStyle, sFontWeight, sFontDecoration);\r
-               goInputFont=vFont1;             \r
-       }\r
-       else if (sType == "Normal")\r
-               goNormalFont = vFont;\r
-       else if (sType == "Hover")\r
-               goHoverFont = vFont;\r
-}\r
-\r
-function writeFormStyle()\r
-{\r
-       var sStyle = "<style type='text/css'>";\r
-       sStyle += "p.title {" + getFontStyle(goTitleFont) + "margin-top:0;margin-bottom:0}\n";\r
-       sStyle += ".inputfield {" + getFontStyle(goInputFont) +"width:100%; }\n";\r
-       sStyle+="A:link {"+getFontStyle(goNormalFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goNormalFont)+"}\n";\r
-       sStyle +="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
-       sStyle+=".clsFormBackground{\n";\r
-       if (gsBgImage)\r
-               sStyle+="border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="border-top:black 1px solid;}\n";\r
-\r
-       sStyle += "</style>";\r
-       document.write(sStyle);\r
-}\r
-\r
-function lookupKeyDown()\r
-{\r
-       if (gbInputEnable)\r
-       {\r
-               if (gbIE4)\r
-               {\r
-                       if (event.keyCode == 13)        //Enter key\r
-                               gfunLookUp(true);\r
-                       else\r
-                               gfunLookUp(false);\r
-               }                       \r
-               else\r
-                       gfunLookUp(false);\r
-       }\r
-}\r
-\r
-function init()\r
-{\r
-       if (gfunInit)\r
-               gfunInit();\r
-       if (!window.Array)  return;\r
-               document.onkeyup = lookupKeyDown;\r
-}\r
-\r
-function inputSubmit()\r
-{\r
-       if ((gbInputEnable && !gbIE4)|| gbInImage)\r
-               gfunLookUp(true);\r
-}\r
-\r
-function inputEnable(bEnable)\r
-{\r
-       gbInputEnable = bEnable;\r
-}\r
-\r
-function inImage(bImage)\r
-{\r
-       gbInImage = bImage;\r
-}\r
-\r
-function getFormHTML()\r
-{\r
-       var sForm = "";\r
-       sForm += "<table class=\"clsFormBackground\" width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">";\r
-       sForm += "<form name=\"" + gstrFormName + "\" method=\"POST\" action=\"javascript:inputSubmit()\" style=\"width:100%\">";\r
-       sForm += "<tr>";\r
-       sForm += "<td>";\r
-       sForm += "<p class=title><nobr>" + gsTitle + "</nobr><br><table width=\"100%\"><tr valign=\"middle\"><td width=\"100%\"><input class=\"inputfield\" type=\"text\" name=\"keywordField\" onfocus=\"inputEnable(1);\" onblur=\"inputEnable(0);\"></td>";\r
-       if (gbWithButton && gnType >= 0)\r
-       {\r
-               sForm += "<td><a title=\"submit button\" href=\"javascript:void(0);\" onclick=\"" + gstrFormName + ".submit(); return false;\" onfocus=\"inImage(1);\" onblur=\"inImage(0);\" onmouseup=\"onMouseUp();\" onmousedown=\"onMouseDown();\" onmouseover=\"onMouseOver();\" onmouseout=\"onMouseOut();\">"\r
-               if (gnType == 0)\r
-               {\r
-                       if (!gsText)\r
-                               gsText="Go";\r
-                       sForm += "<img alt=\""+gsText+"\" id=\"go\" border=\"0\" src=\"" + gsOutImage + "\">";\r
-               }\r
-               else\r
-                       sForm += gsText ;\r
-               sForm += "</a></td>";\r
-       }\r
-       sForm += "</tr></table></p></td></tr></form></table>";\r
-       return sForm;\r
-}\r
-\r
-function onMouseOver()\r
-{\r
-       if (getElement("go") && gsOverImage)\r
-               getElement("go").src = gsOverImage;\r
-}\r
-\r
-function onMouseDown()\r
-{\r
-       if (getElement("go") && gsClickImage)\r
-               getElement("go").src = gsClickImage;\r
-}\r
-\r
-function onMouseUp()\r
-{\r
-       if (getElement("go") && gsOutImage)\r
-               getElement("go").src = gsOutImage;\r
-}\r
-\r
-function onMouseOut()\r
-{\r
-       if (getElement("go") && gsOutImage)\r
-               getElement("go").src = gsOutImage;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
-{\r
-       goTitleFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
-       goNormalFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
-       goHoverFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "underline");\r
-       gbWhForm=true;\r
-}\r
-else\r
-       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whframes.js b/doc/salome/gui/GUI/whframes.js
deleted file mode 100755 (executable)
index 2040f33..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//     WebHelp 5.10.001\r
-// this value should be identical to the value used in whproxy.js\r
-window.whname = "wh_stub";\r
-\r
-// this file will be used by Topic and NavBar and NavPane and other components\r
-// and this file is used in child frame html.\r
-// and the whstub.js will be used in the start page.\r
-// see reference in whstub.js.\r
-// Internal Area\r
-var gbInited = false;\r
-var gWndStubPage = null;\r
-function getStubPage()\r
-{\r
-       if (!gbInited)\r
-       {\r
-               gWndStubPage = getStubPage_inter(window);\r
-               gbInited = true;\r
-       }\r
-       return gWndStubPage;\r
-}\r
-\r
-function getStubPage_inter(wCurrent) {\r
-       if (null == wCurrent.parent || wCurrent.parent == wCurrent)\r
-               return null;\r
-\r
-       if (wCurrent.parent.whname && "wh_stub" == wCurrent.parent.whname) \r
-               return wCurrent.parent;\r
-       else\r
-               if (wCurrent.parent.frames.length != 0 && wCurrent.parent != wCurrent)\r
-                       return getStubPage_inter(wCurrent.parent);\r
-               else \r
-                       return null;\r
-}\r
-\r
-// Public interface begin here................\r
-function RegisterListener(framename, nMessageId)\r
-{\r
-       var wStartPage = getStubPage();\r
-       if (wStartPage && wStartPage != this) {\r
-               return wStartPage.RegisterListener(framename, nMessageId);\r
-       }\r
-       else \r
-               return false;\r
-}\r
-\r
-function RegisterListener2(oframe, nMessageId)\r
-{\r
-       var wStartPage = getStubPage();\r
-       if (wStartPage && wStartPage != this) {\r
-               return wStartPage.RegisterListener2(oframe, nMessageId);\r
-       }\r
-       else \r
-               return false;\r
-}\r
-\r
-function UnRegisterListener2(oframe, nMessageId)\r
-{\r
-       var wStartPage = getStubPage();\r
-       if (wStartPage && wStartPage != this && wStartPage.UnRegisterListener2) {\r
-               return wStartPage.UnRegisterListener2(oframe, nMessageId);\r
-       }\r
-       else \r
-               return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
-       var nMsgId = oMessage.nMessageId;\r
-       if (nMsgId == WH_MSG_ISINFRAMESET && oMessage.wSender != this)\r
-               return true;\r
-       var wStartPage = getStubPage();\r
-       if (wStartPage && wStartPage != this && wStartPage.SendMessage) \r
-       {\r
-               return wStartPage.SendMessage(oMessage);\r
-       }\r
-       else \r
-               return false;\r
-}\r
-var gbWhProxy=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whgbody.htm b/doc/salome/gui/GUI/whgbody.htm
deleted file mode 100755 (executable)
index 4a74388..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<html>\r
-<head>\r
-<title>Glossary Term</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whhost.js"></script>\r
-<script language="javascript1.2" src="whghost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(window.gbWhGHost)\r
-{\r
-       \r
-       \r
-       setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-       setActiveBgColor("#cccccc");\r
-       setMargin("0pt");\r
-       setIndent("9pt");\r
-       GloWriteClassStyle();\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white">\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whgdef.htm b/doc/salome/gui/GUI/whgdef.htm
deleted file mode 100755 (executable)
index 347e82b..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<html>\r
-<head>\r
-<title>Glossary Definition</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goGloFont=null;\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this, WH_MSG_SHOWGLODEF);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-               document.body.background=gsBgImage;\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-               document.body.bgColor=gsBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
-{\r
-       var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
-       if (sType == "Normal")\r
-               goGloFont = vFont;\r
-}\r
-\r
-function textToHtml_nbsp_specialcare(sText)\r
-{\r
-       if (sText == null) return null;\r
-       var sHTML= sText;\r
-       var re = new RegExp("  ","g");\r
-       sHTML=  sHTML.replace(re, "&nbsp; ");\r
-       return  sHTML;\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId = oMsg.nMessageId;\r
-       if (nMsgId == WH_MSG_SHOWGLODEF)\r
-       {\r
-               document.body.innerHTML = sDefHead + textToHtml_nbsp_specialcare(oMsg.oParam.sDef) + sDefTail;\r
-               return true;\r
-       }\r
-}\r
-\r
-function GDefWriteClassStyle()\r
-{\r
-       var sStyle="<STYLE TYPE='text/css'>\n";\r
-       if (gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       sStyle+=".definition {"+getFontStyle(goGloFont)+"margin:2;}\n";\r
-       sStyle+="</STYLE>";\r
-       document.write(sStyle);\r
-}\r
-\r
-if (window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer)\r
-{\r
-       window.onload=window_OnLoad;\r
-       window.onunload = window_Unload;\r
-       goGloFont=new whFont("Verdana", "8pt", "#000000", "normal", "normal", "none");\r
-       \r
-       \r
-       setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-       GDefWriteClassStyle();\r
-       RegisterListener2(this, WH_MSG_SHOWGLODEF);\r
-       var sDefHead = "<p class=\"definition\">";\r
-       var sDefTail = "</p>";\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body bgproperties="fixed" bgcolor="white">\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whgdhtml.htm b/doc/salome/gui/GUI/whgdhtml.htm
deleted file mode 100755 (executable)
index 6d36f52..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-<html>\r
-<head>\r
-<title>Glossary</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body bgcolor=#c0c0c0 scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgImage="";\r
-var    gsBgColor="";\r
-var goTitleFont=null;\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Title")\r
-               goTitleFont=vFont;\r
-}\r
-\r
-function getTermText()\r
-{\r
-       var strString="Term:";\r
-strString = "Term:";\r
-       return strString;\r
-}\r
-\r
-function getDefinitionText()\r
-{\r
-       var strString="Definition for:";\r
-strString = "Definition:";\r
-       return strString;\r
-}\r
-\r
-function getHTML()\r
-{\r
-       var sHTML="";\r
-       sHTML+="<P class=title><nobr>&nbsp;" + getTermText() + "</nobr></p>";\r
-       sHTML+="<iframe id=glossaryIFrame title=\"glossary term\" src=\"whgbody.htm\" width=100% height=200 MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
-       sHTML+="<P class=title><nobr>&nbsp;" + getDefinitionText() + "&nbsp;<b id=Name></b></nobr></p>";\r
-       sHTML+="<iframe id=defIFrame title=\"glossary definition\" src=\"whgdef.htm\" width=100% height=100% MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
-       return sHTML;\r
-}\r
-\r
-function writeStyle()\r
-{\r
-       var sStyle="<style type='text/css'>";\r
-       sStyle+="p.title {" + getFontStyle(goTitleFont) + "margin-top:4;margin-bottom:4}\n";\r
-       if (gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       sStyle+="</style>";\r
-       document.write(sStyle);\r
-}\r
-\r
-\r
-function window_OnResize()\r
-{\r
-       setIFrameHeight();\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-               document.body.background=gsBgImage;\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-               document.body.bgColor=gsBgColor;\r
-       setIFrameHeight();\r
-}\r
-\r
-function setIFrameHeight()\r
-{\r
-       var tH=0;\r
-       if(gbNav6)\r
-       {\r
-               tH=parseInt(window.innerHeight)-30;\r
-       }\r
-       else\r
-       {\r
-               tH=parseInt(document.body.clientHeight)-4;\r
-       }\r
-               \r
-       var oEle=getElement("glossaryIFrame");\r
-       if(oEle)\r
-       {\r
-               tH=tH-2*parseInt(oEle.offsetTop);\r
-               if(tH>0)\r
-               {\r
-                       oEle.style.height=Math.floor(tH*.6);\r
-                       var oEleDef=getElement("defIFrame");\r
-                       if(oEleDef)\r
-                       {\r
-                               oEleDef.style.height=tH-parseInt(oEle.style.height);\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_SHOWGLODEF);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId=oMsg.nMessageId;\r
-       if(nMsgId==WH_MSG_SHOWGLODEF)\r
-       {\r
-               if(getElement("Name"))\r
-                       getElement("Name").innerHTML=oMsg.oParam.sName;\r
-               return true;\r
-       }\r
-}\r
-\r
-if(window.gbWhVer&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy)\r
-{\r
-       goTitleFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
-       \r
-       \r
-       window.onresize=window_OnResize;\r
-       window.onload=window_OnLoad;\r
-       window.onunload=window_Unload;\r
-       RegisterListener2(this,WH_MSG_SHOWGLODEF);\r
-       writeStyle();\r
-       document.write(getHTML());\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whghost.js b/doc/salome/gui/GUI/whghost.js
deleted file mode 100755 (executable)
index 56e1d56..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-//     WebHelp 5.10.004\r
-var gbXML=false;\r
-var gaDef=new Array();\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goFont=null;\r
-var goHoverFont=null;\r
-var gsMargin="2pt";\r
-var gsIndent="2pt";\r
-var gsActiveBgColor="#cccccc";\r
-var gbWhGHost=false;\r
-var gbShowDef=true;\r
-var gsGloId="Glo_"\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Normal")\r
-               goFont=vFont;\r
-       else if(sType=="Hover")\r
-               goHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
-       gsActiveBgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
-       gsMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
-       gsIndent=sIndent;\r
-}\r
-\r
-function insertDef(sKName,sDef)\r
-{\r
-       var nLength=gaDef.length\r
-       var oGlo=new nameDefPair(sKName,sDef);\r
-       gaDef[nLength]=oGlo;\r
-       return nLength;\r
-}\r
-\r
-function showDef(nDef)\r
-{\r
-       if(nDef<gaDef.length)\r
-       {       \r
-               HighLight(nDef);\r
-               var oParam=gaDef[nDef];\r
-               var oMsg=new whMessage(WH_MSG_SHOWGLODEF,this,1,oParam);\r
-               SendMessage(oMsg);\r
-       }\r
-}\r
-\r
-function nameDefPair(sName,sDef)\r
-{\r
-       this.sName=sName;\r
-       this.sDef=sDef;\r
-}\r
-\r
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
-       var sHTML="";\r
-       var nIdxSet=aCurIdxSet[0];\r
-       var nIIdx=aPos[nIdxSet];\r
-       var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);\r
-       var sKName=_textToHtml(sRawKName);\r
-       var sDText=_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx));\r
-       var sDef=sDText;\r
-       for(var i=1;i<nLength;i++)\r
-       {\r
-               var nIdxSeti=aCurIdxSet[i];\r
-               var nIIdxi=aPos[nIdxSeti];\r
-               var sRawKNamei = getItemName(aDataCon,nIdxSeti,nIIdxi);\r
-               var sKNamei=_textToHtml(sRawKNamei);\r
-               var sDTexti=_textToHtml_nonbsp(getDef(aDataCon,nIdxSeti,nIIdxi));\r
-               if (compare(sKNamei,sKName)==0)\r
-               {\r
-                       if (sDText!=sDTexti)\r
-                               sDef+="<br>"+sDTexti;\r
-               }\r
-       }\r
-       var nIndex=insertDef(sKName,sDef);\r
-       if(nLevel==1)\r
-       {\r
-               sHTML+="<p><nobr id=\""+getGloId(nIndex)+"\">";\r
-               sHTML+="<a alt=\""+sKName+"\" href=\"javascript:void(0);\" onfocus=\"HighLight("+nIndex+");\" onclick=\"showDef("+nIndex+");return false;\">"+sKName+"</a></nobr></p>";\r
-               oHTML.addHTML(sHTML,nLength,bDown,true,sRawKName);\r
-               if(gbShowDef)\r
-               {\r
-                       setTimeout("showDef(0);",100);\r
-                       gbShowDef = false;\r
-               }\r
-       }\r
-}\r
-\r
-function HighLight(nIndex)\r
-{\r
-       var oObj=getElement(getGloId(nIndex));\r
-       if(oObj)\r
-               HighLightElement(oObj,gsActiveBgColor,"transparent");\r
-}\r
-\r
-function getGloId(nIndex)\r
-{\r
-       return gsGloId+nIndex;\r
-}\r
-\r
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
-{\r
-       if(bDown)\r
-       {\r
-               for(var i=0;i<nLength;i++)\r
-                       aPos[aCurIdxSet[i]]++;\r
-       }\r
-       else{\r
-               for(var i=0;i<nLength;i++)\r
-                       aPos[aCurIdxSet[i]]--;\r
-       }\r
-}\r
-\r
-function getDef(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].sDef;\r
-       else\r
-               return null;\r
-}\r
-\r
-function getItemName(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
-       else\r
-               return null;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-               document.body.background=gsBgImage;\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-               document.body.bgColor=gsBgColor;\r
-       document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
-       loadGlo();\r
-       var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function loadGlo()\r
-{\r
-       if(!gbReady)\r
-       {\r
-               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
-               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
-               {\r
-                       gbReady=true;\r
-                       var oProj=oResMsg.oParam;\r
-                       var aProj=oProj.aProj;\r
-                       gbXML=oProj.bXML;\r
-                       if(aProj.length>0)\r
-                       {\r
-                               var sLangId=aProj[0].sLangId;\r
-                               for(var i=0;i<aProj.length;i++)\r
-                               {\r
-                                       if(aProj[i].sGlo&&aProj[i].sLangId==sLangId)\r
-                                               addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sGlo);\r
-                               }\r
-                       }\r
-                       writeDataIFrame();\r
-                       enEvt();\r
-               }               \r
-       }\r
-}\r
-\r
-function findCKInDom()\r
-{\r
-       return true;\r
-}\r
-\r
-function GloWriteClassStyle()\r
-{\r
-       var sStyle="<STYLE TYPE='text/css'>\n";\r
-       if (gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";margin-left:"+gsIndent+";}\n";\r
-       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:active {background-color:"+gsActiveBgColor+";}\n";\r
-       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
-       sStyle+="</STYLE>";     \r
-       document.write(sStyle);\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if(oMsg)\r
-       {\r
-               var nMsgId=oMsg.nMessageId;\r
-               if(nMsgId==WH_MSG_SHOWGLO)\r
-               {\r
-                       if(!gbNav6)\r
-                               document.body.focus();\r
-               }\r
-               else if(nMsgId==WH_MSG_PROJECTREADY)\r
-               {\r
-                       loadGlo();\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhHost)\r
-{\r
-       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       RegisterListener2(this,WH_MSG_SHOWGLO);\r
-       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-       goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-       window.onload=window_OnLoad;\r
-       window.onbeforeunload=window_BUnload;\r
-       window.onunload=window_Unload;\r
-       gbWhGHost=true;\r
-}\r
-else\r
-       document.location.reload();\r
-\r
diff --git a/doc/salome/gui/GUI/whhost.js b/doc/salome/gui/GUI/whhost.js
deleted file mode 100755 (executable)
index 5a02374..0000000
+++ /dev/null
@@ -1,1305 +0,0 @@
-//     WebHelp 5.10.002\r
-var gaChunks=new Array();\r
-var gaFakes=new Array();\r
-var gaDataCon=null;\r
-var gaData=new Array();\r
-\r
-var gbFindCK=false;;\r
-var gbNeedCalc=false;\r
-var gbScrl=false;\r
-var gbProcess=false;\r
-var gbReady=false;\r
-\r
-var gnCheck=0;\r
-var gnNum=0;\r
-var gnIns=-1;\r
-var gnLoad=0;\r
-var gnRef=-1;\r
-var gnMaxItems=0;\r
-var gnMaxMargin=32000;\r
-var gnNeeded=0;\r
-var gnNKI=-1;\r
-var gnRE=0;\r
-var gnScrlMgn=30;\r
-var gnSE=0;\r
-var gnVisible=0;\r
-var gnItems=0;\r
-var gnUHeight=1;\r
-\r
-var gsBCK=null;\r
-var gsChK=null;\r
-var gsCK=null;\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSKA=null;\r
-var gsSKB=null;\r
-\r
-var gbLoadInfo=false;\r
-\r
-function onLoadXMLError()\r
-{\r
-       if(gbLoadInfo)\r
-       {\r
-               var aChunk=new Array();\r
-               projReady(aChunk);\r
-       }\r
-       else\r
-       {\r
-               var aData=new Array();\r
-               putData(aData);\r
-       }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
-       if(gbLoadInfo)\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var nTotal=0\r
-                       var aChunk=new Array();\r
-                       var oC=node.firstChild;\r
-                       while(oC)\r
-                       {\r
-                               if(oC.nodeName=="chunkinfo")\r
-                               {\r
-                                       var item=new Object();\r
-                                       item.sBK=oC.getAttribute("first");\r
-                                       item.sEK=oC.getAttribute("last");\r
-                                       item.sFileName=oC.getAttribute("url");\r
-                                       item.nNum=parseInt(oC.getAttribute("num"));\r
-                                       nTotal+=item.nNum;\r
-                                       item.nTotal=nTotal;\r
-                                       aChunk[aChunk.length]=item;\r
-                               }\r
-                               oC=oC.nextSibling;\r
-                       }\r
-                       projReady(aChunk);\r
-               }\r
-       }\r
-       else\r
-       {\r
-               var node=xmlDoc.lastChild;\r
-               if(node)\r
-               {\r
-                       var aData=new Array();\r
-                       var nPrev=0;\r
-                       var nNext=0;\r
-                       var oC=node.firstChild;\r
-                       while(oC)\r
-                       {\r
-                               nPrev=nNext;\r
-                               if(oC.nodeName=="key")\r
-                               {\r
-                                       var sName=oC.getAttribute("name");\r
-                                       if(sName&&sName.length>0)\r
-                                       {\r
-                                               var sTarget=oC.getAttribute("target");\r
-                                               var item=new Object();\r
-                                               item.nType=2;\r
-                                               item.sName=sName;\r
-                                               if(sTarget)\r
-                                                       item.sTarget=sTarget;\r
-                                               item.nPKOff=nPrev;\r
-                                               aData[aData.length]=item;\r
-                                               var nCurIndex=aData.length;\r
-                                               processKey(oC,aData,item);\r
-                                               nNext=aData.length-nCurIndex;\r
-                                               item.nNKOff=nNext;\r
-                                       }\r
-                               }\r
-                               else if(oC.nodeName=="letter")\r
-                               {\r
-                                       var name=oC.getAttribute("name");\r
-                                       if(name&&name.length>0)\r
-                                       {\r
-                                               var item=new Object();\r
-                                               item.nType=1;\r
-                                               item.sName=name;\r
-                                               item.nPKOff=nPrev;\r
-                                               nNext=0;\r
-                                               item.nNKOff=nNext;\r
-                                               aData[aData.length]=item;\r
-                                       }\r
-                               }\r
-                               else if(oC.nodeName=="entry")\r
-                               {\r
-                                       var name=oC.getAttribute("name");\r
-                                       var def=oC.getAttribute("value");\r
-                                       if(name&&name.length>0)\r
-                                       {\r
-                                               var item=new Object();\r
-                                               item.sName=name;\r
-                                               item.sDef=def;\r
-                                               item.nPKOff=nPrev;\r
-                                               nNext=0;\r
-                                               item.nNKOff=nNext;\r
-                                               aData[aData.length]=item;\r
-                                       }\r
-                               }\r
-                               oC=oC.nextSibling;\r
-                       }\r
-                       putData(aData);\r
-               }\r
-       }\r
-}\r
-\r
-function processKey(element,aData,item)\r
-{\r
-       var i=0;\r
-       var nPrev=0;\r
-       var nNext=0;\r
-       var oC=element.firstChild;\r
-       while(oC)\r
-       {\r
-               if(oC.nodeName=="topic")\r
-               {\r
-                       var name=oC.getAttribute("name");\r
-                       var url=oC.getAttribute("url");\r
-                       if(url&&url.length!=0)\r
-                       {\r
-                               if(!name||name.length==0)\r
-                                       name=url;\r
-                               var topic=new Object();\r
-                               topic.sName=name;\r
-                               topic.sURL=url;\r
-                               if(!item.aTopics)\r
-                                       item.aTopics=new Array();\r
-                               item.aTopics[item.aTopics.length]=topic;\r
-                       }\r
-               }\r
-               else if(oC.nodeName=="key")\r
-               {\r
-                       nPrev=nNext;\r
-                       var name=oC.getAttribute("name");\r
-                       if(name&&name.length!=0)\r
-                       {\r
-                               var subItem=new Object();\r
-                               subItem.sName=name;\r
-                               subItem.nType=3;\r
-                               subItem.nPKOff=nPrev;\r
-                               aData[aData.length]=subItem;\r
-                               var nCurIndex=aData.length;\r
-                               processKey(oC,aData,subItem);\r
-                               nNext=aData.length-nCurIndex;\r
-                               subItem.nNKOff=nNext;\r
-                       }\r
-               }\r
-               oC=oC.nextSibling;\r
-       }\r
-}\r
-\r
-function putData(aData)\r
-{\r
-       endLoading();\r
-       var oCData=goCData;\r
-       if(oCData)\r
-       {\r
-               oCData.aKs=aData;\r
-               if(gnNKI==-1)\r
-                       setTimeout("checkReady();",1);\r
-               else\r
-               {\r
-                       gsSKA=getKByIdx(oCData,gnNKI);\r
-                       gbNeedCalc=true;\r
-                       gbScrl=true;\r
-                       gnNKI=-1;\r
-                       if(gsSKA)\r
-                               setTimeout("checkReady();",1);\r
-                       else\r
-                       {\r
-                               markEnd();\r
-                               setTimeout("checkAgain();",50);\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function markEnd()\r
-{\r
-       if(gbProcess)\r
-               gbProcess=false;\r
-}\r
-\r
-function endLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(oDiv)\r
-               oDiv.style.visibility="hidden";\r
-}\r
-\r
-function markBegin()\r
-{\r
-       gbProcess=true;\r
-}\r
-\r
-function beginLoading()\r
-{\r
-       var oDiv=getElement(gsLoadingDivID);\r
-       if(oDiv)\r
-       {\r
-               oDiv.style.top=document.body.scrollTop;\r
-               oDiv.style.visibility="visible";\r
-       }\r
-}\r
-\r
-function indexHTMLPart()\r
-{\r
-       this.sHTML="";\r
-       this.nNeeded=0;\r
-       this.nCurrent=0;\r
-       this.nConsumed=0;\r
-       this.sFK=null;\r
-       this.sLK=null;\r
-       this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){\r
-               if(bDown)\r
-                       this.sHTML+=sHTML;\r
-               else\r
-                       this.sHTML=sHTML+this.sHTML;\r
-               this.nCurrent++;                        \r
-               this.nConsumed+=nConsumed;\r
-               if(bK)\r
-               {\r
-                       if(!this.sFK)\r
-                               this.sFK=sK;\r
-                       if(!this.sLK)\r
-                               this.sLK=sK;\r
-                       if(bDown)\r
-                               this.sLK=sK;\r
-                       else\r
-                               this.sFK=sK;\r
-               }\r
-       }\r
-       this.appendHTML=function(oHTML,bDown){\r
-               this.addSubHTML(oHTML,bDown);\r
-               if(!this.sFK)\r
-                       this.sFK=oHTML.sFK;\r
-               if(!this.sLK)\r
-                       this.sLK=oHTML.sLK;\r
-               if(bDown)\r
-                       this.sLK=oHTML.sLK;\r
-               else\r
-                       this.sFK=oHTML.sFK;\r
-       }       \r
-       \r
-       this.addSubHTML=function(oHTML,bDown){\r
-               if(bDown)\r
-                       this.sHTML+=oHTML.sHTML;\r
-               else\r
-                       this.sHTML=oHTML.sHTML+this.sHTML;\r
-               this.nCurrent+=oHTML.nCurrent;\r
-               this.nConsumed+=oHTML.nConsumed;                        \r
-       }\r
-}\r
-\r
-function getMaxUnits()\r
-{\r
-       return Math.floor(gnMaxMargin/gnUHeight)+1;\r
-}\r
-\r
-function getFakeItemsHTMLbyCount(nB,nCount)\r
-{\r
-       var nMU=getMaxUnits();\r
-       var nNum=Math.floor(nCount/nMU);\r
-       var sHTML="";\r
-       for(var i=0;i<nNum;i++)\r
-               sHTML+=getFakeItemHTML(nB,nMU-1);\r
-               \r
-       var nRest=nCount%nMU;\r
-       sHTML+=getFakeItemHTML(nB,nRest-1);\r
-       return sHTML;\r
-}\r
-\r
-function getFakeItemHTML(nB,nNum)\r
-{\r
-       return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\">&nbsp;</h6>";\r
-}\r
-\r
-function fakeItemsArea(nB,n,sKA,sKB,obj)\r
-{\r
-       this.nB=nB;\r
-       this.nNum=n;\r
-       this.sKA=sKA;\r
-       this.sKB=sKB;\r
-       this.obj=obj;\r
-       this.nMargin=(n-1)*gnUHeight;\r
-\r
-       this.setNum=function(n)\r
-       {\r
-               var nLastobj=-1;\r
-               var nDelta=this.nMargin;\r
-               this.nMargin=(n-1)*gnUHeight;\r
-               nDelta=nDelta-this.nMargin;\r
-               if(n>0)\r
-               {\r
-                       this.nNum=n;\r
-                       var nMU=getMaxUnits();\r
-                       nLastobj=Math.floor((n-1)/nMU);\r
-                       if(this.obj.length)\r
-                               this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;\r
-                       else\r
-                               this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;\r
-               }\r
-               if(this.obj.length)\r
-               {\r
-                       for(var i=this.obj.length-1;i>nLastobj;i--)\r
-                               removeThis(this.obj[i]);\r
-               }\r
-               else\r
-               {\r
-                       if(nLastobj==-1)\r
-                               removeThis(this.obj);\r
-               }\r
-               return nDelta;\r
-       }\r
-       this.insertAdjacentHTML=function(sWhere,sHTML)\r
-       {\r
-               if(sWhere=="beforeBegin")\r
-               {\r
-                       if(this.obj.length)\r
-                               this.obj[0].insertAdjacentHTML(sWhere,sHTML);\r
-                       else\r
-                               this.obj.insertAdjacentHTML(sWhere,sHTML);\r
-               }\r
-               else if(sWhere=="afterEnd")\r
-               {\r
-                       if(this.obj.length)\r
-                       {\r
-                               if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)\r
-                                       this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
-                               else\r
-                                       this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);\r
-                       }\r
-                       else\r
-                       {\r
-                               if(gbMac&&gbIE5&&this.obj.nextSibling)\r
-                                       this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
-                               else\r
-                                       this.obj.insertAdjacentHTML(sWhere,sHTML);\r
-                       }\r
-               }\r
-       }\r
-       this.getBtm=function()\r
-       {\r
-               if(this.obj.length)\r
-                       return this.obj[this.obj.length-1].offsetTop;\r
-               else\r
-                       return this.obj.offsetTop;\r
-       }\r
-       this.getTop=function()\r
-       {\r
-               return this.getBtm()-this.nMargin;\r
-       }\r
-}\r
-\r
-function usedItems(nB,nE)\r
-{\r
-       this.nB=nB;\r
-       this.nE=nE;\r
-       this.oN=null;\r
-}\r
-\r
-function checkReady()\r
-{\r
-       var len=gaChunks.length;\r
-       var bNeedLoad=false;\r
-       var aDataCon;\r
-       var s=0;\r
-       var bDown=(gsSKB==null);\r
-       var sK=bDown?gsSKA:gsSKB;\r
-       if(sK==null)\r
-       {\r
-               markEnd();\r
-               setTimeout("checkAgain();",50);\r
-               return;\r
-       }\r
-       if(!gsChK||sK!=gsChK||gnNum==0)\r
-       {\r
-               gnCheck=0;\r
-               gsChK=sK;\r
-               aDataCon=new Array();\r
-       }\r
-       else{\r
-               s=gnNum;\r
-               aDataCon=gaDataCon;\r
-       }\r
-       for(var i=gnCheck;i<len;i++)\r
-       {\r
-               var oCData=getChunkedData(i,bDown,sK);\r
-               if(oCData)\r
-               {\r
-                       if(!oCData.aKs&&oCData.sFileName!=null)\r
-                       {\r
-                               bNeedLoad=true;\r
-                               goCData=oCData;\r
-                               gnNum=s;\r
-                               gnCheck=i;\r
-                               gaDataCon=aDataCon;\r
-                               oCData.nProjId=i;\r
-                               gbLoadInfo=false;\r
-                               beginLoading();\r
-                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);\r
-                               return;\r
-                       }\r
-                       else{\r
-                               aDataCon[s++]=oCData;\r
-                       }\r
-               }\r
-       }\r
-       if(!bNeedLoad)\r
-       {\r
-               gnNum=0;\r
-               gsSKA=gsSKB=gsShowK=null;\r
-               \r
-               var oHTML=new indexHTMLPart();\r
-               var aPos=new Array();\r
-               var aOriPos=new Array();\r
-               var aMaxPos=new Array();\r
-               var aMinPos=new Array();\r
-               \r
-               if(gbNeedCalc||gbFindCK) gnIns=0;\r
-               for(i=0;i<aDataCon.length;i++)\r
-               {\r
-                       aPos[i]=getIdxPos(aDataCon[i],bDown,sK);\r
-                       if(gbNeedCalc||gbFindCK)\r
-                       {\r
-                               gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;\r
-                               if(!bDown)\r
-                               {\r
-                                       if(aPos[i]!=-1)\r
-                                       {\r
-                                               if(aDataCon[i].aKs)\r
-                                                       gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;\r
-                                               else\r
-                                               {\r
-                                                       var n=aPos[i]+1;\r
-                                                       while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])\r
-                                                               n++;\r
-                                                       n=n-aPos[i]-1;\r
-                                                       gnIns+=n;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-                       aOriPos[i]=aPos[i];\r
-                       getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);\r
-               }\r
-               if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)\r
-               {\r
-                       gnIns+=(aDataCon.length-1)\r
-               }\r
-               if(gnIns!=-1||gbFindCK)\r
-               {\r
-                       oHTML.nNeeded=gnNeeded;\r
-                       var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);\r
-                       if(oHTML.nConsumed!=0)\r
-                       {\r
-                               var nB;\r
-                               if(!bDown)\r
-                                       nB=gnIns-oHTML.nConsumed+1;\r
-                               else\r
-                                       nB=gnIns;\r
-                                       \r
-                               var oldScrollPos=document.body.scrollTop;\r
-                               if(insertIdxKs(nB,oHTML,gbScrl))\r
-                               {\r
-                                       updateUsedK(aDataCon,aOriPos,aPos,bDown);\r
-                                       if(!gbScrl&&gbMac)\r
-                                       {\r
-                                               while(document.body.scrollTop!=oldScrollPos)\r
-                                                       document.body.scrollTop=oldScrollPos;\r
-                                       }\r
-                                       gbScrl=false;\r
-                               }\r
-                               if(gbFindCK)\r
-                               {\r
-                                       gbFindCK=false;\r
-                                       gbNeedCalc=true;\r
-                                       gsSKB=oHTML.sFK;\r
-                                       gnIns=-1;\r
-                                       setTimeout("checkReady();",50);\r
-                                       return;\r
-                               }\r
-                       }\r
-                       else if(gbFindCK)\r
-                       {\r
-                               gbFindCK=false;\r
-                               gbNeedCalc=true;\r
-                               gsSKB=getFirstKeyFromPos(aDataCon,aPos);\r
-                               gnIns=-1;\r
-                               setTimeout("checkReady();",50);\r
-                               return;\r
-                       }\r
-                       if(!findCKInDom()) return;\r
-\r
-                       gnNeeded=gnNeeded-oHTML.nCurrent;\r
-                       gnIns=-1;\r
-                       markEnd();\r
-                       setTimeout("checkAgain();",50);\r
-                       gbNeedCalc=false;\r
-               }\r
-               else\r
-               {\r
-                       if(!findCKInDom()) return;\r
-                       markEnd();\r
-                       setTimeout("checkAgain();",50);\r
-               }\r
-       }\r
-}\r
-\r
-function getFirstKeyFromPos(aDataCon,aPos)\r
-{\r
-       var sCurrentK=getBiggestChar();\r
-       for(var i=0;i<aPos.length;i++)\r
-       {\r
-               if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)\r
-               {\r
-                       if(sCurrentK==""||\r
-                               compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)\r
-                       {\r
-                               sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
-                       }\r
-               }\r
-       }\r
-       return sCurrentK;\r
-}\r
-\r
-function checkAgain()\r
-{\r
-       if(!gbProcess)\r
-       {\r
-               if(gsBCK!=null)\r
-               {\r
-                       gsCK=gsBCK;\r
-                       gsBCK=null;\r
-                       findCK();\r
-               }\r
-               else\r
-               {\r
-                       markBegin();\r
-                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-               }\r
-       }\r
-       else\r
-               setTimeout("checkAgain()",50);\r
-}\r
-\r
-function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)\r
-{\r
-       aMaxPos[i]=aDataCon[i].nNum;\r
-       aMinPos[i]=-1;\r
-       var oPNode=null;\r
-       if(aDataCon[i].oUsedItems)\r
-       {\r
-               var oUsedItems=aDataCon[i].oUsedItems;\r
-               do{\r
-                       if(oUsedItems.nB>aPos[i])\r
-                       {\r
-                               aMaxPos[i]=oUsedItems.nB;\r
-                               break;\r
-                       }\r
-                       oPNode=oUsedItems;\r
-                       oUsedItems=oUsedItems.oN;\r
-               }while(oUsedItems!=null);\r
-               if(oPNode)\r
-                       aMinPos[i]=oPNode.nE;\r
-       }\r
-       else if(aDataCon[i].aKs==null)\r
-       {\r
-               aMaxPos[i]=aMinPos[i]=aPos[i];\r
-       }\r
-       if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])\r
-       {\r
-               aMaxPos[i]=aMinPos[i]=aPos[i];\r
-       }\r
-}\r
-\r
-function getIdxPos(oIdx,bDown,sK)\r
-{\r
-       var aKs=oIdx.aKs;\r
-       var nIdx;\r
-       if(bDown)\r
-               nIdx=oIdx.nNum;\r
-       else\r
-               nIdx=-1;\r
-       if(aKs!=null)\r
-       {\r
-               for(var i=0;i<aKs.length;i++)\r
-               {       \r
-                       if(bDown)\r
-                       {\r
-                               if(compare(aKs[i].sName,sK)>0)\r
-                               {\r
-                                       nIdx=i;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if(compare(aKs[i].sName,sK)<0)\r
-                                       nIdx=i;\r
-                               else\r
-                                       break;\r
-                       }\r
-                       i+=aKs[i].nNKOff;\r
-               }\r
-       }\r
-       else if(oIdx.aKsOnly)\r
-       {\r
-               var aKsOnly=oIdx.aKsOnly;\r
-               for(var i=0;i<aKsOnly.length;i++)\r
-               {       \r
-                       if(aKsOnly[i])\r
-                       {\r
-                               if(bDown)\r
-                               {\r
-                                       if(compare(aKsOnly[i],sK)>0)\r
-                                       {\r
-                                               nIdx=i;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(compare(aKsOnly[i],sK)<0)\r
-                                               nIdx=i;\r
-                                       else\r
-                                               break;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return nIdx;\r
-}\r
-\r
-function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)\r
-{\r
-       var aOldPos=new Array();\r
-       for(var i=0;i<aPos.length;i++)\r
-       {\r
-               aOldPos[i]=aPos[i];\r
-       }\r
-       var p;\r
-       do{\r
-               var sCurrentK="";\r
-               var aCurIdxSet=new Array();\r
-               p=0;\r
-               for(i=0;i<aDataCon.length;i++)\r
-               {\r
-                       if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&\r
-                               (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))\r
-                       {\r
-                               if(sCurrentK==""||\r
-                                       (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||\r
-                                       (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))\r
-                               {\r
-                                       sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
-                                       p=0;\r
-                                       aCurIdxSet[p++]=i;\r
-                               }\r
-                               else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){\r
-                                       aCurIdxSet[p++]=i;\r
-                               }\r
-                       }\r
-                       else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){\r
-                               if(bDown&&aPos[i]==aMaxPos[i])\r
-                               {\r
-                                       if(aDataCon[i].aKs)\r
-                                       {\r
-                                               gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                               else if(!bDown&&aPos[i]==aMinPos[i])\r
-                               {\r
-                                       if(aDataCon[i].aKs)\r
-                                       {\r
-                                               gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               if(p>=1){\r
-                       for(var s=0;s<p;s++)\r
-                       {\r
-                               aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];\r
-                       }\r
-                       mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);\r
-                       adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);\r
-                       \r
-                       if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){\r
-                               return true;\r
-                       }\r
-               }\r
-       }while(p>0);\r
-       return true;\r
-}\r
-\r
-function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)\r
-{\r
-       for(var i=0;i<aDataCon.length;i++)\r
-       {\r
-               if (aOldPos[i]!=aOriPos[i])\r
-               {\r
-                       var nBP=0;\r
-                       var nEP=0;\r
-                       if(bDown)\r
-                       {\r
-                               nBP=aOriPos[i];\r
-                               nEP=aOldPos[i]-1;\r
-                       }\r
-                       else\r
-                       {\r
-                               if (aOldPos[i]!=-1)\r
-                                       nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;\r
-                               else\r
-                                       nBP=0;\r
-                               nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;\r
-                       }\r
-                       if(nBP<=nEP)\r
-                       {\r
-                               setContentsUsed(aDataCon[i],nBP,nEP);\r
-                               \r
-                               var oFirstPair=aDataCon[i].oUsedItems;\r
-                               if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)\r
-                               {\r
-                                       storeKeysOnly(aDataCon[i]);\r
-                                       aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function storeKeysOnly(oCData)\r
-{\r
-       oCData.aKsOnly=new Array();\r
-       for(var i=0;i<oCData.aKs.length;i++)\r
-       {\r
-               oCData.aKsOnly[i]=oCData.aKs[i].sName;\r
-               i+=oCData.aKs[i].nNKOff;\r
-       }\r
-}\r
-\r
-function setContentsUsed(oIdx,nB,nE)\r
-{\r
-       if(!oIdx.oUsedItems)\r
-               oIdx.oUsedItems=new usedItems(nB,nE);\r
-       else\r
-       {\r
-               var oUsedItems=oIdx.oUsedItems;\r
-               var oPNode=null;\r
-               do{\r
-                       if(oUsedItems.nB>nB)\r
-                       {\r
-                               if(oUsedItems.nB==nE+1)\r
-                               {\r
-                                       oUsedItems.nB=nB;\r
-                               }\r
-                               else{\r
-                                       var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);\r
-                                       oNewNode.oN=oUsedItems.oN;\r
-                                       oUsedItems.nB=nB;\r
-                                       oUsedItems.nE=nE;\r
-                                       oUsedItems.oN=oNewNode;\r
-                               }\r
-                               break;\r
-                       }\r
-                       oPNode=oUsedItems;\r
-                       oUsedItems=oUsedItems.oN;\r
-               }while(oUsedItems);\r
-               if(!oUsedItems)\r
-               {\r
-                       if(oPNode!=null)\r
-                               oPNode.oN=new usedItems(nB,nE);\r
-               }\r
-               if(oPNode!=null){\r
-                       if(oPNode.nE==oPNode.oN.nB-1)\r
-                       {\r
-                               oPNode.nE=oPNode.oN.nE;\r
-                               oPNode.oN=oPNode.oN.oN;\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function projInfo(sPPath,sDPath,sFile)\r
-{\r
-       this.sPPath=sPPath;\r
-       this.sDPath=sDPath;\r
-       this.sFile=sFile;\r
-}\r
-\r
-function addProjInfo(sPPath,sDPath,sFile)\r
-{\r
-       var oIdxInfo=new projInfo(sPPath,sDPath,sFile);\r
-       gaData[gaData.length]=oIdxInfo;\r
-       return oIdxInfo;\r
-}\r
-\r
-function writeDataIFrame()\r
-{\r
-       if(gnLoad<gaData.length)\r
-       {\r
-               gbLoadInfo=true;\r
-               loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);\r
-       }\r
-       else{\r
-               if(gnItems!=0)\r
-               {\r
-                       markBegin();\r
-                       writeFakeItems();\r
-                       gsSKA="";\r
-                       gnNeeded=gnVisible;\r
-                       gnIns=0;\r
-                       checkReady();\r
-               }\r
-       }\r
-}\r
-\r
-function getH6ById(nPos)\r
-{\r
-       if(document.all)\r
-               return document.all("fk"+nPos);\r
-       else if(document.getElementsByName)\r
-               return document.getElementsByName("fk"+nPos);\r
-       return null;            \r
-}\r
-\r
-function showItemsInEvaluation(nBP)\r
-{\r
-       var bRtn=true;\r
-       var fPer=nBP/gnItems;\r
-       var nB=Math.floor(fPer*gnMaxItems);\r
-       var oCData=getChunkByIdx(gnRef,nB);\r
-       if(oCData)\r
-       {\r
-               if(!oCData.aKs&&oCData.sFileName!=null)\r
-               {\r
-                       gnNKI=nB;\r
-                       goCData=oCData;\r
-                       oCData.nProjId=gnRef;\r
-                       gbLoadInfo=false;\r
-                       beginLoading();\r
-                       loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);\r
-               }\r
-               else{\r
-                       gsSKA=getKByIdx(oCData,nB);\r
-                       if(gsSKA)\r
-                       {\r
-                               gsSKB=null;\r
-                               gbNeedCalc=true;\r
-                               gbScrl=true;\r
-                               checkReady()\r
-                       }\r
-                       else\r
-                       {\r
-                               markEnd();\r
-                               bRtn=false;\r
-                       }\r
-               }\r
-       }\r
-       else\r
-       {\r
-               markEnd();\r
-               bRtn=false;\r
-       }\r
-       return bRtn;\r
-}\r
-\r
-function isUsed(oCData,nPos)\r
-{\r
-       var oUsed=oCData.oUsedItems;\r
-       while(oUsed&&oUsed.nB<=nPos)\r
-       {\r
-               if(oUsed.nE>=nPos) return true;\r
-               oUsed=oUsed.oN;\r
-       }\r
-       return false;\r
-}\r
-\r
-function getKByIdx(oCData,nB)\r
-{\r
-       var nRelPos=nB-(oCData.nTotal-oCData.nNum);\r
-       var aIKs=oCData.aKs;\r
-       if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)\r
-       {\r
-               var oK=null;\r
-               do{\r
-                       oK=aIKs[nRelPos++];\r
-               }       \r
-               while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);\r
-               if(oK.nType!=3)\r
-               {\r
-                       return oK.sName;\r
-               }\r
-               else{\r
-                       nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;\r
-                       if(nRelPos>=0)\r
-                       {\r
-                               do{\r
-                                       oK=aIKs[nRelPos--];\r
-                               }\r
-                               while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);\r
-                       }\r
-                       if(oK.nType!=3)\r
-                       {\r
-                               return oK.sName;\r
-                       }\r
-               }\r
-       }\r
-       return null;\r
-}\r
-\r
-function loadData2(sFileName)\r
-{\r
-       disEvt();\r
-       if(gbXML)\r
-               loadDataXML(sFileName);\r
-       else\r
-               loadData(sFileName);\r
-       enEvt();\r
-}\r
-\r
-function projReady(aChunk)\r
-{\r
-       gaChunks[gnLoad++]=aChunk;\r
-       var len=aChunk.length;\r
-       var nTotal=0;\r
-       if(len>0)\r
-               nTotal=aChunk[len-1].nTotal;\r
-       gnItems+=nTotal;\r
-       if(nTotal>gnMaxItems)\r
-       {\r
-               gnMaxItems=nTotal;\r
-               gnRef=gnLoad-1;\r
-       }\r
-       setTimeout("writeDataIFrame();",1);\r
-}\r
-\r
-function writeFakeItems()\r
-{\r
-       disEvt();\r
-       gnUHeight=15;\r
-       var sHTML=getFakeItemsHTMLbyCount(0,gnItems);\r
-       document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-       var obj=getH6ById(0);\r
-       if (document.body != null)\r
-       {\r
-               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
-       }\r
-       gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);\r
-       enEvt();\r
-}\r
-\r
-function getEndString()\r
-{\r
-       var sBC=getBiggestChar();\r
-       return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;\r
-}\r
-\r
-function getUnitIdx(nScrl,nHeight)\r
-{\r
-       if(gaFakes.length==0)\r
-       {\r
-               markEnd();\r
-               return;\r
-       }\r
-       var nB=0;\r
-       var nE=gaFakes.length-1;\r
-       var nM=-1;\r
-       var nTop=0;\r
-       var nBtm=0;\r
-       var bF=false;\r
-       do{\r
-               nM=(nB+nE)>>1;\r
-               nBtm=gaFakes[nM].getBtm();\r
-               nTop=gaFakes[nM].getTop();\r
-                       \r
-               if(nTop>=nScrl+nHeight)\r
-                       nE=nM-1;\r
-               else if(nBtm<nScrl)\r
-                       nB=nM+1;\r
-               else{\r
-                       bF=true;\r
-                       break;\r
-               }\r
-       }while(nE>=nB);\r
-       if(bF)\r
-       {\r
-               if(nTop>=nScrl){\r
-                       gsSKA=gaFakes[nM].sKA;\r
-                       gsSKB=null;\r
-                       gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);\r
-                       gnIns=gaFakes[nM].nB;\r
-                       checkReady();\r
-               }\r
-               else if(nBtm<=nScrl+nHeight){\r
-                       gsSKB=gaFakes[nM].sKB;\r
-                       gsSKA=null;\r
-                       gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);\r
-                       gbNeedCalc=true;\r
-                       checkReady();\r
-               }\r
-               else{\r
-                       gnNeeded=gnVisible;\r
-                       var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);\r
-                       if (!showItemsInEvaluation(nUnitIdx))\r
-                       {\r
-                               gsSKA=gaFakes[nM].sKA;\r
-                               gsSKB=null;\r
-                               gnNeeded=Math.ceil(nHeight/gnUHeight);\r
-                               gnIns=gaFakes[nM].nB;\r
-                               checkReady();\r
-                       }\r
-               }\r
-       }\r
-       else\r
-               markEnd();\r
-}\r
-\r
-function disEvt()\r
-{\r
-       window.onscroll=null;\r
-       window.onresize=null;\r
-}\r
-\r
-function enEvt()\r
-{\r
-       window.onscroll=window_OnScroll;\r
-       window.onresize=window_OnResize;\r
-}\r
-\r
-function insertIdxKs(nIns,oHTML,bScrl)\r
-{\r
-       var bRtn=true;\r
-       disEvt();\r
-       var nCount=oHTML.nConsumed;\r
-       var nB=0;\r
-       var nE=gaFakes.length-1;\r
-       var nM=-1;\r
-       var bF=false;\r
-       do{\r
-               nM=(nB+nE)>>1;\r
-               if(gaFakes[nM].nB>nIns)\r
-                       nE=nM-1;\r
-               else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)\r
-                       nB=nM+1;\r
-               else{\r
-                       bF=true;\r
-                       break;\r
-               }\r
-       }while(nE>=nB);\r
-       if(bF)\r
-       {\r
-               var oFIA=gaFakes[nM];\r
-               var nOffsetTop=oFIA.getTop();\r
-               var nOffsetBottom=oFIA.getBtm();\r
-               var nDelta=0;\r
-               var nHDiff=nIns-oFIA.nB;\r
-               var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);\r
-               if(nHDiff>0)\r
-               {\r
-                       nDelta=oFIA.setNum(nHDiff);\r
-                       var sOldKBefore=oFIA.sKB;\r
-                       oFIA.sKB=oHTML.sFK;\r
-                       if(nTDiff>0)\r
-                       {\r
-                               var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);\r
-                               oFIA.insertAdjacentHTML("afterEnd",sHTML);\r
-                               var obj=getH6ById(nIns);\r
-                               insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));\r
-                       }\r
-                       oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);        \r
-                       if(bScrl)\r
-                       {\r
-                               if(gbMac&&gbIE4)\r
-                               {\r
-                                       var nScrollPos=nOffsetBottom-nDelta;\r
-                                       while(document.body.scrollTop!=nScrollPos)\r
-                                               document.body.scrollTop=nScrollPos;\r
-                               }\r
-                               else\r
-                                       window.scrollTo(0,nOffsetBottom-nDelta);\r
-                       }\r
-               }\r
-               else{\r
-                       oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);\r
-                       if(bScrl){\r
-                               if(gbMac&&gbIE4)\r
-                               {\r
-                                       var nScrollPos=nOffsetTop;\r
-                                       while(document.body.scrollTop!=nScrollPos)\r
-                                               document.body.scrollTop=nScrollPos;\r
-                               }\r
-                               else\r
-                                       window.scrollTo(0,nOffsetTop);\r
-                       }\r
-                                       \r
-                       if(nTDiff>0)\r
-                       {\r
-                               oFIA.nB=nIns+nCount;\r
-                               nDelta=oFIA.setNum(nTDiff);\r
-                               oFIA.sKA=oHTML.sLK;\r
-                       }       \r
-                       else{\r
-                               gaFakes[nM].setNum(0);\r
-                               removeItemFromArray(gaFakes,nM);\r
-                       }\r
-               }\r
-       }\r
-       else\r
-               bRtn=false;\r
-       enEvt();\r
-       return bRtn;\r
-}\r
-\r
-function window_OnScroll()\r
-{\r
-       gnSE++;\r
-       setTimeout("procScroll();",50); \r
-}\r
-\r
-function procScroll()\r
-{\r
-       if(gnSE==1&&!gbProcess)\r
-       {\r
-               markBegin();\r
-               getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-       }\r
-       gnSE--;\r
-}\r
-\r
-function window_OnResize()\r
-{\r
-       gnRE++;\r
-       setTimeout("procResize();",50);\r
-}\r
-\r
-function procResize()\r
-{\r
-       if(gnRE==1&&!gbProcess)\r
-       {\r
-               markBegin();\r
-               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
-               if(gnIns==-1)\r
-                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
-       }\r
-       gnRE--;\r
-}\r
-\r
-function getChunkByIdx(nIdx,nPosition)\r
-{\r
-       var oCData=null;\r
-       if(nIdx<gaChunks.length)\r
-       {\r
-               var len=gaChunks[nIdx].length;\r
-               if(len>0)\r
-               {\r
-                       var nB=0;\r
-                       var nE=len-1;\r
-                       var bF=false;\r
-                       do{\r
-                               var nM=(nB+nE)>>1;\r
-                               if(nPosition<gaChunks[nIdx][nM].nTotal)\r
-                               {\r
-                                       bF=true;\r
-                                       nE=nM;\r
-                               }\r
-                               else\r
-                                       nB=nM+1;\r
-                       }while(nE>nB);\r
-                       if(bF)\r
-                               oCData=gaChunks[nIdx][nE];\r
-                       else if(nPosition<gaChunks[nIdx][nB].nTotal)\r
-                               oCData=gaChunks[nIdx][nB];\r
-               }\r
-       }\r
-       return oCData;\r
-}\r
-\r
-function getChunkedData(nIdx,bDown,sK)\r
-{\r
-       var oCData=null;\r
-       var nCandId=-1;\r
-       if(nIdx<gaChunks.length)\r
-       {\r
-               var len=gaChunks[nIdx].length;\r
-               if(len>0)\r
-               {\r
-                       var nB=0;\r
-                       var nE=len-1;\r
-                       var bF=false;\r
-                       do{\r
-                               var nM=(nB+nE+(bDown?0:1))>>1;\r
-                               if(bDown)\r
-                               {\r
-                                       if(compare(sK,gaChunks[nIdx][nM].sEK)<0)\r
-                                       {\r
-                                               bF=true;\r
-                                               nE=nM;\r
-                                       }\r
-                                       else\r
-                                               nB=nM+1;\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(compare(sK,gaChunks[nIdx][nM].sBK)>0)\r
-                                       {\r
-                                               bF=true;\r
-                                               nB=nM;\r
-                                       }\r
-                                       else\r
-                                               nE=nM-1;\r
-                               }\r
-                       }while(nE>nB);\r
-                       if(bF)\r
-                       {\r
-                               if(bDown)\r
-                                       nCandId=nE;\r
-                               else\r
-                                       nCandId=nB;\r
-                       }\r
-                       else\r
-                       {\r
-                               if(bDown)\r
-                               {\r
-                                       if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)\r
-                                               nCandId=nB;\r
-                                       else\r
-                                               nCandId=gaChunks[nIdx].length-1;\r
-                               }\r
-                               else\r
-                               {\r
-                                       if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)\r
-                                               nCandId=nE;\r
-                                       else\r
-                                               nCandId=0;\r
-                               }\r
-                       }\r
-                       return gaChunks[nIdx][nCandId];\r
-               }\r
-       }\r
-       return null;\r
-}\r
-\r
-function findCK()\r
-{\r
-       if(gsCK!=null)\r
-       {\r
-               gsSKA=gsCK;\r
-               gbFindCK=true;\r
-               gnNeeded=1;\r
-               markBegin();\r
-               checkReady();\r
-       }\r
-}\r
-\r
-function writeLoadingDiv(nIIdx)\r
-{\r
-       return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-var gbWhHost=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whibody.htm b/doc/salome/gui/GUI/whibody.htm
deleted file mode 100755 (executable)
index d95ca0a..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-<html>\r
-<head>\r
-<title>Index content</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whhost.js"></script>\r
-<script language="javascript1.2" src="whihost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var goPopup = null;\r
-var gbPopupMenuTimeoutExpired=false;\r
-var gBsClientWidth=640;\r
-var gBsClientHeight=480;\r
-var g_bIsPopupMenuInit=false;\r
-\r
-function WritePopupMenuLayer()\r
-{\r
-       if (!g_bIsPopupMenuInit)\r
-       {\r
-               document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
-               document.write("<STYLE TYPE='text/css'>");\r
-               if (gbMac && gbIE4) {\r
-                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; text-decoration:none;}");\r
-                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; text-decoration:none;}");\r
-               } else {\r
-                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
-                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
-               }\r
-               document.write("</STYLE>");\r
-       }\r
-       g_bIsPopupMenuInit = true;\r
-}\r
-\r
-function PopupMenu_Invoke()\r
-{\r
-       if (gbNav6)\r
-               resetHighLight();\r
-       \r
-       if (!gbNav6  && document.readyState != "complete")\r
-               return false;\r
-       var fn_arguments = PopupMenu_Invoke.arguments; \r
-       // Make sure we have reasonable arguments\r
-       var argLen = fn_arguments.length;\r
-       if (argLen < 3) {\r
-               return false;\r
-       }\r
-\r
-       // Check to see if we only have one target\r
-       var strTarget = "";\r
-       \r
-       strTarget = "TARGET='" + fn_arguments[1] + "'";\r
-       \r
-       if (argLen < 5) {\r
-               // Get the place that we will be putting the topic into\r
-               var strURL = fn_arguments[3];\r
-\r
-               if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
-                       window.open(strURL, fn_arguments[1]);\r
-               else\r
-                       window.open(strURL);\r
-                       \r
-               return false;\r
-       }\r
-       \r
-       var strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
-       if (gbMac && gbIE4) {\r
-               strMenu += ' CELLPADDING=4';\r
-       } else {\r
-               strMenu += ' CELLPADDING=2';\r
-       }       \r
-       strMenu += ' BGCOLOR=#c0c0c0>';\r
-\r
-       // Add each of the items\r
-       if (gbIE55)\r
-       {\r
-               var i = 2;\r
-               while (i <= argLen - 1) {\r
-                       strMenu += '<TR><TD><NOBR>'\r
-                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A ';\r
-                       strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + excapeSingleQuotandSlash(fn_arguments[i + 1]) + '\', \'' + fn_arguments[1] + '\');"';\r
-                       strMenu += ' onmouseover="parent.PopupMenu_Over(event);"';\r
-                       strMenu += ' onmouseout="parent.PopupMenu_Out(event);"';\r
-                       strMenu += '>';\r
-                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
-                       strMenu += '</A></DIV></NOBR></TD></TR>';\r
-                       i += 2;\r
-               }\r
-       }\r
-       else\r
-       {\r
-               var i = 2;\r
-               while (i <= argLen - 1) {\r
-                       strMenu += '<TR><TD><NOBR>'\r
-                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '" ' + strTarget;\r
-                       strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
-                       strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
-                       strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
-                       strMenu += '>';\r
-                       strMenu += '<SPAN CLASS="PopupNotOver">' + excapeSingleQuotandSlash(fn_arguments[i]) + '</SPAN>';\r
-                       strMenu += '</A></DIV></NOBR></TD></TR>';\r
-                       i += 2;\r
-               }\r
-       }\r
-       strMenu += "</TABLE>";\r
-\r
-       if (gbMac && gbIE4) {\r
-       // ie5 in mac need something. </TABLE> is one of them.\r
-               strMenu +="<TABLE></TABLE>";\r
-       }\r
-\r
-       var layerPopup = null;\r
-       var stylePopup = null;\r
-       var nEventX = 0;\r
-       var nEventY = 0;\r
-       var nWindowWidth = 0;\r
-       if (gbIE4||gbOpera7)\r
-       {\r
-               layerPopup = document.all["PopupMenu"];\r
-               layerPopup.innerHTML = strMenu;\r
-               stylePopup = layerPopup.style;\r
-\r
-               _BSPSGetClientSize();\r
-\r
-               // Get the position of the item causing the event (relative to its parent)\r
-               nEventX = window.event.clientX;\r
-               nEventY = window.event.clientY;\r
-               \r
-               if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
-                       nEventY += document.body.scrollTop + 10;\r
-               } else {\r
-                       nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
-               }\r
-               stylePopup.top = nEventY;\r
-\r
-               if (nEventX + layerPopup.scrollWidth + 20 > gBsClientWidth) {\r
-                       if (gBsClientWidth - layerPopup.scrollWidth < 5) {\r
-                               stylePopup.left = 5;\r
-                       } else {\r
-                               stylePopup.left = gBsClientWidth - layerPopup.scrollWidth - 5;\r
-                       }\r
-               } else {\r
-                       stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
-               }\r
-\r
-               if (gbIE55) {\r
-                       var nPosX = window.event.clientX;\r
-                       var nPosY = window.event.clientY;\r
-                       if (window.event.srcElement)\r
-                       {\r
-                               nPosX = window.event.srcElement.offsetLeft + window.event.srcElement.offsetWidth - document.body.scrollLeft;\r
-                               nPosY = window.event.srcElement.offsetTop + window.event.srcElement.offsetHeight - document.body.scrollTop;\r
-                       }\r
-                       goPopup = window.createPopup();\r
-                       var oPopupBody = goPopup.document.body;\r
-                       goPopup.document.createStyleSheet();\r
-                       goPopup.document.styleSheets[0].addRule(".PopupOver", "{font-family:\"Arial\"; cursor: hand;color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
-                       goPopup.document.styleSheets[0].addRule(".PopupNotOver", "{font-family:\"Arial\"; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
-                       oPopupBody.insertAdjacentHTML("afterBegin", strMenu);\r
-                       goPopup.show(nPosX, nPosY, layerPopup.scrollWidth, layerPopup.scrollHeight, document.body);\r
-               }\r
-               else \r
-               {\r
-                       stylePopup.visibility = "visible";\r
-                       document.onclick = PopupMenu_HandleClick;\r
-               }\r
-       } else if (gbNav6) {\r
-               layerPopup = document.getElementById("PopupMenu");\r
-               layerPopup.style.visibility = "hidden";\r
-       \r
-               var e = fn_arguments[0];\r
-               nEventX = e.pageX;\r
-               nEventY = e.pageY;\r
-               _BSPSGetClientSize();\r
-               layerPopup.innerHTML = strMenu;\r
-\r
-               if (nEventY + layerPopup.offsetHeight + 20  <  window.pageYOffset + gBsClientHeight) {\r
-                       nEventY += 20;\r
-               } else {\r
-                       nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
-               }\r
-\r
-               if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
-                       if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
-                               nEventX = 5;\r
-                       } else {\r
-                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
-                       }\r
-               } else {\r
-                       nEventX += 20;\r
-               }\r
-               layerPopup.style.top = nEventY;\r
-               layerPopup.style.left = nEventX;\r
-\r
-               // set again to avoid the frash in netscape 6.\r
-               layerPopup.innerHTML = strMenu;\r
-               layerPopup.style.visibility = "visible";\r
-               window.onclick = PopupMenu_HandleClick;\r
-       } \r
-\r
-       window.gbPopupMenuTimeoutExpired = false;\r
-       setTimeout("PopupMenu_Timeout();", 100);\r
-       return false;\r
-}\r
-\r
-function PopupMenu_Timeout()\r
-{\r
-       window.gbPopupMenuTimeoutExpired = true;\r
-}\r
-\r
-function PopupMenu_Over(e)\r
-{\r
-       if (gbIE4||gbOpera7)\r
-               e.srcElement.className = "PopupOver";\r
-       else if (gbNav6)\r
-               e.target.parentNode.className = "PopupOver";\r
-}\r
-\r
-function PopupMenu_Out(e)\r
-{\r
-       if (gbIE4||gbOpera7)\r
-               e.srcElement.className = "PopupNotOver";\r
-       else if (gbNav6)\r
-               e.target.parentNode.className = "PopupNotOver";\r
-}\r
-\r
-function PopupMenu_2HandleClick(surl, starget)\r
-{\r
-       window.open(surl, starget);\r
-       goPopup.hide();\r
-}\r
-\r
-function PopupMenu_HandleClick(e)\r
-{\r
-       if (!window.gbPopupMenuTimeoutExpired) {\r
-               return;\r
-       }\r
-\r
-       var layerPopup = getElement("PopupMenu");\r
-       layerPopup.style.visibility = "hidden";\r
-\r
-       return;\r
-}\r
-\r
-//Get client size info\r
-function _BSPSGetClientSize()\r
-{\r
-       gBsClientWidth  = document.body.clientWidth;\r
-       gBsClientHeight = document.body.clientHeight;\r
-}\r
-\r
-if (window.gbWhIHost)\r
-{\r
-       \r
-       \r
-       setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Empty", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-       setActiveBgColor("#cccccc");\r
-       setMargin("0pt");\r
-       setIndent("9pt");\r
-       IndexWriteClassStyle();\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
-<script languageE="JavaScript">\r
-<!--\r
-WritePopupMenuLayer();\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
-\r
diff --git a/doc/salome/gui/GUI/whidhtml.htm b/doc/salome/gui/GUI/whidhtml.htm
deleted file mode 100755 (executable)
index 72400e6..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>\r
-<head>\r
-<title>Index</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gbIndexLayerInit = false;\r
-if (window.gbWhProxy&&window.gbWhMsg&&window.gbWhVer)\r
-{\r
-       var strWrite;\r
-       if (gbMac)\r
-               strWrite="<FRAMESET ROWS='45,100%' framespacing=0  frameborder=1>";\r
-       else\r
-               strWrite="<FRAMESET ROWS='60,100%' framespacing=0  frameborder=1>";\r
-       strWrite +="<FRAME SRC='whiform.htm' title='index form frame' name='idxform' noresize='yes' scrolling='no'>";\r
-       strWrite +="<FRAME SRC='whibody.htm' title='index content frame' name='idxbody' scrolling='yes'>";\r
-       strWrite +="</FRAMESET>";\r
-       document.write(strWrite);\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whiform.htm b/doc/salome/gui/GUI/whiform.htm
deleted file mode 100755 (executable)
index 563bc3c..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<html>\r
-<head>\r
-<title>Index form</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<style>\r
-<!--\r
-body {margin:0;}\r
--->\r
-</style>\r
-<body bgcolor="#c0c0c0">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whform.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-function indexLookup(bCR)\r
-{\r
-       var strInput = document.IndexInputForm.keywordField.value.toUpperCase();\r
-       if (strInput != "") {\r
-               var oParam = new Object();\r
-               oParam.sInput = strInput;\r
-               oParam.bCR = bCR;\r
-               var oMessage = new whMessage(WH_MSG_SEARCHINDEXKEY, this, 1, oParam);\r
-               SendMessage(oMessage);\r
-       }\r
-       if (gbMac) {\r
-               document.IndexInputForm.keywordField.focus();\r
-       }\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
-       UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
-       UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
-       UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
-}\r
-\r
-function onSendMessage(oMessage)\r
-{\r
-       if (oMessage.nMessageId == WH_MSG_SHOWIDX)\r
-       {\r
-               document.IndexInputForm.keywordField.focus();\r
-       }\r
-       else if (oMessage.nMessageId == WH_MSG_SHOWFTS ||\r
-               oMessage.nMessageId == WH_MSG_SHOWTOC || \r
-               oMessage.nMessageId == WH_MSG_SHOWGLO)\r
-       {\r
-               document.IndexInputForm.keywordField.blur();\r
-       }\r
-       return true;\r
-}\r
-\r
-if (window.gbWhForm)\r
-{\r
-       RegisterListener2(this, WH_MSG_SHOWTOC);\r
-       RegisterListener2(this, WH_MSG_SHOWIDX);\r
-       RegisterListener2(this, WH_MSG_SHOWFTS);\r
-       RegisterListener2(this, WH_MSG_SHOWGLO);\r
-       window.onunload=window_Unload;\r
-       window.onload = init;\r
-       gfunLookUp = indexLookup;\r
-       gfunInit = null;\r
-       gstrFormName = "IndexInputForm"\r
-       gsTitle = "Type in the keyword to find:";\r
-       gsTitle = "Type in the keyword to find:";\r
-\r
-       \r
-       \r
-       \r
-       \r
-       \r
-       \r
-       setGoText("Go");\r
-       setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
-       \r
-       \r
-       document.write(getFormHTML());\r
-       writeFormStyle();\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whihost.js b/doc/salome/gui/GUI/whihost.js
deleted file mode 100755 (executable)
index 9aaf13a..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-//     WebHelp 5.10.002\r
-var gsDefaultTarget="bsscright";\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goIdxFont=null;\r
-var goIdxEmptyFont=null;\r
-var goIdxHoverFont=null;\r
-var gsIdxMargin="0pt";\r
-var gsIdxIndent="8pt";\r
-var gsIdxActiveBgColor="#cccccc";\r
-var gsCK = null;\r
-var gsBCK = null;\r
-var gbCR = false;\r
-var gbBCR = false;\r
-var gbWhIHost=true;\r
-\r
-function myEvent()\r
-{\r
-       this.pageX = 0;\r
-       this.pageY = 0;\r
-}\r
-var _event=new myEvent();\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Normal")\r
-               goIdxFont=vFont;\r
-       else if(sType=="Empty")\r
-               goIdxEmptyFont=vFont;\r
-       else if(sType=="Hover")\r
-               goIdxHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
-       gsIdxActiveBgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
-       gsIdxMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
-       gsIdxIndent=sIndent;\r
-}\r
-\r
-function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
-       var sHTML="";\r
-       var nIdxSet=aCurIdxSet[0];\r
-       var nIIdx=aPos[nIdxSet];\r
-       var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);\r
-       var sKName=_textToHtml(sKOriName);\r
-\r
-       var nIdxIndent=parseInt(gsIdxIndent);\r
-       var sTopics="";\r
-       if(nLevel==1){\r
-               if(getItemType(aDataCon,nIdxSet,nIIdx)==1)\r
-               {\r
-                       sHTML+="<H6><nobr>";\r
-                       sHTML+="<b>"+sKName+"</b></nobr></H6>";\r
-               }\r
-               else{\r
-                       for(var i=0;i<nLength;i++)\r
-                               sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
-                       sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";\r
-                       sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
-                       if(sTopics.length>0)\r
-                               sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";\r
-                       else\r
-                               sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></p>";\r
-               }\r
-       }\r
-       else if(nLevel>=2){\r
-               var nIndent=nIdxIndent*nLevel;\r
-               for(var i=0;i<nLength;i++)\r
-                       sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
-               if (nLevel==2)\r
-                       sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
-               else\r
-                       sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
-               sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
-               if(sTopics.length>0)\r
-                       sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";\r
-               else\r
-                       sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></h6>";\r
-       }\r
-       oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);\r
-}\r
-\r
-function getTargetName(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)\r
-                       return aDataCon[nIdxSet].aKs[nIIdx].sTarget;\r
-       return gsDefaultTarget;\r
-}\r
-\r
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
-       var oLocalHTML=new indexHTMLPart();\r
-       writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);\r
-       \r
-       var aLocalPos=new Array();\r
-       var aMaxPos=new Array();\r
-       for(var i=0;i<aPos.length;i++)\r
-       {\r
-               aLocalPos[i]=aPos[i];\r
-               aMaxPos[i]=-1;\r
-       }\r
-       \r
-       for(i=0;i<nLength;i++)\r
-       {\r
-               var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);\r
-               aLocalPos[aCurIdxSet[i]]++;\r
-               if(nNKOff>0)\r
-                       aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;\r
-       }\r
-       var oSubHTML=new indexHTMLPart();\r
-       writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);\r
-       oLocalHTML.addSubHTML(oSubHTML,true);\r
-       oHTML.appendHTML(oLocalHTML,bDown);\r
-}\r
-\r
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
-{\r
-       if(bDown)\r
-       {\r
-               for(var i=0;i<nLength;i++)\r
-               {\r
-                       var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
-                       aPos[aCurIdxSet[i]]+=(1+nNKOff);\r
-               }\r
-       }\r
-       else{\r
-               for(var i=0;i<nLength;i++)\r
-               {\r
-                       var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
-                       aPos[aCurIdxSet[i]]-=(1+nPKOff);\r
-               }\r
-       }\r
-}\r
-\r
-function getItemName(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
-       else\r
-               return null;\r
-}\r
-\r
-function getItemType(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].nType;\r
-       else\r
-               return 0;\r
-}\r
-\r
-function getNKOff(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;\r
-       else\r
-               return null;\r
-}\r
-\r
-function getPKOff(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-               return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;\r
-       else\r
-               return null;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-       {\r
-               document.body.background=gsBgImage;\r
-       }\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-       {\r
-               document.body.bgColor=gsBgColor;\r
-       }\r
-       document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
-       loadIdx();\r
-       var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function loadIdx()\r
-{\r
-       if(!gbReady)\r
-       {\r
-               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
-               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
-               {\r
-                       gbReady=true;\r
-                       var oProj=oResMsg.oParam;\r
-                       var aProj=oProj.aProj;\r
-                       gbXML=oProj.bXML;\r
-                       if(aProj.length>0)\r
-                       {\r
-                               var sLangId=aProj[0].sLangId;\r
-                               for(var i=0;i<aProj.length;i++)\r
-                               {\r
-                                       if(aProj[i].sIdx&&aProj[i].sLangId==sLangId)\r
-                                       {\r
-                                               addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);\r
-                                       }\r
-                               }\r
-                       }\r
-                       writeDataIFrame();\r
-                       enEvt();\r
-               }               \r
-       }\r
-}\r
-\r
-function getIdxTopics(aDataCon,nIdxSet,nIIdx)\r
-{\r
-       var sTopics="";\r
-       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
-       {\r
-               if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)\r
-               {\r
-                       var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;\r
-                       var nProj=aDataCon[nIdxSet].nProjId;\r
-                       var sPath=gaData[nProj].sPPath;\r
-                       for(var i=0;i<nLen;i++)\r
-                       {\r
-                               var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;\r
-                               var sFullPath=_getFullPath(sPath,sURL);\r
-                               sTopics+=",'"+excapeSingleQuotandSlash(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+excapeSingleQuotandSlash(_textToHtml_nonbsp(sFullPath))+"'";\r
-                       }\r
-               }\r
-       }\r
-       return sTopics;         \r
-}\r
-\r
-function findCKInDom()\r
-{\r
-       if(gsCK!=null)\r
-       {\r
-               var sK=gsCK;\r
-               var oP=getElementsByTag(document,"P");\r
-               if(!oP) return false;\r
-               var len=oP.length;\r
-               var nB=0;\r
-               var nE=len-1;\r
-               var nM=0;\r
-               var sItem="";\r
-               var bF=false;\r
-               while(nB<nE){\r
-                       nM=(nB+nE+1)>>1;\r
-                       sItem=getInnerText(oP[nM]);\r
-                       \r
-                       if(compare(sItem,sK)==0)\r
-                       {\r
-                               bF=true;\r
-                               break;\r
-                       }\r
-                       else if(compare(sItem,sK)>0)\r
-                               nE=nM-1;\r
-                       else if(compare(sItem,sK)<0)\r
-                               nB=nM;\r
-               }\r
-               if(!bF)\r
-               {\r
-                       if(nB==nE) nM=nB;\r
-               \r
-                       if(nM+1<len)\r
-                       {\r
-                               sItem=getInnerText(oP[nM+1]);\r
-                               if(compare(sItem,sK)<=0) nM++;\r
-                       }                       \r
-                       if(nM+1<len)\r
-                       {\r
-                               sItem=getInnerText(oP[nM+1]);\r
-                               if(compare(sItem.substring(0,sK.length),sK)==0) nM++;\r
-                       }                       \r
-               }\r
-       \r
-               var oMatch=oP[nM];\r
-               if(oMatch)\r
-               {\r
-                       window.scrollTo(0,oMatch.offsetTop);\r
-                       var tempColl=getElementsByTag(oMatch,"A");\r
-                       if(tempColl&&tempColl.length>0){\r
-                               var nbTag=getElementsByTag(oMatch,"NOBR");\r
-                               if(nbTag&&nbTag.length>0)\r
-                                       HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");\r
-                               if (gbCR)\r
-                               {\r
-                                       if (gbIE4)\r
-                                               tempColl(0).click();\r
-                                       else\r
-                                       {\r
-                                               var strCommand = tempColl[0].getAttribute("onClick");\r
-                                               var nstrCommand = strCommand.indexOf(";");\r
-                                               strCommand = strCommand.substring(0, nstrCommand);\r
-                                               strCommand = strCommand.replace("event", "_event");\r
-                                               window._event.pageX = oMatch.offsetLeft ;\r
-                                               window._event.pageY = oMatch.offsetTop + 20;\r
-                                               window.setTimeout(strCommand, 100);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               gsCK=gsBCK;\r
-               gbCR=gbBCR;\r
-               if(gsBCK!=null)\r
-               {\r
-                       gsBCK=null;\r
-                       gbBCR=false;\r
-                       findCK();\r
-                       return false;\r
-               }\r
-               \r
-       }\r
-       return true;\r
-}\r
-\r
-function clearHighLight()\r
-{\r
-       resetHighLight(gsBgColor);\r
-}\r
-\r
-function IndexWriteClassStyle()\r
-{\r
-       var sStyle="";\r
-       sStyle+="<STYLE TYPE='text/css'>";\r
-       if (gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       if(gbIE4&&gbMac&&!gbIE5)\r
-       {\r
-               var nMargin=parseInt(gsIdxMargin);\r
-               nMargin-=10;\r
-               sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
-               sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
-               sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}\n";\r
-       }\r
-       else\r
-       {\r
-               sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
-               sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
-       }\r
-       sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
-       sStyle+="A:link {"+getFontStyle(goIdxFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}\n";\r
-       sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}\n";\r
-       sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}\n";\r
-       sStyle+="</STYLE>";     \r
-       document.write(sStyle);\r
-       return;\r
-}\r
-\r
-function window_Unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if(oMsg)\r
-       {\r
-               var nMsgId=oMsg.nMessageId;\r
-               if(nMsgId==WH_MSG_SEARCHINDEXKEY)\r
-               {\r
-                       if(oMsg.oParam && oMsg.oParam.sInput)\r
-                       {\r
-                               if(gsCK==null)\r
-                               {\r
-                                       gsCK=oMsg.oParam.sInput;\r
-                                       gbCR = oMsg.oParam.bCR;\r
-                                       findCK();\r
-                               }\r
-                               else\r
-                               {\r
-                                       gsBCK=oMsg.oParam.sInput;\r
-                                       gbBCR = oMsg.oParam.bCR;\r
-                               }\r
-                       }\r
-               }\r
-               else if(nMsgId==WH_MSG_PROJECTREADY)\r
-               {\r
-                       loadIdx();\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)\r
-{\r
-       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
-       goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-       goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
-       goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-\r
-       window.onload=window_OnLoad;\r
-       window.onbeforeunload=window_BUnload;\r
-       window.onunload=window_Unload;\r
-       gbWhIHost=true;\r
-}\r
-else\r
-       document.location.reload();\r
-\r
diff --git a/doc/salome/gui/GUI/whlang.js b/doc/salome/gui/GUI/whlang.js
deleted file mode 100755 (executable)
index 870be0e..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-//     WebHelp 5.10.001\r
-var garrSortChar=new Array();\r
-var gaFtsStop=new Array();\r
-var gaFtsStem=new Array();\r
-var gbWhLang=false;\r
-\r
-garrSortChar[0] = 0;\r
-garrSortChar[1] = 1;\r
-garrSortChar[2] = 2;\r
-garrSortChar[3] = 3;\r
-garrSortChar[4] = 4;\r
-garrSortChar[5] = 5;\r
-garrSortChar[6] = 6;\r
-garrSortChar[7] = 7;\r
-garrSortChar[8] = 8;\r
-garrSortChar[9] = 40;\r
-garrSortChar[10] = 41;\r
-garrSortChar[11] = 42;\r
-garrSortChar[12] = 43;\r
-garrSortChar[13] = 44;\r
-garrSortChar[14] = 9;\r
-garrSortChar[15] = 10;\r
-garrSortChar[16] = 11;\r
-garrSortChar[17] = 12;\r
-garrSortChar[18] = 13;\r
-garrSortChar[19] = 14;\r
-garrSortChar[20] = 15;\r
-garrSortChar[21] = 16;\r
-garrSortChar[22] = 17;\r
-garrSortChar[23] = 18;\r
-garrSortChar[24] = 19;\r
-garrSortChar[25] = 20;\r
-garrSortChar[26] = 21;\r
-garrSortChar[27] = 22;\r
-garrSortChar[28] = 23;\r
-garrSortChar[29] = 24;\r
-garrSortChar[30] = 25;\r
-garrSortChar[31] = 26;\r
-garrSortChar[32] = 38;\r
-garrSortChar[33] = 45;\r
-garrSortChar[34] = 46;\r
-garrSortChar[35] = 47;\r
-garrSortChar[36] = 48;\r
-garrSortChar[37] = 49;\r
-garrSortChar[38] = 50;\r
-garrSortChar[39] = 33;\r
-garrSortChar[40] = 51;\r
-garrSortChar[41] = 52;\r
-garrSortChar[42] = 53;\r
-garrSortChar[43] = 88;\r
-garrSortChar[44] = 54;\r
-garrSortChar[45] = 34;\r
-garrSortChar[46] = 55;\r
-garrSortChar[47] = 56;\r
-garrSortChar[48] = 115;\r
-garrSortChar[49] = 119;\r
-garrSortChar[50] = 121;\r
-garrSortChar[51] = 123;\r
-garrSortChar[52] = 125;\r
-garrSortChar[53] = 126;\r
-garrSortChar[54] = 127;\r
-garrSortChar[55] = 128;\r
-garrSortChar[56] = 129;\r
-garrSortChar[57] = 130;\r
-garrSortChar[58] = 57;\r
-garrSortChar[59] = 58;\r
-garrSortChar[60] = 89;\r
-garrSortChar[61] = 90;\r
-garrSortChar[62] = 91;\r
-garrSortChar[63] = 59;\r
-garrSortChar[64] = 60;\r
-garrSortChar[65] = 131;\r
-garrSortChar[66] = 148;\r
-garrSortChar[67] = 150;\r
-garrSortChar[68] = 154;\r
-garrSortChar[69] = 158;\r
-garrSortChar[70] = 168;\r
-garrSortChar[71] = 171;\r
-garrSortChar[72] = 173;\r
-garrSortChar[73] = 175;\r
-garrSortChar[74] = 185;\r
-garrSortChar[75] = 187;\r
-garrSortChar[76] = 189;\r
-garrSortChar[77] = 191;\r
-garrSortChar[78] = 193;\r
-garrSortChar[79] = 197;\r
-garrSortChar[80] = 214;\r
-garrSortChar[81] = 216;\r
-garrSortChar[82] = 218;\r
-garrSortChar[83] = 220;\r
-garrSortChar[84] = 225;\r
-garrSortChar[85] = 230;\r
-garrSortChar[86] = 240;\r
-garrSortChar[87] = 242;\r
-garrSortChar[88] = 244;\r
-garrSortChar[89] = 246;\r
-garrSortChar[90] = 252;\r
-garrSortChar[91] = 61;\r
-garrSortChar[92] = 62;\r
-garrSortChar[93] = 63;\r
-garrSortChar[94] = 64;\r
-garrSortChar[95] = 66;\r
-garrSortChar[96] = 67;\r
-garrSortChar[97] = 131;\r
-garrSortChar[98] = 148;\r
-garrSortChar[99] = 150;\r
-garrSortChar[100] = 154;\r
-garrSortChar[101] = 158;\r
-garrSortChar[102] = 168;\r
-garrSortChar[103] = 171;\r
-garrSortChar[104] = 173;\r
-garrSortChar[105] = 175;\r
-garrSortChar[106] = 185;\r
-garrSortChar[107] = 187;\r
-garrSortChar[108] = 189;\r
-garrSortChar[109] = 191;\r
-garrSortChar[110] = 193;\r
-garrSortChar[111] = 197;\r
-garrSortChar[112] = 214;\r
-garrSortChar[113] = 216;\r
-garrSortChar[114] = 218;\r
-garrSortChar[115] = 220;\r
-garrSortChar[116] = 225;\r
-garrSortChar[117] = 230;\r
-garrSortChar[118] = 240;\r
-garrSortChar[119] = 242;\r
-garrSortChar[120] = 244;\r
-garrSortChar[121] = 246;\r
-garrSortChar[122] = 252;\r
-garrSortChar[123] = 68;\r
-garrSortChar[124] = 69;\r
-garrSortChar[125] = 70;\r
-garrSortChar[126] = 71;\r
-garrSortChar[127] = 27;\r
-garrSortChar[128] = 114;\r
-garrSortChar[129] = 28;\r
-garrSortChar[130] = 82;\r
-garrSortChar[131] = 170;\r
-garrSortChar[132] = 85;\r
-garrSortChar[133] = 112;\r
-garrSortChar[134] = 109;\r
-garrSortChar[135] = 110;\r
-garrSortChar[136] = 65;\r
-garrSortChar[137] = 113;\r
-garrSortChar[138] = 223;\r
-garrSortChar[139] = 86;\r
-garrSortChar[140] = 213;\r
-garrSortChar[141] = 29;\r
-garrSortChar[142] = 255;\r
-garrSortChar[143] = 30;\r
-garrSortChar[144] = 31;\r
-garrSortChar[145] = 80;\r
-garrSortChar[146] = 81;\r
-garrSortChar[147] = 83;\r
-garrSortChar[148] = 84;\r
-garrSortChar[149] = 111;\r
-garrSortChar[150] = 36;\r
-garrSortChar[151] = 37;\r
-garrSortChar[152] = 79;\r
-garrSortChar[153] = 229;\r
-garrSortChar[154] = 222;\r
-garrSortChar[155] = 87;\r
-garrSortChar[156] = 212;\r
-garrSortChar[157] = 32;\r
-garrSortChar[158] = 254;\r
-garrSortChar[159] = 251;\r
-garrSortChar[160] = 39;\r
-garrSortChar[161] = 72;\r
-garrSortChar[162] = 97;\r
-garrSortChar[163] = 98;\r
-garrSortChar[164] = 99;\r
-garrSortChar[165] = 100;\r
-garrSortChar[166] = 73;\r
-garrSortChar[167] = 101;\r
-garrSortChar[168] = 74;\r
-garrSortChar[169] = 102;\r
-garrSortChar[170] = 133;\r
-garrSortChar[171] = 93;\r
-garrSortChar[172] = 103;\r
-garrSortChar[173] = 35;\r
-garrSortChar[174] = 104;\r
-garrSortChar[175] = 75;\r
-garrSortChar[176] = 105;\r
-garrSortChar[177] = 92;\r
-garrSortChar[178] = 122;\r
-garrSortChar[179] = 124;\r
-garrSortChar[180] = 76;\r
-garrSortChar[181] = 106;\r
-garrSortChar[182] = 107;\r
-garrSortChar[183] = 108;\r
-garrSortChar[184] = 77;\r
-garrSortChar[185] = 120;\r
-garrSortChar[186] = 199;\r
-garrSortChar[187] = 94;\r
-garrSortChar[188] = 116;\r
-garrSortChar[189] = 117;\r
-garrSortChar[190] = 118;\r
-garrSortChar[191] = 78;\r
-garrSortChar[192] = 131;\r
-garrSortChar[193] = 131;\r
-garrSortChar[194] = 131;\r
-garrSortChar[195] = 131;\r
-garrSortChar[196] = 131;\r
-garrSortChar[197] = 131;\r
-garrSortChar[198] = 131;\r
-garrSortChar[199] = 150;\r
-garrSortChar[200] = 158;\r
-garrSortChar[201] = 158;\r
-garrSortChar[202] = 158;\r
-garrSortChar[203] = 158;\r
-garrSortChar[204] = 175;\r
-garrSortChar[205] = 175;\r
-garrSortChar[206] = 175;\r
-garrSortChar[207] = 175;\r
-garrSortChar[208] = 154;\r
-garrSortChar[209] = 193;\r
-garrSortChar[210] = 197;\r
-garrSortChar[211] = 197;\r
-garrSortChar[212] = 197;\r
-garrSortChar[213] = 197;\r
-garrSortChar[214] = 197;\r
-garrSortChar[215] = 95;\r
-garrSortChar[216] = 197;\r
-garrSortChar[217] = 230;\r
-garrSortChar[218] = 230;\r
-garrSortChar[219] = 230;\r
-garrSortChar[220] = 230;\r
-garrSortChar[221] = 246;\r
-garrSortChar[222] = 227;\r
-garrSortChar[223] = 224;\r
-garrSortChar[224] = 131;\r
-garrSortChar[225] = 131;\r
-garrSortChar[226] = 131;\r
-garrSortChar[227] = 131;\r
-garrSortChar[228] = 131;\r
-garrSortChar[229] = 131;\r
-garrSortChar[230] = 131;\r
-garrSortChar[231] = 150;\r
-garrSortChar[232] = 158;\r
-garrSortChar[233] = 158;\r
-garrSortChar[234] = 158;\r
-garrSortChar[235] = 158;\r
-garrSortChar[236] = 175;\r
-garrSortChar[237] = 175;\r
-garrSortChar[238] = 175;\r
-garrSortChar[239] = 175;\r
-garrSortChar[240] = 154;\r
-garrSortChar[241] = 193;\r
-garrSortChar[242] = 197;\r
-garrSortChar[243] = 197;\r
-garrSortChar[244] = 197;\r
-garrSortChar[245] = 197;\r
-garrSortChar[246] = 197;\r
-garrSortChar[247] = 96;\r
-garrSortChar[248] = 197;\r
-garrSortChar[249] = 230;\r
-garrSortChar[250] = 230;\r
-garrSortChar[251] = 230;\r
-garrSortChar[252] = 230;\r
-garrSortChar[253] = 246;\r
-garrSortChar[254] = 227;\r
-garrSortChar[255] = 250;\r
-\r
-gaFtsStop[0] = "a";\r
-gaFtsStop[1] = "about";\r
-gaFtsStop[2] = "after";\r
-gaFtsStop[3] = "against";\r
-gaFtsStop[4] = "all";\r
-gaFtsStop[5] = "also";\r
-gaFtsStop[6] = "among";\r
-gaFtsStop[7] = "an";\r
-gaFtsStop[8] = "and";\r
-gaFtsStop[9] = "are";\r
-gaFtsStop[10] = "as";\r
-gaFtsStop[11] = "at";\r
-gaFtsStop[12] = "be";\r
-gaFtsStop[13] = "became";\r
-gaFtsStop[14] = "because";\r
-gaFtsStop[15] = "been";\r
-gaFtsStop[16] = "between";\r
-gaFtsStop[17] = "but";\r
-gaFtsStop[18] = "by";\r
-gaFtsStop[19] = "can";\r
-gaFtsStop[20] = "come";\r
-gaFtsStop[21] = "do";\r
-gaFtsStop[22] = "during";\r
-gaFtsStop[23] = "each";\r
-gaFtsStop[24] = "early";\r
-gaFtsStop[25] = "for";\r
-gaFtsStop[26] = "form";\r
-gaFtsStop[27] = "found";\r
-gaFtsStop[28] = "from";\r
-gaFtsStop[29] = "had";\r
-gaFtsStop[30] = "has";\r
-gaFtsStop[31] = "have";\r
-gaFtsStop[32] = "he";\r
-gaFtsStop[33] = "her";\r
-gaFtsStop[34] = "his";\r
-gaFtsStop[35] = "however";\r
-gaFtsStop[36] = "in";\r
-gaFtsStop[37] = "include";\r
-gaFtsStop[38] = "into";\r
-gaFtsStop[39] = "is";\r
-gaFtsStop[40] = "it";\r
-gaFtsStop[41] = "its";\r
-gaFtsStop[42] = "late";\r
-gaFtsStop[43] = "later";\r
-gaFtsStop[44] = "made";\r
-gaFtsStop[45] = "many";\r
-gaFtsStop[46] = "may";\r
-gaFtsStop[47] = "me";\r
-gaFtsStop[48] = "med";\r
-gaFtsStop[49] = "more";\r
-gaFtsStop[50] = "most";\r
-gaFtsStop[51] = "near";\r
-gaFtsStop[52] = "no";\r
-gaFtsStop[53] = "non";\r
-gaFtsStop[54] = "not";\r
-gaFtsStop[55] = "of";\r
-gaFtsStop[56] = "on";\r
-gaFtsStop[57] = "only";\r
-gaFtsStop[58] = "or";\r
-gaFtsStop[59] = "other";\r
-gaFtsStop[60] = "over";\r
-gaFtsStop[61] = "several";\r
-gaFtsStop[62] = "she";\r
-gaFtsStop[63] = "some";\r
-gaFtsStop[64] = "such";\r
-gaFtsStop[65] = "than";\r
-gaFtsStop[66] = "that";\r
-gaFtsStop[67] = "the";\r
-gaFtsStop[68] = "their";\r
-gaFtsStop[69] = "then";\r
-gaFtsStop[70] = "there";\r
-gaFtsStop[71] = "these";\r
-gaFtsStop[72] = "they";\r
-gaFtsStop[73] = "this";\r
-gaFtsStop[74] = "through";\r
-gaFtsStop[75] = "to";\r
-gaFtsStop[76] = "under";\r
-gaFtsStop[77] = "until";\r
-gaFtsStop[78] = "use";\r
-gaFtsStop[79] = "was";\r
-gaFtsStop[80] = "we";\r
-gaFtsStop[81] = "were";\r
-gaFtsStop[82] = "when";\r
-gaFtsStop[83] = "where";\r
-gaFtsStop[84] = "which";\r
-gaFtsStop[85] = "who";\r
-gaFtsStop[86] = "with";\r
-gaFtsStop[87] = "you";\r
-\r
-gaFtsStem[0] = "ed";\r
-gaFtsStem[1] = "es";\r
-gaFtsStem[2] = "er";\r
-gaFtsStem[3] = "e";\r
-gaFtsStem[4] = "s";\r
-gaFtsStem[5] = "ingly";\r
-gaFtsStem[6] = "ing";\r
-gaFtsStem[7] = "ly";\r
-\r
-\r
-// as javascript 1.3 support unicode instead of ISO-Latin-1\r
-// need to transfer come code back to ISO-Latin-1 for compare purpose\r
-// Note: Different Language(Code page) maybe need different array:\r
-var gaUToC=new Array();\r
-gaUToC[8364]=128;\r
-gaUToC[8218]=130;\r
-gaUToC[402]=131;\r
-gaUToC[8222]=132;\r
-gaUToC[8230]=133;\r
-gaUToC[8224]=134;\r
-gaUToC[8225]=135;\r
-gaUToC[710]=136;\r
-gaUToC[8240]=137;\r
-gaUToC[352]=138;\r
-gaUToC[8249]=139;\r
-gaUToC[338]=140;\r
-gaUToC[381]=142;\r
-gaUToC[8216]=145;\r
-gaUToC[8217]=146;\r
-gaUToC[8220]=147;\r
-gaUToC[8221]=148;\r
-gaUToC[8226]=149;\r
-gaUToC[8211]=150;\r
-gaUToC[8212]=151;\r
-gaUToC[732]=152;\r
-gaUToC[8482]=153;\r
-gaUToC[353]=154;\r
-gaUToC[8250]=155;\r
-gaUToC[339]=156;\r
-gaUToC[382]=158;\r
-gaUToC[376]=159;\r
-\r
-var gsBiggestChar="";\r
-function getBiggestChar()\r
-{\r
-       if(gsBiggestChar.length==0)\r
-       {\r
-               if(garrSortChar.length<256)\r
-                       gsBiggestChar=String.fromCharCode(255);\r
-               else\r
-               {\r
-                       var nBiggest=0;\r
-                       var nBigChar=0;\r
-                       for(var i=0;i<=255;i++)\r
-                       {\r
-                               if(garrSortChar[i]>nBiggest)\r
-                               {\r
-                                       nBiggest=garrSortChar[i];\r
-                                       nBigChar=i;\r
-                               }\r
-                       }\r
-                       gsBiggestChar=String.fromCharCode(nBigChar);\r
-               }\r
-\r
-       }       \r
-       return gsBiggestChar;\r
-}\r
-\r
-function getCharCode(str,i)\r
-{\r
-       var code=str.charCodeAt(i)\r
-       if(code>256)\r
-       {\r
-               code=gaUToC[code];\r
-       }\r
-       return code;\r
-}\r
-\r
-function compare(strText1,strText2)\r
-{\r
-       if(garrSortChar.length<256)\r
-       {\r
-               var strt1=strText1.toLowerCase();\r
-               var strt2=strText2.toLowerCase();\r
-               if(strt1<strt2) return -1;\r
-               if(strt1>strt2) return 1;\r
-               return 0;\r
-       }\r
-       else\r
-       {\r
-               for(var i=0;i<strText1.length&&i<strText2.length;i++)\r
-               {\r
-                       if(garrSortChar[getCharCode(strText1,i)]<garrSortChar[getCharCode(strText2,i)]) return -1;\r
-                       if(garrSortChar[getCharCode(strText1,i)]>garrSortChar[getCharCode(strText2,i)]) return 1;\r
-               }\r
-               if(strText1.length<strText2.length) return -1;\r
-               if(strText1.length>strText2.length) return 1;\r
-               return 0;\r
-       }\r
-}\r
-gbWhLang=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whmozemu.js b/doc/salome/gui/GUI/whmozemu.js
deleted file mode 100755 (executable)
index 84c6de1..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//     WebHelp 5.10.002\r
-if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){\r
-\r
-HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)\r
-{\r
-       switch (where){\r
-       case 'beforeBegin':\r
-               this.parentNode.insertBefore(parsedNode,this);\r
-               break;\r
-       case 'afterBegin':\r
-               this.insertBefore(parsedNode,this.firstChild);\r
-               break;\r
-       case 'beforeEnd':\r
-               this.appendChild(parsedNode);\r
-               break;\r
-       case 'afterEnd':\r
-               if (this.nextSibling){\r
-               this.parentNode.insertBefore(parsedNode,this.nextSibling);\r
-               } else {\r
-               this.parentNode.appendChild(parsedNode);\r
-               }\r
-               break;\r
-       }\r
-}\r
-\r
-HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){\r
-\r
-       var r = this.ownerDocument.createRange();\r
-       r.setStartBefore(this);\r
-       var parsedHTML = r.createContextualFragment(htmlStr);\r
-       this.insertAdjacentElement(where,parsedHTML);\r
-}\r
-\r
-\r
-HTMLElement.prototype.insertAdjacentText = function(where,txtStr){\r
-\r
-       var parsedText = document.createTextNode(txtStr);\r
-       this.insertAdjacentElement(where,parsedText);\r
-}\r
-}\r
-\r
-function testScroll() {\r
-       // Initialize scrollbar cache if necessary\r
-       if (window._pageXOffset==null) {\r
-               window._pageXOffset = window.pageXOffset;\r
-               window._pageYOffset = window.pageYOffset;\r
-       }\r
-       // Expose Internet Explorer compatible object model\r
-       document.scrollTop = window.pageYOffset;\r
-       document.scrollLeft = window.pageXOffset;\r
-       window.document.scrollHeight = document.height;\r
-       window.document.scrollWidth = document.width;\r
-       window.document.clientWidth = window.innerWidth;\r
-       window.document.clientHeight = window.innerHeight;\r
-\r
-       // If cache!=current values, call the onscroll event\r
-       if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) \r
-               window.onscroll();\r
-       // Cache new values\r
-       window._pageXOffset = window.pageXOffset;\r
-       window._pageYOffset = window.pageYOffset;\r
-       }\r
-\r
-// Create compatibility layer for Netscape\r
-if (window.gbNav6 && !window.gbNav7) {\r
-       setInterval("testScroll()",50)\r
-}
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whmsg.js b/doc/salome/gui/GUI/whmsg.js
deleted file mode 100755 (executable)
index 52ffcd2..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//     WebHelp 5.10.002\r
-var WH_MSG_RESIZEPANE          =0x0100;\r
-var WH_MSG_SHOWPANE                    =0x0101;\r
-var WH_MSG_HIDEPANE                    =0x0102;\r
-var WH_MSG_SYNCTOC                     =0x0103;\r
-var WH_MSG_NEXT                                =0x0104;\r
-var WH_MSG_PREV                                =0x0105;\r
-var WH_MSG_NOSEARCHINPUT       =0x0106;\r
-var WH_MSG_NOSYNC                      =0x0107;\r
-var WH_MSG_ENABLEWEBSEARCH     =0x0108;\r
-\r
-var WH_MSG_ISPANEVISIBLE       =0x0109;\r
-var WH_MSG_PANESTATUE          =0x010a;\r
-\r
-var    WH_MSG_SYNCINFO                 =0x010b;\r
-var WH_MSG_PANEINFO                    =0x010c;\r
-var WH_MSG_WEBSEARCH           =0x010d;\r
-\r
-var WH_MSG_SEARCHINDEXKEY      =0x0201;\r
-\r
-var WH_MSG_SEARCHFTSKEY        =0x020a;\r
-\r
-var WH_MSG_PROJECTREADY                =0x0301;\r
-var WH_MSG_GETPROJINFO                 =0x0302;\r
-\r
-var WH_MSG_SHOWTOC                     =0x0401;\r
-var WH_MSG_SHOWIDX                     =0x0402;\r
-var WH_MSG_SHOWFTS                     =0x0403;\r
-var WH_MSG_SHOWGLO                     =0x0404;\r
-\r
-var WH_MSG_SHOWGLODEF          =0x0500;\r
-\r
-var WH_MSG_GETTOCPATHS                 =0x0600;\r
-var WH_MSG_GETAVIAVENUES       =0x0601;\r
-var WH_MSG_GETCURRENTAVENUE =0x0602;\r
-var WH_MSG_GETPANEINFO         =0x0603;\r
-var WH_MSG_AVENUEINFO          =0x0604;\r
-\r
-var WH_MSG_GETSTARTFRAME       =0x0701;\r
-var WH_MSG_GETDEFAULTTOPIC     =0x0702;\r
-\r
-var WH_MSG_SEARCHTHIS          =0x0801;\r
-var WH_MSG_GETSEARCHS          =0x0802;\r
-\r
-var WH_MSG_ISINFRAMESET                =0x0900;\r
-\r
-var WH_MSG_TOOLBARORDER                =0x0a00;\r
-var WH_MSG_MINIBARORDER                =0x0a01;\r
-var WH_MSG_ISSYNCSSUPPORT      =0x0a02;\r
-var WH_MSG_ISSEARCHSUPPORT     =0x0a03;\r
-var WH_MSG_GETPANETYPE         =0x0a04;\r
-var WH_MSG_BACKUPSEARCH                =0x0a05;\r
-var WH_MSG_GETPANES                    =0x0a06;\r
-var WH_MSG_INITSEARCHSTRING =0x0a07;\r
-var WH_MSG_RELOADNS6           =0x0a08;\r
-var WH_MSG_ISAVENUESUPPORT     =0x0a09;\r
-\r
-var WH_MSG_GETCMD                      =0x0b00;\r
-var    WH_MSG_GETPANE                  =0x0b01;\r
-var WH_MSG_GETDEFPANE          =0x0b02;\r
-\r
-function whMessage(nMessageId,wSender,nVersion,oParam)\r
-{\r
-       this.nMessageId=nMessageId;\r
-       this.wSender=wSender;\r
-       this.nVersion=nVersion;\r
-       this.oParam=oParam;\r
-}\r
-var gbWhMsg=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whnjs.htm b/doc/salome/gui/GUI/whnjs.htm
deleted file mode 100755 (executable)
index f65e76c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-function window_Onload()\r
-{\r
-       if (window.gsTopic)\r
-               frames["bsscright"].document.location = window.gsTopic;\r
-}\r
-window.onload=window_Onload;\r
-//-->\r
-</script>\r
-</head>\r
-\r
-<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="kernel/introduction.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whphost.js b/doc/salome/gui/GUI/whphost.js
deleted file mode 100755 (executable)
index e76edcd..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-//     WebHelp 5.10.005\r
-var gaProj=new Array();\r
-var gnChecked=0;\r
-var gsProjName="";\r
-var gbReady=false;\r
-var goMan=null;\r
-var gbXML=false;\r
-var gsFirstPane="";\r
-var gServerEnabled=false;\r
-var gsPath="";\r
-var gbWhPHost=false;\r
-var goDiv = null;\r
-var gsHTML = "";\r
-\r
-if (navigator.currentNavPen)\r
-       gsFirstPane = navigator.currentNavPen;\r
-\r
-\r
-function delayLoad()\r
-{\r
-       if (goDiv&&gsHTML)\r
-       {\r
-               goDiv.innerHTML=gsHTML;\r
-               goDiv=null;\r
-               gsHTML="";\r
-       }\r
-}\r
-\r
-function whCom(sName,sComFile)\r
-{\r
-       this.msName=sName;\r
-       this.msDivId=sName+"Div";\r
-       this.msIFrameId=sName+"IFrame";\r
-       this.msComFile=sComFile;\r
-       this.mbloaded=false;\r
-       this.mbShow=false;\r
-       this.show=function(bShow)\r
-       {\r
-               if(this.mbShow!=bShow)\r
-               {\r
-                       if(bShow&&!this.mbloaded)\r
-                       {\r
-                               this.load();\r
-                       }\r
-\r
-                       var oDiv=getElement(this.msDivId);\r
-                       if(oDiv)\r
-                       {\r
-                               if(gbIE55||(gbIE5&&gbMac))\r
-                               {\r
-                                       var oIframe=getElement(this.msIFrameId);\r
-                                       if(oIframe)\r
-                                       {\r
-                                               if(bShow)\r
-                                               {\r
-                                                       oDiv.style.zIndex=3;\r
-                                                       if(oIframe!=null)\r
-                                                       {\r
-                                                               oIframe.style.zIndex=3;\r
-                                                               if (!gbIE55)\r
-                                                                       oIframe.style.visibility="visible";\r
-                                                       }\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       oDiv.style.zIndex=2;\r
-                                                       if(oIframe!=null)\r
-                                                       {\r
-                                                               oIframe.style.zIndex=2;\r
-                                                               if (!gbIE55)\r
-                                                                       oIframe.style.visibility="hidden";\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (!gbIE55)\r
-                                       oDiv.style.visibility=(bShow==true)?'visible':'hidden';\r
-                               this.mbShow=bShow;\r
-                       }\r
-\r
-               }\r
-       }\r
-       this.load=function()\r
-       {\r
-               if(!this.mbloaded)\r
-               {\r
-                       if(this.msComFile.length>0){\r
-                               var strFile= _getFullPath(getPath(), this.msComFile);\r
-                               var oDiv=getElement(this.msDivId);\r
-                               if(oDiv){\r
-                                       if(gbIE4||gbOpera7){\r
-                                               var nIFrameHeight=oDiv.style.pixelHeight;\r
-                                               var nIFrameWidth=oDiv.style.pixelWidth;\r
-                                               var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";\r
-                                               if(gbMac){\r
-                                                       sHTML+=nIFrameWidth+"px;height:"+nIFrameHeight+"px;\"></IFRAME>";\r
-                                               }else{\r
-                                                       sHTML+="100%; height:100%;\"></IFRAME>";\r
-                                               }\r
-                                               oDiv.innerHTML=sHTML;\r
-                                       }else if(gbNav6){\r
-                                               gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";\r
-                                               goDiv = oDiv;\r
-                                               setTimeout("delayLoad()", 100);\r
-                                       }\r
-                                       this.mbloaded=true;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       this.unload=function()\r
-       {\r
-               var oDiv=getElement(this.msDivId);\r
-               if(oDiv)\r
-                       oDiv.innerHTML="";\r
-       }\r
-       this.getDivHTML=function()\r
-       {\r
-               var sHTML="";\r
-               if(gbMac&&gbIE4)\r
-                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";\r
-               else if(gbIE5)\r
-                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
-               else if(gbIE4||gbWindows)\r
-                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
-               else\r
-                       //sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:"+parent.height+";visibility:hidden\">";\r
-                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
-                       sHTML+="</DIV>";\r
-               return sHTML;\r
-       }\r
-}  \r
-\r
-function whComMan()\r
-{\r
-       this.sName="";\r
-       this.maCom=new Array();\r
-       this.addCom=function(sName,sComFile)\r
-       {\r
-               var owhCom=new whCom(sName,sComFile);\r
-               this.maCom[this.maCom.length]=owhCom;\r
-       }\r
-       this.init=function()\r
-       {\r
-               var sHTML="";\r
-               for(var i=0;i<this.maCom.length;i++)\r
-               {\r
-                       sHTML+=this.maCom[i].getDivHTML();\r
-               }\r
-               document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-\r
-       }\r
-       this.showById=function(nId)\r
-       {\r
-               for(var s=0;s<this.maCom.length;s++)\r
-               {\r
-                       if(s!==nId)\r
-                               this.maCom[s].show(false);\r
-               }\r
-               this.maCom[nId].show(true);\r
-       }\r
-       this.show=function(sName)\r
-       {\r
-               navigator.currentNavPen = sName;\r
-               var bFound=false;\r
-               for(var i=0;i<this.maCom.length;i++)\r
-               {\r
-                       if(sName==this.maCom[i].msName)\r
-                       {\r
-                               bFound=true;\r
-                               break;\r
-                       }\r
-               }\r
-               if(bFound)\r
-               {\r
-                       this.showById(i);\r
-                       this.sName=sName;\r
-               }\r
-       }\r
-       this.unload=function()\r
-       {\r
-               for(var i=0;i<this.maCom.length;i++)\r
-               {\r
-                       this.maCom[i].unload();\r
-               }               \r
-       }\r
-       this.getCurrent=function()\r
-       {\r
-               return this.sName;\r
-       }\r
-}\r
-\r
-function getPath()\r
-{\r
-       if(gsPath=="")\r
-       {\r
-               gsPath=location.href;\r
-               gsPath=_replaceSlash(gsPath);\r
-               var nPosFile=gsPath.lastIndexOf("/");\r
-               gsPath=gsPath.substring(0,nPosFile+1);\r
-       }\r
-       return gsPath;\r
-}\r
-\r
-goMan=new whComMan();\r
-function addPane(sName,sFileName)\r
-{\r
-       var oParam=new Object();\r
-       oParam.sName=sName;\r
-       var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);\r
-       if (SendMessage(oMsg))\r
-       {\r
-               if (oMsg.oParam.bEnable)\r
-                       goMan.addCom(sName,sFileName);\r
-       }\r
-       else\r
-               goMan.addCom(sName,sFileName);  \r
-}\r
-\r
-function setShowPane(sName, bForce)\r
-{\r
-       if ((gsFirstPane == "") || bForce)\r
-       {\r
-               var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);\r
-               if (SendMessage(oMsg))\r
-               {\r
-                       if (oMsg.oParam)\r
-                               gsFirstPane = oMsg.oParam;\r
-                       else\r
-                               gsFirstPane=sName;\r
-               }\r
-               else\r
-                       gsFirstPane=sName;\r
-       }\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
-       var bHidePane=false;\r
-       if (SendMessage(oMsg))\r
-       {\r
-               if(oMsg.oParam>0)\r
-               {\r
-                       if(oMsg.oParam==1)\r
-                               gsFirstPane="toc";\r
-                       else if(oMsg.oParam==2)\r
-                               gsFirstPane="idx";\r
-                       else if(oMsg.oParam==3)\r
-                               gsFirstPane="fts";\r
-                       else if(oMsg.oParam==4)\r
-                               gsFirstPane="glo";\r
-               }\r
-               else if(oMsg.oParam==0)\r
-               {\r
-                       bHidePane=true;\r
-               }\r
-       }\r
-       goMan.init();\r
-       if(gsProjName!="")                      \r
-               loadData2(gsProjName);  \r
-       if (bHidePane)\r
-       {\r
-               gsFirstPane="";\r
-               var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)\r
-               SendMessage(oMsg1);\r
-       }\r
-       else\r
-       {\r
-               if(gsFirstPane!="")\r
-                       goMan.show(gsFirstPane);\r
-               else\r
-                       goMan.showById(0);\r
-       }\r
-}\r
-\r
-function setServerEnabled()\r
-{\r
-       gServerEnabled = true;\r
-}\r
-\r
-function loadData2(strFile)\r
-{\r
-       if(gbXML)\r
-               loadDataXML(strFile);\r
-       else\r
-               loadData(strFile);\r
-}\r
-\r
-function addProject(bPreferXML,sXMLName,sHTMLName)\r
-{\r
-       var bLoadXML=bPreferXML;\r
-       if(!gbIE4&&!gbNav6&&!gbOpera7)\r
-               return;\r
-       if(gbIE4&&!gbIE5)\r
-               bLoadXML=false;\r
-       if (gbIE5&&!gbMac)\r
-               bLoadXML=true;\r
-       if(gbIE55||gbNav6)\r
-               bLoadXML=true;\r
-       if(gbOpera7)\r
-               bLoadXML=false;         \r
-       if(bLoadXML)\r
-               addProjectXML(sXMLName);\r
-       else\r
-               addProjectHTML(sHTMLName);\r
-}\r
-\r
-function addProjectHTML(sName)\r
-{\r
-       gbXML=false;\r
-       gsProjName=sName;\r
-}\r
-\r
-function addProjectXML(sName)\r
-{\r
-       gbXML=true;\r
-       gsProjName=sName;\r
-}\r
-\r
-function window_MyBunload()\r
-{\r
-       goMan.unload();\r
-       window_BUnload();\r
-}\r
-\r
-function putDataXML(xmlDoc,sdocPath)\r
-{\r
-       if(xmlDoc!=null)\r
-       {\r
-               var projectNode=xmlDoc.getElementsByTagName("project")[0];\r
-               if(projectNode)\r
-               {\r
-                       var aRProj=new Array();\r
-                       aRProj[0]=new Object();\r
-                       aRProj[0].sPPath=_getPath(sdocPath);\r
-                       var sLangId=projectNode.getAttribute("langid");\r
-                       if(sLangId)\r
-                       {\r
-                               aRProj[0].sLangId=sLangId;\r
-                       }\r
-                       var sDPath=projectNode.getAttribute("datapath");\r
-                       if(sDPath)\r
-                       {\r
-                               if(sDPath.lastIndexOf("/")!=sDPath.length-1)\r
-                                       sDPath+="/";\r
-                               aRProj[0].sDPath=sDPath;\r
-                       }\r
-                       else\r
-                               aRProj[0].sDPath="";\r
-                       aRProj[0].sToc=projectNode.getAttribute("toc");\r
-                       aRProj[0].sIdx=projectNode.getAttribute("index");\r
-                       aRProj[0].sFts=projectNode.getAttribute("fts");\r
-                       aRProj[0].sGlo=projectNode.getAttribute("glossary");\r
-                       var RmtProject=projectNode.getElementsByTagName("remote");\r
-                       var nCount=1;\r
-                       for (var i=0;i<RmtProject.length;i++)\r
-                       {\r
-                               var sURL=RmtProject[i].getAttribute("url");\r
-                               if(sURL)\r
-                               {\r
-                                       if(sURL.lastIndexOf("/")!=sURL.length-1)\r
-                                               sURL+="/";\r
-                                       aRProj[nCount]=new Object();\r
-                                       aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);\r
-                               }\r
-                       }\r
-                       putProjectInfo(aRProj);\r
-               }\r
-               else\r
-               {\r
-                       // on Netscape 6.0 under some situation the xml file cannot be loaded.\r
-                       // so we use pure html instead.\r
-                       if (gnChecked == 0)\r
-                               setTimeout("redirectToList();",100);\r
-                       else\r
-                       {\r
-                               gnChecked++;\r
-                               setTimeout("checkRemoteProject();", 1);\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
-       gnChecked++;\r
-       setTimeout("checkRemoteProject();", 1);\r
-}\r
-\r
-function redirectToList()\r
-{\r
-       if(gbReDirectThis)\r
-               document.location=gsNavReDirect;\r
-       else\r
-               parent.document.location=gsNavReDirect;\r
-}\r
-\r
-function putProjectInfo(aRProj)\r
-{\r
-       if(gnChecked==0||isSamePath(gaProj[gnChecked].sPPath,aRProj[0].sPPath))\r
-       {\r
-               if(gnChecked!=0)\r
-               {\r
-                       if(aRProj[0].sLangId!=gaProj[0].sLangId)\r
-                               alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");\r
-               }\r
-               gaProj[gnChecked]=aRProj[0];\r
-               for(var i=1;i<aRProj.length;i++)\r
-               {\r
-                       var bFound=false;\r
-                       for(var j=0;j<gaProj.length;j++)\r
-                       {\r
-                               if(isSamePath(gaProj[j].sPPath,aRProj[i].sPPath))\r
-                               {\r
-                                       bFound=true;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       if(!bFound)\r
-                       {\r
-                               gaProj[gaProj.length]=aRProj[i];\r
-                       }\r
-               }\r
-               gnChecked++;\r
-               setTimeout("checkRemoteProject();", 1);\r
-       }\r
-       else\r
-               alert("Could not load correctly, please click Refresh.");\r
-}\r
-\r
-function isSamePath(sPath1,sPath2)\r
-{\r
-       return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
-}\r
-\r
-function checkRemoteProject()\r
-{\r
-       if(gaProj.length!=gnChecked)\r
-       {\r
-               setTimeout("cancelProj("+gnChecked+");",10000);\r
-               loadData2(gaProj[gnChecked].sPPath+gsProjName);\r
-       }\r
-       else{\r
-               var oMsg=new whMessage(WH_MSG_PROJECTREADY,this,1,null);\r
-               gbReady=true;\r
-               SendMessage(oMsg);\r
-       }\r
-}\r
-\r
-function cancelProj(i)\r
-{\r
-       if(i==gnChecked)\r
-       {\r
-               gnChecked++;\r
-               setTimeout("checkRemoteProject();", 1);\r
-       }       \r
-}\r
-\r
-function window_resize()\r
-{\r
-       for(var i=0;i<goMan.maCom.length;i++)\r
-       {\r
-               var oFrame=getElement(goMan.maCom[i].msIFrameId);\r
-               if(oFrame)\r
-               {\r
-                       oFrame.style.height=document.body.clientHeight;\r
-                       oFrame.style.width=document.body.clientWidth;\r
-               }\r
-       }\r
-       window_resize2();\r
-}\r
-\r
-function window_resize2()\r
-{\r
-       if(document.body)\r
-       {\r
-               if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
-               {\r
-                       var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
-                       SendMessage(oMsg);\r
-               }\r
-       }\r
-}\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_GETPROJINFO);\r
-       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
-       UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
-       UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
-       UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-       UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if(oMsg)\r
-       {\r
-               var nMsgId=oMsg.nMessageId;\r
-               if(nMsgId==WH_MSG_GETPROJINFO)\r
-               {\r
-                       if(gbReady)\r
-                       {\r
-                               var oProj=new Object();\r
-                               oProj.aProj=gaProj;\r
-                               oProj.bXML=gbXML;\r
-                               oMsg.oParam=oProj;\r
-                       }\r
-                       else\r
-                               return false;\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWTOC)\r
-               {\r
-                       if(goMan)\r
-                               goMan.show("toc");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
-                       SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWIDX)\r
-               {\r
-                       if(goMan)\r
-                               goMan.show("idx");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
-                       SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWFTS)\r
-               {\r
-                       if(goMan)\r
-                               goMan.show("fts");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
-                       SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWGLO)\r
-               {\r
-                       if(goMan)\r
-                               goMan.show("glo");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
-                       SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_GETPANEINFO)\r
-               {\r
-                       oMsg.oParam=goMan.getCurrent();\r
-                       return false;\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
-       RegisterListener2(this,WH_MSG_GETPROJINFO);\r
-       RegisterListener2(this,WH_MSG_SHOWTOC);\r
-       RegisterListener2(this,WH_MSG_SHOWIDX);\r
-       RegisterListener2(this,WH_MSG_SHOWFTS);\r
-       RegisterListener2(this,WH_MSG_SHOWGLO);\r
-       RegisterListener2(this,WH_MSG_GETPANEINFO);\r
-\r
-       if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)\r
-       {\r
-               window.onresize=window_resize;\r
-       }\r
-       else if(gbIE4)\r
-       {\r
-               window.onresize=window_resize2;\r
-       }\r
-       window.onload=window_OnLoad;\r
-       window.onbeforeunload=window_MyBunload;\r
-       window.onunload=window_unload;\r
-       gbWhPHost=true;\r
-}\r
-else\r
-       document.location.reload();\r
-\r
diff --git a/doc/salome/gui/GUI/whproj.htm b/doc/salome/gui/GUI/whproj.htm
deleted file mode 100755 (executable)
index 821daea..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<html>\r
-<head>\r
-<title>project description</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whproj.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-  setLangId("1033");\r
-  setDataPath("whdata");\r
-  addToc("whtoc.htm");\r
-\r
-  addFts("whfts.htm");\r
-  addGlo("whglo.htm");\r
-\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whproj.js b/doc/salome/gui/GUI/whproj.js
deleted file mode 100755 (executable)
index ae38fa9..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//     WebHelp 5.10.001\r
-var gaProj=new Array();\r
-\r
-gaProj[0]=new project("");\r
-\r
-function setLangId(sLangId)\r
-{\r
-       gaProj[0].sLangId=sLangId;\r
-}\r
-\r
-function setDataPath(sPath)\r
-{\r
-       if(sPath.length!=0)\r
-       {\r
-               if(sPath.lastIndexOf("/")!=sPath.length-1)\r
-                       sPath+="/";\r
-               gaProj[0].sDPath=sPath; \r
-       }\r
-       else\r
-               gaProj[0].sDPath="";\r
-}\r
-\r
-function addToc(sFile)\r
-{\r
-       gaProj[0].sToc=sFile;\r
-}\r
-\r
-function addIdx(sFile)\r
-{\r
-       gaProj[0].sIdx=sFile;\r
-}\r
-\r
-function addFts(sFile)\r
-{\r
-       gaProj[0].sFts=sFile;\r
-}\r
-\r
-function addGlo(sFile)\r
-{\r
-       gaProj[0].sGlo=sFile;\r
-}\r
-\r
-function addRemoteProject(sProjRelPath)\r
-{\r
-       if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1)\r
-               sProjRelPath+="/";\r
-       gaProj[gaProj.length]=new project(sProjRelPath);\r
-}\r
-\r
-function project(sPPath)\r
-{\r
-       this.sPPath=sPPath;\r
-       this.sLangId="";\r
-       this.sDPath="";\r
-       this.sToc="";\r
-       this.sIdx="";\r
-       this.sFts="";\r
-       this.sGlo="";\r
-}\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
-       gsName=document.location.href;\r
-       gsName=_replaceSlash(gsName);\r
-       var nPos=gsName.lastIndexOf("/");\r
-       if(nPos!=-1)\r
-               gaProj[0].sPPath=gsName.substring(0,nPos+1);\r
-       else\r
-               alert("Error in Loading navigation component. Please regenerate WebHelp.");\r
-       patchPath(gaProj);\r
-       if(parent&&parent!=this&& typeof(parent.putProjectInfo)=="function")\r
-       {\r
-               parent.putProjectInfo(gaProj);\r
-       }\r
-}\r
-\r
-function patchPath(aProj)\r
-{\r
-       for(var i=1;i<aProj.length;i++)\r
-       {\r
-               aProj[i].sPPath=_getFullPath(gaProj[0].sPPath,aProj[i].sPPath);\r
-       }\r
-}
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whproj.xml b/doc/salome/gui/GUI/whproj.xml
deleted file mode 100755 (executable)
index 4bd4a8d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version='1.0' encoding='windows-1252' ?>\r
-<project langid="1033" datapath="whxdata" toc="whtoc.xml" fts="whfts.xml" glossary="whglo.xml" >\r
-</project>\r
diff --git a/doc/salome/gui/GUI/whproxy.js b/doc/salome/gui/GUI/whproxy.js
deleted file mode 100755 (executable)
index d0ee298..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//     WebHelp 5.10.001\r
-var gbInited=false;\r
-var gWndStubPage=null;\r
-function getStubPage()\r
-{\r
-       if(!gbInited)\r
-       {\r
-               gWndStubPage=getStubPage_inter(window);\r
-               gbInited=true;\r
-       }\r
-       return gWndStubPage;\r
-}\r
-\r
-function getStubPage_inter(wCurrent)\r
-{\r
-       if(null==wCurrent.parent||wCurrent.parent==wCurrent)\r
-               return null;\r
-\r
-       if(typeof(wCurrent.parent.whname)=="string"&&"wh_stub"==wCurrent.parent.whname)\r
-               return wCurrent.parent;\r
-       else\r
-               if(wCurrent.parent.frames.length!=0&&wCurrent.parent!=wCurrent)\r
-                       return getStubPage_inter(wCurrent.parent);\r
-               else\r
-                       return null;\r
-}\r
-\r
-function RegisterListener(framename,nMessageId)\r
-{\r
-       var wSP=getStubPage();\r
-       if(wSP&&wSP!=this)\r
-               return wSP.RegisterListener(framename,nMessageId);\r
-       else\r
-               return false;\r
-}\r
-\r
-function RegisterListener2(oframe,nMessageId)\r
-{\r
-       var wSP=getStubPage();\r
-       if(wSP&&wSP!=this)\r
-               return wSP.RegisterListener2(oframe,nMessageId);\r
-       else\r
-               return false;\r
-}\r
-\r
-function UnRegisterListener2(oframe,nMessageId)\r
-{\r
-       var wSP=getStubPage();\r
-       if(wSP&&wSP!=this&&wSP.UnRegisterListener2)\r
-               return wSP.UnRegisterListener2(oframe,nMessageId);\r
-       else\r
-               return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
-       var wSP=getStubPage();\r
-       if(wSP&&wSP!=this&&wSP.SendMessage)\r
-               return wSP.SendMessage(oMessage);\r
-       else\r
-               return false;\r
-}\r
-\r
-var gbWhProxy=true;\r
-\r
-var gbPreview=false;\r
-gbPreview=false; \r
-if (gbPreview)\r
-       document.oncontextmenu=contextMenu;\r
-\r
-function contextMenu()\r
-{\r
-       return false;\r
-}\r
diff --git a/doc/salome/gui/GUI/whres.xml b/doc/salome/gui/GUI/whres.xml
deleted file mode 100755 (executable)
index 89ee8b3..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version='1.0' encoding='windows-1252' ?>\r
-<resource>\r
-<item name="Prev" value="&lt;&lt;" />\r
-<item name="Hide" value="Hide" />\r
-<item name="SyncTocTooltip" value="Sync TOC" />\r
-<item name="InTopicSearchBtnText" value="Go" />\r
-<item name="FtsInputPrompt" value="Type in the word(s) to search for:" />\r
-<item name="Done" value="Done" />\r
-<item name="Logo/Author" value="Powered By" />\r
-<item name="MergeError1" value="The merged Help system" />\r
-<item name="JS_alert_cantLoadProject" value="Can't load project:" />\r
-<item name="Next" value="&gt;&gt;" />\r
-<item name="SyncToc" value="SyncToc" />\r
-<item name="MergeError2" value="is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system." />\r
-<item name="nls_body_instruction" value="Enter your question in the text box above, then click GO." />\r
-<item name="ToolBarSearchBtnText" value="Go" />\r
-<item name="SuggestViewNoFrameMessage" value="To view the Help system without frames click on this" />\r
-<item name="Hide_Navigation_Component" value="Hide Navigation Component" />\r
-<item name="FtsBtnText" value="Go" />\r
-<item name="TopicsFound" value="Topics Found" />\r
-<item name="LoadingContentsData" value="Loading, click here to cancel..." />\r
-<item name="Definition" value="Definition:" />\r
-<item name="CompletingContents" value="Completing Contents..." />\r
-<item name="Seperate" value="|" />\r
-<item name="GeneratedBy" value="Generated by" />\r
-<item name="PoweredBy" value="Powered by" />\r
-<item name="IndexAlphabetBookmarks" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" />\r
-<item name="Contents" value="Contents" />\r
-<item name="IndexSelectTopicLabel" value="Select a topic, then click Display" />\r
-<item name="Disabled Prev" value="&lt;&lt;" />\r
-<item name="Glossary" value="Glossary" />\r
-<item name="Search" value="Search" />\r
-<item name="CantSearch" value="Cannot search for that phrase." />\r
-<item name="LoadingIndex" value="Loading Index..." />\r
-<item name="LoadingData" value="Loading data, please wait..." />\r
-<item name="Show_Navigation_Component" value="Show Navigation Component" />\r
-<item name="Book" value="Book" />\r
-<item name="Disabled Next" value="&gt;&gt;" />\r
-<item name="nls_body_empty" value="Sorry, we were unable to find a good answer for your question." />\r
-<item name="nls_button_go_hint" value="Go Search" />\r
-<item name="Find" value="Find" />\r
-<item name="CantOpenURLorFile" value="Can't open URL or file" />\r
-<item name="Print" value="Print" />\r
-<item name="About" value="About" />\r
-<item name="Author" value="Author" />\r
-<item name="IndexSelectTopicTitle" value="Select a Topic" />\r
-<item name="Blank_topic_text" value="This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink." />\r
-<item name="BrowserLimitedMessage" value="Your browser does not support frames. We recommend that you update your browser to a version that supports frames." />\r
-<item name="LoadingTOCItem" value="Loading Table of Contents:" />\r
-<item name="Display" value="Display" />\r
-<item name="Cancel" value="Cancel" />\r
-<item name="IndexSelectTopicError" value="Please select a topic." />\r
-<item name="nls_edit_label" value="Type in your question:" />\r
-<item name="SearchLabel" value="Search" />\r
-<item name="RelateTopicListPrompt" value="Click a topic, then click Display." />\r
-<item name="NextTooltip" value="Next Topic" />\r
-<item name="JS_alert_colorlimitation" value="WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors." />\r
-<item name="TopicsNotFound" value="No Topics Found." />\r
-<item name="Show" value="Show" />\r
-<item name="PreTooltip" value="Previous Topic" />\r
-<item name="SearchPrompt" value="- Search -" />\r
-<item name="IndexBtnText" value="Go" />\r
-<item name="JS_alert_ProjectLoadingFail" value="Could not load correctly, please click Refresh." />\r
-<item name="LoadingContents" value="Loading contents, please wait..." />\r
-<item name="Term" value="Term:" />\r
-<item name="WebSearchButton" value="WebSearch" />\r
-<item name="Remote_Page" value="Remote Page" />\r
-<item name="WebSearch" value="WebSearch" />\r
-<item name="LoadingFTS" value="Reading Search Data..." />\r
-<item name="Index" value="Index" />\r
-<item name="JS_alert_ErrorInLoading" value="Error in Loading navigation component. Please regenerate WebHelp." />\r
-<item name="JS_alert_appletNotLoad" value="Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited." />\r
-<item name="IndexInputPrompt" value="Type in the keyword to find:" />\r
-<item name="Page" value="Page" />\r
-<item name="SuggestViewNoFrameMsg2" value="hyperlink." />\r
-<item name="nls_button_go_text" value="Go" />\r
-<item name="Searching" value="Searching..." />\r
-\r
-  <item name="English"   value="" />\r
-  <item name="langorder" value="0,1,2,3,4,5,6,7,8,40,41,42,43,44,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,38,45,46,47,48,49,50,33,51,52,53,88,54,34,55,56,115,119,121,123,125,126,127,128,129,130,57,58,89,90,91,59,60,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,61,62,63,64,66,67,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,68,69,70,71,27,114,28,82,170,85,112,109,110,65,113,223,86,213,29,255,30,31,80,81,83,84,111,36,37,79,229,222,87,212,32,254,251,39,72,97,98,99,100,73,101,74,102,133,93,103,35,104,75,105,92,122,124,76,106,107,108,77,120,199,94,116,117,118,78,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,95,197,230,230,230,230,246,227,224,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,96,197,230,230,230,230,246,227,250," />\r
-\r
-  <panes show="0">\r
-    <toc />\r
-    <fts />\r
-    <glossary />\r
-  </panes>\r
-\r
-  <stopwords>\r
-    <word name="a" />\r
-    <word name="about" />\r
-    <word name="after" />\r
-    <word name="against" />\r
-    <word name="all" />\r
-    <word name="also" />\r
-    <word name="among" />\r
-    <word name="an" />\r
-    <word name="and" />\r
-    <word name="are" />\r
-    <word name="as" />\r
-    <word name="at" />\r
-    <word name="be" />\r
-    <word name="became" />\r
-    <word name="because" />\r
-    <word name="been" />\r
-    <word name="between" />\r
-    <word name="but" />\r
-    <word name="by" />\r
-    <word name="can" />\r
-    <word name="come" />\r
-    <word name="do" />\r
-    <word name="during" />\r
-    <word name="each" />\r
-    <word name="early" />\r
-    <word name="for" />\r
-    <word name="form" />\r
-    <word name="found" />\r
-    <word name="from" />\r
-    <word name="had" />\r
-    <word name="has" />\r
-    <word name="have" />\r
-    <word name="he" />\r
-    <word name="her" />\r
-    <word name="his" />\r
-    <word name="however" />\r
-    <word name="in" />\r
-    <word name="include" />\r
-    <word name="into" />\r
-    <word name="is" />\r
-    <word name="it" />\r
-    <word name="its" />\r
-    <word name="late" />\r
-    <word name="later" />\r
-    <word name="made" />\r
-    <word name="many" />\r
-    <word name="may" />\r
-    <word name="me" />\r
-    <word name="med" />\r
-    <word name="more" />\r
-    <word name="most" />\r
-    <word name="near" />\r
-    <word name="no" />\r
-    <word name="non" />\r
-    <word name="not" />\r
-    <word name="of" />\r
-    <word name="on" />\r
-    <word name="only" />\r
-    <word name="or" />\r
-    <word name="other" />\r
-    <word name="over" />\r
-    <word name="several" />\r
-    <word name="she" />\r
-    <word name="some" />\r
-    <word name="such" />\r
-    <word name="than" />\r
-    <word name="that" />\r
-    <word name="the" />\r
-    <word name="their" />\r
-    <word name="then" />\r
-    <word name="there" />\r
-    <word name="these" />\r
-    <word name="they" />\r
-    <word name="this" />\r
-    <word name="through" />\r
-    <word name="to" />\r
-    <word name="under" />\r
-    <word name="until" />\r
-    <word name="use" />\r
-    <word name="was" />\r
-    <word name="we" />\r
-    <word name="were" />\r
-    <word name="when" />\r
-    <word name="where" />\r
-    <word name="which" />\r
-    <word name="who" />\r
-    <word name="with" />\r
-    <word name="you" />\r
-  </stopwords>\r
-\r
-  <stems>\r
-    <stem name="ed" />\r
-    <stem name="es" />\r
-    <stem name="er" />\r
-    <stem name="e" />\r
-    <stem name="s" />\r
-    <stem name="ingly" />\r
-    <stem name="ing" />\r
-    <stem name="ly" />\r
-  </stems>\r
-\r
-       <paneskin>\r
-               <background color="" img="" />\r
-               <font name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-               <toc>\r
-                       <background color="" img="" />\r
-                       <icons>\r
-                               <book open="whd_toc2.gif" close="whd_toc1.gif" />\r
-                               <item  local="whd_toc3.gif" remote="whd_toc4.gif" />\r
-                               <newbook open="whd_toc2.gif" close="whd_toc1.gif" />\r
-                               <newitem  local="whd_toc3.gif" remote="whd_toc4.gif" />\r
-                       </icons>\r
-                       <fonts>\r
-                               <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
-                       </fonts>\r
-                       <activebackgroundcolor attr="#cccccc" />\r
-                       <margin attr="0pt" />\r
-                       <indent attr="9pt" />\r
-               </toc>\r
-               <index>\r
-                       <form>\r
-                               <fonts>\r
-                                       <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               </fonts>\r
-                               <button normal="" hover="" />\r
-                               <editwith value="28" />\r
-                       </form>\r
-                       <background color="" img="" />\r
-                       <fonts>\r
-                               <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
-                               <empty name="Arial" size="9pt" color="#666666" style="normal" weight="normal" decoration="none" />\r
-                       </fonts>\r
-                       <activebackgroundcolor attr="#cccccc" />\r
-                       <margin attr="0pt" />\r
-                       <indent attr="9pt" />\r
-               </index>\r
-               <fts>\r
-                       <form>\r
-                               <fonts>\r
-                                       <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               </fonts>\r
-                               <button normal="" hover="" />\r
-                               <editwith value="28" />\r
-                       </form>\r
-                       <background color="" img="" />\r
-                       <fonts>\r
-                               <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
-                               <error name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                       </fonts>\r
-                       <activebackgroundcolor attr="#cccccc" />\r
-                       <margin attr="0pt" />\r
-                       <indent attr="9pt" />\r
-               </fts>\r
-               <glossary>\r
-                       <background color="" img="" />\r
-                       <fonts>\r
-                               <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
-                               <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
-                       </fonts>\r
-                       <activebackgroundcolor attr="#cccccc" />\r
-                       <margin attr="0pt" />\r
-                       <indent attr="9pt" />\r
-               </glossary>\r
-       </paneskin>\r
-</resource>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whskin_blank.htm b/doc/salome/gui/GUI/whskin_blank.htm
deleted file mode 100755 (executable)
index 43439a8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>\r
-<head>\r
-<title>Blank Page</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whskin_homepage.htm b/doc/salome/gui/GUI/whskin_homepage.htm
deleted file mode 100755 (executable)
index 774d93c..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var strDefaultTopic = "about:blank";\r
-var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:Noframeset\r
-var bNoApplet  = false;\r
-var strPaneDHTML  = "whd_nvp10.htm";           //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
-var strPaneApplet = "whd_nvp20.htm";\r
-var strPaneList   = "whgdata/whnvp30.htm";\r
-\r
-var strHTML = "";\r
-var strPane = "";\r
-var nViewFrameType = -1;\r
-\r
-function CMRServer()\r
-{\r
-  this.m_cAgents = new Array;\r
-}\r
-var cMRServer = new CMRServer;\r
-\r
-//figure out which mode is the best\r
-if (!window.gAgent)\r
-{\r
-       // low end browser, we don't even try to determine it.\r
-       document.location = "whnjs.htm";\r
-}\r
-else\r
-{\r
-       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)\r
-               document.location = "whnjs.htm";\r
-       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
-               document.location = "whnjs.htm";\r
-       else if (gbMac && gbIE4 && !gbIE5)\r
-               document.location = "whnjs.htm";\r
-       //figure out which mode is the best\r
-       else \r
-       {\r
-               nViewFrameType=nWebhelpNavPaneMode;\r
-               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
-               {\r
-                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
-                       if (gbNav4)                                                                             nViewFrameType = 2;\r
-                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
-                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
-                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
-                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
-                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
-                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
-                       if (gbMac)                                                                                      nViewFrameType = 3;\r
-                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
-                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
-               }\r
-       }\r
-}\r
-\r
-if (nViewFrameType!=-1)\r
-{\r
-       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
-       //The colordepth of the 16 color on Windows is 1. \r
-       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
-       {\r
-          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
-          nViewFrameType = 3;\r
-       }\r
-\r
-       //figure out which one is navpane\r
-       if (nViewFrameType == 1)\r
-               strPane = strPaneDHTML;\r
-       else if (nViewFrameType == 2)\r
-               strPane = strPaneApplet;\r
-       else \r
-               strPane = strPaneList;\r
-\r
-       var oParam = new Object();\r
-       oParam.sTopic = "";\r
-       var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);\r
-       if (SendMessage(oMsg) && oParam.sTopic != "")\r
-               strDefaultTopic =  oParam.sTopic;\r
-\r
-\r
-       if (nViewFrameType == 1)\r
-       {\r
-               //DHTML (iframe or xml based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";\r
-               strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";\r
-               strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
-       }\r
-       else if (nViewFrameType == 2)\r
-       {\r
-               //applet (xml based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";\r
-               strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";\r
-               strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
-       }\r
-       else if (nViewFrameType == 3)\r
-       {\r
-               //generic html (pure html based)\r
-               strHTML += "<frameset  id=\"whPfset\" cols=\"260,*\">";\r
-               strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\"  scrolling=\"no\"></frame>";\r
-               strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";\r
-               strHTML += "</frameset>";\r
-       } \r
-       else if (nViewFrameType == 4)\r
-       {\r
-               //no navipane at all\r
-               strHTML += "<frameset  id=\"whPfset\" border=\"0\" cols=\"100%,*\">";\r
-               strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";\r
-               strHTML += "</frameset>";\r
-       }\r
-\r
-       document.write(strHTML);\r
-\r
-       RegisterListener2(window, WH_MSG_SHOWPANE);\r
-       RegisterListener2(window, WH_MSG_HIDEPANE);\r
-       RegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-       window.onunload = window_unload;\r
-}\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(window, WH_MSG_SHOWPANE);\r
-       UnRegisterListener2(window, WH_MSG_HIDEPANE);\r
-       UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId = oMsg.nMessageId;\r
-       if (nMsgId == WH_MSG_SHOWPANE)\r
-       {\r
-               getElement("whPfset").cols = "260,*";\r
-               var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
-               SendMessage(onMsg);\r
-               onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");\r
-               if (SendMessage(onMsg))\r
-               {\r
-                       onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);\r
-                       SendMessage(onMsg);\r
-               }\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_HIDEPANE)\r
-       {\r
-               getElement("whPfset").cols = "0,*";\r
-               var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");\r
-               SendMessage(onMsg);\r
-               onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");\r
-               SendMessage(onMsg);\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_ISPANEVISIBLE)\r
-       {\r
-               var n = parseInt(getElement("whPfset").cols);\r
-               if (n > 0)\r
-               {\r
-                       oMsg.oParam.bVisible = true;\r
-               }\r
-               return false;\r
-       }\r
-       return true;\r
-}\r
-//-->\r
-</script>\r
-<body>\r
-<noscript>\r
-       <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>\r
-</noscript>\r
-</body>\r
-</html>\r
diff --git a/doc/salome/gui/GUI/whskin_info.htm b/doc/salome/gui/GUI/whskin_info.htm
deleted file mode 100755 (executable)
index 65b15aa..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>\r
-<head>\r
-<title>WebHelp 5.50 </title>\r
-<meta name="description" content="output from robohelp">\r
-<meta name="keywords" content="robohelp,webhelp,webhelp enterprise,roboinfo">\r
-</head>\r
-<body>\r
-<h1> WebHelp 5.50 System  Info </h1>\r
-<table>\r
-<tr><td> Start Page </td><td>index.htm</td></tr>\r
-<tr><td> Skin Name </td><td></td></tr>\r
-<tr><td> Generating Time </td><td>12:34 06/02/2006</td></tr>\r
-<tr><td> Language ID </td><td>1033</td></tr>\r
-<tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>\r
-<tr><td> Compile Build Version </td><td>13.10.606</td></tr>\r
-<tr><td> Product Name </td><td>WebHelp 5.50</td></tr>\r
-<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>\r
-<table>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whskin_pickup.htm b/doc/salome/gui/GUI/whskin_pickup.htm
deleted file mode 100755 (executable)
index 816fc70..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-<html>\r
-<head>\r
-<title>Select a Topic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gsBgColor = "#c0c0c0";\r
-var gsBgImage = "";\r
-var gsListBgColor = "white";\r
-var gsListBgImage = "";\r
-var gsMargin="0pt";\r
-var gsIndent="0pt";\r
-var gSelectedItem = -1;\r
-\r
-\r
-var goFont=null;\r
-var goHoverFont=null;\r
-var goTableFont=null;\r
-var gsABgColor="#cccccc";\r
-\r
-function setListBackground(sBgImage)\r
-{\r
-       if (sBgImage != null && sBgImage.length > 0)\r
-               gsListBgImage = sBgImage;\r
-}\r
-\r
-function setListBackgroundcolor(sBgColor)\r
-{\r
-       if (sBgColor != null && sBgColor.length > 0)\r
-               gsListBgColor = sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       if (sBgImage != null && sBgImage.length > 0)\r
-               gsBgImage = sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       if (sBgColor != null && sBgColor.length > 0)\r
-               gsBgColor = sBgColor;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
-       gsABgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if (sType == "Normal")\r
-               goFont=vFont;\r
-       if (sType == "Hover")\r
-               goHoverFont=vFont;\r
-       else if (sType == "Table")\r
-               goTableFont=vFont;\r
-}\r
-\r
-function fnOnload()\r
-{\r
-       if( window.dialogArguments != null )\r
-               fnLoadOptions( window.dialogArguments );\r
-       var items = getElementsByTag(document, "a");\r
-       if (items.length > 0)\r
-               items[0].focus();\r
-}\r
-\r
-var gaOpts = new Array();\r
-\r
-function selectOption(index)\r
-{\r
-       gSelectedItem = index;\r
-}\r
-\r
-function displayOption(index)\r
-{\r
-       if (index < gaOpts.length)\r
-       {\r
-               returnValue = new Object();\r
-               returnValue.m_url = gaOpts[index];\r
-       }\r
-       else\r
-               returnValue = null;\r
-\r
-       window.close();\r
-}\r
-\r
-function fnLoadOptions( cList )\r
-{\r
-       var sHTML = "<dl>";\r
-       for( var i=0;i <cList.length; i++)\r
-       {\r
-               sHTML += "<dt><nobr><a href=\"javascript:void(0);\" onclick=\"return false;\" onfocus=\"selectOption(";\r
-               sHTML += gaOpts.length + ");return false;\" ondblclick=\"displayOption(" + gaOpts.length;\r
-               sHTML += ");return false;\">"+ _textToHtml(cList[i].m_sName) + "</a></nobr></dt>";\r
-               gaOpts[gaOpts.length] = cList[i].m_sURL;\r
-       }\r
-       sHTML += "</dl>";\r
-       var oDivCon=getElement("divlist");\r
-       if(oDivCon)\r
-               oDivCon.innerHTML=sHTML;\r
-       return true;\r
-}\r
-\r
-function fnOK()\r
-{\r
-       displayOption(gSelectedItem);\r
-}\r
-\r
-function fnCancel()\r
-{\r
-       returnValue = null;             window.close();\r
-}\r
-\r
-function fnOnKeypress()\r
-{\r
-       switch( event.keyCode )\r
-       {\r
-       case 13:        // enter key\r
-               fnOK();\r
-               break;\r
-       case 27:        // escape key\r
-               fnCancel();\r
-               break;\r
-       }\r
-}\r
-\r
-function writeStyle(bMiniBar)\r
-{\r
-       var sStyle="";\r
-       sStyle+="<style type='text/css'>\n";\r
-       sStyle+="<!--\n";\r
-       sStyle+="body.clsbody\n";\r
-       sStyle+="{\n";\r
-       sStyle+="margin: 4px;\n";\r
-       sStyle+=getFontStyle(goTableFont);\r
-       sStyle+="background-attachment: fixed;\n";\r
-       sStyle+="};\n";\r
-       sStyle+="P.clsNDXTD\n";\r
-       sStyle+="{\n";\r
-       sStyle+="margin:0;\n";\r
-       sStyle+=getFontStyle(goTableFont);\r
-       sStyle+="};\n";\r
-       sStyle+="div.clslist\n";\r
-       sStyle+="{\n";\r
-       if (gsListBgImage)\r
-               sStyle+="background-image:url("+gsListBgImage+");\n";\r
-       else if (gsListBgColor)\r
-               sStyle+="background-color:"+gsListBgColor+";\n";\r
-       sStyle+=getFontStyle(goFont);\r
-       sStyle+="};\n";\r
-       sStyle+="BUTTON.clsNDXButton\n";\r
-       sStyle+="{\n";\r
-       sStyle+=getFontStyle(goTableFont);\r
-       sStyle+="background-color: transparent;\n";\r
-       sStyle+="};\n";\r
-       sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
-       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
-       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
-       sStyle+="</style>\n";\r
-       document.write(sStyle);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(document.body)\r
-       {\r
-               if(gsBgImage&&gsBgImage.length>0)\r
-               {\r
-                       document.body.background=gsBgImage;\r
-               }\r
-               if(gsBgColor&&gsBgColor.length>0)\r
-               {\r
-                       document.body.bgColor=gsBgColor;\r
-               }\r
-       }\r
-       fnOnload();\r
-       window_onResize();\r
-}\r
-\r
-function window_onResize()\r
-{\r
-       var oDiv = getElement("divlist");\r
-       var oTitle = getElement("p_title");\r
-       var oButton = getElement("tb_button");\r
-       if (oDiv && oTitle && oButton)\r
-       {\r
-               oDiv.style.height = document.body.offsetHeight - oTitle.offsetHeight - oButton.offsetHeight - 8;\r
-       }\r
-}\r
-goTableFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-goHoverFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
-\r
-\r
-\r
-\r
-setFont("Table", "Arial","9pt","#000000","normal","normal","none");\r
-\r
-\r
-setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-setActiveBgColor("#cccccc");\r
-\r
-window.onload=window_OnLoad;\r
-window.onresize = window_onResize;\r
-writeStyle();\r
-//-->\r
-</script>\r
-</head>\r
-\r
-<body class="clsbody" scroll="no" onkeypress="fnOnKeypress()">\r
-<p id="p_title" class="clsNDXTD"><nobr>Select a topic, then click Display</nobr></p>\r
-<div id="divlist" class="clslist" style="margin:2px;position: relative;overflow:auto;width:100%;border-style:inset;border-width:2">\r
-</div>\r
-<table id="tb_button" width="100%">\r
-  <tr>\r
-    <td width="100%" align="center"><button class="clsNDXButton" name="btnOK" onclick="fnOK()">Display</button>&#32;&#32;&#32;<button class="clsNDXButton" name="btnCancel" onclick="fnCancel()">Cancel</button></td>\r
-  </tr>\r
-</table>\r
-\r
-</body>\r
-\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whskin_tw.htm b/doc/salome/gui/GUI/whskin_tw.htm
deleted file mode 100755 (executable)
index 69737fa..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<html>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsTopic="";\r
-\r
-if (location.hash.length > 1)\r
-{\r
-       var nPos = location.hash.indexOf(">>");\r
-       if (nPos>1)\r
-       {\r
-               gsTopic = location.hash.substring(1, nPos);\r
-               parseParam(location.hash.substring(nPos+2));\r
-       }\r
-       else\r
-               gsTopic = location.hash.substring(1);\r
-}\r
-\r
-\r
-       var strHtml="";\r
-       strHtml+="<frameset rows=\'100%,*\'>";\r
-       strHtml+="<frame name=\'topicwindow\' src=\'" + gsTopic +"\'></frame>";\r
-       strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
-       strHtml+="</frameset>";\r
-       document.write(strHtml);\r
-\r
-function parseParam(sParam)\r
-{\r
-       if (sParam)\r
-       {\r
-               var nBPos=0;\r
-               do \r
-               {\r
-                       var nPos=sParam.indexOf(">>", nBPos);\r
-                       if (nPos!=-1)\r
-                       {\r
-                               if (nPos>0)\r
-                               {\r
-                                       var sPart=sParam.substring(nBPos, nPos);\r
-                                       parsePart(sPart);\r
-                               }\r
-                               nBPos = nPos + 2;\r
-                       }\r
-                       else\r
-                       {\r
-                               var sPart=sParam.substring(nBPos);\r
-                               parsePart(sPart);\r
-                               break;\r
-                       }\r
-               } while(nBPos < sParam.length);\r
-       }       \r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
-       if(sPart.toLowerCase().indexOf("cap=")==0)\r
-       {\r
-               document.title=_browserStringToText(sPart.substring(4));\r
-       }\r
-}\r
-//-->\r
-</script>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whstart.js b/doc/salome/gui/GUI/whstart.js
deleted file mode 100755 (executable)
index ec5af6f..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-//     WebHelp 5.10.003\r
-RegisterListener2(this, WH_MSG_GETSTARTFRAME);\r
-RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC);\r
-RegisterListener2(this, WH_MSG_MINIBARORDER);\r
-RegisterListener2(this, WH_MSG_TOOLBARORDER);\r
-RegisterListener2(this, WH_MSG_ISSEARCHSUPPORT);\r
-RegisterListener2(this, WH_MSG_ISSYNCSSUPPORT);\r
-RegisterListener2(this, WH_MSG_ISAVENUESUPPORT);\r
-RegisterListener2(this, WH_MSG_GETPANETYPE);\r
-RegisterListener2(this, WH_MSG_GETPANES);\r
-RegisterListener2(this, WH_MSG_RELOADNS6);\r
-RegisterListener2(this, WH_MSG_GETCMD);\r
-RegisterListener2(this, WH_MSG_GETPANE);\r
-RegisterListener2(this, WH_MSG_GETDEFPANE);\r
-\r
-if (gbNav6)\r
-{\r
-       var gnReload=0;\r
-       setTimeout("delayReload();",5000);\r
-}\r
-\r
-function delayReload()\r
-{\r
-       if (!(this.cMRServer && cMRServer.m_strVersion))\r
-       {\r
-               if(gnReload!=2)\r
-               {\r
-                       if(nViewFrameType&&nViewFrameType==1)\r
-                               document.location=document.location;\r
-               }\r
-       }\r
-}\r
-\r
-var gsToolbarOrder = "";\r
-var gsMinibarOrder = "";\r
-\r
-var gsTopic = "kernel/introduction.htm";\r
-var PANE_OPT_SEARCH = 1;\r
-var PANE_OPT_BROWSESEQ = 2;\r
-var gnOpts=-1;\r
-var gnCmd=-1;\r
-var gnPans=2;\r
-var gsBtns="invalid";\r
-var gsDefaultBtn="invalid";\r
-var gbHasTitle=false;\r
-\r
-if (location.hash.length > 1)\r
-{\r
-       var sParam = location.hash;\r
-       if (sParam.indexOf("#<") == 0)\r
-       {\r
-               document.location = "whcsh_home.htm#" + sParam.substring(2);\r
-       }\r
-       else if (sParam.indexOf("#>>") == 0)\r
-       {\r
-               parseParam(sParam.substring(3));\r
-               sParam = "#" + gsTopic + sParam.substring(1);\r
-       }\r
-       else\r
-       {\r
-               var nPos = sParam.indexOf(">>");\r
-               if (nPos>1)\r
-               {\r
-                       gsTopic = sParam.substring(1, nPos);\r
-                       parseParam(sParam.substring(nPos+2));\r
-               }\r
-               else\r
-                       gsTopic = sParam.substring(1);\r
-       }\r
-       if (gnPans == 1 && gsTopic)\r
-       {\r
-               var strURL=location.href;\r
-               if (location.hash)\r
-               {\r
-                       var nPos=location.href.indexOf(location.hash);\r
-                       strURL=strURL.substring(0, nPos);\r
-               }\r
-               if (gbHasTitle)\r
-                       document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam;\r
-               else\r
-                       document.location=_getPath(strURL)+ gsTopic;\r
-       }\r
-}\r
-\r
-function parseParam(sParam)\r
-{\r
-       if (sParam)\r
-       {\r
-               var nBPos=0;\r
-               do \r
-               {\r
-                       var nPos=sParam.indexOf(">>", nBPos);\r
-                       if (nPos!=-1)\r
-                       {\r
-                               if (nPos>0)\r
-                               {\r
-                                       var sPart=sParam.substring(nBPos, nPos);\r
-                                       parsePart(sPart);\r
-                               }\r
-                               nBPos = nPos + 2;\r
-                       }\r
-                       else\r
-                       {\r
-                               var sPart=sParam.substring(nBPos);\r
-                               parsePart(sPart);\r
-                               break;\r
-                       }\r
-               } while(nBPos < sParam.length);\r
-       }       \r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
-       if(sPart.toLowerCase().indexOf("cmd=")==0)\r
-       {\r
-               gnCmd=parseInt(sPart.substring(4));\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("cap=")==0)\r
-       {\r
-               document.title=_browserStringToText(sPart.substring(4));\r
-               gbHasTitle=true;\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("pan=")==0)\r
-       {\r
-               gnPans=parseInt(sPart.substring(4));\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("pot=")==0)\r
-       {\r
-               gnOpts=parseInt(sPart.substring(4));\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("pbs=")==0)\r
-       {\r
-               var sRawBtns = sPart.substring(4);\r
-               var aBtns = sRawBtns.split("|");\r
-               for (var i=0;i<aBtns.length;i++)\r
-               {\r
-                       aBtns[i] = transferAgentNameToPaneName(aBtns[i]);\r
-               }\r
-               gsRawBtns = aBtns.join("|");\r
-       }\r
-       else if(sPart.toLowerCase().indexOf("pdb=")==0)\r
-       {\r
-               gsDefaultBtn=transferAgentNameToPaneName(sPart.substring(4));\r
-       }\r
-}\r
-\r
-function setToolbarOrder(sOrder)\r
-{\r
-       gsToolbarOrder = sOrder;\r
-}\r
-\r
-function setMinibarOrder(sOrder)\r
-{\r
-       gsMinibarOrder = sOrder;\r
-}\r
-\r
-function onSendMessageX(oMsg)\r
-{\r
-       var nMsgId = oMsg.nMessageId;\r
-       if (nMsgId == WH_MSG_GETSTARTFRAME)\r
-       {\r
-               oMsg.oParam.oFrame = this;\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_GETDEFAULTTOPIC)\r
-       {\r
-               if (this.cMRServer && cMRServer.m_strVersion)\r
-               {\r
-                       if (cMRServer.m_strURLTopic);\r
-                       {\r
-                               oMsg.oParam.sTopic = cMRServer.m_strURLTopic;\r
-                               return false;\r
-                       }\r
-\r
-               }\r
-               oMsg.oParam.sTopic = gsTopic;\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_TOOLBARORDER)\r
-       {\r
-               var oMsg1 = new whMessage(WH_MSG_GETPANES, this, 1, null);\r
-               if (SendMessage(oMsg1))\r
-               {\r
-                       if (oMsg1.oParam)\r
-                       {\r
-                               if (this.cMRServer && cMRServer.m_strVersion)\r
-                               {\r
-                                       var aToolbarOrder=cMRServer.m_strAgentList.split(";");\r
-                                       var i=0;\r
-                                       for (i=0;i<aToolbarOrder.length;i++)\r
-                                               aToolbarOrder[i]=transferANToPN2(aToolbarOrder[i]);\r
-                                       aToolbarOrder[aToolbarOrder.length] = "blankblock";\r
-                                       if (cMRServer.m_bShowSearchInput)\r
-                                       {\r
-                                               aToolbarOrder[aToolbarOrder.length] = "searchform";\r
-                                       }\r
-                                       aToolbarOrder[aToolbarOrder.length] = "banner";\r
-                                       var aToolbarOrderNew = new Array();\r
-                                       for (i=0;i<aToolbarOrder.length;i++)\r
-                                       {\r
-                                               if (isAPane(aToolbarOrder[i]))\r
-                                               {\r
-                                                       if (oMsg1.oParam.aPanes && oMsg1.oParam.aPanes.length)\r
-                                                       {\r
-                                                               for (var j=0;j<oMsg1.oParam.aPanes.length;j++)\r
-                                                               {\r
-                                                                       if (aToolbarOrder[i] == oMsg1.oParam.aPanes[j].sPaneName)\r
-                                                                       {\r
-                                                                               aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
-                                                                               break;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                               else\r
-                                                       aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
-                                       }\r
-                                       oMsg.oParam = aToolbarOrderNew.join("|");\r
-                                       return false;\r
-                               }\r
-                       }\r
-               }\r
-               var sParam="";\r
-               if (gsBtns!="invalid")\r
-                       sParam=gsBtns+"|blankblock|banner";\r
-               else\r
-                       sParam = gsToolbarOrder;\r
-\r
-               if (gnOpts!=-1)\r
-               {\r
-                       var nPosForm=sParam.indexOf("|searchform|");\r
-                       if (gnOpts&PANE_OPT_SEARCH)\r
-                       {\r
-                               if (nPosForm == -1 && sParam.indexOf("|fts|") != -1)\r
-                               {\r
-                                       var nPos=sParam.indexOf("banner");\r
-                                       if (nPos!=-1)\r
-                                       {\r
-                                               sParam=sParam.substring(0, nPos) + "searchform|" + sParam.substring(nPos);\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if (nPosForm!=-1)\r
-                               {\r
-                                       sParam=sParam.substring(0,nPosForm) + sParam.substring(nPosForm+11);\r
-                               }\r
-                       }\r
-               }\r
-               oMsg.oParam=sParam;\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_MINIBARORDER)\r
-       {\r
-               var sMinParam=gsMinibarOrder;\r
-               if (gnOpts!=-1)\r
-               {\r
-                       var nPosBro=gsMinibarOrder.indexOf("avprev|avnext");\r
-                       if (gnOpts&PANE_OPT_BROWSESEQ)\r
-                       {\r
-                               if (nPosBro==-1)\r
-                               {\r
-                                       sMinParam ="avprev|avnext|" + gsMinibarOrder;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if (nPosBro!=-1)\r
-                               {\r
-                                       if (nPosBro!=0)\r
-                                               sMinParam=gsMinibarOrder.substring(0, nPosBro) + gsMinibarOrder.substring(nPosBro+14);\r
-                                       else\r
-                                               sMinParam=gsMinibarOrder.substring(14);\r
-                               }\r
-                       }\r
-               }\r
-               oMsg.oParam = sMinParam;\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_ISSYNCSSUPPORT)\r
-       {\r
-               if (this.cMRServer && cMRServer.m_strVersion)\r
-               {\r
-                       if (cMRServer.m_bShowSync)\r
-                               oMsg.oParam=true;\r
-                       else\r
-                               oMsg.oParam=false;\r
-                       return false;\r
-               }\r
-               else\r
-               {\r
-                       if(typeof(nViewFrameType)!="undefined")\r
-                       {\r
-                               oMsg.oParam= (nViewFrameType < 3);\r
-                               return false;\r
-                       }\r
-               }\r
-       }\r
-       else if (nMsgId == WH_MSG_ISAVENUESUPPORT)\r
-       {\r
-               if (this.cMRServer && cMRServer.m_strVersion)\r
-               {\r
-                       if (cMRServer.m_bShowBrowseSequences)\r
-                               oMsg.oParam=true;\r
-                       else\r
-                               oMsg.oParam=false;\r
-               }\r
-               else\r
-               {\r
-                       oMsg.oParam=true;\r
-               }\r
-               return false;\r
-       }\r
-       else if (nMsgId == WH_MSG_ISSEARCHSUPPORT)\r
-       {\r
-               if(typeof(nViewFrameType)!="undefined")\r
-               {\r
-                       oMsg.oParam= (nViewFrameType < 3);\r
-                       return false;\r
-               }\r
-       }\r
-       else if (nMsgId == WH_MSG_GETPANETYPE)\r
-       {\r
-               if(typeof(nViewFrameType)!="undefined")\r
-               {\r
-                       var oPaneInfo = new Object();\r
-                       oPaneInfo.nType = nViewFrameType;\r
-                       oPaneInfo.sPaneURL = strPane;\r
-                       oMsg.oParam = oPaneInfo;\r
-                       return false;\r
-               }\r
-       }\r
-       else if (nMsgId == WH_MSG_GETPANES)\r
-       {\r
-               if (this.cMRServer && cMRServer.m_strVersion)\r
-               {\r
-                       var oPanes = new Object();\r
-                       var aAgentNames = null;\r
-                       if (cMRServer.m_strDefAgent)\r
-                               oPanes.sDefault = transferAgentNameToPaneName(cMRServer.m_strDefAgent);\r
-\r
-                       aPanes = new Array();\r
-                       for(var i=0; i< cMRServer.m_cAgents.length; i++)\r
-                       {\r
-                               var nCur = aPanes.length;\r
-                               aPanes[nCur] = new Object();\r
-                               aPanes[nCur].sPaneName = transferAgentNameToPaneName(cMRServer.m_cAgents[i].m_strID);\r
-                               aPanes[nCur].sPaneURL = cMRServer.m_cAgents[i].m_strURL;\r
-                       }\r
-                       oPanes.aPanes = aPanes;\r
-                       oMsg.oParam = oPanes;\r
-                       return false;\r
-               }\r
-               else\r
-               {\r
-                       oMsg.oParam = null;\r
-                       return false;\r
-               }\r
-       }\r
-       else if(nMsgId==WH_MSG_RELOADNS6)\r
-       {\r
-               if(gbNav6)\r
-                       gnReload++;\r
-               return false;\r
-       }\r
-       else if(nMsgId==WH_MSG_GETCMD)\r
-       {\r
-               oMsg.oParam=gnCmd;\r
-               return false;\r
-       }\r
-       else if(nMsgId==WH_MSG_GETPANE)\r
-       {\r
-               if (gsBtns!="invalid" && oMsg.oParam.sName)\r
-               {\r
-                       if(gsBtns.indexOf(oMsg.oParam.sName) != -1)\r
-                               oMsg.oParam.bEnable=true;\r
-                       else\r
-                               oMsg.oParam.bEnable=false;\r
-               }\r
-               else\r
-                       oMsg.oParam.bEnable=true;\r
-               return false;\r
-       }\r
-       else if(nMsgId==WH_MSG_GETDEFPANE)\r
-       {\r
-               if (gsDefaultBtn!="invalid")\r
-               {\r
-                       oMsg.oParam=gsDefaultBtn;\r
-               }\r
-               return false;\r
-       }\r
-       return true;\r
-}\r
-\r
-function transferANToPN2(sAN)\r
-{\r
-       if (sAN =="toc")\r
-               return "toc";\r
-       else if (sAN =="ndx")\r
-               return "idx";\r
-       else if (sAN =="nls")\r
-               return "fts";\r
-       else if (sAN =="gls")\r
-               return "glo";\r
-       else if (sAN =="WebSearch")\r
-               return "websearch";\r
-       else if (sAN.indexOf("custom_")==0);\r
-               return "custom" + sAN.substring(7);\r
-       return sAN;\r
-}\r
-\r
-function transferAgentNameToPaneName(sAgentName)\r
-{\r
-       if (sAgentName =="toc")\r
-               return "toc";\r
-       else if (sAgentName =="ndx")\r
-               return "idx";\r
-       else if (sAgentName =="nls")\r
-               return "fts";\r
-       else if (sAgentName =="gls")\r
-               return "glo";\r
-       return "";\r
-}\r
-\r
-function isAPane(sPaneName)\r
-{\r
-       if (sPaneName == "toc" || sPaneName == "idx" || sPaneName == "fts" || sPaneName == "glo")\r
-               return true;\r
-       else\r
-               return false;\r
-}
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whstub.js b/doc/salome/gui/GUI/whstub.js
deleted file mode 100755 (executable)
index a43c6e1..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-//     WebHelp 5.10.002\r
-window.whname="wh_stub";\r
-function getframehandle(frames,framename)\r
-{\r
-       var frame=null;\r
-       if(null==frames) return null;\r
-       for(var i=0;i<frames.length;i++)\r
-       {\r
-               if(typeof(frames[i].name)!="unknown")\r
-               {\r
-                       if(frames[i].name==framename)\r
-                               return frames[i];\r
-               }\r
-               if(frames[i].frames.length>0)\r
-               {\r
-                       frame=getframehandle(frames[i].frames,framename);\r
-                       if(null!=frame)\r
-                               return frame;\r
-               }\r
-       }\r
-       return frame;\r
-}\r
-\r
-function AddToArray(arr,obj)\r
-{\r
-       var bFound=false;\r
-       for(var i=0;i<arr.length;i++){\r
-               if(arr[i]==obj){\r
-                       bFound=true;\r
-                       break;\r
-               }\r
-               else if(arr[i]==null){\r
-                       break;\r
-               }\r
-       }\r
-       if(!bFound) arr[i]=obj;\r
-}\r
-\r
-var gArrayRegistedMessage=new Array();\r
-var gArrayCompoentsArray=new Array();\r
-\r
-function GetComponentsArray(nMessageId)\r
-{\r
-       var len=gArrayRegistedMessage.length;\r
-       for(var i=0;i<len;i++)\r
-       {\r
-               if(gArrayRegistedMessage[i]==nMessageId){\r
-                       if(gArrayCompoentsArray.length>i)\r
-                               return gArrayCompoentsArray[i];\r
-                       else\r
-                               return null;\r
-               }\r
-       }\r
-       return null;\r
-}\r
-\r
-function CreateComponentsArray(nMessageId)\r
-{\r
-       var len=gArrayRegistedMessage.length;\r
-       gArrayRegistedMessage[len]=nMessageId;\r
-       gArrayCompoentsArray[len]=new Array();\r
-       return gArrayCompoentsArray[len];\r
-}\r
-\r
-function listener(sName,oWindow)\r
-{\r
-       this.sName=sName;\r
-       this.oWindow=oWindow;\r
-}\r
-\r
-function RegisterListener(windowName,nMessageId)\r
-{\r
-       var arrayComponents=GetComponentsArray(nMessageId);\r
-       if(arrayComponents==null)\r
-               arrayComponents=CreateComponentsArray(nMessageId);\r
-       \r
-       if(arrayComponents!=null)\r
-       {\r
-               for (var i=0;i<arrayComponents.length;i++)\r
-               {\r
-                       if (arrayComponents[i].sName == windowName)\r
-                               return false;\r
-               }\r
-               var oListener=new listener(windowName,null);\r
-               AddToArray(arrayComponents,oListener);\r
-               return true;\r
-       }\r
-       else\r
-               return false;\r
-}\r
-\r
-function RegisterListener2(oWindow,nMessageId)\r
-{\r
-       var arrayComponents=GetComponentsArray(nMessageId);\r
-       if(arrayComponents==null)\r
-               arrayComponents=CreateComponentsArray(nMessageId);\r
-       \r
-       if(arrayComponents!=null)\r
-       {\r
-               var oListener=new listener("",oWindow);\r
-               AddToArray(arrayComponents,oListener);\r
-               return true;\r
-       }\r
-       else\r
-               return false;\r
-}\r
-\r
-function UnRegisterListener2(oWindow,nMessageId)\r
-{\r
-       var arrayComponents=GetComponentsArray(nMessageId);\r
-       if(arrayComponents!=null)\r
-       {\r
-               for(var i=0;i<arrayComponents.length;i++)\r
-               {\r
-                       if(arrayComponents[i].oWindow==oWindow)\r
-                       {\r
-                               removeItemFromArray(arrayComponents,i);\r
-                               return true;\r
-                       }\r
-               }\r
-       }\r
-       else\r
-               return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
-       var bDelivered=false;\r
-       var arrayComponents=GetComponentsArray(oMessage.nMessageId);\r
-       if(arrayComponents!=null&&arrayComponents.length>0){\r
-               for(var i=0;i<arrayComponents.length;i++)\r
-               {\r
-                       if(null!=arrayComponents[i])\r
-                       {\r
-                               var pFrame;\r
-                               if(arrayComponents[i].oWindow==null)\r
-                                       pFrame=getframehandle(frames,arrayComponents[i].sName);\r
-                               else\r
-                                       pFrame=arrayComponents[i].oWindow;\r
-                               if(null!=pFrame)\r
-                               {\r
-                                       if(pFrame.onSendMessageX)\r
-                                       {\r
-                                               bDelivered=true;\r
-                                               if(!pFrame.onSendMessageX(oMessage))\r
-                                                       break;\r
-                                       }\r
-                                       if(pFrame.onSendMessage)\r
-                                       {\r
-                                               bDelivered=true;\r
-                                               if(!pFrame.onSendMessage(oMessage))\r
-                                                       break;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return bDelivered;\r
-}
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whtdhtml.htm b/doc/salome/gui/GUI/whtdhtml.htm
deleted file mode 100755 (executable)
index 8408b33..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<html>\r
-<head>\r
-<title>Table of contents</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whthost.js"></script>\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-if (window.gbWhTHost)\r
-{\r
-       \r
-       \r
-       setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-       setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-       setActiveBgColor("#cccccc");\r
-       setMargin("0pt");\r
-       setIndent("9pt");\r
-       setIcon("BookOpen","whd_toc2.gif");\r
-       setIcon("BookClose","whd_toc1.gif");\r
-       setIcon("Item","whd_toc3.gif");\r
-       setIcon("RemoteItem","whd_toc4.gif");\r
-       setIcon("NewBookOpen","whd_toc2.gif");\r
-       setIcon("NewBookClose","whd_toc1.gif");\r
-       setIcon("NewItem","whd_toc3.gif");\r
-       setIcon("NewRemoteItem","whd_toc4.gif");\r
-       TocWriteClassStyle();\r
-       TocWriteFixedWidth(true,400);\r
-}\r
-else\r
-       document.location.reload();\r
-//-->\r
-</script>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white" scroll="auto">\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-TocWriteFixedWidth(false,400);\r
-TocInitPage();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whthost.js b/doc/salome/gui/GUI/whthost.js
deleted file mode 100755 (executable)
index 54ddc9a..0000000
+++ /dev/null
@@ -1,1504 +0,0 @@
-//     WebHelp 5.10.007\r
-var gaHSLoad=new Array();\r
-var gnMinIdx=0;\r
-var gnInsIdx=-1;\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading, click here to cancel...";\r
-var gaProj=null;\r
-var gaTocs=new Array();\r
-var goChunk=null;\r
-var gbReady=false;\r
-var gbToc=false;\r
-var gbXML=false;\r
-var gaRoot=new Array();\r
-var gnCC=-1;\r
-var gsTP="";\r
-var gaBTPs="";\r
-var gsCTPath="";\r
-var gnLT=-1;\r
-var gsPathSplit="\n";\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goFont=null;\r
-var goHFont=null;\r
-\r
-var gsMargin="0pt";\r
-var gsIndent="15pt";\r
-var gsABgColor="#cccccc";\r
-\r
-var giBookClose="";\r
-var giBookOpen="";\r
-var giBookItem="";\r
-var giURLItem="";\r
-var giNewBookClose="";\r
-var giNewBookOpen="";\r
-var giNewBookItem="";\r
-var giNewURLItem="";\r
-var gnImages=0;\r
-var gnLoadedImages=0;\r
-var gaImgs=new Array();\r
-var gbLoadData=false;\r
-var gobj=null;\r
-var gaTocsNs61Fix=null;\r
-var gbWhTHost=false;\r
-var gBookItems=new Array();\r
-var gInSync=false;\r
-var gbLData=false;\r
-var gbNeedFillStub=false;\r
-var gbLoadToc=false;\r
-\r
-function chunkInfoQueue()\r
-{\r
-       this.aContent=new Array();\r
-       this.inQueue=function(cInfo)\r
-       {\r
-               this.aContent[this.aContent.length]=cInfo;\r
-       }\r
-       this.deQueue=function()\r
-       {\r
-               var cInfo=null;\r
-               if(this.aContent.length>0)\r
-               {\r
-                       cInfo=this.aContent[0];\r
-                       for(var i=1;i<this.aContent.length;i++)\r
-                               this.aContent[i-1]=this.aContent[i];\r
-                       this.aContent.length--;\r
-               }\r
-               return cInfo;\r
-       }\r
-       this.length=function()\r
-       {\r
-               return this.aContent.length;\r
-       }\r
-}\r
-\r
-var gchunkRequestQueue=new chunkInfoQueue();\r
-\r
-function chunkInfo(nIdx, bLocal)\r
-{\r
-       this.nIdx=nIdx;\r
-       this.bLocal=bLocal;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
-       gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
-       gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       if(sType=="Normal") goFont=vFont;\r
-       else if(sType=="Hover") goHFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}\r
-\r
-function setMargin(sMargin){gsMargin=sMargin;}\r
-\r
-function setIndent(sIndent){gsIndent=sIndent;}\r
-\r
-function setIcon(sType,sURL)\r
-{\r
-       if(sType=="BookOpen")\r
-               giBookOpen=sURL;\r
-       else if(sType=="BookClose")\r
-               giBookClose=sURL;\r
-       else if(sType=="Item")\r
-               giBookItem=sURL;\r
-       else if(sType=="RemoteItem")\r
-               giURLItem=sURL;\r
-       else if(sType=="NewBookClose")\r
-               giNewBookClose=sURL;\r
-       else if(sType=="NewBookOpen")\r
-               giNewBookOpen=sURL;\r
-       else if(sType=="NewItem")\r
-               giNewBookItem=sURL;\r
-       else if(sType=="NewRemoteItem")\r
-               giNewURLItem=sURL;              \r
-}\r
-\r
-function bookItem(sTarget,sURL)\r
-{\r
-       if(sTarget)\r
-               this.sTarget=sTarget;\r
-       else\r
-               this.sTarget="bsscright";\r
-       this.sURL=sURL;\r
-}\r
-\r
-function addBookItem(sBookId,sTarget,sURL)\r
-{\r
-       gBookItems[sBookId]=new bookItem(sTarget,sURL);         \r
-}\r
-\r
-function tocChunk(sPPath,sDPath)\r
-{\r
-       this.sPPath=sPPath;\r
-       this.sDPath=sDPath;\r
-       this.nMI=-1;\r
-       this.aTocs=null;\r
-}\r
-\r
-function addTocChunk(sPPath,sDPath)\r
-{\r
-       var oChunk=new tocChunk(sPPath,sDPath);\r
-       gaTocs[gaTocs.length]=oChunk;\r
-       return oChunk;\r
-}\r
-\r
-function isHSLoad(nIdx)\r
-{\r
-       for(var i=0;i<gaHSLoad.length;i++)\r
-               if(gaHSLoad[i]==nIdx)\r
-                       return true;\r
-       return false;\r
-}\r
-\r
-function setHSLoad(nIdx)\r
-{\r
-       if(!isHSLoad(nIdx))\r
-       {\r
-               var len=gaHSLoad.length;\r
-               for(var i=0;i<len;i++)\r
-                       if(gaHSLoad[i]==-1)\r
-                       {\r
-                               gaHSLoad[i]=nIdx;\r
-                               return;\r
-                       }\r
-               gaHSLoad[len]=nIdx;\r
-       }\r
-}\r
-\r
-function setHSUnLoad(nIdx)\r
-{\r
-       if(isHSLoad(nIdx))\r
-       {\r
-               for(var i=0;i<gaHSLoad.length;i++)\r
-                       if(gaHSLoad[i]==nIdx)\r
-                       {\r
-                               gaHSLoad[i]=-1;\r
-                               return;\r
-                       }\r
-       }\r
-}\r
-\r
-function removeLoadingDiv()\r
-{\r
-       var eLoadingDiv=getElement(gsLoadingDivID);\r
-       if(eLoadingDiv)\r
-               removeThis(eLoadingDiv);\r
-}\r
-\r
-function checkBookItem(nIdx)\r
-{\r
-       if(!gInSync)\r
-       {\r
-               var sBookId=getBookId(nIdx);\r
-               if(gBookItems[sBookId])\r
-               {\r
-                       window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);\r
-               }\r
-       }\r
-}\r
-\r
-function insertBookItems(nIdx,num)\r
-{\r
-       checkBookItem(nIdx);\r
-       var sChildBookId=getCBId(nIdx);\r
-       var eChildDiv=getElement(sChildBookId);\r
-       if(eChildDiv){\r
-               if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||\r
-                       (eChildDiv.all&&eChildDiv.all.length==0)){\r
-                       var sHTML=writeBookItems(nIdx,num);\r
-                       eChildDiv.innerHTML=sHTML;\r
-                       setTimeout("syncInit()",1);\r
-               }\r
-       }\r
-       ExpandIt(nIdx);\r
-}\r
-\r
-function isBookEmpty(nIdx)\r
-{\r
-       var num=getItemContentsNum(nIdx);\r
-       if (num>0)\r
-       {\r
-               var nCIdx=0;\r
-               do {\r
-                       nCIdx++;\r
-                       var i=nIdx+nCIdx;\r
-                       var nItemType=getItemType(i);\r
-                       if(nItemType==1){\r
-                               if (!isBookEmpty(i))\r
-                                       return false;\r
-                       }\r
-                       else if(nItemType==4){\r
-                               var     sSrc=getRefURL(i);\r
-                               var nProj=getProject(sSrc);\r
-                               if(nProj!=-1){\r
-                                       sSrc=gaRoot[nProj].sToc;\r
-                                       if(sSrc)\r
-                                               return false;\r
-                               }\r
-                       }\r
-                       else if(nItemType==2||nItemType==16||nItemType==8)\r
-                               return false;\r
-               } while(nCIdx<num);\r
-       }\r
-       return true;\r
-}\r
-\r
-function writeBook(nIdx)\r
-{\r
-       var sIcon=getBookImage(nIdx,true);\r
-       var sName=_textToHtml(getItemName(nIdx));\r
-       sIcon=_textToHtml_nonbsp(sIcon);\r
-       \r
-       var nType=getItemType(nIdx);\r
-       var bLocal=(nType==1);\r
-       var bLocalProject=(nType!=4);\r
-       \r
-       var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";\r
-       if(bLocal)\r
-       {\r
-               if (!isBookEmpty(nIdx))\r
-               {\r
-                       sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
-                       sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
-                       sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
-                       sHTML+="&nbsp;"+sName+"</a></nobr></p></div>";\r
-                       var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
-                       if(sURL!="")\r
-                               addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
-                       sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
-               }\r
-               else\r
-                       sHTML="";\r
-       }\r
-       else\r
-       {\r
-               sHTML+="stub></div>";\r
-               gbNeedFillStub=true;\r
-               setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
-       }\r
-       return sHTML;\r
-}\r
-\r
-function checkFillStub()\r
-{\r
-       if(!gbLData)\r
-       {\r
-               if(gchunkRequestQueue.length()>0)\r
-               {\r
-                       var cInfo=gchunkRequestQueue.deQueue();\r
-                       if(cInfo)\r
-                       {\r
-                               fillStub(cInfo.nIdx,cInfo.bLocal);\r
-                               return;\r
-                       }\r
-               }\r
-       }\r
-       if(gbNeedFillStub)\r
-       {\r
-               gbNeedFillStub=false;\r
-               setTimeout("syncInit()",1);\r
-       }\r
-}\r
-\r
-function fillStub(nIdx,bLocalProject)\r
-{\r
-       if(!gbLData)\r
-       {\r
-               gbLData=true;\r
-               var sObj=getElement(getPBId(nIdx));\r
-               if(sObj!=null)\r
-               {\r
-                       tocExpandHelpSet(nIdx,bLocalProject);\r
-                       gbNeedFillStub=false;\r
-                       setTimeout("syncInit()",1);\r
-               }\r
-               else\r
-                       setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
-       }\r
-       else\r
-               gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));\r
-}\r
-\r
-function getBookId(nIdx){return "B_"+nIdx;}\r
-\r
-function getItemId(nIdx){return "I_"+nIdx;}\r
-\r
-function markBook(nIdx)\r
-{\r
-       var obj=getElement(getItemId(nIdx));\r
-       if(obj==null)\r
-               obj=getElement(getBookId(nIdx));\r
-       if(gbNav6)\r
-       {\r
-               gobj=obj;\r
-               setTimeout("delayMarkObj();",1);\r
-       }\r
-       else\r
-               markObj(obj);\r
-}\r
-\r
-function delayMarkObj()\r
-{\r
-       if(gobj)\r
-       {\r
-               markObj(gobj);\r
-               gobj=null;\r
-       }\r
-}\r
-\r
-function markObj(obj)\r
-{\r
-       if(obj!=null)\r
-       {\r
-               HighLightElement(obj,gsABgColor,"transparent");\r
-               var sPath=calTocPath(obj);\r
-               if(gsCTPath!=sPath)\r
-                       gsCTPath=sPath;\r
-       }\r
-}\r
-\r
-function markItem(nIdx)\r
-{\r
-       var obj=getElement(getItemId(nIdx));\r
-       if(gbNav6)\r
-       {\r
-               gobj=obj;\r
-               setTimeout("delayMarkObj();",1);\r
-       }\r
-       else\r
-               markObj(getElement(getItemId(nIdx)));\r
-}\r
-\r
-function calTocPath(obj)\r
-{\r
-       var sPath=getInnerText2(obj);\r
-       var pObj=getParentNode(obj);\r
-       do\r
-       {\r
-               while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);\r
-               if(pObj!=null)\r
-               {\r
-                       var nId=getIdByCBId(pObj.id);\r
-                       var sObj=getElement(getPBId(nId));\r
-                       if(sObj!=null)\r
-                       {\r
-                               var objs=getItemsByBook(sObj);\r
-                               for(var i=0;i<objs.length;i++)\r
-                               {\r
-                                       var sText=getInnerText2(objs[i]);\r
-                                       if(sText.length!=0)\r
-                                       {\r
-                                               sPath=sText+gsPathSplit+sPath;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       pObj=getParentNode(pObj);\r
-               }\r
-       }while(pObj!=null);\r
-       return sPath;\r
-}\r
-\r
-function writeAnItem(nIdx)\r
-{\r
-       var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));\r
-       var sIcon=getItemIcon(nIdx,0);\r
-       if(sIcon=="")\r
-       {\r
-               var nItemType=getItemType(nIdx);\r
-               if(nItemType&2)\r
-                       sIcon=getItemImage(nIdx,false);\r
-               else\r
-                       sIcon=getItemImage(nIdx,true);\r
-       }\r
-       sIcon=_textToHtml_nonbsp(sIcon);\r
-       var sName=_textToHtml(getItemName(nIdx));\r
-       var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
-       var sAltString="";\r
-       if(nItemType&2)\r
-               sAltString="Page";\r
-       else\r
-               sAltString="Remote Page";\r
-       if(sTarget!="")\r
-               sHTML+="target=\""+sTarget+"\" ";\r
-       sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">&nbsp;"+sName+"</a></nobr></p>";\r
-       return sHTML;\r
-}\r
-\r
-function writeBookItems(nIdx,num)\r
-{\r
-       var sHTML="";\r
-       if(num>0){\r
-               var nCIdx=0;\r
-               do{\r
-                       nCIdx++;\r
-                       var i=nIdx+nCIdx;\r
-                       var nItemType=getItemType(i);\r
-                       if(nItemType==1||nItemType==4||nItemType==8){\r
-                               sHTML+=writeBook(i);    \r
-                               nCIdx+=getItemContentsNum(i);           \r
-                       }\r
-                       else if(nItemType==2||nItemType==16){\r
-                               sHTML+=writeAnItem(i);\r
-                       }\r
-               }\r
-               while(nCIdx<num);\r
-       }\r
-       return sHTML;\r
-}\r
-\r
-function tocExpandHelpSet(nIdx,bLocal)\r
-{\r
-       checkBookItem(nIdx);\r
-       removeLoadingDiv();\r
-       if(!isHSLoad(nIdx))\r
-       {\r
-               setHSLoad(nIdx);\r
-               var sSrc="";\r
-               if(bLocal){\r
-                       var oChunk=getChunk(nIdx);\r
-                       if(oChunk)\r
-                       {\r
-                               goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);\r
-                               sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
-                       }\r
-               }\r
-               else{\r
-                       sSrc=getRefURL(nIdx);\r
-                       var nProj=getProject(sSrc);\r
-                       if(nProj!=-1)\r
-                       {\r
-                               sSrc=gaRoot[nProj].sToc;\r
-                               if(sSrc)\r
-                                       goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
-                               else\r
-                                       goChunk=null;\r
-                       }\r
-                       else\r
-                               goChunk=null;\r
-               }\r
-               if(goChunk)\r
-               {\r
-                       PrepareLoading(nIdx);\r
-                       gbToc=false;\r
-                       loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
-               }\r
-               else\r
-               {\r
-                       gbLData=false;\r
-                       checkFillStub();\r
-               }\r
-       }\r
-}\r
-\r
-function getProject(sSrc)\r
-{\r
-       for(var i=0;i<gaProj.length;i++)\r
-               if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
-                       return i;\r
-       return -1;\r
-}\r
-\r
-function getPath(sPath)\r
-{\r
-       if(sPath!="")\r
-       {\r
-               sPath=_replaceSlash(sPath);\r
-               var nPosFile=sPath.lastIndexOf("/");\r
-               sPath=sPath.substring(0,nPosFile+1);\r
-       }\r
-       return sPath;\r
-}\r
-\r
-function isSamePath(sPath1,sPath2)\r
-{\r
-       return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
-}\r
-\r
-function PrepareLoading(nIdx)\r
-{\r
-       gnInsIdx=nIdx;\r
-       if(!gsTP)\r
-       {\r
-               var oObj=getElement(getPBId(gnInsIdx));\r
-               if(oObj)\r
-                       oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));\r
-       }\r
-}\r
-\r
-function writeLoadingDiv(nIdx)\r
-{\r
-       return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-function getItemName(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-               return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;\r
-       else\r
-               return null;\r
-}\r
-\r
-function getItemContentsNum(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-               return oChunk.aTocs[nIdx-oChunk.nMI].nContents;\r
-       else\r
-               return null;\r
-}\r
-\r
-function getItemType(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-               return oChunk.aTocs[nIdx-oChunk.nMI].nType;\r
-       else\r
-               return 0;\r
-}\r
-\r
-function getItemURL(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-       {\r
-               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;\r
-               if(!(sPath==null||sPath==""))\r
-               {\r
-                       return _getFullPath(oChunk.sPPath,sPath);\r
-               }\r
-       }\r
-       return "";\r
-}\r
-\r
-function getRefURL(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-       {\r
-               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
-               if(!(sPath==null||sPath==""))\r
-               {\r
-                       return _getFullPath(oChunk.sPPath,sPath)\r
-               }\r
-       }\r
-       return "";\r
-}\r
-\r
-function getTopicTarget(nIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-       {\r
-               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")\r
-                       return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;\r
-       }\r
-       return "";\r
-}\r
-\r
-function getItemIcon(nIdx,nIconIdx)\r
-{\r
-       var oChunk=getChunk(nIdx);\r
-       if(oChunk)\r
-       {\r
-               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")\r
-               {\r
-                       var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;\r
-                       var nIndex=sIconRef.indexOf(";");\r
-                       while(nIconIdx-->0&&nIndex!=-1)\r
-                       {\r
-                               sIconRef=sIconRef.substring(nIndex+1);\r
-                               nIndex=sIconRef.indexOf(";");\r
-                       }\r
-                       if(nIconIdx<0)\r
-                       {\r
-                               if(nIndex!=-1)\r
-                                       sIconRef=sIconRef.substring(0,nIndex);\r
-                               return _getFullPath(oChunk.sPPath,sIconRef)\r
-                       }\r
-               }\r
-       }\r
-       return "";\r
-}\r
-\r
-function TocWriteClassStyle()\r
-{\r
-       var sStyle="<STYLE TYPE='text/css'>\n";\r
-       if(gsBgImage)\r
-               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
-       else\r
-               sStyle+="body {border-top:black 1px solid;}\n";\r
-       sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
-       sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
-       sStyle+=".parent {margin-left:0pt;}\n";\r
-       sStyle+=".stub {margin-left:0pt;display:none}\n";\r
-       sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
-       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
-       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
-       sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";\r
-       sStyle+="</STYLE>";\r
-       document.write(sStyle);\r
-}\r
-\r
-function TocWriteFixedWidth(bBegin,nWidth)\r
-{\r
-       if((gbIE4)&&(gbMac)&&(!gbIE5)){\r
-               if(bBegin)\r
-                       document.write("<table width="+nWidth+" border=0><tr><td>");\r
-               else\r
-                       document.write("</td></tr></table>");\r
-       }\r
-}\r
-\r
-function TocInitPage()\r
-{\r
-       var tempColl=getItemsByBook(document.body);\r
-       if(tempColl.length>0)\r
-               tempColl[0].focus();\r
-}\r
-\r
-function getItemsFromObj(obj)\r
-{\r
-       var aAnchor=new Array();\r
-       var tempColl=getChildrenByTag(obj,"P");\r
-       if(tempColl&&tempColl.length>0)\r
-       {\r
-               var anobr=new Array();\r
-               for(var i=0;i<tempColl.length;i++)\r
-               {\r
-                       var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
-                       if(tempNobr&&tempNobr.length>0)\r
-                               for(var j=0;j<tempNobr.length;j++)\r
-                                       anobr[anobr.length]=tempNobr[j];\r
-               }\r
-               for(var s=0;s<anobr.length;s++)\r
-               {\r
-                       var tempAnchor=getChildrenByTag(anobr[s],"A");\r
-                       if(tempAnchor&&tempAnchor.length>0)\r
-                               for(var u=0;u<tempAnchor.length;u++)\r
-                                       aAnchor[aAnchor.length]=tempAnchor[u];\r
-               }\r
-       }\r
-       return aAnchor;\r
-}\r
-\r
-function getItemsByBook(obj)\r
-{\r
-       var aAnchor=new Array();\r
-       var aTAnchor=getItemsFromObj(obj);\r
-       for(var i=0;i<aTAnchor.length;i++)\r
-               aAnchor[aAnchor.length]=aTAnchor[i];\r
-       var tempBook=getChildrenByTag(obj,"DIV");\r
-       if(tempBook&&tempBook.length>0)\r
-               for(var j=0;j<tempBook.length;j++)\r
-               {\r
-                       var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
-                       for(var s=0;s<aTAnchorDiv.length;s++)\r
-                               aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
-               }\r
-       return aAnchor;\r
-}\r
-\r
-function ExpandIt(nId)\r
-{\r
-       if(!gsTP)\r
-               ExpandIt2(nId,false);\r
-}\r
-\r
-function ExpandIt2(nId,bForceOpen)\r
-{\r
-       var oC=TocExpand(nId,true,bForceOpen);\r
-       var nNewScroll=document.body.scrollTop;\r
-       if(oC.style.display=="block"){\r
-               var nTop=oC.offsetTop;\r
-               var nBottom=nTop+oC.offsetHeight;\r
-               if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
-                       nNewScroll=nBottom-document.body.clientHeight;\r
-               }\r
-               if(nBottom-nTop>document.body.clientHeight){\r
-                       nNewScroll=nTop-20;\r
-               }\r
-       }\r
-       document.body.scrollTop=nNewScroll;\r
-}\r
-\r
-function TocExpand(nId,bChangeImg,bForceOpen)\r
-{\r
-       var oDiv=getElement(getCBId(nId));\r
-       if(oDiv==null) return null;\r
-\r
-       var whichIm=document.images[getBId(nId)];\r
-       if((oDiv.style.display!="block")||bForceOpen){\r
-               oDiv.style.display="block";\r
-               if(bChangeImg){\r
-                       var sPath=getPath(whichIm.src);\r
-                       sPath=_getFullPath(sPath,getBookImage(nId,false));\r
-                       whichIm.src=sPath;              \r
-               }\r
-       }else{\r
-               oDiv.style.display="none";\r
-               if(bChangeImg){\r
-                       var sPath=getPath(whichIm.src);\r
-                       sPath=_getFullPath(sPath,getBookImage(nId,true));\r
-                       whichIm.src=sPath;\r
-               }\r
-               if(gbMac&&gbIE5){\r
-                       this.parent.document.getElementById("tocIFrame").style.width="101%";\r
-                       this.parent.document.getElementById("tocIFrame").style.width="100%";\r
-               }\r
-       }\r
-       return oDiv;\r
-}\r
-\r
-function getChunkId(n)\r
-{\r
-       var nCan=-1;\r
-       for(var i=0;i<gaTocs.length;i++)\r
-               if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)\r
-               {\r
-                       if(nCan==-1)\r
-                               nCan=i;\r
-                       else\r
-                               if(gaTocs[i].nMI>=gaTocs[nCan].nMI)\r
-                                       nCan=i;\r
-               }\r
-       if(nCan!=-1)\r
-               return nCan;\r
-       else\r
-               return -1;\r
-}\r
-\r
-function getChunk(n)\r
-{\r
-       if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||\r
-               gaTocs[gnCC+1].nMI>n))\r
-       {       \r
-               return gaTocs[gnCC];\r
-       }\r
-       else{\r
-               gnCC=getChunkId(n);\r
-               if(gnCC!=-1)\r
-                       return gaTocs[gnCC];\r
-               else\r
-                       return null;\r
-       }\r
-}\r
-\r
-function getBookImage(nIdx,bClosed)\r
-{\r
-       var nIdx=bClosed?0:1;\r
-       var sIcon=getItemIcon(nIdx,nIdx);\r
-       if(sIcon=="")\r
-               if(bClosed)\r
-                       sIcon=giBookClose;\r
-               else\r
-                       sIcon=giBookOpen;\r
-       return _getFullPath(gaProj[0].sPPath,sIcon);\r
-}\r
-\r
-function getItemImage(nIdx,bRemote)\r
-{\r
-       var sIcon=getItemIcon(nIdx,0);\r
-       if(sIcon=="")\r
-               if(bRemote)\r
-                       sIcon=giURLItem;\r
-               else\r
-                       sIcon=giBookItem;\r
-       return _getFullPath(gaProj[0].sPPath,sIcon);\r
-}\r
-\r
-function getInnerText2(obj)\r
-{\r
-       var sText=getInnerText(obj);\r
-       if(sText.length>0&&!gbOpera7)\r
-               sText=sText.substring(1);\r
-       return sText;\r
-}\r
-\r
-function expandToc(oObj,sRest,aIdList)\r
-{\r
-       var len=aIdList.length;\r
-       var nPos=sRest.indexOf(gsPathSplit);\r
-       if(nPos!=-1)\r
-       {\r
-               sPart=sRest.substring(0,nPos);\r
-               sRest=sRest.substring(nPos+1);\r
-       }\r
-       else\r
-       {\r
-               sPart=sRest;\r
-               var aTagAs=getItemsByBook(oObj);\r
-               for(var s=0;s<aTagAs.length;s++)\r
-               {\r
-                       var sText=getInnerText2(aTagAs[s]);\r
-                       if(sText==sPart)\r
-                       {\r
-                               aIdList[len]=aTagAs[s];\r
-                               return 1;\r
-                       }\r
-               }\r
-               return 0;\r
-       }\r
-               \r
-       var aChildren=getChildrenByTag(oObj,"DIV");\r
-       for(var i=0;i<aChildren.length;i++)\r
-       {\r
-               var sPId=aChildren[i].id;\r
-               if(!isPBId(sPId))\r
-                       continue;\r
-               var sText=getInnerText2(aChildren[i]);\r
-               if(sText!=sPart)\r
-                       continue;\r
-               aIdList[len]=getIdByPBId(sPId);\r
-               var sCId=getCBId(aIdList[len]);\r
-               var oCObj=getElement(sCId);\r
-               if(oCObj)\r
-               {\r
-                       if(oCObj.innerHTML=="")\r
-                       {\r
-                               var obj=getItemsByBook(aChildren[i]);\r
-                               if(obj.length>0)\r
-                               {\r
-                                       if(gbNav6)\r
-                                       {\r
-                                               var sCommand=obj[0].getAttribute("onClick");\r
-                                               var nCommand=sCommand.indexOf(";");\r
-                                               sCommand=sCommand.substring(0,nCommand);\r
-                                               setTimeout(sCommand,1);\r
-                                       }\r
-                                       else\r
-                                               obj[0].click();\r
-                               }\r
-                               return -1;\r
-                       }\r
-                       var nRet=expandToc(oCObj,sRest,aIdList);\r
-                       if(nRet)\r
-                               return nRet;\r
-               }\r
-       }\r
-       aIdList.length=len;\r
-       return 0;\r
-}\r
-\r
-function getIdByPBId(sPId)\r
-{\r
-       return parseInt(sPId.substring(2,sPId.length-1));\r
-}\r
-\r
-function getIdByCBId(sCId)\r
-{\r
-       return parseInt(sCId.substring(2,sCId.length-1));\r
-}\r
-\r
-function isPBId(sId)\r
-{\r
-       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);\r
-}\r
-\r
-function isCBId(sId)\r
-{\r
-       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);\r
-}\r
-\r
-function getBId(nIdx)\r
-{\r
-       return "B_"+nIdx;\r
-}\r
-\r
-function getPBId(nIdx)\r
-{\r
-       return getBId(nIdx)+"P";\r
-}\r
-\r
-function getCBId(nIdx)\r
-{\r
-       return getBId(nIdx)+"C";\r
-}\r
-\r
-function getClosestTocPath(aPaths)\r
-{\r
-       var nMaxSimilarity=0;\r
-       var nThatIndex=-1;\r
-       var sPath=null;\r
-       if(aPaths.length==0) return sPath;\r
-       for(var i=0;i<aPaths.length;i++)\r
-       {\r
-               var nSimilarity=comparePath(gsCTPath,aPaths[i]);\r
-               if(nSimilarity>nMaxSimilarity)\r
-               {\r
-                       nMaxSimilarity=nSimilarity;\r
-                       nThatIndex=i;\r
-               }\r
-       }\r
-       if(nThatIndex!=-1)\r
-               sPath=aPaths[nThatIndex];\r
-       else\r
-               sPath=aPaths[0];\r
-       return sPath;\r
-}\r
-\r
-function comparePath(sPath1,sPath2)\r
-{\r
-       var nMaxSimilarity=0;\r
-       var nStartPos1=0;\r
-       var nPos1=-1;\r
-       var nStartPos2=0;\r
-       var nPos2=-1;\r
-       do{\r
-               var sCheck1=null;\r
-               var sCheck2=null;\r
-               nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);\r
-               if(nPos1!=-1)\r
-               {\r
-                       sCheck1=sPath1.substring(nStartPos1,nPos1);\r
-                       nStartPos1=nPos1+1;\r
-               }\r
-               else\r
-               {\r
-                       sCheck1=sPath1.substring(nStartPos1);\r
-                       nStartPos1=-1;\r
-               }\r
-               nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);\r
-               if(nPos1!=-1)\r
-               {\r
-                       sCheck2=sPath2.substring(nStartPos2,nPos2);\r
-                       nStartPos2=nPos2+1;\r
-               }\r
-               else\r
-               {\r
-                       sCheck2=sPath2.substring(nStartPos2);\r
-                       nStartPos2=-1;\r
-               }\r
-               if(sCheck1==sCheck2)\r
-                       nMaxSimilarity++;\r
-               else\r
-                       break;\r
-       }while(nStartPos1!=-1&&nStartPos2!=-1);\r
-       return nMaxSimilarity;\r
-}\r
-\r
-function getTocPaths(oTopicParam)\r
-{\r
-       var aRelTocPaths=oTopicParam.aPaths;\r
-       var aPaths=new Array();\r
-       for(var i=0;i<gaProj.length;i++)\r
-               if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
-               {\r
-                       for(var j=0;j<aRelTocPaths.length;j++)\r
-                               for (var k=0;k<gaRoot[i].aRPath.length;k++)\r
-                               {\r
-                                       var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];\r
-                                       aPaths[aPaths.length]=sPath.substring(1);\r
-                               }\r
-                       break;\r
-               }\r
-       return aPaths;\r
-}\r
-\r
-function syncInit()\r
-{\r
-       if(gsTP&&!gbNeedFillStub)\r
-       {\r
-               gInSync=true;\r
-               var obj=document.body;\r
-               var aIdList=new Array();\r
-               var nRet=expandToc(obj,gsTP,aIdList);\r
-               if(nRet!=-1)\r
-               {\r
-                       if(nRet==1)\r
-                       {\r
-                               if(aIdList.length)\r
-                                       for(var i=0;i<aIdList.length-1;i++)\r
-                                               ExpandIt2(aIdList[i],true);\r
-                               gsCTPath=gsTP;\r
-                               if(!gbIE55)\r
-                                       aIdList[aIdList.length-1].focus();\r
-                               else\r
-                                       HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");\r
-                       }\r
-                       var aPaths=gaBTPs;\r
-                       gsTP=null;\r
-                       gaBTPs=null;\r
-                       if(aPaths!=null)\r
-                       {\r
-                               var sPath=getClosestTocPath(aPaths);\r
-                               if(sPath!=null)\r
-                               {       \r
-                                       gsTP=sPath;             \r
-                                       setTimeout("syncInit()",1);\r
-                               }\r
-                       }\r
-               }\r
-               gInSync=false;\r
-       }\r
-}\r
-\r
-function loadToc()\r
-{\r
-       if(!gbLoadToc)\r
-       {\r
-               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
-               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
-               {\r
-                       gbLoadToc=true;\r
-                       var oProj=oResMsg.oParam;\r
-                       gaProj=oProj.aProj;\r
-                       gbXML=oProj.bXML;\r
-                       load1B1();\r
-               }\r
-       }\r
-}\r
-\r
-function load1B1()\r
-{\r
-       if(gnLT+1<gaProj.length)\r
-               for(var i=gnLT+1;i<gaProj.length;i++)\r
-                       if(gaProj[i].sToc)\r
-                       {\r
-                               gbToc=true;\r
-                               gnLT=i;\r
-                               setTimeout("loadTocInfo()",1);\r
-                               return true;\r
-                       }\r
-       return false;\r
-}\r
-\r
-function loadTocInfo()\r
-{\r
-       loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);\r
-}\r
-\r
-function loadData2(sFile)\r
-{\r
-       if(gbXML)\r
-               loadDataXML(sFile);\r
-       else\r
-               loadData(sFile);\r
-}\r
-\r
-function projReady(sRoot,aProj)\r
-{\r
-       if(gaRoot.length<=gnLT||!gaRoot[gnLT])\r
-               gaRoot[gnLT]=new Object();\r
-       gaRoot[gnLT].sToc=sRoot;\r
-       \r
-       if(gnLT==0)\r
-       {\r
-               gaRoot[gnLT].aRPath=new Array();\r
-               gaRoot[gnLT].aRPath[0]=gsPathSplit;\r
-       }\r
-\r
-       updatePTPath(gnLT,aProj);\r
-\r
-       if(!((gnLT+1<gaProj.length)&&load1B1()))\r
-       {\r
-               gbReady=true;\r
-               if(gbIE4)\r
-                       setTimeout("loadImages();",1);\r
-               else\r
-                       setTimeout("loadTData();",1);\r
-       }\r
-}\r
-\r
-function loadTData()\r
-{\r
-       if(gaProj[0].sToc!="")\r
-       {\r
-               gbLData=true;\r
-               goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
-               gbToc=false;\r
-               loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
-       }\r
-}\r
-\r
-function updatePTPath(n,aProj)\r
-{\r
-       if(aProj)\r
-               for(var i=0;i<aProj.length;i++)\r
-               {\r
-                       var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
-                       for(var j=0;j<gaProj.length;j++)\r
-                               if(isSamePath(sFullPath,gaProj[j].sPPath))\r
-                               {\r
-                                       if(gaRoot.length<=j||!gaRoot[j])\r
-                                               gaRoot[j]=new Object();\r
-                                       if(!gaRoot[j].aRPath)\r
-                                               gaRoot[j].aRPath=new Array();\r
-\r
-                                       if(gaRoot[n].aRPath)\r
-                                               for(var k=0;k<gaRoot[n].aRPath.length;k++)\r
-                                               {\r
-                                                       var bDup=false;\r
-                                                       var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;\r
-                                                       for(var l=0;l<gaRoot[j].aRPath.length;l++)\r
-                                                               if(gaRoot[j].aRPath[l]==sTFPath)\r
-                                                               {\r
-                                                                       bDup=true;\r
-                                                                       break;\r
-                                                               }\r
-                                                       if(!bDup)\r
-                                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;\r
-                                               }\r
-                                       else\r
-                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;\r
-                                       break;\r
-                               }\r
-               }\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
-       if(gbToc)\r
-       {\r
-               var sRoot="";\r
-               var aRProj=new Array();\r
-               projReady(sRoot,aRProj);\r
-       }\r
-       else\r
-       {\r
-               var aToc=new Array();\r
-               putData(aToc)\r
-       }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
-       if(gbToc)\r
-       {\r
-               var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
-               if(tocNode)\r
-               {\r
-                       var sRoot=tocNode.getAttribute("root");\r
-                       var rmtProject=tocNode.getElementsByTagName("project");\r
-                       var aRProj=new Array();\r
-                       if(rmtProject.length>0)\r
-                       {\r
-                               for(var i=0;i<rmtProject.length;i++)\r
-                               {\r
-                                       aRProj[i]=new Object();\r
-                                       var sURL=rmtProject[i].getAttribute("url");\r
-                                       if(sURL)\r
-                                       {\r
-                                               if(sURL.lastIndexOf("/")!=sURL.length-1)\r
-                                                       sURL+="/";                                              \r
-                                       }\r
-                                       aRProj[i].sPPath=sURL;\r
-                                       aRProj[i].sRPath = "";\r
-                                       var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];\r
-                                       if (oSubPath)\r
-                                       {\r
-                                               while (oSubPath)\r
-                                               {\r
-                                                       aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";\r
-                                                       oSubPath = oSubPath.getElementsByTagName("subpath")[0];\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                               aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
-                               }\r
-                       }\r
-                       projReady(sRoot,aRProj);\r
-               }\r
-       }\r
-       else\r
-       {\r
-               var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];\r
-               if(chunkNode)\r
-               {\r
-                       var aToc=new Array();\r
-                       processBook(chunkNode,aToc);\r
-                       putData(aToc);\r
-               }\r
-       }\r
-}\r
-\r
-function processBook(node,aToc)\r
-{\r
-       var i=0;\r
-       var entry=null;\r
-       var prevEntry=null;\r
-       var oChild=node.firstChild;\r
-       do{\r
-               if(oChild)\r
-               {\r
-                       if(oChild.nodeName.indexOf("#")!=0)\r
-                       {\r
-                               var sName=oChild.getAttribute("name");\r
-                               var sURL=oChild.getAttribute("url");\r
-                               var sRef=oChild.getAttribute("ref");\r
-                               var sTarget=oChild.getAttribute("target");\r
-                               var sIcons=oChild.getAttribute("images");\r
-                               var item=new Object();\r
-                               item.sItemName=sName;\r
-                               if(sTarget)\r
-                                       item.sTarget=sTarget;\r
-                               if(sIcons)\r
-                                       item.sIconRef=sIcons;\r
-                               if(sURL==null) sURL="";\r
-\r
-                               item.sItemURL=sURL;\r
-                               \r
-                               if(oChild.nodeName=="book")\r
-                               {\r
-                                       item.nType=1;\r
-                                       aToc[aToc.length]=item;\r
-                                       var nCurrPos=aToc.length;\r
-                                       processBook(oChild,aToc);\r
-                                       item.nContents=aToc.length-nCurrPos;\r
-                               }\r
-                               else if(oChild.nodeName=="item")\r
-                               {\r
-                                       item.nType=2;\r
-                                       item.nContents=0;\r
-                                       aToc[aToc.length]=item;\r
-                               }\r
-                               else if(oChild.nodeName=="remoteitem")\r
-                               {\r
-                                       item.nType=16;\r
-                                       item.nContents=0;\r
-                                       aToc[aToc.length]=item;\r
-                               }\r
-                               else if(oChild.nodeName=="project")\r
-                               {\r
-                                       if(sRef)\r
-                                       {\r
-                                               if(sRef.lastIndexOf("/")!=sRef.length-1)\r
-                                                       sRef+="/";                                              \r
-                                       }\r
-                                       item.nType=4;\r
-                                       item.sRefURL=sRef;\r
-                                       item.nContents=0;\r
-                                       aToc[aToc.length]=item;\r
-                               }\r
-                               else if(oChild.nodeName=="chunk")\r
-                               {\r
-                                       item.nType=8;\r
-                                       item.sRefURL=sRef;\r
-                                       item.nContents=0;\r
-                                       aToc[aToc.length]=item;\r
-                               }\r
-                       }\r
-               }\r
-               else\r
-                       break;\r
-               oChild=oChild.nextSibling;\r
-       }while(true);\r
-}\r
-\r
-function putData(aTocs)\r
-{\r
-       gaTocsNs61Fix=aTocs;\r
-       setTimeout("realPutData();",1);\r
-}\r
-\r
-function realPutData()\r
-{\r
-       removeLoadingDiv();\r
-       var aTocs=gaTocsNs61Fix;\r
-       if(!aTocs) return;\r
-       if(goChunk)\r
-       {\r
-               var n=gnMinIdx;\r
-               goChunk.nMI=gnMinIdx;\r
-               goChunk.aTocs=aTocs;\r
-               gnMinIdx+=aTocs.length;\r
-               if(gnInsIdx!=-1)\r
-               {\r
-                       var oObj=getElement(getPBId(gnInsIdx));\r
-                       if(oObj)\r
-                       {\r
-                               oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));\r
-                               setTimeout("syncInit()",1);\r
-                       }\r
-               }\r
-               else{\r
-                       document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));\r
-                       var oParam=new Object();\r
-                       oParam.oTocInfo=null;\r
-                       var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
-                       if(SendMessage(oMsg))\r
-                       {\r
-                               if(oMsg.oParam.oTocInfo)\r
-                                       syncWithPaths(oMsg.oParam.oTocInfo);\r
-                       }\r
-               }       \r
-       }\r
-       gbLData=false;\r
-       checkFillStub();\r
-}\r
-\r
-function syncWithPaths(oTopicParam)\r
-{\r
-       var aPaths=getTocPaths(oTopicParam);\r
-       if(gsTP)\r
-               gaBTPs=aPaths;\r
-       else{\r
-               var sPath=getClosestTocPath(aPaths);\r
-               if(sPath!=null)\r
-               {\r
-                       gsTP=sPath;\r
-                       setTimeout("syncInit()",1);\r
-               }\r
-       }\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
-       if(gsBgImage&&gsBgImage.length>0)\r
-       {\r
-               document.body.background=gsBgImage;\r
-       }\r
-       if(gsBgColor&&gsBgColor.length>0)\r
-       {\r
-               document.body.bgColor=gsBgColor;\r
-       }\r
-       loadToc();\r
-       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function loadImages()\r
-{\r
-       if(giBookClose)\r
-       {\r
-               gaImgs[gnImages]=giBookClose;\r
-               gnImages++;\r
-       }               \r
-       if(giBookOpen)\r
-       {\r
-               gaImgs[gnImages]=giBookOpen;\r
-               gnImages++;\r
-       }               \r
-       if(giBookItem)\r
-       {\r
-               gaImgs[gnImages]=giBookItem;\r
-               gnImages++;\r
-       }               \r
-       if(giURLItem)\r
-       {\r
-               gaImgs[gnImages]=giURLItem;\r
-               gnImages++;\r
-       }               \r
-       if(giNewBookClose)\r
-       {\r
-               gaImgs[gnImages]=giNewBookClose;\r
-               gnImages++;\r
-       }               \r
-       if(giNewBookOpen)\r
-       {\r
-               gaImgs[gnImages]=giNewBookOpen;\r
-               gnImages++;\r
-       }               \r
-       if(giNewBookItem)\r
-       {\r
-               gaImgs[gnImages]=giNewBookItem;\r
-               gnImages++;\r
-       }               \r
-       if(giNewURLItem)\r
-       {\r
-               gaImgs[gnImages]=giNewURLItem;\r
-               gnImages++;\r
-       }\r
-       if(gnImages>0)\r
-       {\r
-               setTimeout("loadDataAfter();",1000);\r
-               loadImage(gaImgs[0]);\r
-       }\r
-       else\r
-               loadDataAfter();\r
-}\r
-\r
-function loadImage(sURL)\r
-{\r
-       var oImg=new Image();\r
-       oImg.onload=checkImageLoading;\r
-       oImg.onerror=errorImageLoading;\r
-       oImg.src=_getFullPath(gaProj[0].sPPath,sURL);\r
-}\r
-\r
-function loadDataAfter()\r
-{\r
-       if(!gbLoadData)\r
-       {\r
-               gbLoadData=true;\r
-               loadTData();\r
-       }\r
-}\r
-\r
-function errorImageLoading()\r
-{\r
-       gnLoadedImages++;\r
-       if(gnImages==gnLoadedImages)\r
-               loadDataAfter();\r
-       else\r
-               loadImage(gaImgs[gnLoadedImages]);      \r
-}\r
-\r
-function checkImageLoading()\r
-{\r
-       gnLoadedImages++;\r
-       if(gnImages==gnLoadedImages)\r
-               loadDataAfter();\r
-       else\r
-               loadImage(gaImgs[gnLoadedImages]);      \r
-}\r
-\r
-function window_unload()\r
-{\r
-       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       UnRegisterListener2(this,WH_MSG_SYNCTOC);\r
-       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       if(oMsg)\r
-       {\r
-               var nMsgId=oMsg.nMessageId;\r
-               if(nMsgId==WH_MSG_PROJECTREADY)\r
-               {\r
-                       loadToc();\r
-               }\r
-               else if(nMsgId==WH_MSG_SYNCTOC)\r
-               {\r
-                       if(gbReady)\r
-                       {\r
-                               syncWithPaths(oMsg.oParam);\r
-                       }\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWTOC)\r
-               {\r
-                       if(!gbNav6)\r
-                               document.body.focus();\r
-               }\r
-       }\r
-       return true;\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
-{\r
-       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
-       RegisterListener2(this,WH_MSG_SYNCTOC);\r
-       RegisterListener2(this,WH_MSG_SHOWTOC);\r
-       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-       goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-\r
-       window.onload=window_OnLoad;\r
-       window.onbeforeunload=window_BUnload;\r
-       window.onunload=window_unload;\r
-       gbWhTHost=true;\r
-}\r
-else\r
-       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whtopic.js b/doc/salome/gui/GUI/whtopic.js
deleted file mode 100755 (executable)
index 6cd1211..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-//     WebHelp 5.10.005\r
-var gsPPath="";\r
-var gaPaths=new Array();\r
-var gaAvenues=new Array();\r
-\r
-var goFrame=null;\r
-var gsStartPage="";\r
-var gsRelCurPagePath="";\r
-var gsSearchFormHref="";\r
-var gnTopicOnly=-1;\r
-var gnOutmostTopic=-1;\r
-\r
-var BTN_TEXT=1;\r
-var BTN_IMG=2;\r
-\r
-var goSync=null;\r
-\r
-var goShow=null;\r
-var goHide=null;\r
-\r
-var goPrev=null;\r
-var goNext=null;\r
-var gnForm=0;\r
-var goShowNav=null;\r
-var goHideNav=null;\r
-\r
-var goWebSearch=null;\r
-\r
-var gsBtnStyle="";\r
-var gaButtons=new Array();\r
-var gaTypes=new Array();\r
-var whtopic_foldUnload=null;\r
-var gbWhTopic=false;\r
-var gbCheckSync=false;\r
-var gbSyncEnabled=false;\r
-\r
-function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
-       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}";\r
-}\r
-\r
-function writeBtnStyle()\r
-{\r
-       if(gaButtons.length>0)\r
-       {\r
-               if(gsBtnStyle.length>0)\r
-               {\r
-                       var sStyle="<style type='text/css'>";\r
-                       sStyle+=gsBtnStyle+"</style>";\r
-                       document.write(sStyle);\r
-               }\r
-       }\r
-}\r
-\r
-function button(sText,nWidth,nHeight)\r
-{\r
-       this.sText=sText;\r
-       this.nWidth=nWidth;\r
-       this.nHeight=nHeight;\r
-       \r
-       this.aImgs=new Array();\r
-       var i=0;\r
-       while(button.arguments.length>i+3)\r
-       {\r
-               this.aImgs[i]=button.arguments[3+i];\r
-               i++;\r
-       }\r
-}\r
-\r
-//project info\r
-function setRelStartPage(sPath)\r
-{\r
-       if(gsPPath.length==0)\r
-       {\r
-               gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath));\r
-               gsStartPage=_getFullPath(_getPath(document.location.href),sPath);\r
-               gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href);\r
-       }\r
-}\r
-\r
-function getImage(oImage,sType)\r
-{\r
-       var sImg="";\r
-       if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0))\r
-       {\r
-               sImg+="<img alt=\""+sType+"\" src=\""+oImage.aImgs[0]+"\"";\r
-               if(oImage.nWidth>0)\r
-                       sImg+=" width="+oImage.nWidth;\r
-               if(oImage.nHeight>0)\r
-                       sImg+=" height="+oImage.nHeight;\r
-               sImg+=" border=0>";\r
-       }\r
-       return sImg;\r
-}\r
-\r
-function addTocInfo(sTocPath)\r
-{\r
-       gaPaths[gaPaths.length]=sTocPath;\r
-}\r
-\r
-function addAvenueInfo(sName,sPrev,sNext)\r
-{\r
-       gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext);  \r
-}\r
-\r
-function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3)\r
-{\r
-       var sButton="";\r
-       var nBtn=gaButtons.length;\r
-       if(sType=="prev")\r
-       {\r
-               if(canGo(false))\r
-               {\r
-                       var sTitle="Previous Topic";\r
-                       goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goPrev.sText;\r
-                       else\r
-                               sButton+=getImage(goPrev,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="next")\r
-       {\r
-               if(canGo(true))\r
-               {\r
-                       var sTitle="Next Topic";\r
-                       goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goNext.sText;\r
-                       else\r
-                               sButton+=getImage(goNext,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="show")\r
-       {\r
-               if(isTopicOnly()&&(!gbOpera6||gbOpera7))\r
-               {\r
-                       var sTitle="Show Navigation Component";\r
-                       goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goShow.sText;\r
-                       else\r
-                               sButton+=getImage(goShow,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="hide")\r
-       {\r
-               if(!isTopicOnly()&&!gbOpera6)\r
-               {\r
-                       var sTitle="Hide Navigation Component";\r
-                       goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goHide.sText;\r
-                       else\r
-                               sButton+=getImage(goHide,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="shownav")\r
-       {\r
-               if(isShowHideEnable())\r
-               {\r
-                       var sTitle="Show Navigation Component";\r
-                       goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goShowNav.sText;\r
-                       else\r
-                               sButton+=getImage(goShowNav,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="hidenav")\r
-       {\r
-               if(isShowHideEnable())\r
-               {\r
-                       var sTitle="Hide Navigation Component";\r
-                       goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goHideNav.sText;\r
-                       else\r
-                               sButton+=getImage(goHideNav,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="synctoc")\r
-       {\r
-               if(gaPaths.length>0)\r
-               {\r
-                       var sTitle="Sync TOC";\r
-                       goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goSync.sText;\r
-                       else\r
-                               sButton+=getImage(goSync,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="websearch")\r
-       {\r
-               if(gsSearchFormHref.length>0)\r
-               {\r
-                       var sTitle="WebSearch";\r
-                       goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
-                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnwebsearch\" href=\""+gsSearchFormHref+"\">";\r
-                       if(nStyle==BTN_TEXT)\r
-                               sButton+=goWebSearch.sText;\r
-                       else\r
-                               sButton+=getImage(goWebSearch,sTitle);\r
-                       sButton+="</a>";\r
-               }\r
-       }\r
-       else if(sType=="searchform")\r
-       {\r
-               gaButtons[nBtn]="NeedSearchForm";\r
-               gaTypes[nBtn]=sType;\r
-       }\r
-       if(sButton.length!=0)\r
-       {\r
-               if(nStyle==BTN_TEXT)\r
-                       sButton+="&nbsp;";\r
-               gaButtons[nBtn]="<td>"+sButton+"</td>";\r
-               gaTypes[nBtn]=sType;\r
-       }\r
-}\r
-\r
-function isSyncEnabled()\r
-{\r
-       if(!gbCheckSync)\r
-       {\r
-               var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);\r
-               if(SendMessage(oMsg))\r
-               {\r
-                       gbSyncEnabled=oMsg.oParam;\r
-               }\r
-               gbCheckSync=true;\r
-       }\r
-       return gbSyncEnabled;\r
-}\r
-\r
-function isInPopup()\r
-{\r
-       return (window.name.indexOf("BSSCPopup")!=-1);\r
-}\r
-\r
-function getIntopicBar(sAlign)\r
-{\r
-       var sHTML="";\r
-       if(gaButtons.length>0)\r
-       {\r
-               sHTML+="<div align="+sAlign+">";\r
-\r
-               sHTML+="<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";\r
-               for(var i=0;i<gaButtons.length;i++)\r
-               {\r
-                       if(gaTypes[i]!="synctoc"||isSyncEnabled())\r
-                       {\r
-                               if(gaButtons[i]=="NeedSearchForm")\r
-                                       sHTML+=getSearchFormHTML();\r
-                               else\r
-                                       sHTML+=gaButtons[i];\r
-                       }\r
-               }\r
-               sHTML+="</tr></table>";\r
-\r
-               sHTML+="</div>";\r
-       }\r
-       return sHTML;\r
-}\r
-\r
-\r
-function writeIntopicBar(nAligns)\r
-{\r
-       if(isInPopup()) return;\r
-       if(gaButtons.length>0)\r
-       {\r
-               var sHTML="";\r
-               if(nAligns!=0)\r
-               {\r
-                       sHTML+="<table width=100%><tr>"\r
-                       if(nAligns&1)\r
-                               sHTML+="<td width=33%>"+getIntopicBar("left")+"</td>";\r
-                       if(nAligns&2)\r
-                               sHTML+="<td width=34%>"+getIntopicBar("center")+"</td>";\r
-                       if(nAligns&4)\r
-                               sHTML+="<td width=33%>"+getIntopicBar("right")+"</td>";\r
-                       sHTML+="</tr></table>";\r
-                       document.write(sHTML);\r
-               }\r
-       }\r
-}\r
-\r
-function sendAveInfoOut()\r
-{\r
-       if(!isInPopup())\r
-               setTimeout("sendAveInfo();",100);\r
-}\r
-\r
-function sendAveInfo()\r
-{\r
-       var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-\r
-function onNext()\r
-{\r
-       var oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function onPrev()\r
-{\r
-       var oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function createSyncInfo()\r
-{\r
-       var oParam=new Object();\r
-       if(gsPPath.length==0)\r
-               gsPPath=_getPath(document.location.href);\r
-       oParam.sPPath=gsPPath;\r
-       oParam.sTPath=document.location.href;\r
-       oParam.aPaths=gaPaths;\r
-       return oParam;\r
-}\r
-\r
-function syncWithShow()\r
-{\r
-       if(isTopicOnly())\r
-               show();\r
-       else\r
-       {\r
-               sync();\r
-               showTocPane();\r
-       }\r
-}\r
-\r
-function showTocPane()\r
-{\r
-       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function sendSyncInfo()\r
-{\r
-       if(!isInPopup())\r
-       {\r
-               var oParam=null;\r
-               if(gaPaths.length>0)\r
-               {\r
-                       oParam=createSyncInfo();\r
-               }\r
-               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam);\r
-               SendMessage(oMsg);\r
-       }\r
-}\r
-\r
-function sendInvalidSyncInfo()\r
-{\r
-       if(!isInPopup())\r
-       {\r
-               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null);\r
-               SendMessage(oMsg);\r
-       }\r
-}\r
-\r
-function enableWebSearch(bEnable)\r
-{\r
-       if(!isInPopup())\r
-       {\r
-               var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable);\r
-               SendMessage(oMsg);\r
-       }\r
-}\r
-\r
-function autoSync(nSync)\r
-{\r
-       if(nSync==0) return;\r
-       if(isInPopup()) return;\r
-       if(isOutMostTopic())\r
-               sync();\r
-}\r
-\r
-function isOutMostTopic()\r
-{\r
-       if(gnOutmostTopic==-1)\r
-       {\r
-               var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null);\r
-               if(SendMessage(oMessage))\r
-                       gnOutmostTopic=0;\r
-               else\r
-                       gnOutmostTopic=1;\r
-       }\r
-       return (gnOutmostTopic==1);\r
-}\r
-\r
-function sync()\r
-{\r
-       if(gaPaths.length>0)\r
-       {\r
-               var oParam=createSyncInfo();\r
-               var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);\r
-               SendMessage(oMessage);\r
-       }\r
-}\r
-\r
-\r
-function avenueInfo(sName,sPrev,sNext)\r
-{\r
-       this.sName=sName;\r
-       this.sPrev=sPrev;\r
-       this.sNext=sNext;\r
-}\r
-\r
-function getCurrentAvenue()\r
-{\r
-       var oParam=new Object();\r
-       oParam.sAvenue=null;\r
-       var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam);\r
-       SendMessage(oMessage);\r
-       return oParam.sAvenue;\r
-}\r
-\r
-function unRegisterListener()\r
-{\r
-       sendInvalidSyncInfo();\r
-       enableWebSearch(false);\r
-       if(whtopic_foldUnload)\r
-               whtopic_foldUnload();\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
-       var nMsgId=oMsg.nMessageId;\r
-       if(nMsgId==WH_MSG_GETAVIAVENUES)\r
-       {\r
-               oMsg.oParam.aAvenues=gaAvenues;\r
-               return false;\r
-       }\r
-       else if(nMsgId==WH_MSG_GETTOCPATHS)\r
-       {\r
-               if(isOutMostTopic())\r
-               {\r
-                       oMsg.oParam.oTocInfo=createSyncInfo();\r
-                       return false;           \r
-               }\r
-               else\r
-                       return true;\r
-       }\r
-       else if(nMsgId==WH_MSG_NEXT)\r
-       {\r
-               goAvenue(true);\r
-       }\r
-       else if(nMsgId==WH_MSG_PREV)\r
-       {\r
-               goAvenue(false);\r
-       }\r
-       else if(nMsgId==WH_MSG_WEBSEARCH)\r
-       {\r
-               websearch();\r
-       }\r
-       return true;\r
-}\r
-\r
-function goAvenue(bNext)\r
-{\r
-       var sTopic=null;\r
-       var sAvenue=getCurrentAvenue();\r
-       var nAvenue=-1;\r
-       if(sAvenue!=null&&sAvenue!="")\r
-       {\r
-               for(var i=0;i<gaAvenues.length;i++)\r
-               {\r
-                       if(gaAvenues[i].sName==sAvenue)\r
-                       {\r
-                               nAvenue=i;\r
-                               break;\r
-                       }\r
-               }\r
-               if(nAvenue!=-1)\r
-               {\r
-                       if(bNext)\r
-                               sTopic=gaAvenues[nAvenue].sNext;\r
-                       else\r
-                               sTopic=gaAvenues[nAvenue].sPrev;\r
-               }\r
-       }\r
-       else\r
-       {\r
-               for(var i=0;i<gaAvenues.length;i++)\r
-               {\r
-                       if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)\r
-                       {\r
-                               sTopic=gaAvenues[i].sNext;\r
-                               break;\r
-                       }\r
-                       else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)\r
-                       {\r
-                               sTopic=gaAvenues[i].sPrev;\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-       \r
-       if(sTopic!=null&&sTopic!="")\r
-       {\r
-               if(gsPPath!=null&&gsPPath!="")\r
-               {\r
-                       sFullTopicPath=_getFullPath(gsPPath,sTopic);\r
-                       document.location=sFullTopicPath;\r
-               }\r
-       }\r
-}\r
-\r
-function canGo(bNext)\r
-{\r
-       for(var i=0;i<gaAvenues.length;i++)\r
-       {\r
-               if((gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)||\r
-                       (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext))\r
-                       return true;\r
-       }\r
-       return false;\r
-}\r
-\r
-function show()\r
-{\r
-       if(gsStartPage!="")\r
-               window.location=gsStartPage+"#"+gsRelCurPagePath;\r
-}\r
-\r
-function hide()\r
-{\r
-       if(goFrame!=null)\r
-       {\r
-               goFrame.location=window.location;\r
-       }\r
-}\r
-\r
-function isTopicOnly()\r
-{\r
-       if(gnTopicOnly==-1)\r
-       {\r
-               var oParam=new Object();\r
-               oParam.oFrame=null;\r
-               var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam);\r
-               if(SendMessage(oMsg))\r
-               {\r
-                       goFrame=oParam.oFrame;\r
-                       gnTopicOnly=0;\r
-               }\r
-               else\r
-                       gnTopicOnly=1;\r
-       }\r
-       if(gnTopicOnly==1)\r
-               return true;\r
-       else\r
-               return false;\r
-}\r
-\r
-function websearch()\r
-{\r
-       if(gbNav4)\r
-       {\r
-               if(document.ehelpform)\r
-                       document.ehelpform.submit();\r
-       }\r
-       else\r
-       {\r
-               if(window.ehelpform)\r
-                       window.ehelpform.submit();\r
-       }\r
-}\r
-\r
-function addSearchFormHref(sHref)\r
-{\r
-       gsSearchFormHref=sHref;\r
-       enableWebSearch(true);\r
-}\r
-\r
-function searchB(nForm)\r
-{\r
-       var sValue=eval("document.searchForm"+nForm+".searchString.value");\r
-       var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function getSearchFormHTML()\r
-{\r
-       var sHTML="";\r
-       gnForm++;\r
-       var sFormName="searchForm"+gnForm;\r
-       var sButton="<form name=\""+sFormName+"\" method=\"POST\" action=\"javascript:searchB("+gnForm+")\">"\r
-       sButton+="<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";\r
-       if(""=="text")\r
-       {\r
-               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\"></a>";\r
-       }\r
-       else if(""=="image")\r
-       {\r
-               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\">"\r
-               sButton+="<img src=\"\" border=0></a>";\r
-       }\r
-       sButton+="</form>";\r
-       sHTML="<td align=\"center\">"+sButton+"</td>";\r
-       return sHTML;\r
-}\r
-\r
-function showHidePane(bShow)\r
-{\r
-       var oMsg=null;\r
-       if(bShow)\r
-               oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-       else\r
-               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);\r
-       SendMessage(oMsg);\r
-}\r
-\r
-function isShowHideEnable()\r
-{\r
-       if(gbIE4)\r
-               return true;\r
-       else\r
-               return false;\r
-}\r
-\r
-\r
-function PickupDialog_Invoke()\r
-{\r
-       if(!gbIE4||gbMac)\r
-       {\r
-               if(typeof(_PopupMenu_Invoke)=="function")\r
-                       return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);\r
-       }\r
-       else\r
-       {\r
-               if(PickupDialog_Invoke.arguments.length>2)\r
-               {\r
-                       var sPickup="whskin_pickup.htm";\r
-                       var sPickupPath=gsPPath+sPickup;\r
-                       if(gbIE4)\r
-                       {\r
-                               var sFrame=PickupDialog_Invoke.arguments[1];\r
-                               var aTopics=new Array();\r
-                               for(var i=2;i<PickupDialog_Invoke.arguments.length;i+=2)\r
-                               {\r
-                                       var j=aTopics.length;\r
-                                       aTopics[j]=new Object();\r
-                                       aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];\r
-                                       aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];\r
-                               }\r
-\r
-                               if(aTopics.length>1)\r
-                               {\r
-                                       var nWidth=300;\r
-                                       var nHeight=180;\r
-                                       var     nScreenWidth=screen.width;\r
-                                       var     nScreenHeight=screen.height;\r
-                                       var nLeft=(nScreenWidth-nWidth)/2;\r
-                                       var nTop=(nScreenHeight-nHeight)/2;\r
-                                       if(gbIE4)\r
-                                       {\r
-                                               var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");\r
-                                               if(vRet)\r
-                                               {\r
-                                                       var sURL=vRet.m_url;\r
-                                                       if(sFrame)\r
-                                                               window.open(sURL,sFrame);\r
-                                                       else\r
-                                                               window.open(sURL,"_self");\r
-                                               }\r
-                                       }\r
-                               }\r
-                               else if(aTopics.length==1)\r
-                               {\r
-                                       var sURL=aTopics[0].m_sURL\r
-                                       if(sFrame)\r
-                                               window.open(sURL,sFrame);\r
-                                       else\r
-                                               window.open(sURL,"_self");\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
-       RegisterListener("bsscright",WH_MSG_GETAVIAVENUES);\r
-       RegisterListener("bsscright",WH_MSG_GETTOCPATHS);\r
-       RegisterListener("bsscright",WH_MSG_NEXT);\r
-       RegisterListener("bsscright",WH_MSG_PREV);\r
-       RegisterListener("bsscright",WH_MSG_WEBSEARCH);\r
-       if(gbMac&&gbIE4)\r
-       {\r
-               if(typeof(window.onunload)!="unknown")\r
-                       if(window.onunload.toString!=unRegisterListener.toString)\r
-                               whtopic_foldUnload=window.onunload;\r
-       }\r
-       else\r
-       {\r
-               if(window.onunload)\r
-                       if(window.onunload.toString!=unRegisterListener.toString)\r
-                               whtopic_foldUnload=window.onunload;\r
-       }\r
-       window.onunload=unRegisterListener;\r
-       setButtonFont("show","","","","","","");\r
-setButtonFont("hide","","","","","","");\r
-\r
-       gbWhTopic=true;\r
-}\r
-else\r
-       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whutils.js b/doc/salome/gui/GUI/whutils.js
deleted file mode 100755 (executable)
index 85fae7e..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-//     WebHelp 5.10.004\r
-var gsFileName="";\r
-var gsDivName="";\r
-var xmlDoc=null;\r
-var sdocPath=null;\r
-var gsInsertBeforeEndHTML="";\r
-var sReplaceStringsSrc=new Array();\r
-var gsDivName="dataDiv";\r
-var gnLoadDivNum=0;\r
-sReplaceStringsSrc[0]="&amp;";\r
-sReplaceStringsSrc[1]="&gt;";\r
-sReplaceStringsSrc[2]="&lt;";\r
-sReplaceStringsSrc[3]="&quot;";\r
-sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
-sReplaceStringsSrc[5]="&nbsp;";\r
-\r
-var sReplaceStringsDst=new Array();\r
-sReplaceStringsDst[0]="&";\r
-sReplaceStringsDst[1]=">";\r
-sReplaceStringsDst[2]="<";\r
-sReplaceStringsDst[3]="\"";\r
-sReplaceStringsDst[4]=String.fromCharCode(128);\r
-sReplaceStringsDst[5]=" ";\r
-var goHighLighted=null;\r
-\r
-function _getRelativePath(strParentPath,strCurrentPath)\r
-{\r
-       if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath);\r
-       strParentPath=_replaceSlash(strParentPath);\r
-       strParentPath=_getPath(strParentPath);\r
-       strCurrentPath=_replaceSlash(strCurrentPath);\r
-       strCurrentPath=_getPath(strCurrentPath);\r
-       for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
-       {\r
-               if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
-                       break;\r
-       }\r
-       \r
-       strParentPath=strParentPath.substring(i);\r
-       strCurrentPath=strCurrentPath.substring(i);     \r
-       \r
-       var nPathPos=0;\r
-       while(nPathPos!=-1)\r
-       {\r
-               nPathPos=strParentPath.indexOf("/");\r
-               if(nPathPos!=-1)\r
-               {\r
-                       strParentPath=strParentPath.substring(nPathPos+1);\r
-                       strCurrentPath="../"+strCurrentPath;\r
-               }\r
-       }\r
-       return strCurrentPath;\r
-}\r
-\r
-function _getRelativeFileName(strParentPath,strCurrentPath)\r
-{\r
-       strParentPath=_replaceSlash(strParentPath);\r
-       strParentPath=_getPath(strParentPath);\r
-       strCurrentPath=_replaceSlash(strCurrentPath);\r
-       for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
-       {\r
-               if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
-                       break;\r
-       }\r
-       \r
-       strParentPath=strParentPath.substring(i);\r
-       strCurrentPath=strCurrentPath.substring(i);     \r
-       \r
-       var nPathPos=0;\r
-       while(nPathPos!=-1)\r
-       {\r
-               nPathPos=strParentPath.indexOf("/");\r
-               if(nPathPos!=-1)\r
-               {\r
-                       strParentPath=strParentPath.substring(nPathPos+1);\r
-                       strCurrentPath="../"+strCurrentPath;\r
-               }\r
-       }\r
-       return strCurrentPath;\r
-}\r
-\r
-function _isAbsPathToHost(sPath)\r
-{\r
-       return (sPath.indexOf("/")==0);\r
-}\r
-\r
-function _getHost(sPath)\r
-{\r
-       var nPos=sPath.indexOf("//");\r
-       if(nPos>0)\r
-       {\r
-               var nPosx=sPath.indexOf("/",nPos+2);\r
-               if(nPosx>0)\r
-                       return sPath.substring(0,nPosx);\r
-               else\r
-                       return sPath;\r
-       }\r
-       return sPath;\r
-}\r
-\r
-function _getFullPath(sPath,sRelPath)\r
-{\r
-       if(_isAbsPath(sRelPath))\r
-               return sRelPath;\r
-       else if(_isAbsPathToHost(sRelPath))\r
-               return _getHost(sPath)+sRelPath;\r
-       else\r
-       {\r
-               var sFullPath=sPath;\r
-               var nPathPos=0;\r
-               while(nPathPos!=-1)\r
-               {\r
-                       var nPathPos=sRelPath.indexOf("../");\r
-                       if(nPathPos!=-1)\r
-                       {\r
-                               sRelPath=sRelPath.substring(nPathPos+3);\r
-                               sFullPath=sFullPath.substring(0,sFullPath.length-1);\r
-                               var nPos2=sFullPath.lastIndexOf("/");\r
-                               if(nPos2!=-1)\r
-                                       sFullPath=sFullPath.substring(0,nPos2+1);\r
-                               else\r
-                                       break;\r
-                       }\r
-               }\r
-               sFullPath+=sRelPath;\r
-               return sFullPath;\r
-       }       \r
-}\r
-\r
-function _isAbsPath(strPath)\r
-{\r
-       var strUpper=strPath.toUpperCase();\r
-       return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);\r
-}\r
-\r
-function _replaceSlash(strURL)\r
-{      \r
-       var re=new RegExp("\\\\","g");\r
-       var strReplacedURL=strURL.replace(re,"/");\r
-       return strReplacedURL;\r
-}\r
-\r
-function _getPath(strURL)\r
-{\r
-       pathpos=strURL.lastIndexOf("/");\r
-       if(pathpos>0)\r
-               return strURL.substring(0,pathpos+1);\r
-       else\r
-               return "";\r
-}\r
-\r
-function removeItemFromArray(oArray,i)\r
-{\r
-       if(oArray.length&&i>=0&&i<oArray.length)\r
-       {\r
-               var len=oArray.length;\r
-               for(var s=i;s<len-1;s++)\r
-                       oArray[s]=oArray[s+1];\r
-               oArray.length=len-1;\r
-       }\r
-}\r
-\r
-function insertItemIntoArray(oArray,i,obj)\r
-{\r
-       if(oArray.length&&i>=0&&i<=oArray.length)\r
-       {\r
-               var len=oArray.length;\r
-               for(var s=len;s>i;s--)\r
-                       oArray[s]=oArray[s-1];\r
-               oArray[i]=obj;          \r
-       }\r
-}\r
-\r
-function loadData(sFileName)\r
-{\r
-       var i=gnLoadDivNum;\r
-       var sName=gsDivName+gnLoadDivNum++;\r
-       loadData_2(sFileName,sName);\r
-}\r
-\r
-function loadData_2(sFileName,sDivName)\r
-{\r
-       if(!getElement(sDivName))\r
-       {\r
-               if(!insertDataDiv(sDivName))\r
-               {\r
-                       gsFileName=sFileName;\r
-                       gsDivName=sDivName;\r
-                       return;\r
-               }\r
-       }\r
-       var sHTML="";\r
-       if(gbMac)\r
-               sHTML+="<iframe src=\""+sFileName+"\"></iframe>";\r
-       else\r
-               sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";\r
-       \r
-       var oDivCon=getElement(sDivName);\r
-       if(oDivCon)\r
-       {\r
-               if(gbNav6)\r
-               {\r
-                       if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0)\r
-                       {\r
-                               oDivCon.getElementsByTagName("iFrame")[0].src=sFileName;\r
-                       }\r
-                       else\r
-                               oDivCon.innerHTML=sHTML;\r
-               }\r
-               else\r
-                       oDivCon.innerHTML=sHTML;\r
-       }\r
-}\r
-\r
-function loadDataXML(sFileName)\r
-{\r
-       var sCurrentDocPath=_getPath(document.location.href);\r
-       sdocPath=_getFullPath(sCurrentDocPath,sFileName);\r
-       if(gbIE5)\r
-       {\r
-               xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
-               xmlDoc.async=true;\r
-               xmlDoc.onreadystatechange=checkState;\r
-               if(document.body!=null)\r
-                       xmlDoc.load(sdocPath);\r
-       }\r
-       else if(gbNav6)\r
-       {\r
-               xmlDoc=document.implementation.createDocument("","",null);\r
-               xmlDoc.addEventListener("load",initializeData,false);\r
-               xmlDoc.load(sdocPath,"text/xml");\r
-       }\r
-}\r
-\r
-function initializeData()\r
-{\r
-       if(xmlDoc!=null)\r
-               putDataXML(xmlDoc,sdocPath);\r
-}\r
-\r
-function checkState()\r
-{\r
-       if(xmlDoc!=null)\r
-       {\r
-               var state=xmlDoc.readyState;\r
-               if(state==4)\r
-               {\r
-                       var err=xmlDoc.parseError;\r
-                       if(err.errorCode==0)\r
-                               putDataXML(xmlDoc,sdocPath);\r
-                       else\r
-                               onLoadXMLError();\r
-               }\r
-       }\r
-}\r
-\r
-function insertDataDiv(sName)\r
-{\r
-       var sHTML="";\r
-       if(gbMac)\r
-               sHTML+="<div id="+sName+" style=\"display:none;\"></div>";\r
-       else\r
-               sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";\r
-       if((gbIE5||gbNav6)&&document.body)\r
-               document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-       else\r
-       {\r
-               gsInsertBeforeEndHTML=sHTML;\r
-               setTimeout("insertWhenBodyReady();",100);\r
-               return false;\r
-       }\r
-       return true;\r
-}\r
-\r
-function insertWhenBodyReady()\r
-{\r
-       if(gsInsertBeforeEndHTML=="") return;\r
-       if(document.body)\r
-       {\r
-               document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);\r
-               gsInsertBeforeEndHTML="";\r
-               loadData_2(gsFileName,gsDivName);\r
-       }\r
-       else\r
-       {\r
-               setTimeout("insertWhenBodyReady();",100);\r
-       }\r
-}\r
-\r
-function window_BUnload()\r
-{\r
-       for(var i=0;i<gnLoadDivNum;i++)\r
-       {\r
-               var oDivCon=getElement(gsDivName+i);\r
-               if(oDivCon)\r
-                       oDivCon.innerHTML="";\r
-       }\r
-}\r
-\r
-function removeThis(obj)\r
-{\r
-       if(obj.parentNode)\r
-               obj.parentNode.removeChild(obj);\r
-       else\r
-               obj.outerHTML="";\r
-}\r
-\r
-function getParentNode(obj)\r
-{\r
-       if(obj.parentNode)\r
-               return obj.parentNode;\r
-       else if(obj.parentElement)\r
-               return obj.parentElement;\r
-       return null;\r
-}\r
-\r
-function getElement(sID)\r
-{\r
-       if(document.getElementById)\r
-               return document.getElementById(sID);\r
-       else if(document.all)\r
-               return document.all(sID);\r
-       return null;\r
-}\r
-\r
-function getChildrenByTag(obj,sTagName)\r
-{\r
-       if(obj.getElementsByTagName)\r
-       {\r
-               var aChildren=new Array();\r
-               var aElements=getElementsByTag(obj,sTagName);\r
-               if(aElements!=null)\r
-               {\r
-                       for(var i=0;i<aElements.length;i++)\r
-                       {\r
-                               if(aElements[i].parentNode==obj)\r
-                                       aChildren[aChildren.length]=aElements[i];\r
-                       }\r
-                       return aChildren;\r
-               }\r
-               else\r
-                       return new Array();\r
-       }\r
-       else if(obj.children)\r
-               return obj.children.tags(sTagName);\r
-}\r
-\r
-function getElementsByTag(obj,sTagName)\r
-{\r
-       if(obj.getElementsByTagName)\r
-               return obj.getElementsByTagName(sTagName);\r
-       else if(obj.all)\r
-               return obj.all.tags(sTagName);\r
-       return null;\r
-}\r
-\r
-function _htmlToText(sHTML)\r
-{\r
-       if(sHTML==null) return null;\r
-       var sText=sHTML;\r
-       for(var i=0;i<sReplaceStringsSrc.length;i++)\r
-       {\r
-               var re=new RegExp(sReplaceStringsSrc[i],"g");\r
-               sText=sText.replace(re,sReplaceStringsDst[i]);\r
-       }       \r
-       return sText;\r
-}\r
-\r
-function _textToHtml_nonbsp(sText)\r
-{\r
-       if(sText==null) return null;\r
-       var sHTML=sText;\r
-       for(var i=0;i<sReplaceStringsSrc.length-1;i++)\r
-       {\r
-               var re=new RegExp(sReplaceStringsDst[i],"g");\r
-               sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
-       }       \r
-       return sHTML;\r
-}\r
-\r
-function _textToHtml(sText)\r
-{\r
-       if(sText==null) return null;\r
-       var sHTML=sText;\r
-       for(var i=0;i<sReplaceStringsSrc.length;i++)\r
-       {\r
-               var re=new RegExp(sReplaceStringsDst[i],"g");\r
-               sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
-       }       \r
-       return sHTML;\r
-}\r
-\r
-\r
-function getInnerText(obj)\r
-{\r
-       var renbsp2sp=new RegExp("\xa0","g");\r
-       if(obj.innerText)\r
-       {\r
-               var sText=obj.innerText;\r
-               sText=sText.replace(renbsp2sp," ");\r
-               return sText;\r
-       }\r
-       else\r
-       {\r
-               if(obj.nodeValue)\r
-               {\r
-                       var sValue=obj.nodeValue;\r
-                       sValue=sValue.replace(renbsp2sp," ");\r
-                       return sValue;\r
-               }\r
-               else\r
-               {\r
-                       var sText="";\r
-                       var oChild=obj.firstChild;\r
-                       while(oChild!=null)\r
-                       {\r
-                               sText+=getInnerText(oChild);\r
-                               oChild=oChild.nextSibling;\r
-                       }\r
-                       return sText;\r
-               }\r
-       }\r
-               \r
-}\r
-\r
-function HighLightElement(obj,sHighLightColor,sNormalColor)\r
-{\r
-       if(obj!=null)\r
-       {\r
-               resetHighLight(sNormalColor);\r
-               if (obj.style)\r
-                       obj.style.backgroundColor=sHighLightColor;\r
-               goHighLighted=obj;\r
-       }\r
-}\r
-\r
-function resetHighLight(sNormalColor)\r
-{\r
-       if(goHighLighted!=null)\r
-       {\r
-               if (goHighLighted.style)\r
-                       goHighLighted.style.backgroundColor=sNormalColor;\r
-               goHighLighted=null;\r
-       }\r
-}\r
-\r
-function whFont(sName,sSize,sColor,sStyle,sWeight,sDecoration)\r
-{\r
-       this.sName=sName;\r
-       this.sSize=sSize;\r
-       this.sColor=sColor;\r
-       this.sStyle=sStyle;\r
-       this.sWeight=sWeight;\r
-       this.sDecoration=sDecoration;\r
-}\r
-\r
-function getFontStyle(oFont)\r
-{\r
-       var sStyle="";\r
-       if(oFont)\r
-       {\r
-               sStyle+="font-family:"+oFont.sName+";";\r
-               if(gbMac)\r
-               {\r
-                       var nSize=parseInt(oFont.sSize);\r
-                       if(gbIE5)\r
-                               nSize+=2;\r
-                       else\r
-                               nSize+=4;\r
-                       sStyle+="font-size:"+nSize+"pt;";\r
-               }\r
-               else\r
-                       sStyle+="font-size:"+oFont.sSize+";";\r
-                       \r
-               sStyle+="font-style:"+oFont.sStyle+";";\r
-               sStyle+="font-weight:"+oFont.sWeight+";";\r
-               sStyle+="text-decoration:"+oFont.sDecoration+";";\r
-               sStyle+="color:"+oFont.sColor+";";\r
-       }\r
-       return sStyle;\r
-}\r
-\r
-function _browserStringToText(sBStr)\r
-{\r
-       var sText="";\r
-       // change %xxx back to the real char.\r
-       var nPos=sBStr.indexOf('%');\r
-       while(nPos!=-1)\r
-       {\r
-               sText+=sBStr.substring(0,nPos);\r
-               sBStr=sBStr.substring(nPos+1);\r
-               var sNum="";\r
-               var i=0;\r
-               while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')\r
-               {\r
-                       sNum+=sBStr.charAt(i++);        \r
-               }\r
-               if(sNum!=""){\r
-                       var nNum=parseInt(sNum,16);\r
-                       sText+=String.fromCharCode(nNum);\r
-                       sBStr=sBStr.substring(i);\r
-               }\r
-               nPos=sBStr.indexOf('%');\r
-       }\r
-       sText+=sBStr;\r
-       return sText;\r
-}\r
-\r
-function excapeSingleQuotandSlash(str)\r
-{\r
-       if(str==null) return null;\r
-       var nPos=0;\r
-       var sRes="";\r
-       var nPosNew=str.indexOf("\\",nPos);\r
-       while(nPosNew!=-1){\r
-               sRes+=str.substring(nPos,nPosNew+1)+"\\";\r
-               nPos=nPosNew+1;\r
-               nPosNew=str.indexOf("\\",nPos);\r
-       }\r
-       if(nPos<str.length)\r
-               sRes+=str.substring(nPos);\r
-       var re=new RegExp("'","g");\r
-       sRes=sRes.replace(re,"\\'");\r
-       return sRes;\r
-}\r
-\r
-var gbWhUtil=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GUI/whver.js b/doc/salome/gui/GUI/whver.js
deleted file mode 100755 (executable)
index ff59763..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//     WebHelp 5.10.006\r
-var gbNav=false;\r
-var gbNav6=false;\r
-var gbNav61=false;\r
-var gbNav7=false;\r
-var gbNav4=false;\r
-var gbIE4=false;\r
-var gbIE=false;\r
-var gbIE5=false;\r
-var gbIE55=false;\r
-var gbOpera6=false;\r
-var gbOpera7=false;\r
-var gbKonqueror3=false;\r
-\r
-var gAgent=navigator.userAgent.toLowerCase();\r
-var gbMac=(gAgent.indexOf("mac")!=-1);\r
-var gbSunOS=(gAgent.indexOf("sunos")!=-1);\r
-var gbOpera=(gAgent.indexOf("opera")!=-1);\r
-var gbKonqueror=(gAgent.indexOf("konqueror")!= -1);\r
-var gbSafari=(gAgent.indexOf("safari")!= -1);\r
-var gbWindows=((gAgent.indexOf('win')!= -1)||(gAgent.indexOf('16bit')!= -1));\r
-var gbMozilla=((gAgent.indexOf('gecko')!=-1) && (gAgent.indexOf('netscape')==-1));\r
-\r
-\r
-var gVersion=navigator.appVersion.toLowerCase();\r
-\r
-var gnVerMajor=parseInt(gVersion);\r
-var gnVerMinor=parseFloat(gVersion);\r
-\r
-if(!gbOpera&&!gbKonqueror&&!gbSafari) // opera can mimic IE or Netscape by settings.\r
-{\r
-       gbIE=(navigator.appName.indexOf("Microsoft")!=-1);\r
-       gbNav=(gAgent.indexOf('mozilla')!=-1) && ((gAgent.indexOf('spoofer')==-1) && (gAgent.indexOf('compatible')==-1));\r
-       if(gnVerMajor>=4)\r
-       {\r
-               if(navigator.appName=="Netscape")\r
-               {\r
-                       gbNav4=true;\r
-                       if(gnVerMajor>=5)\r
-                               gbNav6=true;\r
-               }\r
-               gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);\r
-       }\r
-       if(gbNav6)\r
-       {\r
-               var nPos=gAgent.indexOf("gecko");\r
-               if(nPos!=-1)\r
-               {\r
-                       var nPos2=gAgent.indexOf("/", nPos);\r
-                       if(nPos2!=-1)\r
-                       {\r
-                               var nVersion=parseFloat(gAgent.substring(nPos2+1));\r
-                               if(nVersion>=20010726)\r
-                               {\r
-                                       gbNav61=true;\r
-                                       if (nVersion>=20020823)\r
-                                               gbNav7=true;\r
-                               }\r
-                       }\r
-               }\r
-       }else if(gbIE4)\r
-       {\r
-               var nPos=gAgent.indexOf("msie");\r
-               if(nPos!=-1)\r
-               {\r
-                       var nVersion=parseFloat(gAgent.substring(nPos+5));\r
-                       if(nVersion>=5)\r
-                       {\r
-                               gbIE5=true;\r
-                               if(nVersion>=5.5)\r
-                                       gbIE55=true;\r
-                       }\r
-               }\r
-       }\r
-}\r
-else if (gbOpera)\r
-{\r
-       var nPos = gAgent.indexOf("opera");\r
-       if(nPos!=-1)\r
-       {\r
-               var nVersion=parseFloat(gAgent.substring(nPos+6));\r
-               if(nVersion>=6)\r
-               {\r
-                       gbOpera6=true;\r
-                       if(nVersion>=7)\r
-                               gbOpera7=true;\r
-               }\r
-       }\r
-}\r
-else if (gbKonqueror)\r
-{\r
-       var nPos = gAgent.indexOf("konqueror");\r
-       if(nPos!=-1)\r
-       {\r
-               var nVersion = parseFloat(gAgent.substring(nPos+10));\r
-               if (nVersion >= 3)\r
-               {\r
-                       gbKonqueror3=true;\r
-               }\r
-       }\r
-}\r
-\r
-var gbWhVer=true;
\ No newline at end of file
index e5729238bd77dbf7413e5da222d8dbb2e783f509..b7e1347faefb9d64189e1056c00f3c7efd8002a1 100755 (executable)
@@ -14,7 +14,7 @@
 <topic name="Introduction to SALOME" url="kernel/introduction_to_salome_pro.htm" />\r
 <topic name="Navigating topics" url="kernel/navigating_topics.htm" />\r
 <topic name="Opening studies" url="kernel/opening_studies.htm" />\r
-<topic name="Installation Wizard" url="kernel/readme.html" />\r
+<topic name="SALOME Installation Wizard Help" url="kernel/readme.html" />\r
 <topic name="Running SALOME" url="kernel/running_salome_pro.htm" />\r
 <topic name="SALOME desktop" url="kernel/salome_pro_desktop.htm" />\r
 <topic name="Saving a study" url="kernel/saving_a_study.htm" />\r
 <topic name="Using Object Browser" url="kernel/using_object_browser.htm" />\r
 <topic name="Using Registry tool" url="kernel/using_registry.htm" />\r
 <topic name="MESH preferences" url="mesh_preferences.htm" />\r
+<topic name="OCC 3D Viewer" url="occ_3d_viewer.htm" />\r
 <topic name="Post-Pro Preferences" url="post-pro_preferences.htm" />\r
 <topic name="Select Color and Font" url="select_color_and_font.htm" />\r
 <topic name="Setting Preferences" url="setting_preferences.htm" />\r
+<topic name="VTK 3D Viewer" url="vtk_3d_viewer.htm" />\r
 \r
 </ftstdata>  \r
index a6ea6fb6d7a33acf8b014f4e28e8e04bc2fdc3a6..8aa4a5702841c1e1bf1b6caad44936658e117f51 100755 (executable)
 <ftswdata>\r
 <key name="__version__"> 14, </key>\r
 <key name="_omnipymodul"> 14, </key>\r
-<key name="0"> 6,14,2,24,16, </key>\r
-<key name="001"> 24, </key>\r
-<key name="01"> 24, </key>\r
-<key name="1"> 5,14,24,15, </key>\r
-<key name="10"> 14,24, </key>\r
-<key name="100"> 24, </key>\r
+<key name="_root_dir"> 14, </key>\r
+<key name="_src_dir"> 14, </key>\r
+<key name="0"> 6,2,25,16,14, </key>\r
+<key name="001"> 25, </key>\r
+<key name="01"> 25, </key>\r
+<key name="1"> 5,25,15,14, </key>\r
+<key name="10"> 25,14, </key>\r
+<key name="100"> 25, </key>\r
 <key name="103100"> 14, </key>\r
 <key name="13"> 14, </key>\r
-<key name="16"> 24, </key>\r
-<key name="16x16"> 24, </key>\r
-<key name="2"> 5,14,24,15, </key>\r
-<key name="200"> 24, </key>\r
+<key name="16"> 25, </key>\r
+<key name="16x16"> 25, </key>\r
+<key name="2"> 5,25,15,14, </key>\r
+<key name="200"> 25, </key>\r
 <key name="23"> 14, </key>\r
 <key name="24"> 14, </key>\r
-<key name="256"> 24, </key>\r
-<key name="2d"> 6,10,2,24, </key>\r
-<key name="3"> 6,14,2,15,16, </key>\r
+<key name="256"> 25, </key>\r
+<key name="2a2"> 14, </key>\r
+<key name="2d"> 6,10,2,25, </key>\r
+<key name="3"> 6,2,15,16,14, </key>\r
 <key name="31"> 14, </key>\r
-<key name="33"> 24, </key>\r
-<key name="3d"> 10,2,24,18, </key>\r
+<key name="33"> 25, </key>\r
+<key name="3d"> 10,2,24,25,14,18,28, </key>\r
 <key name="4"> 14, </key>\r
 <key name="5"> 14, </key>\r
-<key name="50"> 24, </key>\r
-<key name="51"> 14, </key>\r
-<key name="512"> 24, </key>\r
+<key name="50"> 25, </key>\r
+<key name="512"> 25, </key>\r
 <key name="6"> 14, </key>\r
 <key name="7"> 14, </key>\r
 <key name="8"> 14, </key>\r
 <key name="9"> 14, </key>\r
-<key name="abl"> 3,6,14,18, </key>\r
+<key name="abl"> 3,6,24,14,18,28, </key>\r
 <key name="abort"> 14, </key>\r
 <key name="abov"> 8,14, </key>\r
-<key name="abscissa"> 23,24, </key>\r
-<key name="absolut"> 24, </key>\r
+<key name="abscissa"> 23,25, </key>\r
+<key name="absolut"> 25, </key>\r
 <key name="abstraction"> 5, </key>\r
-<key name="acceptabl"> 24, </key>\r
-<key name="acces"> 3,1,23,24,16,18,21, </key>\r
-<key name="accessibl"> 10,26, </key>\r
-<key name="accidental"> 14, </key>\r
-<key name="accord"> 14,24,15,16, </key>\r
+<key name="ac"> 14, </key>\r
+<key name="acceptabl"> 25, </key>\r
+<key name="acces"> 3,1,23,24,25,16,18,21,28, </key>\r
+<key name="accessibl"> 10,27, </key>\r
+<key name="accord"> 25,15,16,14, </key>\r
 <key name="account"> 14, </key>\r
 <key name="achiev"> 3, </key>\r
 <key name="acquaint"> 4, </key>\r
-<key name="action"> 24, </key>\r
-<key name="activ"> 5,6,24,16,17, </key>\r
+<key name="action"> 25,14, </key>\r
+<key name="activ"> 5,6,25,16,17, </key>\r
 <key name="activat"> 5,16,17, </key>\r
-<key name="activity"> 24, </key>\r
-<key name="actual"> 5, </key>\r
-<key name="ad"> 0,25,19, </key>\r
+<key name="activity"> 25, </key>\r
+<key name="actual"> 5,14, </key>\r
+<key name="ad"> 0,14,26,19, </key>\r
 <key name="adapt"> 3, </key>\r
-<key name="add"> 14,15,16,25,18,19, </key>\r
+<key name="add"> 15,16,14,26,18,19, </key>\r
 <key name="addition"> 5,14, </key>\r
-<key name="additional"> 3,14,2,24,15,16,21, </key>\r
-<key name="addres"> 24, </key>\r
-<key name="adjust"> 24, </key>\r
+<key name="additional"> 3,2,25,15,16,14,21, </key>\r
+<key name="addres"> 25, </key>\r
+<key name="adjust"> 25, </key>\r
 <key name="advanc"> 14,19, </key>\r
 <key name="affect"> 3, </key>\r
-<key name="again"> 6,14,12,17, </key>\r
-<key name="algorithm"> 3,14,11, </key>\r
-<key name="allow"> 3,0,7,1,14,11,23,24,15,16,17,25,18,26,19,22, </key>\r
+<key name="again"> 6,12,14,17, </key>\r
+<key name="algorithm"> 3,11,14, </key>\r
+<key name="allow"> 3,0,7,1,11,23,24,25,15,16,14,17,26,18,27,19,22,28, </key>\r
 <key name="almost"> 17, </key>\r
-<key name="along"> 11,18, </key>\r
+<key name="along"> 11,18,28, </key>\r
 <key name="alongsid"> 19, </key>\r
-<key name="alpha"> 24, </key>\r
+<key name="alpha"> 25, </key>\r
 <key name="already"> 14, </key>\r
 <key name="alway"> 11, </key>\r
 <key name="amount"> 14, </key>\r
-<key name="animation"> 24, </key>\r
-<key name="annoy"> 14, </key>\r
+<key name="animation"> 25, </key>\r
 <key name="anoth"> 3,17, </key>\r
-<key name="answ"> 14, </key>\r
-<key name="any"> 3,4,6,8,14,11,12,24,15,16,17,26, </key>\r
+<key name="any"> 3,4,6,1,8,11,12,25,15,16,14,17,27, </key>\r
 <key name="anyth"> 14, </key>\r
-<key name="ap"> 26, </key>\r
-<key name="api"> 0,24, </key>\r
+<key name="ap"> 27, </key>\r
+<key name="api"> 0,25, </key>\r
 <key name="appear"> 0,8,9,14,18,19,22, </key>\r
 <key name="appearanc"> 23, </key>\r
 <key name="applet"> 4, </key>\r
-<key name="application"> 3,6,0,10,2,15,16,17,18,26,19, </key>\r
-<key name="approach"> 14,11,16, </key>\r
-<key name="appropriat"> 14,10, </key>\r
+<key name="appli"> 1, </key>\r
+<key name="application"> 3,6,0,10,2,15,16,14,17,18,27,19, </key>\r
+<key name="approach"> 11,16,14, </key>\r
+<key name="appropriat"> 10,14, </key>\r
 <key name="approximat"> 14, </key>\r
-<key name="arabic"> 25, </key>\r
+<key name="arabic"> 26, </key>\r
 <key name="architectur"> 3,0,10, </key>\r
-<key name="area"> 6,16,18, </key>\r
+<key name="area"> 6,24,16,18,28, </key>\r
 <key name="argument"> 14, </key>\r
-<key name="arrang"> 24, </key>\r
+<key name="around"> 24,28, </key>\r
+<key name="arrang"> 25, </key>\r
 <key name="ascii"> 17,18, </key>\r
-<key name="ask"> 14, </key>\r
-<key name="assign"> 24, </key>\r
-<key name="associat"> 13,24,21, </key>\r
-<key name="attach"> 10, </key>\r
-<key name="attribut"> 21, </key>\r
+<key name="assign"> 25, </key>\r
+<key name="associat"> 13,25,21, </key>\r
+<key name="attach"> 10,14, </key>\r
+<key name="attribut"> 14,21, </key>\r
 <key name="author"> 8,19, </key>\r
-<key name="auto"> 14,18, </key>\r
-<key name="automatic"> 23,18, </key>\r
-<key name="automatical"> 0,14,23,13,24,15,16,17,26, </key>\r
+<key name="auto"> 18, </key>\r
+<key name="automatic"> 23,14,18, </key>\r
+<key name="automatical"> 0,23,13,25,15,16,14,17,27, </key>\r
 <key name="availability"> 7, </key>\r
-<key name="availabl"> 3,5,7,14,10, </key>\r
-<key name="averag"> 24, </key>\r
-<key name="avi"> 24, </key>\r
+<key name="availabl"> 3,5,7,10,24,14,28, </key>\r
+<key name="averag"> 25, </key>\r
+<key name="avi"> 25, </key>\r
 <key name="avoid"> 0,14, </key>\r
 <key name="awar"> 14, </key>\r
-<key name="awk"> 14, </key>\r
-<key name="ax"> 18, </key>\r
-<key name="axi"> 18, </key>\r
+<key name="ax"> 24,18,28, </key>\r
+<key name="axi"> 18,28, </key>\r
 <key name="b"> 14, </key>\r
-<key name="back"> 14,23, </key>\r
-<key name="background"> 24,18, </key>\r
-<key name="bar"> 23,24,21, </key>\r
-<key name="bas"> 3,10,2,17, </key>\r
+<key name="back"> 23,14, </key>\r
+<key name="background"> 25,18, </key>\r
+<key name="bar"> 23,25,21, </key>\r
+<key name="bas"> 3,10,2,24,14,17, </key>\r
 <key name="bash"> 14, </key>\r
-<key name="basi"> 3, </key>\r
-<key name="basic"> 3,14,11,16,25, </key>\r
-<key name="batch"> 3,0,14,15, </key>\r
-<key name="be"> 14, </key>\r
-<key name="becom"> 6,24, </key>\r
+<key name="basi"> 3,24,25, </key>\r
+<key name="basic"> 3,11,16,14,26, </key>\r
+<key name="batch"> 3,0,15,14, </key>\r
+<key name="be"> 1,14, </key>\r
+<key name="becom"> 6,25,14, </key>\r
 <key name="befor"> 14, </key>\r
-<key name="begin"> 18,22, </key>\r
+<key name="begin"> 14,18,22, </key>\r
 <key name="behav"> 3, </key>\r
-<key name="behavior"> 10, </key>\r
-<key name="behaviour"> 24, </key>\r
-<key name="below"> 14,12,24, </key>\r
-<key name="bet"> 24, </key>\r
-<key name="bicolor"> 24, </key>\r
-<key name="big"> 24, </key>\r
-<key name="bin"> 14,15,19, </key>\r
+<key name="behavior"> 10,14, </key>\r
+<key name="behaviour"> 25, </key>\r
+<key name="below"> 12,25,14, </key>\r
+<key name="bet"> 25, </key>\r
+<key name="bicolor"> 25, </key>\r
+<key name="big"> 25, </key>\r
+<key name="bin"> 15,14,19, </key>\r
 <key name="binari"> 14, </key>\r
-<key name="binary"> 14,17, </key>\r
+<key name="binary"> 17, </key>\r
 <key name="blu"> 14, </key>\r
 <key name="blur"> 3, </key>\r
+<key name="bmp"> 24,28, </key>\r
 <key name="bold"> 14, </key>\r
 <key name="book"> 20, </key>\r
 <key name="boost"> 14, </key>\r
 <key name="boost_version"> 14, </key>\r
 <key name="boostdir"> 14, </key>\r
 <key name="border"> 23,16, </key>\r
-<key name="both"> 2,23,24, </key>\r
-<key name="bottom"> 10,23,24,18, </key>\r
-<key name="box"> 0,1,8,14,23,13,24,17,25,18,26,19,22, </key>\r
+<key name="both"> 2,23,25,14, </key>\r
+<key name="bottom"> 10,23,25,14,18, </key>\r
+<key name="bound"> 24,28, </key>\r
+<key name="boundari"> 1, </key>\r
+<key name="box"> 0,1,8,23,24,13,25,14,17,26,18,27,19,22,28, </key>\r
 <key name="bracket"> 14, </key>\r
+<key name="break"> 14, </key>\r
 <key name="brep"> 10, </key>\r
-<key name="brief"> 6,14,12, </key>\r
+<key name="brief"> 6,12, </key>\r
 <key name="bring"> 2, </key>\r
-<key name="brows"> 4,5,6,0,14,2,13,16,17,18,19,21, </key>\r
-<key name="bug"> 14, </key>\r
-<key name="build"> 14,24,19, </key>\r
-<key name="built"> 14,11,24, </key>\r
-<key name="button"> 14,2,12,13,24,17,25,18,26,19,22, </key>\r
-<key name="c"> 3,14,15, </key>\r
+<key name="brows"> 4,5,6,0,2,13,25,16,14,17,18,19,21, </key>\r
+<key name="build"> 25,14,19, </key>\r
+<key name="built"> 11,25,14, </key>\r
+<key name="button"> 2,12,24,13,25,14,17,26,18,27,19,22,28, </key>\r
+<key name="button_label"> 14, </key>\r
+<key name="button_script"> 14, </key>\r
+<key name="button_tooltip"> 14, </key>\r
+<key name="c"> 3,15,14, </key>\r
 <key name="ca"> 10, </key>\r
 <key name="cad"> 10,11, </key>\r
 <key name="cal"> 3,0,14, </key>\r
 <key name="calculation"> 9,10,11, </key>\r
 <key name="call"> 14,17,19,22, </key>\r
 <key name="cam"> 3, </key>\r
-<key name="camera"> 24, </key>\r
+<key name="camera"> 25, </key>\r
 <key name="cancel"> 14, </key>\r
 <key name="capability"> 19, </key>\r
 <key name="caption"> 14, </key>\r
-<key name="car"> 14,10, </key>\r
+<key name="car"> 10, </key>\r
 <key name="careful"> 14, </key>\r
 <key name="carri"> 23, </key>\r
 <key name="carry"> 10, </key>\r
-<key name="cas"> 3,8,14,11,24,16,17, </key>\r
-<key name="cascad"> 14, </key>\r
+<key name="cas"> 3,8,11,25,16,14,17, </key>\r
+<key name="cascad"> 24,14, </key>\r
 <key name="casroot"> 14, </key>\r
-<key name="cat"> 14, </key>\r
 <key name="catalog"> 19, </key>\r
 <key name="catalogmodulegeneral"> 19, </key>\r
 <key name="catalogmodulepersonnel"> 19, </key>\r
 <key name="catalogu"> 2,15, </key>\r
 <key name="categori"> 20, </key>\r
 <key name="cd"> 14, </key>\r
-<key name="cel"> 24,25, </key>\r
-<key name="center"> 24, </key>\r
-<key name="centr"> 24, </key>\r
-<key name="central"> 24, </key>\r
+<key name="cel"> 25,26, </key>\r
+<key name="cent"> 24,28, </key>\r
+<key name="center"> 25, </key>\r
+<key name="centr"> 25, </key>\r
+<key name="central"> 25, </key>\r
 <key name="centraliz"> 15, </key>\r
-<key name="chang"> 3,6,8,14,23,24,16,17,18,26, </key>\r
-<key name="channel"> 24, </key>\r
+<key name="chang"> 3,6,8,23,24,25,16,14,17,18,27,28, </key>\r
+<key name="channel"> 25, </key>\r
 <key name="chapter"> 4, </key>\r
-<key name="character"> 25, </key>\r
+<key name="character"> 26, </key>\r
 <key name="charg"> 14, </key>\r
-<key name="check"> 0,14,24,16,18, </key>\r
+<key name="check"> 0,25,16,14,18,28, </key>\r
+<key name="check_enabl"> 14, </key>\r
 <key name="check_version"> 14, </key>\r
-<key name="checkbox"> 14,23,24,18, </key>\r
-<key name="choic"> 0,14,24,25, </key>\r
-<key name="choos"> 5,7,1,8,14,23,13,24,16,25,19,22, </key>\r
-<key name="chosen"> 24,25,19, </key>\r
-<key name="clamp"> 24, </key>\r
+<key name="checkbox"> 23,25,14,18, </key>\r
+<key name="choic"> 0,25,14,26, </key>\r
+<key name="choos"> 5,7,1,8,23,24,13,25,16,14,26,19,22,28, </key>\r
+<key name="chosen"> 25,26,19, </key>\r
+<key name="clamp"> 25, </key>\r
 <key name="classic"> 16, </key>\r
+<key name="clean"> 25, </key>\r
 <key name="clear"> 14, </key>\r
 <key name="clearall"> 16, </key>\r
-<key name="click"> 5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22, </key>\r
+<key name="click"> 5,6,0,7,1,8,23,12,24,13,25,16,14,17,26,18,27,19,20,21,22,28, </key>\r
 <key name="clickabl"> 12, </key>\r
 <key name="client"> 3, </key>\r
-<key name="clip"> 24, </key>\r
-<key name="clos"> 3,14,12,24,17,26,20, </key>\r
+<key name="clip"> 24,25, </key>\r
+<key name="clon"> 24, </key>\r
+<key name="clos"> 3,12,25,14,17,27,20, </key>\r
 <key name="cluster"> 3, </key>\r
 <key name="cod"> 3,14, </key>\r
 <key name="coef"> 23, </key>\r
 <key name="coincid"> 14, </key>\r
 <key name="collect"> 14, </key>\r
-<key name="color"> 1,23,24,25,18, </key>\r
+<key name="color"> 1,23,25,26,18,28, </key>\r
 <key name="column"> 18,21,22, </key>\r
-<key name="combin"> 11,24, </key>\r
+<key name="combin"> 11,25, </key>\r
 <key name="comfortabl"> 16, </key>\r
 <key name="comma"> 14, </key>\r
-<key name="command"> 3,0,14,15, </key>\r
-<key name="common"> 14,2,11,16,17,26, </key>\r
+<key name="command"> 3,0,15,14, </key>\r
+<key name="common"> 2,11,16,14,17,27, </key>\r
 <key name="compar"> 3,23, </key>\r
-<key name="compatibl"> 14, </key>\r
 <key name="compil"> 14, </key>\r
 <key name="complet"> 8,14,20,22, </key>\r
 <key name="complex"> 3,10, </key>\r
-<key name="component"> 3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22, </key>\r
-<key name="compos"> 24, </key>\r
+<key name="component"> 3,4,0,7,10,2,11,12,13,25,16,17,18,19,21,22, </key>\r
+<key name="compos"> 25, </key>\r
 <key name="comput"> 14,18, </key>\r
 <key name="computation"> 3,10, </key>\r
 <key name="computational"> 10, </key>\r
 <key name="concept"> 3,12, </key>\r
-<key name="concern"> 14,10, </key>\r
+<key name="concern"> 10,14, </key>\r
 <key name="conclusion"> 3, </key>\r
 <key name="config"> 14, </key>\r
 <key name="config_fil"> 14, </key>\r
-<key name="config_mandrake10_1"> 14, </key>\r
-<key name="configur"> 14,10, </key>\r
+<key name="config_mandrake_10"> 14, </key>\r
+<key name="configur"> 10,14, </key>\r
 <key name="configurabl"> 11, </key>\r
 <key name="configuration"> 14, </key>\r
 <key name="confirm"> 0,14, </key>\r
+<key name="confirmation"> 14, </key>\r
+<key name="conflict"> 14, </key>\r
 <key name="connect"> 9,11,13,16,18, </key>\r
 <key name="consist"> 16, </key>\r
-<key name="consol"> 6,14,10,15,16,17,18, </key>\r
+<key name="consol"> 6,10,15,16,14,17,18, </key>\r
 <key name="constant"> 3,15, </key>\r
-<key name="construction"> 10,11, </key>\r
-<key name="consum"> 0, </key>\r
-<key name="contain"> 3,4,5,0,8,14,13,15,16,26,19,20,21,22, </key>\r
+<key name="construction"> 10,11,24, </key>\r
+<key name="consum"> 0,14, </key>\r
+<key name="contain"> 3,4,5,0,8,13,15,16,14,27,19,20,21,22, </key>\r
 <key name="container"> 15, </key>\r
-<key name="content"> 0,14,24,20, </key>\r
-<key name="context"> 14,16,21, </key>\r
+<key name="content"> 0,24,25,14,20,28, </key>\r
+<key name="context"> 16,14,21, </key>\r
 <key name="continu"> 14, </key>\r
-<key name="control"> 5,14,23,24, </key>\r
+<key name="control"> 5,23,25, </key>\r
 <key name="convert"> 0,14, </key>\r
 <key name="cooperat"> 11, </key>\r
-<key name="coordinat"> 18, </key>\r
-<key name="copi"> 24, </key>\r
-<key name="copy"> 7,14,16,17, </key>\r
+<key name="coordinat"> 24,18,28, </key>\r
+<key name="copi"> 25, </key>\r
+<key name="copy"> 7,16,14,17, </key>\r
 <key name="copyright"> 14, </key>\r
 <key name="corba"> 3,5,2,15, </key>\r
-<key name="corn"> 24,17,25, </key>\r
+<key name="corn"> 25,17,26, </key>\r
 <key name="correct"> 16, </key>\r
-<key name="correspond"> 14,23,13,24,15,20, </key>\r
+<key name="correspond"> 23,13,25,15,14,20, </key>\r
 <key name="cost"> 10, </key>\r
 <key name="coupl"> 3,10, </key>\r
 <key name="cpp"> 15, </key>\r
 <key name="cppcontain"> 15, </key>\r
-<key name="creat"> 3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21, </key>\r
-<key name="creation"> 3,14,2, </key>\r
-<key name="cros"> 12,17, </key>\r
-<key name="csh"> 14,15, </key>\r
+<key name="creat"> 3,4,5,6,0,9,10,2,11,23,24,13,25,15,16,14,17,18,19,21, </key>\r
+<key name="creation"> 3,2,25,14, </key>\r
+<key name="cros"> 12,24,17, </key>\r
+<key name="csh"> 15,14, </key>\r
 <key name="cshell"> 15, </key>\r
-<key name="ctrl"> 24, </key>\r
-<key name="current"> 6,0,8,14,12,24,15,17,18,26,21,22, </key>\r
-<key name="cursor"> 24, </key>\r
-<key name="curv"> 18, </key>\r
-<key name="custom"> 10,25,18,19, </key>\r
-<key name="customization"> 3, </key>\r
-<key name="cycl"> 24, </key>\r
-<key name="cyrillic"> 25, </key>\r
+<key name="ctrl"> 25, </key>\r
+<key name="current"> 6,0,8,12,24,25,15,14,17,18,27,21,22, </key>\r
+<key name="cursor"> 25, </key>\r
+<key name="curv"> 25,18, </key>\r
+<key name="custom"> 10,15,26,18,19, </key>\r
+<key name="customiz"> 14, </key>\r
+<key name="customization"> 3,14, </key>\r
+<key name="cut"> 25, </key>\r
+<key name="cutlin"> 25, </key>\r
+<key name="cycl"> 25, </key>\r
+<key name="cyrillic"> 26, </key>\r
 <key name="d"> 14, </key>\r
 <key name="dat"> 8,22, </key>\r
-<key name="data"> 3,5,0,9,14,10,2,11,17,18,19, </key>\r
+<key name="data"> 3,5,0,9,10,2,11,25,17,18,19, </key>\r
 <key name="databas"> 3, </key>\r
 <key name="debug"> 21, </key>\r
-<key name="decreas"> 24, </key>\r
-<key name="default"> 5,1,14,23,24,15,16,17,18,26,21, </key>\r
-<key name="defin"> 3,0,1,14,10,23,24,15,25, </key>\r
+<key name="decreas"> 25, </key>\r
+<key name="default"> 5,1,23,24,25,15,16,14,17,18,27,21,28, </key>\r
+<key name="defin"> 3,0,1,10,23,24,25,14,26,28, </key>\r
 <key name="definit"> 3,5,7,15,16,21,22, </key>\r
-<key name="definition"> 3,10,20, </key>\r
+<key name="definition"> 3,1,10,20, </key>\r
+<key name="deform"> 28, </key>\r
 <key name="delay"> 10, </key>\r
 <key name="delet"> 17, </key>\r
-<key name="demand"> 10,2,24, </key>\r
-<key name="depend"> 7,14,21, </key>\r
+<key name="demand"> 10,2,25, </key>\r
+<key name="depend"> 7,25,14,21, </key>\r
 <key name="dependanci"> 14, </key>\r
 <key name="dependenci"> 14, </key>\r
 <key name="deriv"> 3, </key>\r
 <key name="describ"> 3,4,14,19, </key>\r
-<key name="description"> 14,15,19, </key>\r
-<key name="design"> 10,24, </key>\r
+<key name="description"> 15,14,19, </key>\r
+<key name="design"> 10,25, </key>\r
 <key name="desir"> 19, </key>\r
-<key name="desktop"> 6,9,14,2,16,17, </key>\r
+<key name="desktop"> 6,9,2,16,14,17, </key>\r
 <key name="destin"> 9,16,21,22, </key>\r
-<key name="destination"> 12, </key>\r
+<key name="destination"> 12,14, </key>\r
 <key name="detail"> 14,18, </key>\r
-<key name="dev"> 14, </key>\r
-<key name="develop"> 3, </key>\r
+<key name="develop"> 3,24,14, </key>\r
 <key name="development"> 3,10, </key>\r
-<key name="devic"> 24, </key>\r
+<key name="devic"> 25, </key>\r
 <key name="diagram"> 23, </key>\r
-<key name="dialog"> 0,1,8,14,23,13,24,16,17,25,18,26,19,22, </key>\r
+<key name="dialog"> 0,1,8,23,13,25,16,14,17,26,18,27,19,22, </key>\r
 <key name="dif"> 14, </key>\r
 <key name="differ"> 16, </key>\r
-<key name="differenc"> 3,14,16,17, </key>\r
-<key name="different"> 3,4,5,9,14,13,24,15,16,17,21, </key>\r
+<key name="differenc"> 3,16,14,17, </key>\r
+<key name="different"> 3,4,5,9,13,25,15,16,14,17,21, </key>\r
 <key name="digit"> 23, </key>\r
 <key name="digital"> 10, </key>\r
 <key name="dir"> 14, </key>\r
-<key name="direction"> 6,24, </key>\r
+<key name="direct"> 14, </key>\r
+<key name="direction"> 6,24,25, </key>\r
 <key name="directori"> 14,18, </key>\r
-<key name="directory"> 14,15,17,18,26,19, </key>\r
-<key name="disabl"> 14,24,15, </key>\r
+<key name="directory"> 15,14,17,18,27,19, </key>\r
+<key name="disabl"> 25,15,14, </key>\r
 <key name="disable_flag"> 14, </key>\r
-<key name="disk"> 14,15, </key>\r
-<key name="display"> 6,1,14,23,12,24,15,16,17,18,20,21,22, </key>\r
-<key name="distanc"> 24, </key>\r
+<key name="disk"> 15,14, </key>\r
+<key name="display"> 6,1,23,12,24,25,15,16,14,17,18,20,21,22,28, </key>\r
+<key name="distanc"> 25,28, </key>\r
 <key name="distinction"> 3, </key>\r
-<key name="distribut"> 3,14, </key>\r
+<key name="distribut"> 3, </key>\r
 <key name="distribution"> 14, </key>\r
-<key name="divid"> 4,24,22, </key>\r
+<key name="divid"> 4,25,22, </key>\r
 <key name="do"> 7,14, </key>\r
 <key name="dockabl"> 6,2,16,17, </key>\r
-<key name="document"> 5,0,9,14,16, </key>\r
-<key name="doesn"> 14, </key>\r
+<key name="document"> 5,0,9,16,14, </key>\r
+<key name="doesn"> 24, </key>\r
 <key name="domain"> 3,11, </key>\r
-<key name="dominant"> 24, </key>\r
-<key name="don"> 14,24,19, </key>\r
+<key name="dominant"> 25, </key>\r
+<key name="don"> 24,25,14,19,28, </key>\r
 <key name="dot"> 14, </key>\r
 <key name="doubl"> 22, </key>\r
 <key name="down"> 8,12, </key>\r
+<key name="downward"> 24,28, </key>\r
 <key name="doxygen"> 14, </key>\r
-<key name="doxytag"> 14, </key>\r
-<key name="doxywizard"> 14, </key>\r
-<key name="drag"> 16, </key>\r
+<key name="drag"> 24,16,28, </key>\r
 <key name="dramatical"> 3, </key>\r
+<key name="drawn"> 24,28, </key>\r
 <key name="driv"> 14, </key>\r
 <key name="drop"> 12,16, </key>\r
-<key name="dump"> 0, </key>\r
+<key name="dump"> 0,24,28, </key>\r
 <key name="dumpversion"> 14, </key>\r
+<key name="duplicat"> 24, </key>\r
 <key name="dynamic"> 2, </key>\r
-<key name="dynamical"> 11,24, </key>\r
-<key name="e"> 14,2,15,16,17, </key>\r
+<key name="dynamical"> 11,25, </key>\r
+<key name="e"> 2,15,16,14,17, </key>\r
 <key name="easi"> 3,10, </key>\r
 <key name="easy"> 3, </key>\r
 <key name="economical"> 3, </key>\r
-<key name="edg"> 23, </key>\r
-<key name="edit"> 7,8,14,2,15, </key>\r
-<key name="editabl"> 24, </key>\r
-<key name="edition"> 24, </key>\r
-<key name="editor"> 26, </key>\r
+<key name="edg"> 1,23, </key>\r
+<key name="edit"> 7,8,2,25,15,14, </key>\r
+<key name="editabl"> 25, </key>\r
+<key name="edition"> 25, </key>\r
+<key name="editor"> 27, </key>\r
 <key name="efficient"> 10, </key>\r
-<key name="egrep"> 14, </key>\r
-<key name="eith"> 24,25,18,19, </key>\r
+<key name="eith"> 25,14,26,18,19, </key>\r
 <key name="electrical"> 10, </key>\r
 <key name="electronic"> 10, </key>\r
-<key name="element"> 10,23,24, </key>\r
+<key name="element"> 10,23,25, </key>\r
 <key name="embed"> 15, </key>\r
 <key name="empty"> 6, </key>\r
-<key name="enabl"> 18,20, </key>\r
+<key name="enabl"> 14,18,20, </key>\r
 <key name="encourag"> 3, </key>\r
-<key name="end"> 3,14,24,18,26, </key>\r
+<key name="end"> 3,25,14,18,27, </key>\r
 <key name="enforc"> 3, </key>\r
 <key name="engin"> 3, </key>\r
 <key name="enough"> 14, </key>\r
 <key name="ensur"> 3,10, </key>\r
-<key name="ent"> 8,14,15,17, </key>\r
+<key name="ent"> 8,15,14,17, </key>\r
 <key name="enter"> 14, </key>\r
 <key name="entity"> 23, </key>\r
 <key name="entry"> 18,21, </key>\r
 <key name="env_"> 14, </key>\r
+<key name="env_build"> 14, </key>\r
 <key name="env_for_launch"> 14, </key>\r
 <key name="env_product"> 14, </key>\r
 <key name="env_vtk"> 14, </key>\r
-<key name="environment"> 3,6,9,14,10,2,15, </key>\r
+<key name="environment"> 3,6,9,10,2,15,14, </key>\r
+<key name="environmentpleas"> 14, </key>\r
 <key name="equal"> 3,14, </key>\r
 <key name="equipment"> 10, </key>\r
 <key name="error"> 0,14, </key>\r
-<key name="etc"> 3,14,2,11,24,16, </key>\r
+<key name="etc"> 3,2,11,25,16,14, </key>\r
 <key name="ev"> 22, </key>\r
-<key name="even"> 3,16, </key>\r
-<key name="every"> 10,20, </key>\r
+<key name="even"> 3,16,14, </key>\r
+<key name="every"> 10,25,20, </key>\r
 <key name="everyth"> 14, </key>\r
 <key name="evolution"> 10, </key>\r
 <key name="evolv"> 3, </key>\r
 <key name="ex"> 15, </key>\r
-<key name="exact"> 14,24, </key>\r
-<key name="exampl"> 6,14,10,16,17,19, </key>\r
-<key name="exceed"> 24, </key>\r
-<key name="exception"> 2,15, </key>\r
+<key name="exact"> 25,14, </key>\r
+<key name="examl"> 14, </key>\r
+<key name="exampl"> 6,10,16,14,17,19, </key>\r
+<key name="exceed"> 25, </key>\r
+<key name="except"> 14,28, </key>\r
+<key name="exception"> 2,15,14, </key>\r
 <key name="exchang"> 3, </key>\r
+<key name="execut"> 14, </key>\r
+<key name="executabl"> 14, </key>\r
 <key name="execution"> 10,11, </key>\r
-<key name="exist"> 3,14,11,13,17,26,19, </key>\r
+<key name="exist"> 3,11,13,14,17,27,19, </key>\r
 <key name="existenc"> 14, </key>\r
 <key name="expand"> 12, </key>\r
 <key name="expandability"> 3, </key>\r
 <key name="expectation"> 10, </key>\r
+<key name="experienc"> 14, </key>\r
 <key name="expert"> 0, </key>\r
 <key name="exploit"> 3, </key>\r
 <key name="explor"> 4, </key>\r
-<key name="export"> 10,23, </key>\r
+<key name="export"> 10,23,24,28, </key>\r
 <key name="expos"> 3, </key>\r
-<key name="extend"> 25, </key>\r
-<key name="extension"> 17,26, </key>\r
-<key name="external"> 18, </key>\r
+<key name="extend"> 24,26,28, </key>\r
+<key name="extension"> 17,27, </key>\r
+<key name="external"> 14,18, </key>\r
 <key name="extract"> 14, </key>\r
 <key name="extreme"> 10, </key>\r
-<key name="f"> 14,15, </key>\r
-<key name="fac"> 23,24,18, </key>\r
+<key name="f"> 15,14, </key>\r
+<key name="fac"> 23,25,18, </key>\r
 <key name="facilitat"> 3,11, </key>\r
-<key name="fact"> 14,16, </key>\r
+<key name="fact"> 16, </key>\r
 <key name="factory"> 19, </key>\r
 <key name="fail"> 14, </key>\r
 <key name="fals"> 14, </key>\r
-<key name="famili"> 24, </key>\r
-<key name="featur"> 4,14,24, </key>\r
-<key name="field"> 8,14,10,23,24,25, </key>\r
+<key name="famili"> 25, </key>\r
+<key name="featur"> 4,25,14, </key>\r
+<key name="feel"> 14, </key>\r
+<key name="field"> 8,10,23,25,14,26, </key>\r
 <key name="fig"> 14, </key>\r
 <key name="figur"> 1,14, </key>\r
-<key name="fil"> 5,0,8,14,11,13,24,15,16,17,18,26,19, </key>\r
+<key name="fil"> 5,0,8,11,13,25,15,16,14,17,18,27,19, </key>\r
 <key name="fill"> 23, </key>\r
+<key name="final"> 14, </key>\r
 <key name="find"> 14,19,20, </key>\r
 <key name="find_in_path"> 14, </key>\r
 <key name="fine"> 3, </key>\r
-<key name="finish"> 14,12,24, </key>\r
+<key name="finish"> 12,25,14, </key>\r
 <key name="finit"> 10, </key>\r
-<key name="first"> 0,14,24,18,21, </key>\r
-<key name="fit"> 18, </key>\r
+<key name="first"> 0,25,14,18,21, </key>\r
+<key name="fit"> 24,18,28, </key>\r
 <key name="flag"> 14, </key>\r
 <key name="flexibility"> 3,0, </key>\r
-<key name="flexibl"> 14,10,2, </key>\r
-<key name="focal"> 24, </key>\r
+<key name="flexibl"> 10,2,14, </key>\r
+<key name="focal"> 25, </key>\r
 <key name="focu"> 12, </key>\r
 <key name="fold"> 14,17,21, </key>\r
-<key name="follow"> 3,0,8,9,14,12,13,15,16,17,18,26,19,20,22, </key>\r
-<key name="font"> 23,24,25,18, </key>\r
+<key name="folder"> 14, </key>\r
+<key name="follow"> 3,0,8,9,12,13,15,16,14,17,18,27,19,20,22, </key>\r
+<key name="font"> 23,25,14,26,18,28, </key>\r
+<key name="forc"> 14, </key>\r
 <key name="forget"> 19, </key>\r
-<key name="format"> 4,10,13,18, </key>\r
-<key name="forth"> 24, </key>\r
-<key name="fp"> 24, </key>\r
-<key name="fram"> 14,24, </key>\r
+<key name="formal"> 14, </key>\r
+<key name="format"> 4,10,24,13,18,28, </key>\r
+<key name="forth"> 25, </key>\r
+<key name="fp"> 25, </key>\r
+<key name="fram"> 24,25,14,28, </key>\r
 <key name="framework"> 2, </key>\r
-<key name="fre"> 10,24, </key>\r
+<key name="fre"> 1,10,25, </key>\r
 <key name="friend"> 10, </key>\r
-<key name="ful"> 24, </key>\r
+<key name="ful"> 25, </key>\r
 <key name="fulfill"> 0, </key>\r
-<key name="full"> 24,20, </key>\r
-<key name="function"> 0,14,10,11,16,17, </key>\r
+<key name="full"> 25,20, </key>\r
+<key name="function"> 0,10,11,16,14,17, </key>\r
 <key name="function_nam"> 14, </key>\r
 <key name="functional"> 16, </key>\r
-<key name="functionaliti"> 10, </key>\r
-<key name="functionality"> 3,4,7,9,16,19, </key>\r
+<key name="functionaliti"> 10,24,28, </key>\r
+<key name="functionality"> 3,4,7,9,24,16,19,28, </key>\r
 <key name="fundamental"> 3, </key>\r
 <key name="furth"> 14, </key>\r
-<key name="g"> 14,15, </key>\r
+<key name="g"> 15,14, </key>\r
 <key name="gap"> 23, </key>\r
-<key name="gaus"> 2,24, </key>\r
+<key name="gaus"> 2,25,28, </key>\r
 <key name="gcc"> 14, </key>\r
-<key name="general"> 9,14,23,16,18, </key>\r
-<key name="generat"> 0,14,11,19, </key>\r
+<key name="general"> 9,23,16,14,18, </key>\r
+<key name="generat"> 0,11,25,14,19, </key>\r
 <key name="generator"> 10,2,19, </key>\r
 <key name="generic"> 10,11, </key>\r
-<key name="geom"> 14,11, </key>\r
-<key name="geometrical"> 1,10,11,24, </key>\r
-<key name="geometry"> 3,1,11,24,16, </key>\r
-<key name="get"> 4,9,14,10,21, </key>\r
-<key name="giv"> 0,8,14,16,25, </key>\r
-<key name="given"> 14,11,24, </key>\r
-<key name="gl"> 24, </key>\r
-<key name="global"> 24, </key>\r
+<key name="geom"> 11,14, </key>\r
+<key name="geometrical"> 1,10,11,24,25, </key>\r
+<key name="geometry"> 3,1,11,24,25,16, </key>\r
+<key name="get"> 4,9,10,14,21, </key>\r
+<key name="giv"> 0,8,16,14,26, </key>\r
+<key name="given"> 11,25,14, </key>\r
+<key name="gl"> 25, </key>\r
+<key name="global"> 24,25,28, </key>\r
 <key name="glossary"> 20, </key>\r
-<key name="go"> 14,12, </key>\r
+<key name="go"> 12,14, </key>\r
+<key name="good"> 24, </key>\r
+<key name="graduat"> 28, </key>\r
 <key name="graph"> 6,11,18, </key>\r
-<key name="graphic"> 24, </key>\r
+<key name="graphic"> 25, </key>\r
 <key name="graphical"> 0,2, </key>\r
 <key name="graphviz"> 14, </key>\r
-<key name="great"> 0,24, </key>\r
-<key name="greek"> 25, </key>\r
-<key name="grep"> 14, </key>\r
-<key name="group"> 23,24,25, </key>\r
-<key name="gui"> 3,5,0,14,2,11,15,17,18,26, </key>\r
-<key name="h"> 14,15, </key>\r
-<key name="half"> 24, </key>\r
+<key name="great"> 0,24,25,28, </key>\r
+<key name="greek"> 26, </key>\r
+<key name="group"> 23,24,25,26, </key>\r
+<key name="gui"> 3,5,0,2,11,15,14,17,18,27, </key>\r
+<key name="guid"> 14, </key>\r
+<key name="h"> 15,14, </key>\r
+<key name="half"> 25, </key>\r
 <key name="hand"> 3,12,20, </key>\r
-<key name="handl"> 14,10,2,15, </key>\r
-<key name="hard"> 14,15, </key>\r
+<key name="handl"> 10,2,15, </key>\r
+<key name="hard"> 15,14, </key>\r
 <key name="hasn"> 17, </key>\r
 <key name="hav"> 11,12,21, </key>\r
 <key name="haven"> 18, </key>\r
-<key name="hdf"> 14,13,17,18, </key>\r
+<key name="hdf"> 13,14,17,18, </key>\r
 <key name="hdf5"> 14, </key>\r
 <key name="hdf5hom"> 14, </key>\r
 <key name="heal"> 10, </key>\r
-<key name="height"> 23,24, </key>\r
+<key name="height"> 23,25, </key>\r
 <key name="hello"> 22, </key>\r
-<key name="help"> 3,4,14,10,12,13,15,18,20,21, </key>\r
+<key name="help"> 3,4,10,12,13,15,14,18,20,21, </key>\r
 <key name="helpful"> 14, </key>\r
-<key name="her"> 14,23,24,18, </key>\r
+<key name="her"> 23,25,14,18, </key>\r
 <key name="heterogeneou"> 10, </key>\r
-<key name="hid"> 24,16,18,21, </key>\r
-<key name="high"> 14,10, </key>\r
-<key name="highlight"> 14,23,21, </key>\r
-<key name="hint"> 14, </key>\r
+<key name="hid"> 24,25,16,18,21,28, </key>\r
+<key name="high"> 10, </key>\r
+<key name="highlight"> 23,14,21, </key>\r
 <key name="history"> 22, </key>\r
-<key name="hom"> 14,26, </key>\r
-<key name="horizontal"> 6,23,24,18, </key>\r
+<key name="hom"> 14,27, </key>\r
+<key name="hop"> 14, </key>\r
+<key name="horizontal"> 6,23,25,18, </key>\r
 <key name="host"> 3, </key>\r
 <key name="hotspot"> 12, </key>\r
+<key name="hour"> 14, </key>\r
 <key name="how"> 3,14, </key>\r
 <key name="hpp"> 14, </key>\r
 <key name="html"> 4,20, </key>\r
 <key name="hxx"> 14, </key>\r
-<key name="i"> 14,2,15,16,17, </key>\r
+<key name="i"> 2,15,16,17, </key>\r
 <key name="icon"> 5,7,16,19, </key>\r
 <key name="idea"> 14, </key>\r
 <key name="identification"> 21,22, </key>\r
 <key name="identify"> 14, </key>\r
 <key name="idl"> 3,19, </key>\r
 <key name="ie"> 18, </key>\r
-<key name="if"> 5,6,0,7,14,23,13,24,15,16,17,18,19,21, </key>\r
+<key name="if"> 5,6,0,7,23,24,13,25,15,16,14,17,18,19,21,28, </key>\r
 <key name="ig"> 10, </key>\r
 <key name="ignor"> 14, </key>\r
-<key name="imag"> 10,24, </key>\r
+<key name="imag"> 10,24,25,28, </key>\r
 <key name="immediate"> 12, </key>\r
 <key name="implement"> 3,14, </key>\r
-<key name="implementation"> 3,19, </key>\r
-<key name="impli"> 14, </key>\r
-<key name="import"> 0,14,10,2,11,24,16,26, </key>\r
+<key name="implementation"> 3,14,19, </key>\r
+<key name="import"> 0,10,2,11,25,16,14,27, </key>\r
 <key name="important"> 14, </key>\r
-<key name="impos"> 24, </key>\r
-<key name="improv"> 2, </key>\r
-<key name="inc"> 14, </key>\r
-<key name="includ"> 14,12,24,20, </key>\r
+<key name="impos"> 25, </key>\r
+<key name="improv"> 2,14, </key>\r
+<key name="includ"> 12,25,14,20, </key>\r
 <key name="inclusiv"> 3, </key>\r
-<key name="increas"> 0,10,24, </key>\r
-<key name="increment"> 1,24, </key>\r
+<key name="increas"> 0,10,25, </key>\r
+<key name="increment"> 1,25, </key>\r
 <key name="incremental"> 3, </key>\r
 <key name="independenc"> 3, </key>\r
 <key name="independent"> 3, </key>\r
 <key name="index"> 23,21, </key>\r
 <key name="indicat"> 16,17, </key>\r
-<key name="information"> 3,8,14,12,24,17,20,22, </key>\r
+<key name="information"> 3,8,12,25,14,17,20,22, </key>\r
 <key name="initial"> 9, </key>\r
 <key name="input"> 10,19, </key>\r
-<key name="insert"> 14, </key>\r
-<key name="insid"> 3,6,12,24,19, </key>\r
-<key name="inspect"> 14,24, </key>\r
+<key name="insid"> 3,6,12,25,19, </key>\r
+<key name="inspect"> 25,14, </key>\r
 <key name="instal"> 14,19, </key>\r
 <key name="instalation"> 14, </key>\r
-<key name="install"> 14,15, </key>\r
+<key name="install"> 15,14, </key>\r
 <key name="install_binary"> 14, </key>\r
 <key name="install_disk_spac"> 14, </key>\r
 <key name="install_sourc"> 14, </key>\r
+<key name="install_source_and_build"> 14, </key>\r
 <key name="install_wizard_caption"> 14, </key>\r
 <key name="install_wizard_copyright"> 14, </key>\r
 <key name="install_wizard_license_info"> 14, </key>\r
 <key name="install_wizard_root_directory"> 14, </key>\r
 <key name="install_wizard_version"> 14, </key>\r
-<key name="installation"> 14,15, </key>\r
+<key name="installation"> 15,14, </key>\r
 <key name="installation_mod"> 14, </key>\r
 <key name="installation_script_nam"> 14, </key>\r
 <key name="installdiskspac"> 14, </key>\r
 <key name="installwizard_root_directory"> 14, </key>\r
 <key name="installworkxxxxx"> 14, </key>\r
 <key name="instanc"> 5, </key>\r
+<key name="instruction"> 14, </key>\r
 <key name="instrumental"> 3, </key>\r
 <key name="integ"> 14, </key>\r
 <key name="integer"> 23, </key>\r
 <key name="integrat"> 3,10,2,11, </key>\r
 <key name="integration"> 3,10,2,19, </key>\r
-<key name="intend"> 14, </key>\r
 <key name="interaction"> 2, </key>\r
 <key name="interfac"> 3,0,10,2,16,19, </key>\r
 <key name="interior"> 23, </key>\r
 <key name="interoperabl"> 21, </key>\r
 <key name="interp"> 15, </key>\r
 <key name="interpret"> 2,16, </key>\r
-<key name="interval"> 24,22, </key>\r
-<key name="introduction"> 14,10,2,11, </key>\r
+<key name="interval"> 25,22, </key>\r
+<key name="introduction"> 10,2,11,14, </key>\r
 <key name="invalid"> 17, </key>\r
-<key name="invok"> 14,16, </key>\r
+<key name="invert"> 24,25, </key>\r
+<key name="invok"> 16,14, </key>\r
 <key name="ior"> 18,21, </key>\r
-<key name="isolin"> 18, </key>\r
-<key name="ispython"> 14, </key>\r
+<key name="isolat"> 1, </key>\r
+<key name="isolin"> 1,18, </key>\r
+<key name="isometric"> 24,28, </key>\r
 <key name="item"> 8,10,2, </key>\r
-<key name="iteration"> 24, </key>\r
+<key name="iteration"> 25, </key>\r
 <key name="itself"> 14, </key>\r
 <key name="java"> 4, </key>\r
+<key name="jpeg"> 24,28, </key>\r
+<key name="jpg"> 24,28, </key>\r
 <key name="just"> 14,18, </key>\r
 <key name="k"> 15, </key>\r
 <key name="kbyt"> 14, </key>\r
-<key name="kernel"> 14,11,15, </key>\r
-<key name="key"> 14,24, </key>\r
-<key name="keyboard"> 24, </key>\r
+<key name="kernel"> 11,15,14, </key>\r
+<key name="key"> 25,14, </key>\r
+<key name="keyboard"> 25, </key>\r
 <key name="kill"> 15, </key>\r
 <key name="killall"> 15, </key>\r
 <key name="kind"> 8,12, </key>\r
 <key name="know"> 19, </key>\r
 <key name="knowledg"> 0, </key>\r
 <key name="l"> 15, </key>\r
-<key name="label"> 23,24, </key>\r
+<key name="label"> 23,25,14,28, </key>\r
 <key name="languag"> 3, </key>\r
 <key name="larg"> 14, </key>\r
-<key name="largest"> 24, </key>\r
-<key name="last"> 18,22, </key>\r
-<key name="latest"> 24, </key>\r
-<key name="latin"> 25, </key>\r
-<key name="launch"> 4,0,14,13,15,26,19,22, </key>\r
+<key name="largest"> 25, </key>\r
+<key name="last"> 14,18,22, </key>\r
+<key name="latest"> 25, </key>\r
+<key name="latin"> 26, </key>\r
+<key name="launch"> 4,0,13,15,14,27,19,22, </key>\r
 <key name="lay"> 5, </key>\r
 <key name="layout"> 0,17, </key>\r
 <key name="ld_library_path"> 14, </key>\r
 <key name="lead"> 17, </key>\r
-<key name="learn"> 14,10, </key>\r
-<key name="left"> 14,23,24,25,18,20, </key>\r
+<key name="learn"> 10,14, </key>\r
+<key name="left"> 23,24,25,14,26,18,20,28, </key>\r
 <key name="legend"> 18, </key>\r
-<key name="length"> 24, </key>\r
-<key name="les"> 24, </key>\r
-<key name="level"> 3,23,24, </key>\r
+<key name="length"> 25,28, </key>\r
+<key name="les"> 25, </key>\r
+<key name="level"> 3,23,25, </key>\r
 <key name="lib"> 14, </key>\r
 <key name="libcosnotify4"> 14, </key>\r
 <key name="libhdf5"> 14, </key>\r
 <key name="libm"> 14, </key>\r
 <key name="libomniorb4"> 14, </key>\r
-<key name="libqwt"> 14, </key>\r
 <key name="librari"> 14, </key>\r
-<key name="library"> 14,2, </key>\r
-<key name="libstdplugin"> 14, </key>\r
-<key name="libtcl8"> 14, </key>\r
-<key name="libtk8"> 14, </key>\r
+<key name="library"> 2,14, </key>\r
 <key name="libvtkcommon"> 14, </key>\r
 <key name="licens"> 14, </key>\r
-<key name="lik"> 3,6,14,12,24,16,17,19,21, </key>\r
+<key name="lik"> 3,6,12,25,16,14,17,19,21, </key>\r
 <key name="like"> 14, </key>\r
-<key name="limit"> 24, </key>\r
-<key name="limitation"> 24, </key>\r
-<key name="lin"> 4,1,14,23,24,15,18, </key>\r
+<key name="limit"> 25, </key>\r
+<key name="limitation"> 25, </key>\r
+<key name="lin"> 4,1,23,25,15,14,18, </key>\r
 <key name="linear"> 18, </key>\r
 <key name="link"> 3,10,12, </key>\r
 <key name="linux"> 4,14, </key>\r
-<key name="list"> 8,14,12,24,15,18,20,22, </key>\r
+<key name="list"> 8,12,25,15,14,18,20,22, </key>\r
 <key name="list_of_prerequisit"> 14, </key>\r
-<key name="ll"> 18, </key>\r
-<key name="load"> 3,0,2,13,24,15,16,18,26,21, </key>\r
-<key name="local"> 24, </key>\r
-<key name="locat"> 3,24,15,16,18,20,21, </key>\r
+<key name="ll"> 24,18,28, </key>\r
+<key name="load"> 3,0,2,13,25,15,16,18,27,21, </key>\r
+<key name="local"> 25, </key>\r
+<key name="locat"> 3,24,25,15,16,18,20,21,28, </key>\r
 <key name="location"> 0,19, </key>\r
-<key name="lock"> 8,24, </key>\r
-<key name="log"> 15, </key>\r
-<key name="logarithmic"> 24,18, </key>\r
+<key name="lock"> 8,24,25,28, </key>\r
+<key name="log"> 15,14, </key>\r
+<key name="logarithmic"> 25,18, </key>\r
 <key name="long"> 3,14, </key>\r
 <key name="look"> 14,19,20, </key>\r
-<key name="lookout"> 23,24, </key>\r
+<key name="lookout"> 23,25, </key>\r
 <key name="lost"> 17, </key>\r
 <key name="lot"> 16, </key>\r
-<key name="low"> 14,24,25,20, </key>\r
+<key name="low"> 25,14,26,20, </key>\r
 <key name="m"> 15, </key>\r
 <key name="machin"> 3,17,22, </key>\r
 <key name="macintosh"> 4, </key>\r
-<key name="macro"> 3, </key>\r
-<key name="magnification"> 24, </key>\r
-<key name="main"> 5,0,7,8,14,10,13,24,16,17,18,19,22, </key>\r
+<key name="macro"> 3,14, </key>\r
+<key name="magnification"> 25, </key>\r
+<key name="main"> 5,0,7,8,10,13,25,16,14,17,18,19,22, </key>\r
 <key name="major"> 14, </key>\r
-<key name="mak"> 5,14,10,23, </key>\r
+<key name="mak"> 5,10,23,14, </key>\r
 <key name="make_dir"> 14, </key>\r
 <key name="make_env"> 14, </key>\r
 <key name="manag"> 10,18, </key>\r
 <key name="management"> 10,2,16, </key>\r
 <key name="mandrak"> 14, </key>\r
 <key name="mandrake10"> 14, </key>\r
-<key name="manipulat"> 24, </key>\r
-<key name="manipulator"> 24, </key>\r
-<key name="manual"> 4,0,14,18, </key>\r
+<key name="manipulat"> 25, </key>\r
+<key name="manipulator"> 25, </key>\r
+<key name="manual"> 4,0,24,14,18,28, </key>\r
 <key name="map"> 3, </key>\r
-<key name="mark"> 14,18, </key>\r
+<key name="mark"> 24,25,14,18,28, </key>\r
 <key name="marker"> 18, </key>\r
 <key name="market"> 10, </key>\r
 <key name="massive"> 3, </key>\r
 <key name="mast"> 14, </key>\r
 <key name="match"> 20, </key>\r
-<key name="matrix"> 24, </key>\r
-<key name="max"> 24, </key>\r
+<key name="matrix"> 25, </key>\r
+<key name="max"> 25, </key>\r
 <key name="maximiz"> 5, </key>\r
-<key name="maximum"> 24, </key>\r
-<key name="mean"> 6,9,14,24,16,17, </key>\r
+<key name="maximum"> 25, </key>\r
+<key name="mean"> 6,9,25,16,14,17, </key>\r
 <key name="mechanism"> 0,2,15, </key>\r
 <key name="med2hom"> 14, </key>\r
 <key name="meet"> 10, </key>\r
-<key name="memory"> 24, </key>\r
+<key name="memoris"> 24, </key>\r
+<key name="memory"> 25, </key>\r
 <key name="mention"> 14, </key>\r
-<key name="menu"> 3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22, </key>\r
+<key name="menu"> 3,5,0,7,8,2,23,12,13,25,16,17,26,18,27,19,21,22, </key>\r
 <key name="menubar"> 16, </key>\r
-<key name="mesh"> 3,10,11,23,24,16, </key>\r
-<key name="messag"> 8,14,2,15, </key>\r
-<key name="middl"> 14, </key>\r
-<key name="min"> 24, </key>\r
+<key name="mesh"> 3,10,11,23,24,25,16,14,28, </key>\r
+<key name="messag"> 8,2,15,14, </key>\r
+<key name="min"> 25, </key>\r
 <key name="minimiz"> 5, </key>\r
-<key name="minimum"> 24, </key>\r
+<key name="minimum"> 25, </key>\r
 <key name="minor"> 14, </key>\r
 <key name="mistak"> 16, </key>\r
 <key name="mix"> 16, </key>\r
-<key name="mod"> 3,0,1,14,23,24,15, </key>\r
+<key name="mod"> 3,0,1,23,25,15,14, </key>\r
 <key name="model"> 3,10,11,23, </key>\r
 <key name="modern"> 10, </key>\r
+<key name="modifi"> 14, </key>\r
 <key name="modification"> 3,0,8, </key>\r
-<key name="modify"> 0,14,10, </key>\r
-<key name="modul"> 3,4,7,1,14,2,11,23,24,15,16,17,18,26,19, </key>\r
-<key name="module_root_dir"> 14, </key>\r
-<key name="module_src_dir"> 14, </key>\r
+<key name="modify"> 0,10,14, </key>\r
+<key name="modul"> 3,4,7,1,2,11,23,24,25,15,16,14,17,18,27,19,28, </key>\r
 <key name="module1"> 15, </key>\r
 <key name="module2"> 15, </key>\r
 <key name="modulecatalog"> 15, </key>\r
-<key name="modulu"> 24, </key>\r
-<key name="moment"> 14,24, </key>\r
-<key name="momentari"> 24, </key>\r
-<key name="mous"> 23,24,16, </key>\r
+<key name="modulu"> 25, </key>\r
+<key name="moment"> 25,14, </key>\r
+<key name="momentari"> 25, </key>\r
+<key name="mous"> 23,24,25,16,28, </key>\r
 <key name="mov"> 6, </key>\r
-<key name="movement"> 24, </key>\r
+<key name="movement"> 25, </key>\r
 <key name="mozilla"> 18, </key>\r
 <key name="msg2qm"> 14, </key>\r
 <key name="msg2qm_root"> 14, </key>\r
 <key name="multi"> 6,9,10,2,16,19, </key>\r
 <key name="multifil"> 17,18, </key>\r
 <key name="multipl"> 17, </key>\r
-<key name="multipli"> 24, </key>\r
+<key name="multipli"> 25, </key>\r
 <key name="multiti"> 3, </key>\r
 <key name="must"> 3,10,11, </key>\r
-<key name="n"> 14,24,15, </key>\r
-<key name="nam"> 3,5,0,8,14,17,19,21,22, </key>\r
+<key name="n"> 25,15,14, </key>\r
+<key name="nam"> 3,5,0,8,14,17,19,21,22,28, </key>\r
 <key name="nativ"> 14, </key>\r
 <key name="natur"> 7, </key>\r
 <key name="natural"> 3, </key>\r
-<key name="navigat"> 14,12, </key>\r
-<key name="navigation"> 4,12,24, </key>\r
+<key name="navigat"> 12,14, </key>\r
+<key name="navigation"> 4,12,25, </key>\r
 <key name="navigator"> 4, </key>\r
-<key name="ne"> 6,14,12,25,18, </key>\r
-<key name="necessary"> 0,14,23,15,16,17,21, </key>\r
-<key name="need"> 24, </key>\r
-<key name="negativ"> 24, </key>\r
+<key name="ne"> 6,12,14,26,18, </key>\r
+<key name="necessary"> 0,23,15,16,14,17,21, </key>\r
+<key name="need"> 25, </key>\r
+<key name="negativ"> 25, </key>\r
 <key name="netgen"> 14, </key>\r
 <key name="netgenroot"> 14, </key>\r
 <key name="netscap"> 4,18, </key>\r
-<key name="nevertheles"> 14, </key>\r
-<key name="new"> 3,5,8,9,14,10,17,18,26,19, </key>\r
-<key name="next"> 8,14,15,26,19, </key>\r
-<key name="nf"> 14, </key>\r
+<key name="new"> 3,5,8,9,10,24,25,14,17,18,27,19, </key>\r
+<key name="next"> 8,15,14,27,19, </key>\r
 <key name="nod"> 23,19, </key>\r
 <key name="normal"> 6, </key>\r
-<key name="not"> 14,15, </key>\r
+<key name="not"> 15,14, </key>\r
 <key name="notation"> 14, </key>\r
 <key name="noticeab"> 3, </key>\r
 <key name="notifd"> 14, </key>\r
-<key name="notification"> 26, </key>\r
-<key name="notify"> 24, </key>\r
+<key name="notification"> 27, </key>\r
+<key name="notify"> 25, </key>\r
 <key name="notion"> 9, </key>\r
 <key name="now"> 16, </key>\r
-<key name="nth"> 24, </key>\r
-<key name="null"> 14,24, </key>\r
-<key name="numb"> 14,11,23,24,15,18,26,22, </key>\r
-<key name="number"> 14,23,24, </key>\r
-<key name="numeric"> 14,10,11,25, </key>\r
+<key name="nth"> 25, </key>\r
+<key name="null"> 25, </key>\r
+<key name="numb"> 11,23,25,15,14,18,27,22,28, </key>\r
+<key name="number"> 23,25,14, </key>\r
+<key name="numeric"> 10,11,14,26, </key>\r
 <key name="numerical"> 3,9,10, </key>\r
 <key name="numerou"> 15, </key>\r
-<key name="object"> 3,5,6,0,7,2,23,13,24,16,17,18,26,21, </key>\r
+<key name="object"> 3,5,6,0,7,2,23,24,13,25,16,17,18,27,21,28, </key>\r
 <key name="objectiv"> 3, </key>\r
 <key name="obligatory"> 14, </key>\r
-<key name="occ"> 5,6,2,18, </key>\r
+<key name="observ"> 25, </key>\r
+<key name="occ"> 5,6,2,24,18, </key>\r
+<key name="occ_version_maintenanc"> 14, </key>\r
 <key name="occ_version_major"> 14, </key>\r
 <key name="occ_version_minor"> 14, </key>\r
 <key name="occupi"> 14, </key>\r
+<key name="occur"> 14, </key>\r
 <key name="off"> 14, </key>\r
 <key name="offer"> 3, </key>\r
+<key name="offic"> 14, </key>\r
 <key name="official"> 14, </key>\r
+<key name="offset"> 28, </key>\r
 <key name="often"> 10, </key>\r
-<key name="ok"> 14,13,26, </key>\r
+<key name="ok"> 13,14,27, </key>\r
 <key name="omg"> 3, </key>\r
-<key name="omit"> 14, </key>\r
-<key name="omni"> 14, </key>\r
 <key name="omninotify"> 14, </key>\r
 <key name="omniorb"> 14, </key>\r
 <key name="omniorbdir"> 14, </key>\r
 <key name="omniorbpy"> 14, </key>\r
-<key name="on"> 3,6,0,7,14,2,12,13,24,15,16,17,25,18,26,19, </key>\r
-<key name="onc"> 24, </key>\r
+<key name="on"> 3,6,0,7,2,12,13,25,15,16,14,17,26,18,27,19, </key>\r
+<key name="onc"> 25, </key>\r
 <key name="onlin"> 20, </key>\r
-<key name="opaqu"> 24, </key>\r
-<key name="open"> 6,0,9,14,10,11,12,13,24,15,17,19,20, </key>\r
-<key name="opencascad"> 14, </key>\r
+<key name="opaqu"> 25, </key>\r
+<key name="open"> 6,0,9,10,11,12,24,13,25,15,14,17,19,20, </key>\r
 <key name="operat"> 0, </key>\r
-<key name="operation"> 7,9,23,24,17, </key>\r
-<key name="optimiz"> 14,10,24, </key>\r
+<key name="operation"> 7,9,23,25,14,17, </key>\r
+<key name="optimiz"> 10,25,14, </key>\r
 <key name="optimization"> 11, </key>\r
-<key name="option"> 7,8,14,13,24,15,16,17,18,21, </key>\r
-<key name="optional"> 14,10,11, </key>\r
+<key name="option"> 7,8,13,25,15,16,14,17,18,21, </key>\r
+<key name="optional"> 10,11,14, </key>\r
 <key name="ord"> 14, </key>\r
-<key name="ordinat"> 23,24, </key>\r
+<key name="ordinat"> 23,25, </key>\r
 <key name="org"> 3, </key>\r
-<key name="orientation"> 23,24, </key>\r
-<key name="origin"> 23,24, </key>\r
+<key name="orientat"> 24,28, </key>\r
+<key name="orientation"> 23,24,25, </key>\r
+<key name="origin"> 23,24,25,28, </key>\r
 <key name="original"> 0, </key>\r
 <key name="originality"> 11, </key>\r
 <key name="os"> 14, </key>\r
 <key name="os_version"> 14, </key>\r
 <key name="other"> 4,0, </key>\r
-<key name="otherwis"> 0,14,24,17, </key>\r
-<key name="out"> 10,23,25, </key>\r
+<key name="otherwis"> 0,25,14,17, </key>\r
+<key name="out"> 10,23,24,26,28, </key>\r
 <key name="outlin"> 23, </key>\r
-<key name="output"> 14,2, </key>\r
-<key name="outsid"> 24,16, </key>\r
+<key name="output"> 2,14, </key>\r
+<key name="outsid"> 25,16, </key>\r
 <key name="overrid"> 14, </key>\r
-<key name="own"> 14,2,11,16, </key>\r
+<key name="overridden"> 14, </key>\r
+<key name="own"> 2,11,16,14, </key>\r
 <key name="p"> 15, </key>\r
-<key name="packag"> 14,15,19, </key>\r
+<key name="packag"> 15,14,19, </key>\r
 <key name="pag"> 14,20, </key>\r
-<key name="pan"> 12,17,20, </key>\r
+<key name="pan"> 12,24,17,20,28, </key>\r
 <key name="parallel"> 3, </key>\r
 <key name="paramet"> 14,19, </key>\r
-<key name="parameter"> 3,14,24,25,18,19, </key>\r
-<key name="parent"> 24, </key>\r
-<key name="part"> 6,14,16, </key>\r
+<key name="parameter"> 3,25,26,18,19,28, </key>\r
+<key name="parent"> 25, </key>\r
+<key name="part"> 6,24,16,14,28, </key>\r
 <key name="particular"> 10,17, </key>\r
-<key name="party"> 11, </key>\r
-<key name="pas"> 14, </key>\r
+<key name="party"> 11,14, </key>\r
 <key name="past"> 7,16, </key>\r
 <key name="patch"> 14, </key>\r
-<key name="patent"> 24, </key>\r
-<key name="path"> 14,24, </key>\r
+<key name="patent"> 25, </key>\r
+<key name="path"> 25,14, </key>\r
 <key name="pc"> 3, </key>\r
-<key name="per"> 24, </key>\r
-<key name="perform"> 14,10,11,23,24, </key>\r
-<key name="performanc"> 3,9,10, </key>\r
+<key name="per"> 25, </key>\r
+<key name="perform"> 10,11,23,24,25,14,28, </key>\r
+<key name="performanc"> 3,9,10,25,14, </key>\r
+<key name="period"> 25, </key>\r
 <key name="permission"> 14, </key>\r
 <key name="phenomena"> 3, </key>\r
 <key name="phras"> 20, </key>\r
 <key name="physic"> 10, </key>\r
 <key name="physical"> 3,10,11, </key>\r
-<key name="pick"> 14,24, </key>\r
+<key name="pick"> 25,14, </key>\r
 <key name="pickup"> 14, </key>\r
 <key name="pickup_env"> 14, </key>\r
 <key name="pickup_env_flag"> 14, </key>\r
 <key name="pictur"> 8, </key>\r
 <key name="pid"> 22, </key>\r
 <key name="piec"> 3, </key>\r
-<key name="pixel"> 24, </key>\r
-<key name="plac"> 6,14,2,16, </key>\r
-<key name="placement"> 23,24, </key>\r
-<key name="platform"> 3,4,6,0,9,14,10,2,11,15,16,17,19,22, </key>\r
+<key name="pixel"> 25, </key>\r
+<key name="plac"> 6,2,24,16,14,28, </key>\r
+<key name="placement"> 23,25, </key>\r
+<key name="plan"> 24,14, </key>\r
+<key name="platform"> 3,4,6,0,9,10,2,11,15,16,14,17,19,22, </key>\r
 <key name="play"> 0, </key>\r
 <key name="pleas"> 14, </key>\r
-<key name="plot"> 6,2, </key>\r
+<key name="plot"> 6,2,25, </key>\r
 <key name="plot2d"> 5,18, </key>\r
 <key name="plug"> 2, </key>\r
+<key name="png"> 24,28, </key>\r
 <key name="po"> 14, </key>\r
-<key name="point"> 3,14,2,23,24,18, </key>\r
+<key name="point"> 3,1,2,23,24,25,14,18,28, </key>\r
 <key name="pop"> 12,13,16,21, </key>\r
 <key name="popup"> 12, </key>\r
 <key name="port"> 15, </key>\r
 <key name="portkill"> 15, </key>\r
-<key name="position"> 24,16,17,18, </key>\r
+<key name="position"> 24,25,16,17,18,28, </key>\r
 <key name="positive"> 16, </key>\r
-<key name="possibility"> 3,0,14,15,25,19, </key>\r
-<key name="possibl"> 3,0,14,16,17,25,21, </key>\r
-<key name="post"> 3,10,11,24,16,17, </key>\r
+<key name="possibility"> 3,0,15,14,26,19, </key>\r
+<key name="possibl"> 3,0,16,14,17,26,21, </key>\r
+<key name="post"> 3,10,11,25,16,17,28, </key>\r
 <key name="powerful"> 2, </key>\r
-<key name="pr"> 10,11, </key>\r
+<key name="pr"> 10,11,14, </key>\r
 <key name="precision"> 23, </key>\r
 <key name="precompil"> 14, </key>\r
-<key name="predefin"> 3,14,25, </key>\r
+<key name="predefin"> 3,14,26, </key>\r
 <key name="preferabl"> 15, </key>\r
-<key name="preferenc"> 1,23,24,25,18,26,21, </key>\r
-<key name="prefix"> 14, </key>\r
+<key name="preferenc"> 1,23,25,26,18,27,21, </key>\r
 <key name="preinstal"> 14, </key>\r
-<key name="preliminary"> 14, </key>\r
 <key name="prerequisit"> 14, </key>\r
-<key name="pres"> 14,24,18, </key>\r
+<key name="pres"> 24,25,14,18,28, </key>\r
 <key name="preselect"> 23, </key>\r
 <key name="preselection"> 23, </key>\r
-<key name="present"> 23,24, </key>\r
-<key name="presentation"> 5,23,24,16,18, </key>\r
-<key name="prevent"> 24, </key>\r
-<key name="preview"> 25, </key>\r
-<key name="previou"> 14,13, </key>\r
-<key name="previous"> 14,11,13,17, </key>\r
-<key name="primitiv"> 24, </key>\r
-<key name="print"> 14,15, </key>\r
+<key name="present"> 23,25, </key>\r
+<key name="presentation"> 5,23,25,16,18,28, </key>\r
+<key name="prevent"> 25, </key>\r
+<key name="preview"> 24,25,26, </key>\r
+<key name="previou"> 13,14, </key>\r
+<key name="previous"> 11,13,25,14,17, </key>\r
+<key name="primitiv"> 25, </key>\r
+<key name="print"> 15,14, </key>\r
 <key name="print_env"> 14, </key>\r
 <key name="priority"> 10, </key>\r
-<key name="pro"> 3,11,24,16,17, </key>\r
+<key name="pro"> 3,11,25,16,17,28, </key>\r
 <key name="probab"> 5, </key>\r
-<key name="problem"> 0,14,10, </key>\r
+<key name="problem"> 0,10,14, </key>\r
 <key name="proce"> 9,14, </key>\r
-<key name="procedur"> 14,15, </key>\r
-<key name="proces"> 3,0,14,10,2,11,24,22, </key>\r
+<key name="procedur"> 15,14, </key>\r
+<key name="proces"> 3,0,10,2,11,25,14,22, </key>\r
 <key name="processor"> 3,10, </key>\r
-<key name="produc"> 24, </key>\r
-<key name="product"> 14,10,15, </key>\r
+<key name="produc"> 25, </key>\r
+<key name="product"> 10,15,14, </key>\r
 <key name="product_context"> 14, </key>\r
 <key name="product_description"> 14, </key>\r
 <key name="product_nam"> 14, </key>\r
 <key name="profil"> 15, </key>\r
 <key name="program"> 3,14, </key>\r
 <key name="programmatic"> 10, </key>\r
-<key name="progres"> 14,24, </key>\r
-<key name="progressiv"> 24, </key>\r
-<key name="prompt"> 14,15, </key>\r
+<key name="progres"> 25,14, </key>\r
+<key name="progressiv"> 25, </key>\r
+<key name="prompt"> 15,14, </key>\r
 <key name="pron"> 0, </key>\r
-<key name="prop"> 14, </key>\r
 <key name="proper"> 14, </key>\r
-<key name="properti"> 8,10,11,24,18, </key>\r
-<key name="propos"> 14,2, </key>\r
-<key name="provid"> 3,7,14,10,2,11,24,15,25,19,20,22, </key>\r
+<key name="properti"> 8,10,11,25,18,28, </key>\r
+<key name="proportional"> 25, </key>\r
+<key name="propos"> 2,14, </key>\r
+<key name="provid"> 3,7,10,2,11,24,25,15,14,26,19,20,22, </key>\r
 <key name="publish"> 0,17, </key>\r
 <key name="pur"> 3, </key>\r
 <key name="purpos"> 9,21, </key>\r
-<key name="py"> 15, </key>\r
+<key name="put"> 14, </key>\r
+<key name="py"> 15,14, </key>\r
 <key name="pycontain"> 15, </key>\r
 <key name="pyqt"> 14, </key>\r
+<key name="pyqtconfig"> 14, </key>\r
 <key name="pyqtdir"> 14, </key>\r
-<key name="pyramid"> 24, </key>\r
-<key name="python"> 3,6,0,14,10,2,15,16,17,18, </key>\r
+<key name="pyramid"> 25, </key>\r
+<key name="python"> 3,6,0,10,2,15,16,14,17,18, </key>\r
 <key name="pythonhom"> 14, </key>\r
+<key name="pythonpath"> 14, </key>\r
 <key name="qglobal"> 14, </key>\r
 <key name="qm"> 14, </key>\r
 <key name="qt"> 14, </key>\r
 <key name="qt_version_str"> 14, </key>\r
 <key name="qtdir"> 14, </key>\r
-<key name="quality"> 10,23,24, </key>\r
+<key name="quality"> 10,23,25, </key>\r
 <key name="quantiti"> 10, </key>\r
-<key name="question"> 14, </key>\r
 <key name="quick"> 14,18,21, </key>\r
-<key name="quit"> 0,14,17,26, </key>\r
+<key name="quit"> 0,14,17,27, </key>\r
 <key name="quot"> 14, </key>\r
 <key name="qwt"> 14, </key>\r
+<key name="qwt_global"> 14, </key>\r
+<key name="qwt_version_str"> 14, </key>\r
 <key name="qwthom"> 14, </key>\r
 <key name="r"> 15, </key>\r
 <key name="radio"> 14, </key>\r
-<key name="rainbow"> 24, </key>\r
-<key name="rang"> 11,24, </key>\r
+<key name="rainbow"> 25, </key>\r
+<key name="rang"> 11,25, </key>\r
 <key name="rapid"> 3, </key>\r
-<key name="rat"> 24, </key>\r
+<key name="rat"> 25, </key>\r
 <key name="rath"> 0, </key>\r
-<key name="ratio"> 24, </key>\r
-<key name="re"> 0,12, </key>\r
+<key name="ratio"> 25, </key>\r
+<key name="re"> 0,12,14, </key>\r
 <key name="reactivity"> 10, </key>\r
-<key name="read"> 14,10,12, </key>\r
+<key name="read"> 10,12,14, </key>\r
 <key name="readm"> 14, </key>\r
-<key name="real"> 24, </key>\r
+<key name="real"> 25, </key>\r
 <key name="realiz"> 9, </key>\r
-<key name="reassign"> 24, </key>\r
-<key name="receiv"> 26, </key>\r
-<key name="recommend"> 14,24, </key>\r
-<key name="record"> 8,24, </key>\r
-<key name="red"> 21, </key>\r
+<key name="reason"> 14, </key>\r
+<key name="reassign"> 25, </key>\r
+<key name="receiv"> 27, </key>\r
+<key name="recommend"> 25,14, </key>\r
+<key name="record"> 8,25, </key>\r
+<key name="red"> 14,21, </key>\r
+<key name="redefin"> 28, </key>\r
 <key name="redirect"> 15, </key>\r
 <key name="reduc"> 10, </key>\r
-<key name="ref"> 18,26, </key>\r
+<key name="ref"> 14,18,27, </key>\r
 <key name="refer"> 14, </key>\r
-<key name="referenc"> 4,12,24,18,21, </key>\r
-<key name="refin"> 10,24, </key>\r
+<key name="referenc"> 4,12,25,18,21, </key>\r
+<key name="refin"> 10,25, </key>\r
 <key name="refresh"> 22, </key>\r
 <key name="refreshment"> 22, </key>\r
-<key name="regim"> 24, </key>\r
+<key name="regim"> 25, </key>\r
 <key name="registry"> 2,15,22, </key>\r
 <key name="reinstal"> 14, </key>\r
 <key name="reinstall"> 14, </key>\r
 <key name="reinstallation"> 14, </key>\r
 <key name="relat"> 12,20, </key>\r
-<key name="relativ"> 14,23,18, </key>\r
+<key name="relativ"> 23,14,18, </key>\r
 <key name="releas"> 14, </key>\r
+<key name="release_not"> 14, </key>\r
 <key name="relevant"> 12, </key>\r
 <key name="reliability"> 10, </key>\r
 <key name="reload"> 17, </key>\r
 <key name="relocat"> 16, </key>\r
-<key name="remain"> 3, </key>\r
-<key name="remot"> 5, </key>\r
-<key name="remov"> 14,18, </key>\r
+<key name="remain"> 3,24, </key>\r
+<key name="remot"> 5,24,28, </key>\r
+<key name="remov"> 24,25,14,18, </key>\r
 <key name="renam"> 17, </key>\r
-<key name="render"> 24, </key>\r
+<key name="rend"> 25, </key>\r
+<key name="render"> 25, </key>\r
 <key name="reopen"> 18, </key>\r
-<key name="repeat"> 24, </key>\r
-<key name="represent"> 3,9,10,11,20, </key>\r
-<key name="representation"> 6,11,24,18, </key>\r
-<key name="representativ"> 24, </key>\r
-<key name="requir"> 14,10,13,24,17, </key>\r
+<key name="repeat"> 25, </key>\r
+<key name="represent"> 3,9,10,11,24,20,28, </key>\r
+<key name="representation"> 6,11,24,25,18, </key>\r
+<key name="representativ"> 25, </key>\r
+<key name="requir"> 10,13,25,14,17, </key>\r
 <key name="requirement"> 3,10,15, </key>\r
-<key name="reset"> 14, </key>\r
-<key name="resiz"> 18, </key>\r
-<key name="resolution"> 24, </key>\r
+<key name="requisit"> 14, </key>\r
+<key name="reset"> 24,14,28, </key>\r
+<key name="resiz"> 24,18,28, </key>\r
+<key name="resolution"> 25, </key>\r
 <key name="resolv"> 0, </key>\r
-<key name="resourc"> 14,2,24,15, </key>\r
-<key name="respectiv"> 24,26, </key>\r
-<key name="respective"> 24, </key>\r
+<key name="resourc"> 2,25,15,14, </key>\r
+<key name="respectiv"> 1,25,27, </key>\r
+<key name="respective"> 25, </key>\r
 <key name="respond"> 3, </key>\r
 <key name="responsibl"> 14, </key>\r
 <key name="rest"> 18, </key>\r
-<key name="restor"> 10,17,18,26, </key>\r
-<key name="result"> 9,10,24, </key>\r
-<key name="retroactiv"> 26, </key>\r
+<key name="restart"> 14, </key>\r
+<key name="restor"> 10,24,25,17,18,27,28, </key>\r
+<key name="result"> 9,10,24,25, </key>\r
+<key name="resum"> 14, </key>\r
+<key name="retriev"> 14, </key>\r
+<key name="retroactiv"> 27, </key>\r
+<key name="return"> 24,14, </key>\r
 <key name="reus"> 3, </key>\r
 <key name="reusabl"> 10, </key>\r
-<key name="reversib"> 0,24, </key>\r
-<key name="right"> 6,14,12,13,24,16,17,25,18,20,21, </key>\r
+<key name="reversib"> 0,25, </key>\r
+<key name="right"> 6,12,13,25,16,14,17,26,18,20,21, </key>\r
 <key name="risk"> 10, </key>\r
 <key name="robustnes"> 10, </key>\r
 <key name="rol"> 3, </key>\r
 <key name="root"> 14, </key>\r
-<key name="rotat"> 24, </key>\r
-<key name="rotation"> 24, </key>\r
+<key name="rotat"> 24,25,28, </key>\r
+<key name="rotation"> 24,25,28, </key>\r
 <key name="rul"> 14, </key>\r
-<key name="run"> 3,14,15,19,22, </key>\r
-<key name="runic"> 25, </key>\r
+<key name="run"> 3,15,14,19,22, </key>\r
+<key name="runic"> 26, </key>\r
 <key name="runinstall"> 14, </key>\r
 <key name="runsalom"> 15,19, </key>\r
 <key name="runsalomewithport"> 19, </key>\r
-<key name="s"> 3,14,12,15, </key>\r
+<key name="s"> 3,12,15,14, </key>\r
 <key name="saf"> 2, </key>\r
-<key name="salom"> 3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22, </key>\r
+<key name="salom"> 3,4,5,6,0,7,9,10,2,11,12,13,25,15,16,14,17,18,27,19,20,21,22, </key>\r
 <key name="salome_"> 14, </key>\r
 <key name="salome_modulecatalog_serv"> 19, </key>\r
 <key name="salomeapp"> 15, </key>\r
-<key name="salomeapprc"> 26, </key>\r
+<key name="salomeapprc"> 27, </key>\r
 <key name="salomed"> 0, </key>\r
-<key name="sam"> 6,12,24,16,17,19,22, </key>\r
-<key name="sampl"> 25, </key>\r
-<key name="sav"> 3,0,14,10,2,16,17,18,26, </key>\r
-<key name="scal"> 3,24,18, </key>\r
-<key name="scalar"> 23,24, </key>\r
-<key name="schem"> 3,14,10, </key>\r
+<key name="sam"> 6,12,25,16,14,17,19,22, </key>\r
+<key name="sampl"> 14,26, </key>\r
+<key name="sav"> 3,0,10,2,24,16,14,17,18,27, </key>\r
+<key name="scal"> 3,25,18,28, </key>\r
+<key name="scalar"> 23,25, </key>\r
+<key name="scen"> 24,28, </key>\r
+<key name="schem"> 3,10,14, </key>\r
 <key name="schema"> 10, </key>\r
 <key name="scientific"> 3, </key>\r
 <key name="screen"> 6,15, </key>\r
-<key name="script"> 3,0,14,15,25,19, </key>\r
+<key name="script"> 3,0,15,14,26,19, </key>\r
 <key name="scroll"> 8, </key>\r
-<key name="se"> 6,8,14,13,17,18,19,21, </key>\r
-<key name="search"> 4,14,13,17,20, </key>\r
-<key name="second"> 0,14,24, </key>\r
-<key name="section"> 14,16,18, </key>\r
-<key name="sectionthi"> 14, </key>\r
-<key name="sed"> 14, </key>\r
+<key name="se"> 6,8,24,13,14,17,18,19,21,28, </key>\r
+<key name="search"> 4,13,14,17,20, </key>\r
+<key name="second"> 0,25,14, </key>\r
+<key name="section"> 24,16,14,18, </key>\r
 <key name="seen"> 23, </key>\r
-<key name="select"> 5,6,0,1,8,14,23,13,24,17,25,18,20, </key>\r
+<key name="select"> 5,6,0,1,8,23,24,13,25,14,17,26,18,20,28, </key>\r
 <key name="selectall"> 16, </key>\r
-<key name="selection"> 2,23,24, </key>\r
+<key name="selection"> 2,23,25, </key>\r
 <key name="send"> 14, </key>\r
 <key name="sensitiv"> 16,21, </key>\r
-<key name="separat"> 3,14,24,16, </key>\r
+<key name="separat"> 3,25,16,14, </key>\r
 <key name="serv"> 3,19, </key>\r
 <key name="server"> 3,15, </key>\r
 <key name="servic"> 3,14,19, </key>\r
-<key name="session"> 1,23,13,24,15,17,18,26,21,22, </key>\r
-<key name="set"> 4,0,1,8,14,10,23,24,15,16,17,18,26,21,22, </key>\r
-<key name="setting"> 14,24,16,17,18,26, </key>\r
+<key name="session"> 1,23,13,25,15,17,18,27,21,22, </key>\r
+<key name="set"> 4,0,1,8,10,23,24,25,15,16,14,17,18,27,21,22,28, </key>\r
+<key name="setting"> 25,16,14,17,18,27, </key>\r
 <key name="sever"> 10, </key>\r
 <key name="sh"> 14, </key>\r
-<key name="shad"> 1,23,24, </key>\r
-<key name="shap"> 24, </key>\r
+<key name="shad"> 1,23,25, </key>\r
+<key name="shap"> 24,25, </key>\r
 <key name="shar"> 15, </key>\r
-<key name="shell"> 14,2,11,15, </key>\r
+<key name="shel"> 14, </key>\r
+<key name="shell"> 2,11,15,14, </key>\r
 <key name="short"> 14,20, </key>\r
 <key name="shot"> 6, </key>\r
 <key name="should"> 9,14,17,19, </key>\r
-<key name="show"> 14, </key>\r
+<key name="show"> 24,25,14,28, </key>\r
 <key name="shown"> 8,14, </key>\r
 <key name="shrink"> 23, </key>\r
-<key name="sid"> 23,24, </key>\r
-<key name="signal"> 14,2, </key>\r
+<key name="sid"> 23,25,14, </key>\r
+<key name="signal"> 2,14, </key>\r
 <key name="signatur"> 14, </key>\r
 <key name="sigterm"> 14, </key>\r
+<key name="silent"> 14, </key>\r
+<key name="simp"> 14, </key>\r
 <key name="simpl"> 3, </key>\r
 <key name="simplify"> 14, </key>\r
 <key name="simulat"> 3, </key>\r
 <key name="simulation"> 10,11, </key>\r
-<key name="simultaneous"> 6,9,14, </key>\r
+<key name="simultaneous"> 6,9,25,14, </key>\r
 <key name="sinc"> 2, </key>\r
 <key name="singl"> 14, </key>\r
 <key name="sip"> 14, </key>\r
 <key name="sipdir"> 14, </key>\r
 <key name="situation"> 3, </key>\r
-<key name="siz"> 6,23,24,16,17,25,18, </key>\r
+<key name="siz"> 6,23,25,16,17,26,18, </key>\r
 <key name="skip"> 14, </key>\r
-<key name="slight"> 14, </key>\r
-<key name="slow"> 24, </key>\r
-<key name="smallest"> 24, </key>\r
+<key name="slow"> 25, </key>\r
+<key name="small"> 24,28, </key>\r
+<key name="smallest"> 25, </key>\r
 <key name="smooth"> 18, </key>\r
-<key name="smoothnes"> 24, </key>\r
-<key name="so"> 3,7,14,24,15,20,21, </key>\r
+<key name="smoothnes"> 25, </key>\r
+<key name="so"> 3,7,25,15,14,20,21, </key>\r
 <key name="softwar"> 3,10,11, </key>\r
 <key name="solution"> 10, </key>\r
 <key name="solv"> 10, </key>\r
 <key name="someth"> 14, </key>\r
 <key name="sort"> 18, </key>\r
 <key name="sort_path"> 14, </key>\r
-<key name="sourc"> 14,10,11,15, </key>\r
-<key name="spac"> 14,23,24, </key>\r
-<key name="spacemous"> 24, </key>\r
-<key name="spe"> 24, </key>\r
-<key name="special"> 3,14,13,24,15,16,17,18, </key>\r
-<key name="specifi"> 3,24, </key>\r
-<key name="specific"> 3,0,10,15,16,26,20, </key>\r
+<key name="sourc"> 10,11,15,14, </key>\r
+<key name="spac"> 23,25,14, </key>\r
+<key name="spacemous"> 25, </key>\r
+<key name="spe"> 25, </key>\r
+<key name="special"> 3,13,25,15,16,14,17,18, </key>\r
+<key name="specifi"> 3,25, </key>\r
+<key name="specific"> 3,0,10,15,16,14,27,20, </key>\r
 <key name="specification"> 11, </key>\r
 <key name="specify"> 17,18,19, </key>\r
-<key name="spher"> 24, </key>\r
+<key name="spher"> 25, </key>\r
 <key name="spin"> 1, </key>\r
 <key name="splash"> 15, </key>\r
 <key name="splin"> 18, </key>\r
 <key name="split"> 6, </key>\r
-<key name="sprit"> 24, </key>\r
-<key name="stamp"> 24, </key>\r
+<key name="sprit"> 25, </key>\r
+<key name="stamp"> 25, </key>\r
 <key name="standalon"> 2,15, </key>\r
-<key name="standard"> 3,5,14,2,13,24,16,17,26,19, </key>\r
+<key name="standard"> 3,5,2,13,25,16,14,17,27,19, </key>\r
 <key name="standard_version"> 14, </key>\r
-<key name="start"> 6,9,14,16,18,26,19,22, </key>\r
+<key name="start"> 6,9,25,16,14,18,27,19,22, </key>\r
+<key name="start_salom"> 14, </key>\r
 <key name="stat"> 0,14,17,18, </key>\r
 <key name="station"> 3, </key>\r
 <key name="statu"> 14, </key>\r
-<key name="step"> 1,14,10,24, </key>\r
-<key name="still"> 14, </key>\r
-<key name="stor"> 3,0,14,13,17,18,19, </key>\r
+<key name="step"> 1,10,25,14, </key>\r
+<key name="stop"> 14, </key>\r
+<key name="stor"> 3,0,13,14,17,18,19, </key>\r
 <key name="str"> 14, </key>\r
-<key name="strict"> 14, </key>\r
+<key name="stretch"> 28, </key>\r
+<key name="strict"> 24,14,28, </key>\r
 <key name="strong"> 14, </key>\r
-<key name="struck"> 25, </key>\r
-<key name="structur"> 3,14,10,2,13,21, </key>\r
+<key name="struck"> 26, </key>\r
+<key name="structur"> 3,10,2,13,25,14,21, </key>\r
 <key name="structural"> 10, </key>\r
 <key name="studi"> 5,6,7,9,10,2,13,16,17, </key>\r
-<key name="study"> 3,5,6,0,7,8,9,10,2,13,24,15,16,17,18,26,19,21,22, </key>\r
+<key name="study"> 3,5,6,0,7,8,9,10,2,13,25,15,16,17,18,27,19,21,22, </key>\r
 <key name="study1"> 5, </key>\r
-<key name="styl"> 25,18, </key>\r
-<key name="sub"> 14,20, </key>\r
+<key name="stuf"> 28, </key>\r
+<key name="styl"> 26,18, </key>\r
+<key name="sub"> 24,14,20, </key>\r
 <key name="submenu"> 5,16,18, </key>\r
-<key name="subset"> 25, </key>\r
-<key name="substitut"> 24, </key>\r
+<key name="subsequent"> 14, </key>\r
+<key name="subset"> 26, </key>\r
+<key name="substitut"> 25, </key>\r
 <key name="successful"> 14, </key>\r
 <key name="suit"> 2, </key>\r
 <key name="summariz"> 14, </key>\r
-<key name="superposition"> 24, </key>\r
+<key name="superposition"> 25, </key>\r
 <key name="superv"> 15, </key>\r
 <key name="supervcontain"> 15, </key>\r
 <key name="supervision"> 2,15,19, </key>\r
 <key name="supervisor"> 11,18,19, </key>\r
 <key name="supplementary"> 21,22, </key>\r
-<key name="support"> 14,10,19, </key>\r
+<key name="suppli"> 14, </key>\r
+<key name="support"> 10,14,19, </key>\r
 <key name="supported_installation_mod"> 14, </key>\r
 <key name="sur"> 14, </key>\r
 <key name="surfac"> 23, </key>\r
-<key name="sweep"> 24, </key>\r
+<key name="sweep"> 25, </key>\r
 <key name="swig"> 14, </key>\r
-<key name="switch"> 6,14,2,24, </key>\r
-<key name="system"> 3,4,14,10,12,24,20, </key>\r
-<key name="t"> 7,14,24,15,16,17,18,19, </key>\r
+<key name="switch"> 6,2,25,14, </key>\r
+<key name="symbol"> 14, </key>\r
+<key name="system"> 3,4,10,12,25,14,20, </key>\r
+<key name="t"> 7,24,25,15,16,14,17,18,19,28, </key>\r
 <key name="tab"> 6,20,22, </key>\r
-<key name="tabl"> 14,25, </key>\r
+<key name="tabl"> 25,26, </key>\r
 <key name="tag"> 14, </key>\r
 <key name="tailor"> 10, </key>\r
 <key name="tak"> 3,14, </key>\r
-<key name="taken"> 14,15, </key>\r
+<key name="taken"> 25,15,14, </key>\r
 <key name="target"> 14, </key>\r
 <key name="target_directory"> 14, </key>\r
 <key name="target_platform"> 14, </key>\r
 <key name="targetdir"> 14, </key>\r
 <key name="task"> 0, </key>\r
 <key name="tcl"> 14, </key>\r
+<key name="tcl_version"> 14, </key>\r
+<key name="tclconfig"> 14, </key>\r
 <key name="tclhom"> 14, </key>\r
-<key name="tclsh8"> 14, </key>\r
 <key name="technologi"> 3, </key>\r
 <key name="technological"> 10, </key>\r
-<key name="technology"> 3,14, </key>\r
-<key name="temp"> 14, </key>\r
+<key name="technology"> 3,24, </key>\r
 <key name="temp_directory"> 14, </key>\r
 <key name="temp_fold"> 14, </key>\r
 <key name="tempdir"> 14, </key>\r
 <key name="temporary"> 14, </key>\r
 <key name="temporarydiskspac"> 14, </key>\r
-<key name="tensor"> 24, </key>\r
+<key name="tensor"> 25, </key>\r
 <key name="term"> 10,12,20, </key>\r
-<key name="terminal"> 14,15, </key>\r
+<key name="terminal"> 15,14, </key>\r
 <key name="test"> 3,14,19, </key>\r
-<key name="text"> 14,12,20, </key>\r
-<key name="textur"> 24, </key>\r
-<key name="them"> 3,6,14,10,23,15,16,25,22, </key>\r
+<key name="text"> 12,14,20, </key>\r
+<key name="textur"> 25, </key>\r
+<key name="them"> 3,6,10,23,24,15,16,14,26,22,28, </key>\r
 <key name="therefor"> 14, </key>\r
 <key name="third"> 11, </key>\r
 <key name="thos"> 14,18,20, </key>\r
 <key name="thre"> 14, </key>\r
-<key name="threshold"> 24, </key>\r
-<key name="thu"> 3,0, </key>\r
-<key name="tim"> 3,6,0,8,14,10,24,15,17,26,19,22, </key>\r
-<key name="titl"> 14,23,24,18, </key>\r
+<key name="threshold"> 25, </key>\r
+<key name="thu"> 3,0,14, </key>\r
+<key name="tick"> 28, </key>\r
+<key name="tim"> 3,6,0,8,10,25,15,14,17,27,19,22, </key>\r
+<key name="tip"> 14, </key>\r
+<key name="titl"> 23,25,14,18, </key>\r
 <key name="tk"> 14, </key>\r
+<key name="tk_version"> 14, </key>\r
+<key name="tkconfig"> 14, </key>\r
 <key name="tmp"> 14, </key>\r
 <key name="tmp_disk_spac"> 14, </key>\r
-<key name="togeth"> 14, </key>\r
-<key name="toggl"> 23,24,21, </key>\r
-<key name="toleranc"> 24, </key>\r
-<key name="tool"> 3,14,2,11,16,19,22, </key>\r
-<key name="toolbar"> 3,5,7,2,13,16,17, </key>\r
-<key name="toolkit"> 2, </key>\r
-<key name="top"> 5,14,2,24,16,18, </key>\r
+<key name="toggl"> 23,25,21, </key>\r
+<key name="toleranc"> 25, </key>\r
+<key name="tool"> 3,2,11,16,14,19,22, </key>\r
+<key name="toolbar"> 3,5,7,2,24,13,16,17,28, </key>\r
+<key name="toolkit"> 2,14, </key>\r
+<key name="tooltip"> 14, </key>\r
+<key name="top"> 5,2,25,16,14,18, </key>\r
 <key name="topic"> 4,12,20, </key>\r
 <key name="topmost"> 14, </key>\r
 <key name="total"> 14, </key>\r
 <key name="totality"> 3, </key>\r
 <key name="touch"> 0, </key>\r
-<key name="tr"> 14, </key>\r
 <key name="train"> 10, </key>\r
-<key name="translat"> 24, </key>\r
-<key name="translation"> 24, </key>\r
-<key name="transparency"> 24, </key>\r
-<key name="transparent"> 24, </key>\r
+<key name="transformation"> 24, </key>\r
+<key name="translat"> 25, </key>\r
+<key name="translation"> 25, </key>\r
+<key name="transparency"> 25, </key>\r
+<key name="transparent"> 25, </key>\r
 <key name="tre"> 5,14,18,19,21, </key>\r
 <key name="tri"> 14, </key>\r
-<key name="trihedron"> 18, </key>\r
+<key name="triangl"> 24,28, </key>\r
+<key name="trihedron"> 24,18,28, </key>\r
 <key name="trolltech"> 14, </key>\r
+<key name="troubl"> 14, </key>\r
 <key name="tru"> 14, </key>\r
 <key name="try"> 8,14,17,19, </key>\r
 <key name="try_exist"> 14, </key>\r
 <key name="try_nativ"> 14, </key>\r
 <key name="try_preinstal"> 14, </key>\r
-<key name="twic"> 24, </key>\r
-<key name="two"> 6,14,12,24,17,19, </key>\r
-<key name="typ"> 0,14,23,24,25,18,19, </key>\r
+<key name="turn"> 14, </key>\r
+<key name="twic"> 25, </key>\r
+<key name="two"> 6,12,25,14,17,19, </key>\r
+<key name="typ"> 0,23,25,14,26,18,19, </key>\r
 <key name="typical"> 19, </key>\r
 <key name="u"> 18, </key>\r
 <key name="ultimat"> 3, </key>\r
-<key name="uncheck"> 24,16, </key>\r
-<key name="underlin"> 25, </key>\r
+<key name="uncheck"> 24,25,16,28, </key>\r
+<key name="underlin"> 26, </key>\r
+<key name="unfortunare"> 14, </key>\r
 <key name="unfortunate"> 14, </key>\r
 <key name="uniqu"> 14, </key>\r
-<key name="unit"> 24, </key>\r
+<key name="unit"> 25, </key>\r
 <key name="unix"> 4, </key>\r
 <key name="unload"> 13,17, </key>\r
 <key name="unnecessary"> 14, </key>\r
+<key name="unpack"> 14, </key>\r
 <key name="unselect"> 14, </key>\r
 <key name="unus"> 0, </key>\r
-<key name="up"> 14,10,12,13,16,17,25,21, </key>\r
-<key name="updat"> 23,24,16,17,19, </key>\r
+<key name="up"> 10,12,13,16,14,17,26,21, </key>\r
+<key name="updat"> 23,25,16,17,19, </key>\r
 <key name="upload"> 2,16, </key>\r
-<key name="us"> 3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22, </key>\r
+<key name="us"> 3,0,1,8,9,10,2,11,23,24,25,15,16,14,17,26,18,27,19,20,21,22,28, </key>\r
 <key name="usability"> 2, </key>\r
-<key name="usag"> 14,24, </key>\r
+<key name="usag"> 25,14, </key>\r
 <key name="user"> 8,19, </key>\r
 <key name="usr"> 14, </key>\r
 <key name="usual"> 14, </key>\r
 <key name="v"> 14,18, </key>\r
 <key name="valid"> 18, </key>\r
 <key name="validation"> 3, </key>\r
-<key name="valu"> 1,14,23,24,18,21, </key>\r
-<key name="variabl"> 14,15, </key>\r
+<key name="valu"> 1,23,25,14,18,21, </key>\r
+<key name="variabl"> 15,14, </key>\r
 <key name="variety"> 4,12, </key>\r
-<key name="variou"> 14,11, </key>\r
+<key name="variou"> 11,14, </key>\r
 <key name="ve"> 14,18, </key>\r
-<key name="vector"> 24, </key>\r
-<key name="ver"> 14, </key>\r
-<key name="ver_major"> 14, </key>\r
-<key name="ver_minor"> 14, </key>\r
-<key name="version"> 6,14,2,16,26,19, </key>\r
-<key name="vertical"> 6,23,24,18, </key>\r
-<key name="very"> 14,10,2,24,16, </key>\r
-<key name="view"> 3,5,8,14,2,23,12,24,16,18,20,22, </key>\r
+<key name="vector"> 1,25, </key>\r
+<key name="version"> 6,2,16,14,27,19, </key>\r
+<key name="vertic"> 1, </key>\r
+<key name="vertical"> 6,23,25,18, </key>\r
+<key name="very"> 10,2,25,16,14, </key>\r
+<key name="via"> 24,14,28, </key>\r
+<key name="view"> 3,5,8,2,23,12,24,25,16,14,18,20,22,28, </key>\r
 <key name="viewer"> 5,6,2,11,16,17,18, </key>\r
+<key name="visibl"> 24,28, </key>\r
 <key name="visual"> 11, </key>\r
-<key name="visualisation"> 1,24, </key>\r
-<key name="visualiz"> 10,24, </key>\r
+<key name="visualisation"> 1,25, </key>\r
+<key name="visualiz"> 10,24,25,28, </key>\r
 <key name="visualization"> 9,10,2,11,16, </key>\r
-<key name="vtk"> 5,6,14,2,18, </key>\r
+<key name="vtk"> 5,6,2,14,18,28, </key>\r
 <key name="vtkhom"> 14, </key>\r
 <key name="wait"> 14, </key>\r
-<key name="want"> 6,14,12, </key>\r
-<key name="warn"> 8,14,24, </key>\r
-<key name="way"> 14,11,19, </key>\r
+<key name="want"> 6,12,14, </key>\r
+<key name="warn"> 8,25,14, </key>\r
+<key name="way"> 11,14,19, </key>\r
 <key name="web"> 4, </key>\r
 <key name="welcom"> 4,10, </key>\r
-<key name="what"> 3,14,10,12,26,21, </key>\r
+<key name="what"> 3,10,12,14,27,21, </key>\r
 <key name="whenev"> 23,18, </key>\r
 <key name="wherev"> 6, </key>\r
-<key name="wheth"> 14, </key>\r
 <key name="whil"> 3, </key>\r
-<key name="whol"> 24,18,26, </key>\r
+<key name="whol"> 25,18,27, </key>\r
 <key name="whos"> 23, </key>\r
-<key name="wid"> 4,11,25, </key>\r
+<key name="why"> 14, </key>\r
+<key name="wid"> 4,11,26, </key>\r
 <key name="widget"> 11, </key>\r
-<key name="width"> 23,24, </key>\r
-<key name="will"> 4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22, </key>\r
-<key name="window"> 4,5,6,9,14,2,12,24,15,16,17,25,18,22, </key>\r
+<key name="width"> 23,25, </key>\r
+<key name="will"> 4,5,0,8,23,24,13,25,15,16,14,17,26,18,27,19,21,22, </key>\r
+<key name="window"> 4,5,6,9,2,12,25,15,16,14,17,26,18,22, </key>\r
+<key name="wir"> 1, </key>\r
 <key name="wirefram"> 1,23, </key>\r
-<key name="wish"> 6, </key>\r
-<key name="wish8"> 14, </key>\r
+<key name="wish"> 6,24,14,28, </key>\r
 <key name="within"> 3,5,7,22, </key>\r
-<key name="without"> 3,0,14,24,15,26, </key>\r
+<key name="without"> 3,0,25,15,14,27, </key>\r
 <key name="wizard"> 14, </key>\r
-<key name="won"> 7,14,15, </key>\r
+<key name="won"> 7,15, </key>\r
 <key name="word"> 20, </key>\r
-<key name="work"> 3,6,0,9,14,11,24,16,17, </key>\r
-<key name="would"> 14,16,17,19, </key>\r
-<key name="writ"> 10,17, </key>\r
+<key name="work"> 3,6,0,9,11,24,25,16,14,17, </key>\r
+<key name="would"> 16,17,19, </key>\r
+<key name="writ"> 10,14,17, </key>\r
 <key name="written"> 3,17, </key>\r
 <key name="wrong"> 14, </key>\r
 <key name="www"> 3, </key>\r
-<key name="x"> 23,24,15, </key>\r
-<key name="xml"> 14,15,19, </key>\r
+<key name="x"> 23,25,15, </key>\r
+<key name="xml"> 15,14,19, </key>\r
 <key name="xterm"> 15, </key>\r
 <key name="xxxxx"> 14, </key>\r
-<key name="y"> 14,23,24, </key>\r
+<key name="xy"> 25, </key>\r
+<key name="y"> 23,25, </key>\r
 <key name="year"> 10, </key>\r
 <key name="yes"> 8,14, </key>\r
 <key name="yet"> 14,18, </key>\r
-<key name="your"> 5,6,0,7,8,14,23,24,15,17,18,26,19, </key>\r
-<key name="yourselv"> 25, </key>\r
+<key name="your"> 5,6,0,7,8,23,25,15,14,17,18,27,19, </key>\r
+<key name="yourselv"> 26, </key>\r
 <key name="z"> 15, </key>\r
-<key name="zon"> 5,6,24, </key>\r
-<key name="zoom"> 24,17, </key>\r
+<key name="zon"> 5,6,25, </key>\r
+<key name="zoom"> 24,25,17,28, </key>\r
 \r
 </ftswdata>  \r
index 6b0205e6ab2fa7be712e8a5d9495879f3a6aab7c..d79d74806b72f6737c35a14bd7c950c3147b4ed6 100755 (executable)
   <item name="Using Object Browser" url="kernel/using_object_browser.htm" />\r
   <item name="Using Registry tool" url="kernel/using_registry.htm" />\r
   <item name="Using Catalog Generator" url="kernel/using_catalog_generator.htm" />\r
+  <book name="Viewers" >\r
+    <item name="OCC 3D Viewer" url="occ_3d_viewer.htm" />\r
+    <item name="VTK 3D Viewer" url="vtk_3d_viewer.htm" />\r
+  </book>\r
   <book name="Setting Preferences" >\r
     <item name="Setting Preferences" url="setting_preferences.htm" />\r
     <item name="Select Color and Font" url="select_color_and_font.htm" />\r
diff --git a/doc/salome/gui/Makefile.am b/doc/salome/gui/Makefile.am
new file mode 100644 (file)
index 0000000..04ccab4
--- /dev/null
@@ -0,0 +1,53 @@
+#  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
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+EXTRA_DIST+=GUI
+
+doxygen=@DOXYGEN@
+
+usr_docs:
+       cd ./GUI; \
+       echo "Running doxygen in directory: "`pwd`; \
+       $(doxygen) ./doxyfile;
+
+docs: usr_docs
+
+clean-local:
+       cd ./GUI; \
+       rm -fr `ls | grep -v "doxyfile"`
+       rm -fr `ls | grep -vE "Makefile|GUI"`
+
+install-data-local: usr_docs
+       mkdir -p $(docdir)/gui
+       cp -rf GUI $(docdir)/gui
+       -find $(PWD) -name CVS -prune -exec rm -rf {} \;
+
+uninstall-local:
+       rm -rf $(docdir)/gui/GUI
+
+docguidir=$(docdir)/gui/GUI
+
+nodist_docgui_DATA= GUI/doxyfile
+GUI/doxyfile: GUI/doxyfile.in
+EXTRA_DIST+= GUI/doxyfile.in
\ No newline at end of file
diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in
deleted file mode 100644 (file)
index 926f149..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#  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
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-usr_docs:
-       cp -fr $(srcdir)/GUI ./
-       -find $(PWD) -name CVS -prune -exec rm -rf {} \;
-
-docs: usr_docs
-
-clean:
-       rm -fr `ls | grep -v "Makefile"`
-
-distclean: clean
-       rm -fr GUI
-
-install:
-       mkdir -p $(docdir)/gui
-       cp -rf GUI $(docdir)/gui
-       -find $(PWD) -name CVS -prune -exec rm -rf {} \;
-
-uninstall:
-       rm -rf $(docdir)/gui/GUI
index bda0467241b4e5a526d2e9a458edfb79368f3dce..4893b5e2a4b6bde236f1cd83edd01a7f69b0aefd 100755 (executable)
@@ -94,10 +94,13 @@ DIV.groupText {
    font-size: smaller 
 }
 
-BODY { 
-   background: url(sources/bg_salome.gif) 
+BODY { background: #FFFFFF
 }
 
+/* BODY { 
+   background: url(sources/bg_salome.gif) 
+} */
+
 div.tabs { 
   text-align: justify; 
   font-weight: bold;
diff --git a/doc/salome/tui/Makefile.am b/doc/salome/tui/Makefile.am
new file mode 100644 (file)
index 0000000..fd092e6
--- /dev/null
@@ -0,0 +1,57 @@
+#  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
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+EXTRA_DIST+=GUI
+
+dev_docs:
+       cp -fr $(srcdir)/GUI ./INPUT; \
+       cp -f ./GUI/doxyfile ./INPUT; \
+       cd INPUT; \
+       sed 's|../../../share/salome|$(top_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)/GUI/sources/ GUI/ ; \
+       rm -fr INPUT
+
+doctuidir=$(docdir)/tui/GUI
+
+nodist_doctui_DATA= GUI/doxyfile
+EXTRA_DIST+= GUI/doxyfile.in
diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in
deleted file mode 100644 (file)
index dc94bcb..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#  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
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-root_srcdir=@ROOT_SRCDIR@
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-doxygen=@DOXYGEN@
-
-@COMMENCE@
-
-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)/GUI/sources/ GUI ; \
-       rm -fr INPUT
-
-clean:
-       rm -fr GUI
-
-distclean: clean
-       rm -fr INPUT
-
-install:
-       $(INSTALL) -d $(docdir); \
-       mkdir -p $(docdir)/tui
-       cp -fr GUI $(docdir)/tui
-
-uninstall:
-       rm -fr $(docdir)/tui/GUI
diff --git a/idl/Makefile.am b/idl/Makefile.am
new file mode 100644 (file)
index 0000000..cd0eb79
--- /dev/null
@@ -0,0 +1,93 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# 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 Makefile is responsible of generating the client and server
+# implementation of IDL interfaces for both C++ and python usage.
+# The building process of the C++ files is in charge of each source
+# package and then is not manage here.
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+BASEIDL_FILES= SalomeApp_Engine.idl
+
+EXTRA_DIST+= $(BASEIDL_FILES)
+
+# This variable defines the files to be installed
+salomeidl_DATA = $(BASEIDL_FILES)
+
+# GUI idl common library
+lib_LTLIBRARIES = libSalomeIDLGUI.la
+
+# Sources built from idl files
+nodist_libSalomeIDLGUI_la_SOURCES= SalomeApp_EngineSK.cc
+
+# header files must be exported: other modules have to use this library
+nodist_salomeinclude_HEADERS= $(BASEIDL_FILES:%.idl=%.hh)
+
+libSalomeIDLGUI_la_CPPFLAGS =\
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ @KERNEL_CXXFLAGS@
+libSalomeIDLGUI_la_LDFLAGS = -no-undefined -version-info=0:0:0
+libSalomeIDLGUI_la_LIBADD  = @CORBA_LIBS@
+
+# These variables defines the building process of CORBA files
+OMNIORB_IDL         = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome 
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome -I$(top_builddir)/salome_adm/unix
+IDLPYFLAGS  = @IDLPYFLAGS@ -I$(KERNEL_ROOT_DIR)/idl/salome
+
+# potential problem on parallel make on the following - multiple outputs
+SUFFIXES = .idl .hh SK.cc
+.idlSK.cc:
+       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+.idl.hh:
+       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+install-exec-local: $(BASEIDL_FILES:%=$(top_srcdir)/idl/%)
+       $(INSTALL) -d  $(pkgpythondir)
+       ls $^ | while read file; do \
+         $(OMNIORB_IDL) $(IDLPYFLAGS) -C$(pkgpythondir) $$file ; \
+       done
+
+# uninstall-local removes too much, but it works in distcheck
+uninstall-local:
+       rm -rf $(pkgpythondir)/*
+
+mostlyclean-local:
+       -rm -f *.hh *.cc .depidl
+
+# we use cpp to generate dependencies between idl files.
+# option x c tells the preprocessor to consider idl as a c file.
+# if an idl is modified, all idl dependencies are rebuilt
+
+.depidl: $(BASEIDL_FILES)
+       @echo "" > $@
+       @for dep in $^ dummy; do \
+         if [ $$dep != "dummy" ]; then \
+           echo Building dependencies for $$dep; \
+           $(CPP) $(C_DEPEND_FLAG) -x c -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome $$dep 2>/dev/null | \
+           sed 's/\.o/\SK.cc/' >>$@; \
+         fi; \
+       done ;
+
+-include .depidl
diff --git a/resources/Makefile.am b/resources/Makefile.am
new file mode 100644 (file)
index 0000000..c9700c3
--- /dev/null
@@ -0,0 +1,95 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# 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 : Guillaume Boulant (CSSI)
+# Module : KERNEL 
+# $Header$
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+DEPRECATED_FILES=\
+plot2d_settings.png \
+view_fitall.png \
+cascade.png \
+plot2d_fitarea.png \
+view_reset.png \
+save.png \
+view_back.png \
+plot2d_linear_y.png \
+plot2d_legend.png \
+paste.png \
+plot2d_fitall.png \
+view_bottom.png \
+plot2d_log_y.png \
+plot2d_log.png \
+view_triedre.png \
+view_glpan.png \
+new.png \
+copy.png \
+plot2d_linear.png \
+reset.png \
+plot2d_points.png \
+view_front.png \
+view_rotate.png \
+open.png \
+close.png \
+view_fitarea.png \
+view_top.png \
+view_camera_dump.png \
+plot2d_pan.png \
+view_left.png \
+view_zoom.png \
+view_right.png \
+plot2d_lines.png \
+plot2d_splines.png \
+plot2d_zoom.png \
+view_pan.png \
+print.png \
+help.png
+
+dist_salomeres_DATA=\
+default.png \
+uc_new.png \
+uc_add.png \
+select1.png \
+dl_delete.png \
+dl_moveup.png \
+home.xpm \
+forward.xpm \
+Tools_en.xml \
+plot2d_dump.png \
+uc_clear.png \
+dl_movedown.png \
+back.xpm \
+uc_del.png \
+uc_current.png \
+tile.png \
+dl_insert.png \
+channel.cfg \
+$(DEPRECATED_FILES)
+
+EXTRA_DIST+= Tools_fr.xml
index 1ba2eca28870d38b00926919445e873729dc0d7d..1e43a09c2f80427d80e154e552661e4cf9596317 100644 (file)
Binary files a/resources/copy.png and b/resources/copy.png differ
index e57336285ea67f393322fd6f19a64d9d1de42e53..452b45f62a547640e2a9de3ad3870bbdcf8c0a44 100644 (file)
Binary files a/resources/help.png and b/resources/help.png differ
index d86ece38be776c9ad1efa18546100571bf7a0507..c7446259534a83a6e06232c80c732b459919cd15 100644 (file)
Binary files a/resources/paste.png and b/resources/paste.png differ
index 9a70952a1d50e98e939168a3274bfb841e63455e..c09ff94ad89b32483194de03275ece8844f985da 100644 (file)
Binary files a/resources/plot2d_fitall.png and b/resources/plot2d_fitall.png differ
index f54ae77833d0bc017682149abe77dc2b7209a64c..5b79594e709379eb5835258d8afaf6dd36951a02 100644 (file)
Binary files a/resources/plot2d_fitarea.png and b/resources/plot2d_fitarea.png differ
index 786d9cb3efdda8f07541563d690f40fa79caa622..038fba118736ff3732a97e0e62ea4420022560ff 100644 (file)
Binary files a/resources/plot2d_pan.png and b/resources/plot2d_pan.png differ
index 35e185b066cccc19bc9688fc33d9fcd46d176fb4..b46573914ded57ddbdbd0fdfdeca02dbe772beca 100644 (file)
Binary files a/resources/plot2d_zoom.png and b/resources/plot2d_zoom.png differ
index 7acc291dc08eb735a5803efdddd9239cd095d494..79d0da098ad6a9a674bf5a92f20ca7039e4de232 100755 (executable)
@@ -31,6 +31,7 @@
 #include <TDF_Delta.hxx>
 #include <TDF_ListIteratorOfDeltaList.hxx>
 
+#include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx>
 
 /*!
@@ -87,8 +88,11 @@ void CAF_Study::createDocument()
   if ( app && !app->stdApp().IsNull() )
   {
     try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+      OCC_CATCH_SIGNALS;
+#endif
       TColStd_SequenceOfExtendedString formats;
-           app->stdApp()->Formats( formats );
+      app->stdApp()->Formats( formats );
       if ( !formats.IsEmpty() )
         app->stdApp()->NewDocument( formats.First(), myStdDoc );
     }
@@ -121,6 +125,9 @@ bool CAF_Study::openDocument( const QString& fname )
 
   bool status = false;
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     status = app->Open( CAF_Tools::toExtString( fname ), myStdDoc ) == CDF_RS_OK;
   }
   catch ( Standard_Failure ) {
@@ -149,6 +156,9 @@ bool CAF_Study::saveDocumentAs( const QString& fname )
 
   bool status = false;
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     if ( save )
       status = app->Save( stdDoc() ) == CDF_SS_OK;
     else
@@ -185,6 +195,9 @@ bool CAF_Study::openTransaction()
 
   bool res = true;
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     if ( myStdDoc->HasOpenCommand() )
       myStdDoc->AbortCommand();
 
@@ -207,8 +220,11 @@ bool CAF_Study::abortTransaction()
 
   bool res = true;
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     myStdDoc->AbortCommand();
-               update();
+    update();
   }
   catch ( Standard_Failure ) {
     res = false;
@@ -226,12 +242,15 @@ bool CAF_Study::commitTransaction( const QString& name )
 
   bool res = true;
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     myStdDoc->CommitCommand();
 
     if ( canUndo() )
     {
       Handle(TDF_Delta) d = myStdDoc->GetUndos().Last();
-                       if ( !d.IsNull() )
+      if ( !d.IsNull() )
         d->SetName( CAF_Tools::toExtString( name ) );
     }
   }
@@ -313,18 +332,21 @@ void CAF_Study::clearModified()
 */
 bool CAF_Study::undo()
 {
-       if ( myStdDoc.IsNull() )
+  if ( myStdDoc.IsNull() )
     return false;
 
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     myStdDoc->Undo();
     undoModified();     /* decrement modification counter */
   }
   catch ( Standard_Failure ) {
-               SUIT_MessageBox::error1( application()->desktop(), tr( "ERR_ERROR" ),
-                             tr( "ERR_DOC_UNDO" ), tr ( "BUT_OK" ) );
-               return false;
-       }
+    SUIT_MessageBox::error1(application()->desktop(), tr( "ERR_ERROR" ),
+                            tr( "ERR_DOC_UNDO" ), tr ( "BUT_OK" ));
+    return false;
+  }
   return true;
 }
 
@@ -333,10 +355,13 @@ bool CAF_Study::undo()
 */
 bool CAF_Study::redo()
 {
-       if ( myStdDoc.IsNull() )
+  if ( myStdDoc.IsNull() )
     return false;
 
   try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+    OCC_CATCH_SIGNALS;
+#endif
     myStdDoc->Redo();
     doModified();      /* increment modification counter */
   }
diff --git a/src/CAF/Makefile.am b/src/CAF/Makefile.am
new file mode 100755 (executable)
index 0000000..f60c261
--- /dev/null
@@ -0,0 +1,59 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libcaf.la
+
+salomeinclude_HEADERS= \
+       CAF.h \
+       CAF_Application.h \
+       CAF_Operation.h \
+       CAF_Study.h \
+       CAF_Tools.h
+
+dist_libcaf_la_SOURCES= \
+       CAF_Application.cxx \
+       CAF_Operation.cxx \
+       CAF_Study.cxx \
+       CAF_Tools.cxx           
+
+MOC_FILES= \
+       CAF_Application_moc.cxx \
+       CAF_Operation_moc.cxx \
+       CAF_Study_moc.cxx
+nodist_libcaf_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA = \
+       resources/redo.png \
+       resources/undo.png
+
+nodist_salomeres_DATA = \
+       CAF_images.qm \
+       CAF_msg_en.qm
+
+libcaf_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) -I${QTDIR}/src/kernel -I$(QTDIR)/mkspecs/linux-g++ \
+                   -I$(srcdir)/../STD -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+libcaf_la_LDFLAGS=$(QT_MT_LIBS) $(CAS_OCAF) $(CAS_OCAFVIS)
+libcaf_la_LIBADD=../STD/libstd.la ../SUIT/libsuit.la
+
diff --git a/src/CAF/Makefile.in b/src/CAF/Makefile.in
deleted file mode 100755 (executable)
index d50233a..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= CAF.h \
-               CAF_Application.h \
-               CAF_Operation.h \
-               CAF_Study.h \
-               CAF_Tools.h
-                    
-# .po files to transform in .qm
-PO_FILES = CAF_images.po \
-          CAF_msg_en.po 
-
-# Libraries targets
-LIB = libcaf.la
-
-LIB_SRC= CAF_Application.cxx \
-        CAF_Operation.cxx \
-        CAF_Study.cxx \
-        CAF_Tools.cxx          
-
-LIB_MOC = \
-       CAF_Application.h \
-       CAF_Operation.h \
-       CAF_Study.h
-
-RESOURCES_FILES = \
-redo.png \
-undo.png
-
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) -I${QTDIR}/src/kernel -I$(QTDIR)/mkspecs/linux-g++
-
-LDFLAGS+=$(QT_MT_LIBS) $(CAS_OCAF) $(CAS_OCAFVIS)
-LIBS+= -lstd -lsuit
-
-@CONCLUDE@
-
-
-
-
-
index baabb3970951a607f044d2959d9cc43957ecbc75..cc2d1f703cacd82b24377e989885aaad3f13c311 100755 (executable)
@@ -467,7 +467,13 @@ void CAM_Application::readModuleList()
 
     QString modTitle = resMgr->stringValue( *it, QString( "name" ), QString::null );
     if ( modTitle.isEmpty() )
-      continue;
+      {
+       printf( "****************************************************************\n" );
+       printf( "*    Warning: %s not found in resources.\n", (*it).latin1() );
+       printf( "*    Module will not be available\n" );
+       printf( "****************************************************************\n" );
+       continue;
+      }
 
     QString modLibrary = resMgr->stringValue( *it, QString( "library" ), QString::null ).stripWhiteSpace();
     if ( !modLibrary.isEmpty() )
@@ -499,7 +505,11 @@ void CAM_Application::readModuleList()
     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() ); 
+      {
+       printf( "****************************************************************\n" );
+       printf( "*    Warning: modules list is empty.\n" );
+       printf( "****************************************************************\n" );
+      }
   }
 }
 
index 9b37b334795b8786ddfe0982a41c59ea0199193e..511cad9e38edaa9111aa49448f271e3dbe33b8fd 100755 (executable)
@@ -87,10 +87,13 @@ CAM_Module::~CAM_Module()
 void CAM_Module::initialize( CAM_Application* app )
 {
   myApp = app;
-  if (myApp) {
+  if ( myApp )
+  {
     SUIT_Session* aSession = SUIT_Session::session();
-    connect(aSession, SIGNAL( applicationClosed( SUIT_Application* ) ),
-            this, SLOT( onApplicationClosed( SUIT_Application* ) ));
+    connect( aSession, SIGNAL( applicationClosed( SUIT_Application* ) ),
+             this, SLOT( onApplicationClosed( SUIT_Application* ) ) );
+
+    connect( myApp, SIGNAL( infoChanged( QString ) ), this, SLOT( onInfoChanged( QString ) ) );
   }
 }
 
@@ -167,6 +170,38 @@ void CAM_Module::studyChanged( SUIT_Study* , SUIT_Study* )
 {
 }
 
+/*!Return true if module is active.*/
+bool CAM_Module::isActiveModule() const
+{
+  return application() ? application()->activeModule() == this : false;
+}
+
+/*!
+  Put the message into the status bar of the desktop. Message will be displayed
+  during specified \amscec milliseconds. If parameter \amsec is negative then
+  message will be persistently displayed when module is active.
+*/
+void CAM_Module::putInfo( const QString& msg, const int msec )
+{
+  if ( application() )
+    application()->putInfo( msg, msec );
+
+  if ( msec < 0 )
+    myInfo = msg;
+}
+
+/*!
+  Restore persistently displayed info string when previos information status string erasing
+  if module is active.
+*/
+void CAM_Module::onInfoChanged( QString txt )
+{
+  if ( txt.isEmpty() && isActiveModule() && !myInfo.isEmpty() && application() )
+    application()->putInfo( myInfo );
+}
+
+
+
 /*!Public slot, nullify application pointer if the application was closed.*/
 void CAM_Module::onApplicationClosed( SUIT_Application* theApp )
 {
@@ -640,10 +675,10 @@ void CAM_Module::connectToStudy( CAM_Study* camStudy )
     CAM_DataModel* dm = it.current()->dataModel();
     if( it.current() == this && !camStudy->containsDataModel( dm ) )
     {
-      if( prev )
-       camStudy->insertDataModel( it.current()->dataModel(), prev );
+      if ( prev )
+             camStudy->insertDataModel( it.current()->dataModel(), prev );
       else
-       camStudy->insertDataModel( it.current()->dataModel(), 0 );
+             camStudy->insertDataModel( it.current()->dataModel(), 0 );
     }
     prev = dm;
   }
index 3409905e764e985401eb90cee97e9d4362754677..df9282a410f7df1e0c051fa603df0d67034112f3 100755 (executable)
@@ -64,6 +64,10 @@ public:
   virtual void           contextMenuPopup( const QString&, QPopupMenu*, QString& title ) {};
   virtual void           updateCommandsStatus() {};
 
+  virtual void           putInfo( const QString&, const int = -1 );
+
+  bool                   isActiveModule() const;
+
   /** @name Set Menu Shown*/
   //@{
   virtual void           setMenuShown( const bool );
@@ -89,6 +93,9 @@ public slots:
 
   virtual void           onApplicationClosed( SUIT_Application* );
 
+private slots:
+  void                   onInfoChanged( QString );
+
 protected: 
   virtual CAM_DataModel* createDataModel();
 
@@ -136,6 +143,7 @@ private:
   CAM_Application*       myApp;
   QString                myName;
   QPixmap                myIcon;
+  QString                myInfo;
   CAM_DataModel*         myDataModel;
   QMap<int, QAction*>    myActionMap;
 
@@ -146,7 +154,8 @@ private:
 #pragma warning( default: 4251 )
 #endif
 
-extern "C" {
+extern "C"
+{
   typedef CAM_Module* (*GET_MODULE_FUNC)();
 }
 
index d874e5a3fe2d4f0c6fce4b7892eceb73f854f49f..65ded03258e30ec307ebefe96c29becdd47f492d 100755 (executable)
@@ -127,10 +127,8 @@ void CAM_Study::dataModelInserted( const CAM_DataModel* dModel )
     openDataModel( studyName(), dm );
   else // no, just need to update data model's connection to study tree 
        //(some application may want to show model's root in a study tree even if a model is empty)
-  {
     dm->create( this );
-    updateModelRoot( dm );
-  }
+  updateModelRoot( dm );
 }
 
 /*! \retval false*/
diff --git a/src/CAM/Makefile.am b/src/CAM/Makefile.am
new file mode 100755 (executable)
index 0000000..4e0a1e5
--- /dev/null
@@ -0,0 +1,59 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libCAM.la
+
+salomeinclude_HEADERS= \
+       CAM_Application.h \
+       CAM_DataModel.h \
+       CAM_DataObject.h \
+       CAM.h \
+       CAM_Module.h \
+       CAM_Study.h \
+       CAM_RootObject.h
+
+dist_libCAM_la_SOURCES= \
+       CAM_Application.cxx \
+       CAM_DataModel.cxx \
+       CAM_DataObject.cxx \
+       CAM_Module.cxx \
+       CAM_Study.cxx \
+       CAM_RootObject.cxx
+
+MOC_FILES= \
+       CAM_Application_moc.cxx \
+       CAM_Module_moc.cxx \
+       CAM_Study_moc.cxx \
+       CAM_DataModel_moc.cxx
+nodist_libCAM_la_SOURCES= $(MOC_FILES)
+
+nodist_salomeres_DATA=CAM_msg_en.qm
+
+libCAM_la_CPPFLAGS=$(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../STD -I$(srcdir)/../Qtx
+libCAM_la_LDFLAGS=$(QT_MT_LIBS)
+libCAM_la_LIBS=../SUIT/libsuit.la ../STD/libstd.la
+
+# what is that?
+#LDFLAGSFORBIN= -lSUITApp
diff --git a/src/CAM/Makefile.in b/src/CAM/Makefile.in
deleted file mode 100755 (executable)
index 6c02e68..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-EXPORT_HEADERS= CAM_Application.h \
-               CAM_DataModel.h \
-               CAM_DataObject.h \
-               CAM.h \
-               CAM_Module.h \
-               CAM_Study.h \
-               CAM_RootObject.h
-                    
-PO_FILES = CAM_msg_en.po
-
-LIB = libCAM.la
-
-LIB_SRC= CAM_Application.cxx \
-        CAM_DataModel.cxx \
-        CAM_DataObject.cxx \
-        CAM_Module.cxx \
-        CAM_Study.cxx \
-        CAM_RootObject.cxx
-
-LIB_MOC = CAM_Application.h \
-         CAM_Module.h \
-         CAM_Study.h \
-         CAM_DataModel.h
-
-CPPFLAGS+=$(QT_INCLUDES) 
-
-LDFLAGS+=$(QT_MT_LIBS)
-
-LIBS+= -lsuit -lstd
-LDFLAGSFORBIN= -lSUITApp
-
-@CONCLUDE@
-
-
diff --git a/src/CASCatch/CASCatch.hxx b/src/CASCatch/CASCatch.hxx
new file mode 100644 (file)
index 0000000..03541f9
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _CASCatch_HeaderFile
+#define _CASCatch_HeaderFile
+
+#include <Standard_Failure.hxx>
+#include <Standard_ErrorHandler.hxx>
+
+
+#ifdef try
+#  undef try
+#endif
+
+#ifdef catch
+#  undef catch
+#endif
+
+#ifdef NO_CXX_EXCEPTION
+#  if defined(DO_ABORT)
+#    define CASCatch_TRY \
+       Standard_ErrorHandler _Function; \
+       K_SETJMP = 1 ; \
+       if(DoesNotAbort(_Function))
+#   else  //If DO_ABORT is not defined
+#     define CASCatch_TRY \
+        Standard_ErrorHandler _Function; \
+        if(DoesNotAbort(_Function))
+#   endif //DO_ABORT
+#   define CASCatch_CATCH(Error)   \
+      else if(_Function.Catches(STANDARD_TYPE(Error)))
+#else
+#  define CASCatch_TRY try
+#  define CASCatch_CATCH catch
+#endif //NO_CXX_EXCEPTION
+
+
+#endif
diff --git a/src/CASCatch/CASCatch_CatchSignals.cxx b/src/CASCatch/CASCatch_CatchSignals.cxx
new file mode 100644 (file)
index 0000000..b039baa
--- /dev/null
@@ -0,0 +1,333 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#include "CASCatch_CatchSignals.hxx"
+
+#include "CASCatch_Failure.hxx"  
+#include "CASCatch_ErrorHandler.hxx"
+#include <TCollection_AsciiString.hxx>
+
+#define MAX_HANDLER_NUMBER 6
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_CatchSignals
+ */
+//================================================================================ 
+CASCatch_CatchSignals::CASCatch_CatchSignals() 
+     :myIsActivated(Standard_False)
+{
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+}
+
+#ifndef WNT
+
+//================================ UNIX part ==================================================
+
+#include <OSD.hxx>
+#include <OSD_WhoAmI.hxx>
+#include <OSD_SIGHUP.hxx>
+#include <OSD_SIGINT.hxx>
+#include <OSD_SIGQUIT.hxx>
+#include <OSD_SIGILL.hxx>
+#include <OSD_SIGKILL.hxx>
+#include <OSD_SIGBUS.hxx>
+#include <OSD_SIGSEGV.hxx>
+#include <OSD_SIGSYS.hxx>
+#ifndef LIN
+#include <exception.h>
+#endif
+
+//==============================
+typedef void (ACT_SIGIO_HANDLER)(void) ;
+
+ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ;
+
+typedef void (* SIG_PFV) (int);
+
+#ifdef SUN
+# include <floatingpoint.h>
+#endif
+
+#ifdef SOLARIS
+# include <floatingpoint.h>
+# include <sys/machsig.h>
+# include <stdlib.h>
+# include <stdio.h>
+#endif
+
+#include <signal.h>
+#include <sys/signal.h>
+
+#ifdef LIN
+# include <stdlib.h>
+# include <stdio.h>
+#else
+# ifdef SA_SIGINFO 
+#   ifndef AIX
+# include <sys/siginfo.h>
+#    endif
+# endif
+#endif
+
+
+#ifdef IRIX
+# include <sigfpe.h>
+# include <sys/siginfo.h>
+#endif 
+
+
+//================================================================================
+/*! Private -
+ * \brief universal handler for signals
+ */
+//================================================================================ 
+static void Handler(const OSD_Signals theSig, const OSD_Signals)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, theSig);
+  sigprocmask(SIG_UNBLOCK, &set, NULL) ;
+
+  TCollection_AsciiString aMessage(theSig);  
+  aMessage+=" signal detected";
+  CASCatch_Failure::Raise(aMessage.ToCString());
+}
+
+
+#ifdef SA_SIGINFO
+//================================================================================
+/*! Private -
+ * \brief  handler for SIGSEGV signal
+ */
+//================================================================================ 
+static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, SIGSEGV);
+  sigprocmask (SIG_UNBLOCK, &set, NULL); 
+
+  CASCatch_Failure::Raise("SIGSEGV detected");
+}
+#endif
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{  
+  if(myIsActivated) return;
+
+  struct sigaction act;
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)  
+    mySigStates[i] = new struct sigaction(); //Initialize structures
+
+  int stat;
+  act.sa_handler =  (SIG_PFV) &Handler ;
+  sigemptyset(&act.sa_mask) ;
+
+
+  stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]);    // ...... hangup
+  stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]);   // ...... floating point exception
+  stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]);   // ...... interrupt
+  stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]);  // ...... quit
+  stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]);   // ...... bus error
+  stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]);   // ...... illegal instruction
+
+#ifdef SA_RESTART
+  act.sa_flags   = SA_RESTART ;
+#else
+  act.sa_flags   = 0 ;
+#endif
+  act.sa_handler = (SIG_PFV) &SegvHandler ;
+
+#ifdef SA_SIGINFO      // OSF,SOLARIS,IRIX
+  act.sa_flags = act.sa_flags | SA_SIGINFO ;
+# ifdef SOLARIS
+  act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ;
+# endif
+#endif
+
+  stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]);    // ...... segmentation violation
+
+  myIsActivated = Standard_True;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  struct sigaction oact;
+  int stat;
+
+  stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact);   // ...... hangup
+  stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact);   // ...... floating point exception
+  stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact);   // ...... interrupt
+  stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact);  // ...... quit
+  stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact);   // ...... bus error
+  stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact);   // ...... illegal instruction
+  stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact);  // ...... segmentation violation
+
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    delete (struct sigaction*)mySigStates[i];
+
+  myIsActivated = Standard_False;
+}
+
+
+
+#else
+//====================================== WNT part ====================================================
+#include <OSD_WNT_1.hxx>
+
+#include <process.h>
+#include <signal.h>
+#include <float.h>
+
+#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions
+
+//================================================================================
+/*! Private -
+ * \brief handler for unexpected exceptions
+ */
+//================================================================================
+static Standard_Integer WntHandler(const Standard_Address theExceptionInfo) 
+{
+  LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo;
+  DWORD                dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode;
+
+  TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode);  
+  aMessage+=" Exception code - unexpected exception";
+
+  CASCatch_Failure::Raise(aMessage.ToCString());
+
+  return EXCEPTION_EXECUTE_HANDLER;
+}
+
+void SIGWntHandler(int , int ) ;
+static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ;
+
+
+//================================================================================
+/*! Private -
+ * \brief handler for signals
+ */
+//================================================================================
+static void SIGWntHandler(const int signum , const int theCode)
+{
+
+  void (*OLDSIGWNTHANDLER)(int) ;  
+  switch( signum ) { 
+  case SIGFPE : 
+    _fpreset() ;
+    _clearfp() ; 
+    _controlfp ( _OSD_FPX, _MCW_EM ); 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); 
+
+    if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return;
+    CASCatch_Failure::Raise ("Floating point error"); 
+    break;
+  case SIGSEGV : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Access violation"); 
+    break; 
+  case SIGILL : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Illegal instruction" ); 
+    break; 
+  }
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{
+  if(myIsActivated) return;
+
+  mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler);
+
+  myFloatOpWord = _controlfp(0, 0);
+  _controlfp ( _OSD_FPX, _MCW_EM );  //Enable floating point exceptions
+
+  mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER );
+  mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER );
+  mySigStates[3] = signal( SIGILL , SIGWNTHANDLER );
+
+  myIsActivated = Standard_True;
+}
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]);
+
+  _controlfp ( myFloatOpWord, _MCW_EM );
+
+  signal( SIGSEGV ,  ( void (*)(int) )mySigStates[1]);
+  signal( SIGFPE , ( void (*)(int) )mySigStates[2]);
+  signal( SIGILL , ( void (*)(int) )mySigStates[3]);
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+  
+  myIsActivated = Standard_False;
+}
+
+#endif
+
+//================================================================================
+/*! Private -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Destroy() 
+{
+  if(myIsActivated) Deactivate();
+}
+
diff --git a/src/CASCatch/CASCatch_CatchSignals.hxx b/src/CASCatch/CASCatch_CatchSignals.hxx
new file mode 100644 (file)
index 0000000..a3fc42c
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _CASCatch_CatchSignals_HeaderFile
+#define _CASCatch_CatchSignals_HeaderFile
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_CatchSignals
+ * \brief This class controls an exception handling
+ *
+ */ 
+class CASCatch_CatchSignals  {
+
+public:
+
+ // Methods PUBLIC
+ // 
+Standard_EXPORT CASCatch_CatchSignals();
+Standard_EXPORT void Destroy() ;
+~CASCatch_CatchSignals() { Destroy(); }
+Standard_EXPORT void Activate() ;
+Standard_EXPORT void Deactivate() ;
+
+private:
+
+/*!\var mySigStates[7], private
+ * \brief stores signals' handler functions
+ */ 
+Standard_Address mySigStates[7];
+
+/*!\var myFloatOpWord
+ * \brief stores a float operation word, private
+ */ 
+Standard_Integer myFloatOpWord;
+
+/*!\var myIsActivated
+ * \brief stores a flag whether a catcher is activated, private]
+ */
+Standard_Boolean myIsActivated;
+
+};
+
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.cxx b/src/CASCatch/CASCatch_ErrorHandler.cxx
new file mode 100644 (file)
index 0000000..49af8d3
--- /dev/null
@@ -0,0 +1,122 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifdef NO_CXX_EXCEPTION
+
+#include "CASCatch_ErrorHandler.hxx"
+
+// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try)
+// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort
+// request will be ignored. If the abort request do a raise during a setjmp
+// or a longjmp, there will be a "terminating SEGV" impossible to handle.
+
+
+Standard_EXPORT int K_SETJMP_CASCatch = 0 ; 
+
+static Handle(CASCatch_Failure) GlbError;  //Last caught Error, Null if there is no error
+
+static CASCatch_ErrorHandler*   Top = 0;   //The top of the Errors Stack
+
+//=======================================================================
+//function : CASCatch_ErrorHandler
+//purpose  : Constructor
+//=======================================================================
+CASCatch_ErrorHandler::CASCatch_ErrorHandler ()
+{
+  Previous = Top;
+  Top      = this;
+  CaughtError.Nullify();
+  GlbError.Nullify();
+}
+
+//=======================================================================
+//function : ~CASCatch_ErrorHandler
+//purpose  : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'.
+//=======================================================================
+CASCatch_ErrorHandler::~CASCatch_ErrorHandler()
+{
+  Top = Top->Previous;
+  if( !GlbError.IsNull() ) Abort();
+}
+
+//=======================================================================
+//function : Abort: make a longjmp to the saved Context.
+//purpose  : Abort if there is a non null 'Error'
+//=======================================================================
+void CASCatch_ErrorHandler::Abort ()
+{
+  //==== Check if can do the "longjmp" =======================================
+  if(Top == NULL || Top->Label == NULL) {
+    cout << "*** Abort *** an exception was raised, but no catch was found." << endl;
+    cout << "\t... The exception is:" << GlbError;
+    exit(1);
+  }
+
+#ifdef DO_ABORT
+  if ( K_SETJMP_CASCatch )
+    cout << "Recursive abort ===> Terminating SEGV ..." << endl ;
+  K_SETJMP_CASCatch = 1 ;
+#endif
+
+  longjmp(Top->Label, Standard_True);
+}
+
+//=======================================================================
+//function : Catches
+//purpose  : If there is a 'Error', and it is in good type 
+//           returns True and clean 'Error', else returns False.
+//=======================================================================
+Standard_Boolean CASCatch_ErrorHandler::Catches 
+  (const Handle(Standard_Type)& AType) 
+{
+#ifdef DO_ABORT
+  K_SETJMP_CASCatch = 0 ;
+#endif
+  if(GlbError.IsNull())
+    return Standard_False;
+
+  if(GlbError->IsKind(AType)){
+    CaughtError = GlbError;
+    GlbError.Nullify();
+    return Standard_True;
+  } else {
+    return Standard_False;
+  }
+}
+
+//=======================================================================
+//function : LastCaughtError
+//purpose  : 
+//=======================================================================
+Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError()
+{
+  return Top->CaughtError;
+}
+
+//=======================================================================
+//function : Error
+//purpose  : 
+//=======================================================================
+void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError)
+{
+  GlbError = aError;
+}
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.hxx b/src/CASCatch/CASCatch_ErrorHandler.hxx
new file mode 100644 (file)
index 0000000..05c6b23
--- /dev/null
@@ -0,0 +1,92 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _CASCatch_ErrorHandler_HeaderFile
+#define _CASCatch_ErrorHandler_HeaderFile
+
+#include "CASCatch_Failure.hxx"
+
+#include <stdlib.h>
+#include <setjmp.h>
+
+
+extern int K_SETJMP_CASCatch ;
+
+/*!
+ * \class CASCatch_ErrorHandler
+ * \brief This class is an exception handler, private
+ *
+ */ 
+class CASCatch_ErrorHandler 
+{
+  friend class  CASCatch_Failure;     // To execute the raise exception.
+
+ public:
+ Standard_EXPORT CASCatch_ErrorHandler();
+ Standard_EXPORT ~CASCatch_ErrorHandler();
+ Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&);
+
+ private:
+  Standard_EXPORT static  void Abort();
+  Standard_EXPORT static  void Error(const Handle(CASCatch_Failure)&);
+  Standard_EXPORT static  Handle(CASCatch_Failure)  LastCaughtError();
+
+ //==== The fields ===========================================================
+ private:
+           CASCatch_ErrorHandler*   Previous;
+           Handle(CASCatch_Failure) CaughtError;
+
+ public:
+  jmp_buf      Label;
+
+};
+
+#undef CASCatch_TRY
+#define CASCatch_TRY try
+
+#undef CASCatch_CATCH
+#define CASCatch_CATCH catch
+
+
+#ifdef NO_CXX_EXCEPTION
+# undef CASCatch_TRY
+# undef CASCatch_CATCH
+
+# if defined(DO_ABORT)
+  
+#  define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label))
+
+#  define CASCatch_TRY        CASCatch_ErrorHandler _Function; \
+                                K_SETJMP_CASCatch = 1 ; \
+                                if(DoesNotAbort_CASCatch(_Function))
+
+# else  //If DO_ABORT is not defined
+#  define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label)
+
+#  define CASCatch_TRY      CASCatch_ErrorHandler _Function; \
+                              if(DoesNotAbort_CASCatch(_Function))
+# endif //DO_ABORT
+
+
+# define CASCatch_CATCH(Error)   else if(_Function.Catches(STANDARD_TYPE(Error)))
+#endif //NO_CXX_EXCEPTION
+
+#endif //_CASCatch_ErrorHandler_HeaderFile
diff --git a/src/CASCatch/CASCatch_Failure.cxx b/src/CASCatch/CASCatch_Failure.cxx
new file mode 100644 (file)
index 0000000..6e5d3d8
--- /dev/null
@@ -0,0 +1,126 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#include "CASCatch_Failure.hxx"
+#include "CASCatch_ErrorHandler.hxx"
+#include <Standard_TypeMismatch.hxx>
+#include <Standard_Type.hxx>
+#include <string.h>
+
+IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient ) 
+
+
+#ifndef NO_CXX_EXCEPTION
+static Handle(CASCatch_Failure) RaisedError;
+#endif
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";}
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure with a message
+ * \param an exception message
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure (const Standard_CString AString) 
+{
+  if(AString) {
+     myMessage = new Standard_Character[strlen(AString) + 1];
+     strcpy(myMessage,AString);
+  }
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns the last caught exception
+ */
+//================================================================================ 
+Handle(CASCatch_Failure) CASCatch_Failure::Caught() 
+{
+#ifdef NO_CXX_EXCEPTION
+  return CASCatch_ErrorHandler::LastCaughtError();
+#else
+  return RaisedError ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================ 
+void CASCatch_Failure::Raise (const Standard_CString AString) 
+{ 
+  Handle(CASCatch_Failure) E = new CASCatch_Failure()  ;
+  E->Reraise (AString) ;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief re-raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================
+void CASCatch_Failure::Reraise (const Standard_CString AString) 
+{
+  if(AString){
+    myMessage = new Standard_Character[strlen(AString) + 1];
+    strcpy(myMessage,AString);
+  }
+
+#ifdef NO_CXX_EXCEPTION
+  CASCatch_ErrorHandler::Error(this) ;
+  CASCatch_ErrorHandler::Abort();
+#else
+  RaisedError = this ;
+  Throw() ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns an exception message
+ */
+//================================================================================ 
+Standard_CString CASCatch_Failure::GetError() const
+{
+  return myMessage;
+}
+
+//================================================================================
+/*! Public -
+ * \brief Is called when using standard C++ exceptions
+ */
+//================================================================================ 
+void CASCatch_Failure::Throw() const
+{
+#ifndef NO_CXX_EXCEPTION
+  throw CASCatch_Failure() ;
+#endif
+}
+
diff --git a/src/CASCatch/CASCatch_Failure.hxx b/src/CASCatch/CASCatch_Failure.hxx
new file mode 100644 (file)
index 0000000..102f0ec
--- /dev/null
@@ -0,0 +1,60 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#ifndef _CASCATCH_FAILURE_HeaderFile
+#define _CASCATCH_FAILURE_HeaderFile
+
+#include <Standard_Transient.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_Failure
+ * \brief This class presents an exception to be thrown
+ *
+ */    
+class CASCatch_Failure :  public Standard_Transient
+{
+
+public:
+
+Standard_EXPORT CASCatch_Failure();
+Standard_EXPORT CASCatch_Failure(const Standard_CString aString);
+Standard_EXPORT void Reraise(const Standard_CString aMessage) ;
+Standard_EXPORT Standard_CString GetError() const;
+Standard_EXPORT static  Handle_CASCatch_Failure Caught() ;
+Standard_EXPORT static  void Raise(const Standard_CString aMessage = "") ;
+Standard_EXPORT virtual  void Throw() const;public:
+
+public:
+
+DEFINE_STANDARD_RTTI( CASCatch_Failure )  
+
+private: 
+/*!\var myMessage
+ * \brief stores an exception message
+ */   
+Standard_CString myMessage;
+
+};
+
+
+#endif
diff --git a/src/CASCatch/Makefile.am b/src/CASCatch/Makefile.am
new file mode 100644 (file)
index 0000000..a4b9f71
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either 
+# version 2.1 of the License.
+# 
+# This library is distributed in the hope that it will be useful 
+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+# Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public  
+# License along with this library; if not, write to the Free Software 
+# 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 : Sergey RUIN (OCN)
+#  Module : SALOME
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+
+salomeinclude_HEADERS   = CASCatch.hxx \
+                       CASCatch_CatchSignals.hxx \
+                       CASCatch_ErrorHandler.hxx \
+                       CASCatch_Failure.hxx
+
+lib_LTLIBRARIES             = libCASCatch.la
+libCASCatch_la_SOURCES  = \
+                       CASCatch_CatchSignals.cxx \
+                       CASCatch_ErrorHandler.cxx \
+                       CASCatch_Failure.cxx
+
+COMMON_CPPFLAGS = \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+
+libCASCatch_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libCASCatch_la_LIBADD  = $(CAS_KERNEL)
index 4ecf18b3eb27cc96661cdf0a062e4ddc6be566c0..56197a523ef7287e5b20ad17b4a6786854a892fe 100644 (file)
 IMPLEMENT_STANDARD_HANDLE(DDS_DicGroup, MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(DDS_DicGroup, MMgt_TShared)
 
+/*!
+  \class DDS_DicGroup
+  
+  This class to provide set of DDS_DicItem objects from one component.
+*/
+
+/*!
+  Constructor. Create the group with name \aname.
+*/
 DDS_DicGroup::DDS_DicGroup( const TCollection_AsciiString& name )
 : MMgt_TShared(),
 myName( name ),
@@ -40,15 +49,25 @@ myActiveSystem( UNIT_SYSTEM_SI )
 {
 }
 
+/*!
+  Copy constructor.
+*/
 DDS_DicGroup::DDS_DicGroup( const DDS_DicGroup& )
 {
 }
 
+/*!
+  Get the name of group (component).
+*/
 TCollection_AsciiString DDS_DicGroup::GetName() const
 {
   return myName;
 }
 
+/*!
+  Returns the names list of defined unit systems.
+  Parameter \atheSystems will contains the sequence of string names.
+*/
 void DDS_DicGroup::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystemSeq ) const
 {
   theSystemSeq.Clear();
@@ -61,6 +80,9 @@ void DDS_DicGroup::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystemSeq )
   }
 }
 
+/*!
+  Returns the label of unit system \aname. If unit system not found then empty string returned.
+*/
 TCollection_ExtendedString DDS_DicGroup::GetUnitSystemLabel( const TCollection_AsciiString& name ) const
 {
   TCollection_ExtendedString aLabel;
@@ -69,21 +91,33 @@ TCollection_ExtendedString DDS_DicGroup::GetUnitSystemLabel( const TCollection_A
   return aLabel;
 }
 
+/*!
+  Gets the name of active unit system.
+*/
 TCollection_AsciiString DDS_DicGroup::GetActiveUnitSystem() const
 {
   return myActiveSystem;
 }
 
+/*!
+  Sets the name of active unit system.
+*/
 void DDS_DicGroup::SetActiveUnitSystem( const TCollection_AsciiString& theSystem )
 {
   if ( myUnitSystem.IsBound( theSystem ) )
     myActiveSystem = theSystem;
 }
 
+/*!
+  Assignment operator.
+*/
 void DDS_DicGroup::operator=( const DDS_DicGroup& )
 {
 }
 
+/*!
+  Fill the internal data structures from XML parsed structures. Internal.
+*/
 void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM_Element& theDocElement )
 {
   TCollection_AsciiString aCompName = theComponentData.getAttribute( DDS_Dictionary::KeyWord( "COMPONENT_NAME" ) );
@@ -140,9 +174,9 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM
 }
 
 /*!
-  Returns DicItem with all attached data
+  Gets dictionary item with specified identifier \atheID.
+  If dictionary item not found then null handle returned.
 */
-
 Handle(DDS_DicItem) DDS_DicGroup::GetDicItem( const TCollection_AsciiString& theID ) const
 {
   Handle(DDS_DicItem) aDicItem;
index 1582aab3f881eacebac7058b645864a8fd52c788..48ce715a9c76315bb92f71f77f727bfa4fac6900 100644 (file)
 IMPLEMENT_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(DDS_DicItem, MMgt_TShared)
 
+/*!
+  \class DDS_DicItem
+
+  This class to provide information about datum (phisical characteristic parameter).
+*/
+
+/*!
+  Constructor. Creates the instance of empty dictionary item.
+*/
 DDS_DicItem::DDS_DicItem()
 : myType( 0 ),
 myDefValue( 0 ),
@@ -46,54 +55,87 @@ myZoomOrder( 2 )
 {
 }
 
+/*!
+  Copy constructor. Internal.
+*/
 DDS_DicItem::DDS_DicItem( const DDS_DicItem& )
 {
 }
 
+/*!
+  Assignment operator. Internal.
+*/
 void DDS_DicItem::operator=( const DDS_DicItem& )
 {
 }
 
+/*!
+  Gets the identifier of parameter.
+*/
 TCollection_AsciiString DDS_DicItem::GetId() const
 {
   return myId;
 }
 
+/*!
+  Gets the type of parameter.
+*/
 DDS_DicItem::Type DDS_DicItem::GetType() const
 {
   return (DDS_DicItem::Type)myType;
 }
 
+/*!
+  Gets the label of the parameter.
+*/
 TCollection_ExtendedString DDS_DicItem::GetLabel() const
 {
   return myLabel;
 }
 
+/*!
+  Gets the filter (regular expression) for the parameter values.
+*/
 TCollection_ExtendedString DDS_DicItem::GetFilter() const
 {
   return myFilter;
 }
 
+/*!
+  Gets the Required attribute of the parameter.
+*/
 TCollection_ExtendedString DDS_DicItem::GetRequired() const
 {
   return myRequired;
 }
 
+/*!
+  Gets the wrong value warning level of the parameter.
+*/
 DDS_MsgType DDS_DicItem::GetWarningLevel() const
 {
   return (DDS_MsgType)myWarnLevel;
 }
 
+/*!
+  Gets the long description of the parameter.
+*/
 TCollection_ExtendedString DDS_DicItem::GetLongDescription() const
 {
   return myLongDescr;
 }
 
+/*!
+  Gets the short description of the parameter.
+*/
 TCollection_ExtendedString DDS_DicItem::GetShortDescription() const
 {
   return myShortDescr;
 }
 
+/*!
+  Gets the name of component - owner of parameter.
+*/
 TCollection_AsciiString DDS_DicItem::GetComponent() const
 {
   TCollection_AsciiString aCompName;
@@ -103,11 +145,18 @@ TCollection_AsciiString DDS_DicItem::GetComponent() const
   return aCompName;
 }
 
+/*!
+  Gets the parameter unit of measure for active unit system.
+*/
 TCollection_AsciiString DDS_DicItem::GetUnits() const
 {
   return GetUnits( GetActiveUnitSystem() );
 }
 
+/*!
+  Gets the parameter unit of measure for specified unit system \atheSystem.
+  If specified unit system doesn't exist then empty string returned.
+*/
 TCollection_AsciiString DDS_DicItem::GetUnits( const UnitSystem& theSystem ) const
 {
   TCollection_AsciiString anUnits;
@@ -117,31 +166,54 @@ TCollection_AsciiString DDS_DicItem::GetUnits( const UnitSystem& theSystem ) con
   return anUnits;
 }
 
+/*!
+  Gets the minimum value of parameter for active unit system.
+  Returned value converted to SI.
+*/
 Standard_Real DDS_DicItem::GetMinValue() const
 {
   return GetMinValue( GetActiveUnitSystem() );
 }
 
+/*!
+  Gets the minimum value of parameter for specified unit system \atheSystem.
+  Returned value converted to SI.
+*/
 Standard_Real DDS_DicItem::GetMinValue( const UnitSystem& theUnitsSystem ) const
 {
   return FromSI( myMin, theUnitsSystem );
 }
 
+/*!
+  Gets the maximum value of parameter for active unit system.
+  Returned value converted to SI.
+*/
 Standard_Real DDS_DicItem::GetMaxValue() const
 {
   return GetMaxValue( GetActiveUnitSystem() );
 }
 
+/*!
+  Gets the maximum value of parameter for specified unit system \atheSystem.
+  Returned value converted to SI.
+*/
 Standard_Real DDS_DicItem::GetMaxValue( const UnitSystem& theUnitsSystem ) const
 {
   return FromSI( myMax, theUnitsSystem );
 }
 
+/*!
+  Gets the precision (number of digit after decimal point) of parameter for active unit system.
+*/
 Standard_Integer DDS_DicItem::GetPrecision() const
 {
   return GetPrecision( GetActiveUnitSystem() );
 }
 
+/*!
+  Gets the precision (number of digit after decimal point) of parameter for specified
+  unit system \atheSystem. If specified unit system doesn't exist then zero returned.
+*/
 Standard_Integer DDS_DicItem::GetPrecision( const UnitSystem& theSystem ) const
 {
   Standard_Integer aRes = 0;
@@ -151,11 +223,21 @@ Standard_Integer DDS_DicItem::GetPrecision( const UnitSystem& theSystem ) const
   return aRes;
 }
 
+/*!
+  Gets the default value of parameter for active unit system. Default value returned as string.
+  If type of value is numeric (Float or Integer) and default value defined then returned number
+  converted to SI.
+*/
 TCollection_ExtendedString DDS_DicItem::GetDefaultValue() const
 {
   return GetDefaultValue( GetActiveUnitSystem() );
 }
 
+/*!
+  Gets the default value of parameter for specified unit system \atheSystem. Default value returned
+  as string. If type of value is numeric (Float or Integer) and default value defined then returned
+  number converted to SI.
+*/
 TCollection_ExtendedString DDS_DicItem::GetDefaultValue( const UnitSystem& theSystem ) const
 {
   if ( !myDefString.Length() )
@@ -179,11 +261,21 @@ TCollection_ExtendedString DDS_DicItem::GetDefaultValue( const UnitSystem& theSy
   return aStr;
 }
 
+/*!
+  Gets the format string of parameter for active unit system. If argument \atheCanonical
+  is true then format string will be reduced to sprintf() specification (without extra
+  non standard qualifiers).
+*/
 TCollection_AsciiString DDS_DicItem::GetFormat( const Standard_Boolean theCanonical ) const
 {
   return GetFormat( GetActiveUnitSystem(), theCanonical );
 }
 
+/*!
+  Gets the format string of parameter for specified unit system \atheSystem. If argument
+  \atheCanonical is true then format string will be reduced to sprintf() specification
+  (without extra non standard qualifiers).
+*/
 TCollection_AsciiString DDS_DicItem::GetFormat( const UnitSystem& theSystem,
                                                 const Standard_Boolean theCanonical ) const
 {
@@ -212,8 +304,8 @@ TCollection_AsciiString DDS_DicItem::GetFormat( const UnitSystem& theSystem,
 }
 
 /*!
-  Access valueList:name of the parameter. This string is void if the list is
-  not defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
+  Gets name of a list referenced by the parameter. This string is empty if the list
+  refernce is not defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
 */
 TCollection_ExtendedString DDS_DicItem::GetNameOfValues() const
 {
@@ -221,8 +313,8 @@ TCollection_ExtendedString DDS_DicItem::GetNameOfValues() const
 }
 
 /*!
-  Access valueList of the parameter. This sequence is empty if the list is
-  not defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
+  Gets item names and item ids of a list referenced by the parameter. This sequences is empty if
+  the list reference is not defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
 */
 Standard_Boolean DDS_DicItem::GetListOfValues( Handle(TColStd_HArray1OfExtendedString)& theStrings,
                                                Handle(TColStd_HArray1OfInteger)& theIntegers ) const
@@ -233,8 +325,8 @@ Standard_Boolean DDS_DicItem::GetListOfValues( Handle(TColStd_HArray1OfExtendedS
 }
 
 /*!
-  Access valueList of the parameter. This sequence is empty if the list is not
-  defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
+  Gets item names, item ids and item icons of a list referenced by the parameter. This sequences is empty
+  if the list reference is not defined - then use other properties: Type, DefaultValue, MaxValue, MinValue
 */
 Standard_Boolean DDS_DicItem::GetListOfValues( Handle(TColStd_HArray1OfExtendedString)& theStrings,
                                                Handle(TColStd_HArray1OfInteger)& theIntegers,
@@ -246,6 +338,10 @@ Standard_Boolean DDS_DicItem::GetListOfValues( Handle(TColStd_HArray1OfExtendedS
   return !theIntegers.IsNull() && !theStrings.IsNull() && !theIcons.IsNull();
 }
 
+
+/*!
+  Gets special values of the parameter.
+*/
 Standard_Boolean DDS_DicItem::GetSpecialValues( TColStd_MapOfReal& theMap ) const
 {
   theMap.Clear();
@@ -266,7 +362,7 @@ Standard_Boolean DDS_DicItem::GetSpecialValues( TColStd_MapOfReal& theMap ) cons
 }
 
 /*!
-  Returns min value of lateral zooming
+  Gets minimum value of lateral zooming
 */
 Standard_Real DDS_DicItem::GetMinZoom() const
 {
@@ -274,7 +370,7 @@ Standard_Real DDS_DicItem::GetMinZoom() const
 }
 
 /*!
-  Returns Max Value of lateral zooming
+  Gets maximum value of lateral zooming
 */
 Standard_Real DDS_DicItem::GetMaxZoom() const
 {
@@ -282,25 +378,31 @@ Standard_Real DDS_DicItem::GetMaxZoom() const
 }
 
 /*!
-  Get Order of lateral zooming
+  Gets order of lateral zooming
 */
 Standard_Real DDS_DicItem::GetZoomOrder() const
 {
   return myZoomOrder;
 }
 
+/*!
+  Convert value \atheVal to default SI units according to active unit system.
+*/
 Standard_Real DDS_DicItem::ToSI( const Standard_Real theVal ) const
 {
   return ToSI( theVal, GetActiveUnitSystem() );
 }
 
+/*!
+  Convert value \atheVal from default SI units according to active unit system.
+*/
 Standard_Real DDS_DicItem::FromSI( const Standard_Real theVal ) const
 {
   return FromSI( theVal, GetActiveUnitSystem() );
 }
 
 /*!
-  Convert value to default SI units according to current units
+  Convert value to default SI units according to unit system \atheUnitsSystem.
 */
 Standard_Real DDS_DicItem::ToSI( const Standard_Real theVal, const UnitSystem& theUnitsSystem ) const
 {
@@ -312,7 +414,7 @@ Standard_Real DDS_DicItem::ToSI( const Standard_Real theVal, const UnitSystem& t
 }
 
 /*!
-  Convert value from default SI units according to current units
+  Convert value from default SI units according to unit system \atheUnitsSystem.
 */
 Standard_Real DDS_DicItem::FromSI( const Standard_Real theVal, const UnitSystem& theUnitsSystem ) const
 {
@@ -324,7 +426,7 @@ Standard_Real DDS_DicItem::FromSI( const Standard_Real theVal, const UnitSystem&
 }
 
 /*!
-  Returns 'true' if specified data exist.
+  Returns 'true' if data specified by \aflag exist.
 */
 Standard_Boolean DDS_DicItem::HasData( const Standard_Integer flag ) const
 {
@@ -332,7 +434,33 @@ Standard_Boolean DDS_DicItem::HasData( const Standard_Integer flag ) const
 }
 
 /*!
-  Parse record in XML file and retrieve information relevant for this data dic item
+  Returns options for specified name \aname. If option not found then empty string returned.
+*/
+TCollection_ExtendedString DDS_DicItem::GetOption( const TCollection_AsciiString& name ) const
+{
+  TCollection_ExtendedString res;
+  if ( myOptions.IsBound( name ) )
+    res = myOptions.Find( name );
+  return res;
+}
+
+/*!
+  Returns names list of existing options in the specified sequence \anames.
+  If list not empty retunrs 'true' otherwise 'false'.
+*/
+Standard_Boolean DDS_DicItem::GetOptionNames( TColStd_SequenceOfAsciiString& names ) const
+{
+  names.Clear();
+
+  for ( OptionsMap::Iterator it( myOptions ); it.More(); it.Next() )
+    names.Append( it.Key() );
+
+  return !names.IsEmpty();
+}
+
+
+/*!
+  Parse record in XML file and retrieve information relevant for this dictionary item
 */
 void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element& theDatum,
                                const LDOM_Element& theCompElement, const LDOM_Element& theDocElement,
@@ -576,6 +704,31 @@ void DDS_DicItem::FillDataMap( TCollection_AsciiString theID, const LDOM_Element
     }
   }
 
+  // Quantity::Options
+  LDOM_Element anOpt = theDatum.GetChildByTagName( DDS_Dictionary::KeyWord( "OPTIONS" ) );
+  if ( !anOpt.isNull() )
+  {
+    LDOM_NodeList anOptions = anOpt.getElementsByTagName( DDS_Dictionary::KeyWord( "OPTION" ) );
+    for ( Standard_Integer oi = 0; oi < anOptions.getLength(); oi++ )
+    {
+      LDOM_Node node = anOptions.item( oi );
+      if ( node.getNodeType() != LDOM_Node::ELEMENT_NODE )
+        continue;
+
+      LDOM_Element& elem = (LDOM_Element&)node;
+      TCollection_AsciiString name = elem.getAttribute( DDS_Dictionary::KeyWord( "OPTION_NAME" ) );
+
+      TCollection_ExtendedString value;
+      const LDOM_Node aNode = elem.getFirstChild();
+      LDOM_Text anOptTxt( (const LDOM_Text&)(aNode) );
+      if ( !anOptTxt.isNull() )
+        value = anOptTxt.getData();
+
+      if ( !name.IsEmpty() && value.Length() && !myOptions.IsBound( name ) )
+        myOptions.Bind( name, value );
+    }
+  }
+
   NCollection_DataMap<UnitSystem, Handle(Units_Dimensions)> aDimMap;
 
   for ( NCollection_DataMap<UnitSystem, UnitData>::Iterator it( myUnitData ); it.More(); it.Next() )
@@ -793,7 +946,7 @@ void DDS_DicItem::GetFloatFormat( const TCollection_AsciiString& theFlags,
 }
 
 /*!
-  Prepares three formants for each unit systems
+  Prepares formats for each unit systems
 */
 void DDS_DicItem::PrepareFormats( const TCollection_AsciiString&  theFormat )
 {
@@ -915,6 +1068,9 @@ void DDS_DicItem::PrepareFormats( const TCollection_AsciiString&  theFormat )
   }
 }
 
+/*!
+  Split the string \atheStr by spaces and returns substrings in array \aaRes.
+*/
 void DDS_DicItem::Split( const TCollection_AsciiString& theStr, Handle(TColStd_HArray1OfExtendedString)& aRes )
 {
   aRes.Nullify();
@@ -946,6 +1102,9 @@ void DDS_DicItem::Split( const TCollection_AsciiString& theStr, Handle(TColStd_H
   }
 }
 
+/*!
+  Returns unit structure for given unit system \asys.
+*/
 DDS_DicItem::UnitData* DDS_DicItem::GetUnitData( const UnitSystem& sys ) const
 {
   UnitData* unit = 0;
@@ -956,6 +1115,9 @@ DDS_DicItem::UnitData* DDS_DicItem::GetUnitData( const UnitSystem& sys ) const
   return unit;
 }
 
+/*!
+  Gets the active unit system.
+*/
 DDS_DicItem::UnitSystem DDS_DicItem::GetActiveUnitSystem() const
 {
   UnitSystem aSystem;
index 36b30811e5cf1d6ca317b1d48fd1031b9b1f4fa0..b326399002c7ed99237cb63f0c69b5ae9d68d58d 100644 (file)
@@ -47,8 +47,23 @@ class TColStd_SequenceOfExtendedString;
 class DDS_DicItem : public MMgt_TShared
 {
 public:
-  enum Type { String, Float, Integer, List, Unknown };
-  enum Data { MinValue = 0x01, MaxValue = 0x02, DefaultValue = 0x04 };
+  /*! Enum describes type of datum value */
+  enum Type
+  {
+    String,  //!< String type of value
+    Float,   //!< Real (double) numeric type of value
+    Integer, //!< Integer (int) numeric type of value
+    List,    //!< List type of enumerable value
+    Unknown  //!< Unknown or undefined type of value
+  };
+
+  /*! Enum describes the flags for existance of domain data */
+  enum Data
+  {
+    MinValue = 0x01,    //!< Flag of minimum value definition existence
+    MaxValue = 0x02,    //!< Flag of maximum value definition existence
+    DefaultValue = 0x04 //!< Flag of default value definition existence
+  };
 
   // This struct is intended for map of Format, Units, Precision and Scale
   struct UnitData
@@ -66,114 +81,64 @@ public:
   DDS_DicItem();
 
   Standard_EXPORT TCollection_AsciiString    GetId() const;
-  // to access Type of the parameter
-
   Standard_EXPORT DDS_DicItem::Type          GetType() const;
-  // to access Type of the parameter
-
   Standard_EXPORT TCollection_ExtendedString GetLabel() const;
-  // to access Label (name) of the parameter
-
   Standard_EXPORT TCollection_ExtendedString GetFilter() const;
-  // to access filter (regexp) for the parameter values
-
   Standard_EXPORT TCollection_ExtendedString GetRequired() const;
-  // to access Required of the parameter
-
   Standard_EXPORT DDS_MsgType                GetWarningLevel() const;
-  // to access wrong value warning level of the parameter
-
   Standard_EXPORT TCollection_ExtendedString GetLongDescription() const;
-  // to access Long Description of the parameter
-
   Standard_EXPORT TCollection_ExtendedString GetShortDescription() const;
-  // to access Short Description of the parameter
-
   Standard_EXPORT TCollection_AsciiString    GetComponent() const;
 
   Standard_EXPORT TCollection_AsciiString    GetUnits() const;
   Standard_EXPORT TCollection_AsciiString    GetUnits( const UnitSystem& ) const;
-  // returns units for indicated unit systems
 
   Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
   Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
-  // to access Default Value of the parameter
 
   Standard_EXPORT Standard_Real              GetMinValue() const;
   Standard_EXPORT Standard_Real              GetMinValue( const UnitSystem& ) const;
-  // get Min Value of the parameter, either in specified unit system or in internal units (basic SI)
 
   Standard_EXPORT Standard_Real              GetMaxValue() const;
   Standard_EXPORT Standard_Real              GetMaxValue( const UnitSystem& ) const;
-  // get Max Value of the parameter, either in specified unit system or in internal units (basic SI)
 
   Standard_EXPORT Standard_Integer           GetPrecision() const;
   Standard_EXPORT Standard_Integer           GetPrecision( const UnitSystem& ) const;
-  // returns precision for indicated unit systems
 
   Standard_EXPORT TCollection_AsciiString    GetFormat( const Standard_Boolean = Standard_True ) const;
   Standard_EXPORT TCollection_AsciiString    GetFormat( const UnitSystem&,
                                                         const Standard_Boolean = Standard_True ) const;
-  // returns format for indicated unit systems
-
   Standard_EXPORT TCollection_ExtendedString GetNameOfValues() const;
-  // to access valueList:name of the parameter.
-  // This string is void if the list is not defined - then use other properties:
-  //    Type, DefaultValue, MaxValue, MinValue
-
   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
                                                               Handle(TColStd_HArray1OfInteger)& ) const;
-  // to access valueList of the parameter
-  // This sequence is empty if the list not defined - then use other properties:
-  //    Type, DefaultValue, MaxValue, MinValue
-
   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
                                                               Handle(TColStd_HArray1OfInteger)&,
                                                               Handle(TColStd_HArray1OfExtendedString)& ) const;
-  // to access valueList of the parameter
-  // This sequence is empty if the list not defined - then use other properties:
-  //    Type, DefaultValue, MaxValue, MinValue
-
   Standard_EXPORT Standard_Boolean           GetSpecialValues( TColStd_MapOfReal& ) const;
-  // get values from specVal
 
   Standard_EXPORT Standard_Real              GetMinZoom() const;
-  // get Min Value of lateral zooming
-
   Standard_EXPORT Standard_Real              GetMaxZoom() const;
-  // get Max Value of lateral zooming
-
   Standard_EXPORT Standard_Real              GetZoomOrder() const;
-  // get Order of lateral zooming
 
-  Standard_EXPORT Standard_Real ToSI( const Standard_Real ) const;
-  Standard_EXPORT Standard_Real FromSI( const Standard_Real ) const;
+  Standard_EXPORT Standard_Real              ToSI( const Standard_Real ) const;
+  Standard_EXPORT Standard_Real              FromSI( const Standard_Real ) const;
 
-  Standard_EXPORT Standard_Real ToSI( const Standard_Real, const UnitSystem& ) const;
-  Standard_EXPORT Standard_Real FromSI( const Standard_Real, const UnitSystem& ) const;
-  // convert value to and from default SI units according to current units
+  Standard_EXPORT Standard_Real              ToSI( const Standard_Real, const UnitSystem& ) const;
+  Standard_EXPORT Standard_Real              FromSI( const Standard_Real, const UnitSystem& ) const;
 
   Standard_EXPORT Standard_Boolean           HasData( const Standard_Integer ) const;
 
+  Standard_EXPORT TCollection_ExtendedString GetOption( const TCollection_AsciiString& ) const;
+  Standard_EXPORT Standard_Boolean           GetOptionNames( TColStd_SequenceOfAsciiString& ) const;
+
 private:
   DDS_DicItem( const DDS_DicItem& );
-  // Copy constructor
-
   void                                       operator=( const DDS_DicItem& );
-  // Assignment operator
-
   void                                       FillDataMap( TCollection_AsciiString, const LDOM_Element&,
                                                           const LDOM_Element&, const LDOM_Element&,
                                                           const TColStd_SequenceOfAsciiString& );
-  // prepares formants for each unit systems
-
-
   void                                       PrepareFormats( const TCollection_AsciiString& );
-  // prepares three formats for each unit systems
-
   void                                       GetDefaultFormat();
-  // returns three default formants for each unit systems
-
   UnitSystem                                 GetActiveUnitSystem() const;
 
   void                                       GetStringFormat( const TCollection_AsciiString&,
@@ -181,29 +146,26 @@ private:
                                                               const TCollection_AsciiString&,
                                                               const TCollection_AsciiString&,
                                                               TCollection_AsciiString& );
-  // returns format for the string
-
   void                                       GetIntegerFormat( const TCollection_AsciiString&,
                                                                const TCollection_AsciiString&,
                                                                const TCollection_AsciiString&,
                                                                const TCollection_AsciiString&,
                                                                const Standard_Character,
                                                                TCollection_AsciiString& );
-  // returns format for the integer
-
   void                                       GetFloatFormat( const TCollection_AsciiString&,
                                                              const TCollection_AsciiString&,
                                                              const TCollection_AsciiString&,
                                                              const TCollection_AsciiString&,
                                                              const Standard_Character,
                                                              TCollection_AsciiString& );
-  // returns format for the float
-
   void                                       Split( const TCollection_AsciiString&,
                                                     Handle(TColStd_HArray1OfExtendedString)& );
 
   UnitData*                                  GetUnitData( const UnitSystem& ) const;
 
+private:
+  typedef NCollection_DataMap<TCollection_AsciiString, TCollection_ExtendedString> OptionsMap;
+
 private:
   TCollection_AsciiString                    myId;
   TCollection_ExtendedString                 myLabel;
@@ -237,6 +199,7 @@ private:
 
   Handle(Standard_Transient)                 myComponent;
 
+  OptionsMap                                 myOptions;
   // unitData
   NCollection_DataMap<UnitSystem, UnitData>  myUnitData;
 
@@ -247,10 +210,8 @@ public:
   DEFINE_STANDARD_RTTI(DDS_DicItem)
 };
 
-// Definition of HANDLE object using Standard_DefineHandle.hxx
 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
 
-// Container class XMLTools_IndexedDataMapOfDicItems (map of handles)
 DEFINE_BASECOLLECTION(DDS_BaseCollectionOfDicItems, Handle(DDS_DicItem))
 DEFINE_INDEXEDDATAMAP(DDS_IndexedDataMapOfDicItems, DDS_BaseCollectionOfDicItems,
                       TCollection_AsciiString, Handle(DDS_DicItem))
index adaff0469fd5df62b17e7ebabf10ba7a5708cd4e..dd741872fb06cee80f2e880d4d1f76cf23cffca4 100644 (file)
 IMPLEMENT_STANDARD_HANDLE(DDS_Dictionary, MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(DDS_Dictionary, MMgt_TShared)
 
+/*!
+  \class DDS_Dictionary
+  
+  This class to provide information about used datums, reading them from 'xml' file
+
+  Datum is the set of parameters described a phisical characteristic. These parameters loaded from
+  special XML which has following format:
+
+  \hr
+
+  <D_URI>
+  <COMPONENT COMPONENT_NAME="component_name">
+    <UNIT_SYSTEMS>
+      <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]">
+      <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]">
+      ...
+      <UNIT_SYSTEM UNIT_SYSTEM_NAME="[system_internal_name]" UNIT_SYSTEM_LABEL="[system_label]">
+    </UNIT_SYSTEMS>
+
+    <DATUM DATUM_UNITS="[base_system_internal_name]" DATUM_FORMAT="[sprintf_format_specification]"
+           DATUM_ID="[datum_id]" DATUM_LABEL="[datum_label]" DATUM_REQUIRED="[requred_value]"
+           DATUM_FILTER="[string_regular_expression]">
+      <DY_DOMAIN>
+        <VALUE_DESCR VD_DEFV="[default_value]" VD_MAXV="[max_value]" VD_MINV="[min_value]" VD_TYPE="[value_type]"/>
+        <VALUE_LIST_REF VLR_LIST="[referenced_list_id]"/>
+      </DY_DOMAIN>
+      <DESCR>
+        <SHORT_D>[brief_desription_text]</SHORT_D>
+        <LONG_D>[full_description_text]</LONG_D>
+      </DESCR>
+      <OPTIONS>
+        <OPTION OPTION_NAME="[option_name_1]">[option_value_1]</OPTION>
+        <OPTION OPTION_NAME="[option_name_2]">[option_value_2]</OPTION>
+        ...
+        <OPTION OPTION_NAME="[option_name_n]">[option_value_n]</OPTION>
+      </OPTIONS>
+    </DATUM>
+
+    ...
+
+    <VALUE_LIST VALUE_LIST_ID="[list_id]" VALUE_LIST_NAME="[list_name]">
+      <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE>
+      <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE>
+      ...
+      <VALUE_LIST_VALUE VALUE_LIST_VALUEID="[list_element_id]" VALUE_LIST_VALUEICON="[list_element_icon_file]">[list_element_name]</VALUE_LIST_VALUE>
+    </VALUE_LIST>
+
+    ...
+
+    </COMPONENT>
+  </D_URI>
+
+  \hr
+
+  In description of datum file format used internal keys as XML tag and attributes names.
+  Concrete XML keywords defined by DDS_KeyWords class.
+
+  Describe datum file format more detailed. XML file should have one main tag named as "dictionary" (key "D_URI").
+  This tag should contains one or several components. Component is a independent set of datums and unit systems.
+  Components defined as XML tag named "component" (key "COMPONENT") with attribute "name" (key COMPONENT_NAME).
+  Component name used as component identifier and should be unique. Component tag can contains:
+
+  \li Tag "unit_systems" (key UNIT_SYSTEMS) defines set of used unit systems. Should exist at least one unit
+  system named SI ("System International"). If this system not exist then it will be defined automatically.
+  Each unit system defined by XML tag "unit system" (key UNIT_SYSTEM) under tag "unit_systems" with attributes
+  "name" (key UNIT_SYSTEM_NAME) and "label" (key UNIT_SYSTEM_LABEL). Name is identifier of unit system. Label is
+  human readable description.
+
+  \li One or several tag "datum" (key DATUM). For this tag can be defined following attributes:
+
+      \lo Identifier (key DATUM_ID) specify the unique id string for the datum.
+      \lo Label (key DATUM_LABEL) specify human readable name of the datum.
+      \lo Units of measure (key DATUM_UNITS) for given unit system. Attribute name consist of a name
+          of unit system and a keyword got from DDS_KeyWords by key DATUM_UNITS. For example for unit system
+          named SI and default keyword attribute name will be "SIunits". This attribute should be specified
+          for each deaclared unit system. Value of this attribute should be string describs units of measure.
+          Possible designations for units of measure and their multiple prefixes see in package UnitsAPI of
+          library OpenCascade (files Units.dat and Lexi_Expr.dat). Units of measure will be used for numeric
+          value conversion from one unit system to another one.
+      \lo Format (key DATUM_FORMAT) specify the format string which will be used during initial formatting
+          of value. This string should be specified in sprintf() format.
+      \lo Filter (key DATUM_FILTER) specify the regualr expression. Each user entered string will be checked up
+          on matching to this expression (if it defined). Non matched strings will be rejected.
+      \lo Required value (key DATUM_REQUIRED). If this attributed defined and value is true then user can't
+          leave a input filed blank (parameter must be always entered).
+
+      Tag "description" (key DESCR) can be defined under the tag "datum". This tag contains two sub tags:
+         \lo "short description" (key SHORT_D) specify a brief datum description text
+         \lo "long description" (key LONG_D) specify a detailed description text
+
+      Tag "options" (key OPTIONS) can be defined under the tag "datum". This tag contains one or more sub
+      tags "option" (key OPTION). Each of these XML elements should contain text option value and attribute
+      "name" (key OPTION_NAME) which specified option name.
+
+      Each tag "datum" define most common parameters of phisical characteristic.
+      This parameters placed in two groups:
+      \lo Domain parameters under tag "domain" (key DY_DOMAIN). This tag can contains value description tag
+          (key VALUE_DESCR) for discrete data or list reference tag (key VALUE_LIST_REF) for enumerable data.
+          Discrete data described following parameters:
+            default value (key VD_DEFV)
+            maximum value (key VD_MAXV)
+            minimum value (key VD_MINV)
+            type of value (key VD_TYPE) - possible values: String, Integer, Float, List
+          Enumerable data described by "list reference" attribute (key VLR_LIST) which reference on
+          list (see "list definition" tag) by list id.
+
+  \li One or several tag "list definition" (key VALUE_LIST). This tag define the list of items for enumerable
+      data. Attribute "list id" (key VALUE_LIST_ID) specify the identifier string for the list and attribute
+      "list name" (key VALUE_LIST_NAME) define a list name string. Each list item described by tag "list value"
+      (key VALUE_LIST_VALUE) under tag "list definition". Each this tag contains item string text and have
+      following attributes:
+        \lo "list item id" (key VALUE_LIST_VALUEID) - integer numerical identifier for item
+        \lo "list item icon" (key VALUE_LIST_VALUEICON) - icon file name for item
+
+  Below the example of a XML file with use default keywords.
+
+  <datadictionary version="1.0">
+    <component name="My Component">
+
+      <!-- specify two unit systems -->
+
+      <unitSystems>
+        <system name="SI" label="System international">
+        <system name="AS" label="Anglo - sacson system">
+      </unitSystems>
+
+      <!-- specify datum -->
+      <!-- units of measure for SI - meters (m), for AS - inches (in) -->
+      <datum SIunits="m" ASunits="in" format="%.25f" id="X" label="X coordinate" required="">
+        <domain>
+          <!-- default value not specified -->
+          <valueDescr default="" max="999999999.999" min="0.000" type="Float"/>
+        </domain>
+        <description>
+          <shortDescr>X coordinate for object</shortDescr>
+          <longDescr>X multiplier of object coordinates. Describe position of object in direction of X axis</longDescr>
+        </description>
+      </datum>
+
+      <datum SIunits="m" ASunits="in" format="%.25f" id="Y" label="Y coordinate" required="">
+        <domain>
+          <valueDescr default="" max="999999999.999" min="0.000" type="Float"/>
+        </domain>
+        <description>
+          <shortDescr>Y coordinate for object</shortDescr>
+          <longDescr>Y multiplier of object coordinates. Describe position of object in direction of Y axis</longDescr>
+        </description>
+      </datum>
+
+      <!-- datum for object name with filter which not allow to input more that 8 letters,
+           numbers or unerscores with first letter only -->
+      <datum format="%.8us" id="ObjectName" label="Name" required="yes"
+             filter="^([A-Z]+)([A-Z,0-9,_]*)$">
+        <domain>
+          <!-- limits and default not specified, type is string -->
+          <valueDescr default="" max="" min="" type="String" />
+        </domain>
+        <description>
+          <!-- long description not specified -->
+          <shortDescr>Name of object</shortDescr>
+        </description>
+      </datum>
+
+
+      <!-- datum for enumeration of side -->
+      <datum format="" id="Side" label="Side" required="">
+        <domain>
+          <!-- default list item is item with id 0 -->
+          <valueDescr default="0" type="List"/>
+          <!-- list reference on list named "side_list" -->
+          <listRef list="side_list"/>
+        </domain>
+        <description>
+          <shortDescr>Side of object</shortDescr>
+        </description>
+      </datum>
+
+      <!-- list definition for enumeration of side -->
+      <valueList listid="side_list" name="Side">
+        <value id="1">left</value>
+        <value id="2">right</value>
+        <value id="3">top</value>
+        <value id="4">bottom</value>
+        <value id="0">undefined</value>
+      </valueList>
+
+    </component>
+  </datadictionary>
+
+
+*/
+
+/*!
+  Constructor. Creates the instance of dictionary. Private method. Use DDS_Dictionary::Get() instead.
+*/
 DDS_Dictionary::DDS_Dictionary()
 : MMgt_TShared()
 {
 }
 
+/*!
+  Copy constructor. Internal.
+*/
 DDS_Dictionary::DDS_Dictionary( const DDS_Dictionary& )
 {
 }
 
+/*!
+  Assigment operator. Internal.
+*/
 void DDS_Dictionary::operator=( const DDS_Dictionary& )
 {
 }
 
+/*!
+  Returns the names list of defined unit systems from all components.
+  Parameter \atheSystems will contains the sequence of string names.
+*/
 void DDS_Dictionary::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystems ) const
 {
   theSystems.Clear();
@@ -71,6 +276,11 @@ void DDS_Dictionary::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystems )
 
 }
 
+/*!
+  Returns the names list of defined unit systems from the specified component \atheComponent.
+  Parameter \atheSystems will contains the sequence of string names. If component not found then
+  empty list returned.
+*/
 void DDS_Dictionary::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystems,
                                      const TCollection_AsciiString& theComponent ) const
 {
@@ -79,6 +289,10 @@ void DDS_Dictionary::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystems,
     myGroupMap.FindFromKey( theComponent )->GetUnitSystems( theSystems );
 }
 
+/*!
+  Returns the label of unit system \atheSystem. Function find the given unit system in
+  all components. If unit system not found in any component then empty string returned.
+*/
 TCollection_ExtendedString DDS_Dictionary::GetUnitSystemLabel( const TCollection_AsciiString& theSystem ) const
 {
   TCollection_ExtendedString aLabel;
@@ -87,6 +301,11 @@ TCollection_ExtendedString DDS_Dictionary::GetUnitSystemLabel( const TCollection
   return aLabel;
 }
 
+/*!
+  Returns the label of unit system \atheSystem from component \atheComponent. Function find
+  the given unit system in the specified component only. If unit system not found in the
+  component then empty string returned.
+*/
 TCollection_ExtendedString DDS_Dictionary::GetUnitSystemLabel( const TCollection_AsciiString& theSystem,
                                                                const TCollection_AsciiString& theComponent ) const
 {
@@ -96,6 +315,10 @@ TCollection_ExtendedString DDS_Dictionary::GetUnitSystemLabel( const TCollection
   return aLabel;
 }
 
+/*!
+  Gets the name of active unit system from first got component. If any component exist then
+  active unit system name returned or empty string otherwise.
+*/
 TCollection_AsciiString DDS_Dictionary::GetActiveUnitSystem() const
 {
   TCollection_AsciiString aSystem;
@@ -104,6 +327,10 @@ TCollection_AsciiString DDS_Dictionary::GetActiveUnitSystem() const
   return aSystem;
 }
 
+/*!
+  Gets the name of active unit system from component \atheComponent. If this component exist
+  active unit system name returned or empty string otherwise.
+*/
 TCollection_AsciiString DDS_Dictionary::GetActiveUnitSystem( const TCollection_AsciiString& theComponent ) const
 {
   TCollection_AsciiString aSystem;
@@ -112,12 +339,20 @@ TCollection_AsciiString DDS_Dictionary::GetActiveUnitSystem( const TCollection_A
   return aSystem;
 }
 
+/*!
+  Sets the active unit system named \atheSystem. This unit system will be activated in all
+  existing components if component have it.
+*/
 void DDS_Dictionary::SetActiveUnitSystem( const TCollection_AsciiString& theSystem )
 {
   for ( Standard_Integer i = 1; i <= myGroupMap.Extent(); i++ )
     myGroupMap.FindFromIndex( i )->SetActiveUnitSystem( theSystem );
 }
 
+/*!
+  Sets the active unit system named \atheSystem for component \atheComponent. If specified unit
+  system doesn't exist in the component then function do nothing.
+*/
 void DDS_Dictionary::SetActiveUnitSystem( const TCollection_AsciiString& theSystem,
                                           const TCollection_AsciiString& theComponent )
 {
@@ -138,6 +373,10 @@ Handle(DDS_Dictionary) DDS_Dictionary::Get()
   return sDictionary;
 }
 
+/*!
+  Load datum definitions in the dictionary from XML file \atheFileName. Returns true if load
+  successed or false otherwise.
+*/
 Standard_Boolean DDS_Dictionary::Load( const TCollection_AsciiString theFileName )
 {
   static NCollection_Map<TCollection_AsciiString> _LoadMap;
@@ -164,6 +403,10 @@ Standard_Boolean DDS_Dictionary::Load( const TCollection_AsciiString theFileName
   return Standard_True;
 }
 
+/*!
+  Gets XML keyword as LDOMString by specified \akey. If key doesn't exist then empty string
+  returned. This function provided for convenience.
+*/
 LDOMString DDS_Dictionary::KeyWord( const TCollection_AsciiString& key )
 {
   LDOMString keyWord;
@@ -178,25 +421,25 @@ LDOMString DDS_Dictionary::KeyWord( const TCollection_AsciiString& key )
 }
 
 /*!
-  Returns DicItem from specified group with all attached data
+  Gets dictionary item with specified identifier \atheID from specified component \atheComponent.
+  If component or item not found then null handle returned.
 */
-
 Handle(DDS_DicItem) DDS_Dictionary::GetDicItem( const TCollection_AsciiString& theID,
-                                                const TCollection_AsciiString& theGroup ) const
+                                                const TCollection_AsciiString& theComponent ) const
 {
   Handle(DDS_DicItem) aDicItem;
   Handle(DDS_DicGroup) aDicGroup;
-  if ( myGroupMap.Contains( theGroup ) )
-    aDicGroup = myGroupMap.FindFromKey( theGroup );
+  if ( myGroupMap.Contains( theComponent ) )
+    aDicGroup = myGroupMap.FindFromKey( theComponent );
   if ( !aDicGroup.IsNull() )
     aDicItem = aDicGroup->GetDicItem( theID );
   return aDicItem;
 }
 
 /*!
-  Returns DicItem with all attached data
+  Gets dictionary item with specified identifier \atheID. Function find the item in all components.
+  If item not found in any component then null handle returned.
 */
-
 Handle(DDS_DicItem) DDS_Dictionary::GetDicItem( const TCollection_AsciiString& theID ) const
 {
   Handle(DDS_DicItem) aDicItem;
@@ -205,6 +448,9 @@ Handle(DDS_DicItem) DDS_Dictionary::GetDicItem( const TCollection_AsciiString& t
   return aDicItem;
 }
 
+/*!
+  Fill the internal data structures from XML parsed structures. Internal.
+*/
 void DDS_Dictionary::FillDataMap( const LDOM_Element& theComponentData, const LDOM_Element& theDocElement )
 {
   TCollection_AsciiString aCompName = theComponentData.getAttribute( KeyWord( "COMPONENT_NAME" ) );
@@ -215,12 +461,19 @@ void DDS_Dictionary::FillDataMap( const LDOM_Element& theComponentData, const LD
   myGroupMap.Add( aCompName, aDicGroup );
 }
 
+/*!
+  Convert numeric value \atheValue from specified unit of measure \atheUnits to SI unit of measure
+  (mm for Length, radians for Angles, etc). Converted value returned.
+*/
 Standard_Real DDS_Dictionary::ToSI( const Standard_Real theValue, const Standard_CString theUnits )
 {
   Standard_Real aRetValue = theValue;
   if ( theUnits && *theUnits && strcmp( theUnits, "%" ) )
   {
     try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+      OCC_CATCH_SIGNALS;
+#endif
       aRetValue = UnitsAPI::AnyToSI( theValue, theUnits );
     }
     catch( Standard_Failure ) {
@@ -232,12 +485,19 @@ Standard_Real DDS_Dictionary::ToSI( const Standard_Real theValue, const Standard
   return aRetValue;
 }
 
+/*!
+  Convert numeric value \atheValue to specified unit of measure \atheUnits from SI unit of measure
+  (mm for Length, radians for Angles, etc). Converted value returned.
+*/
 Standard_Real DDS_Dictionary::FromSI( const Standard_Real theValue, const Standard_CString theUnits )
 {
   Standard_Real aRetValue = theValue;
   if ( theUnits && *theUnits && strcmp( theUnits, "%" ) )
   {
     try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+      OCC_CATCH_SIGNALS;
+#endif
       aRetValue = UnitsAPI::AnyFromSI( theValue, theUnits );
     }
     catch( Standard_Failure ) {
index 427e08e1e6287d22e28f69099ff694077d1b93a5..9a5d5a886620a378ac109de2ecb56f415ea4c658 100644 (file)
@@ -30,8 +30,6 @@ class TCollection_AsciiString;
 
 DEFINE_STANDARD_HANDLE(DDS_Dictionary, MMgt_TShared)
 
-//  Class to provide information about used parameters,
-//  reading them from 'xml' file
 class DDS_Dictionary : public MMgt_TShared
 {
 public:
@@ -69,7 +67,6 @@ private:
 
   void                                           operator=( const DDS_Dictionary& );
 
-  // prepares formants for each unit systems
   void                                           FillDataMap( const LDOM_Element&, const LDOM_Element& );
 
 private:
index 8ea7f6a97915cee2a65e5b47ff203de93c76a243..626bd0fd03e82a14a6defaea4b427617a8b68df5 100644 (file)
 IMPLEMENT_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(DDS_KeyWords, MMgt_TShared)
 
+/*!
+  \class DDS_KeyWords
+
+  This object contains the pairs of internal keys and XML tag or attribute names. This class allow to user
+  define set of XML keywords used in datums definition file.
+
+  Default keywords table:
+  \li D_URI - dictionary
+  \li COMPONENT - component
+  \li COMPONENT_NAME - name
+  \li UNIT_SYSTEMS - unitSystems
+  \li UNIT_SYSTEM - system
+  \li UNIT_SYSTEM_NAME - name
+  \li UNIT_SYSTEM_LABEL - label
+  \li DATUM - datum
+  \li DATUM_ID - id
+  \li DATUM_LABEL - label
+  \li DATUM_UNITS - units
+  \li DATUM_FORMAT - format
+  \li DATUM_FILTER - filter
+  \li DATUM_REQUIRED - required
+  \li VALUE_LIST - valueList
+  \li VALUE_LIST_ID - listid
+  \li VALUE_LIST_NAME - name
+  \li VALUE_LIST_TYPE - type
+  \li VALUE_LIST_VALUE - value
+  \li VALUE_LIST_VALUEID - id
+  \li VALUE_LIST_VALUEICON - icon
+  \li DY_DOMAIN - domain
+  \li WARNING_LEVEL - warningLevel
+  \li WRONG_VALUE - wrongValue
+  \li VALUE_DESCR - valueDescr
+  \li VALUE_LIST_REF - listRef
+  \li DESCR - description
+  \li LONG_D - longDescr
+  \li SHORT_D - shortDescr
+  \li VD_TYPE - type
+  \li VD_DEFV - default
+  \li VD_MAXV - max
+  \li VD_MINV - min
+  \li VD_SPEC - specVal
+  \li VLR_LIST - list
+  \li PRS - presentation
+  \li LATERAL_ZOOM - lateralZoom
+  \li LZ_MINV - min
+  \li LZ_MAXV - max
+  \li LZ_ORDER - order
+  \li OPTIONS - options
+  \li OPTION - option
+  \li OPTION_NAME - name
+*/
+
+/*!
+  Constructor
+*/
+
 DDS_KeyWords::DDS_KeyWords()
 : MMgt_TShared()
 {
@@ -71,8 +127,16 @@ DDS_KeyWords::DDS_KeyWords()
   SetKeyWord( "LZ_MINV",              "min" );
   SetKeyWord( "LZ_MAXV",              "max" );
   SetKeyWord( "LZ_ORDER",             "order" );
+
+  SetKeyWord( "OPTIONS",              "options" );
+  SetKeyWord( "OPTION",               "option" );
+  SetKeyWord( "OPTION_NAME",          "name" );
 }
 
+/*!
+  Returns the static instance of the class DDS_KeyWords
+*/
+
 Handle(DDS_KeyWords) DDS_KeyWords::Get()
 {
   static Handle(DDS_KeyWords) keyWords;
@@ -83,6 +147,11 @@ Handle(DDS_KeyWords) DDS_KeyWords::Get()
   return keyWords;
 }
 
+/*!
+  Returns the XML keyword by specified internal key \a key. If the internal key isn't registered
+  then empty string will be returned.
+*/
+
 TCollection_AsciiString DDS_KeyWords::GetKeyWord( const TCollection_AsciiString& key ) const
 {
   TCollection_AsciiString keyWord;
@@ -91,6 +160,10 @@ TCollection_AsciiString DDS_KeyWords::GetKeyWord( const TCollection_AsciiString&
   return keyWord;
 }
 
+/*!
+  Register the pair of the internal key \a key and XML keyword \a keyWord.
+*/
+
 void DDS_KeyWords::SetKeyWord( const TCollection_AsciiString& key,
                                const TCollection_AsciiString& keyWord )
 {
index daee727ba3c00dfe4270dc3f3f5225a89215d651..2161f71f3338eba070d98979e6ddb7533408b7d2 100644 (file)
@@ -29,7 +29,7 @@ DEFINE_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared)
 
 class TCollection_AsciiString;
 
-class DDS_KeyWords: public MMgt_TShared
+class DDS_KeyWords : public MMgt_TShared
 {
 public:
   Standard_EXPORT static Handle(DDS_KeyWords) Get();
diff --git a/src/DDS/Makefile.am b/src/DDS/Makefile.am
new file mode 100755 (executable)
index 0000000..508e544
--- /dev/null
@@ -0,0 +1,44 @@
+#  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
+#  $Header: /home/server/cvs/GUI/GUI_SRC/src/DDS/Makefile.in
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libDDS.la
+
+salomeinclude_HEADERS = DDS.h \
+       DDS_DicGroup.h \
+       DDS_DicItem.h \
+       DDS_Dictionary.h \
+       DDS_KeyWords.h
+
+dist_libDDS_la_SOURCES = DDS_DicGroup.cxx \
+       DDS_DicItem.cxx \
+       DDS_Dictionary.cxx \
+       DDS_KeyWords.cxx
+
+libDDS_la_CPPFLAGS=$(CAS_CPPFLAGS)
+
+libDDS_la_LDFLAGS= $(CAS_KERNEL) $(CAS_OCAF)
+
+
+
diff --git a/src/DDS/Makefile.in b/src/DDS/Makefile.in
deleted file mode 100755 (executable)
index 1d42a6c..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#  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
-#  $Header: /home/server/cvs/GUI/GUI_SRC/src/DDS/Makefile.in
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= DDS.h \
-       DDS_DicGroup.h \
-       DDS_DicItem.h \
-       DDS_Dictionary.h \
-       DDS_KeyWords.h
-                    
-# Libraries targets
-LIB = libDDS.la
-
-LIB_SRC= DDS_DicGroup.cxx \
-       DDS_DicItem.cxx \
-       DDS_Dictionary.cxx \
-       DDS_KeyWords.cxx
-
-CPPFLAGS+= $(OCC_INCLUDES)
-
-LDFLAGS+= $(CAS_KERNEL) $(CAS_OCAF)
-
-@CONCLUDE@
-
-
diff --git a/src/Event/Makefile.am b/src/Event/Makefile.am
new file mode 100755 (executable)
index 0000000..c994896
--- /dev/null
@@ -0,0 +1,42 @@
+#  SALOME Utils : general SALOME's definitions and tools
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Marc Tajchman (CEA)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libEvent.la 
+
+salomeinclude_HEADERS= \
+       Event.h \
+       SALOME_Event.hxx 
+
+dist_libEvent_la_SOURCES = SALOME_Event.cxx 
+
+libEvent_la_CPPFLAGS=$(QT_INCLUDES) @KERNEL_CXXFLAGS@
+libEvent_la_LDFLAGS=$(QT_MT_LIBS)
+
+
diff --git a/src/Event/Makefile.in b/src/Event/Makefile.in
deleted file mode 100755 (executable)
index 02aaa2b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#  SALOME Utils : general SALOME's definitions and tools
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Marc Tajchman (CEA)
-#  Module : SALOME
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# header files  
-EXPORT_HEADERS= \
-        Event.h \
-       SALOME_Event.hxx 
-
-EXPORT_PYSCRIPTS = 
-# Libraries targets
-
-LIB = libEvent.la 
-LIB_SRC = SALOME_Event.cxx 
-
-CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS)
-LDFLAGS+=$(QT_MT_LIBS)
-
-@CONCLUDE@
-
-
index 78982c4c9f0fcb1588ed6d176f9fcbd91e04e605..91f53d6bcd5ac5bf3996f2808eb4680b132bfd9f 100755 (executable)
@@ -95,7 +95,7 @@ private:
   \class TMemFunEvent
   \brief Template class for member function
 */
-template<class TObject, typename TRes> class EVENT_EXPORT TMemFunEvent: public SALOME_Event{
+template<class TObject, typename TRes> class /*EVENT_EXPORT */TMemFunEvent: public SALOME_Event{
 public:
   typedef TRes TResult;
   TResult myResult;
@@ -119,7 +119,7 @@ private:
   \class TVoidMemFunEvent
   \brief Template class for member function
 */
-template<class TObject> class EVENT_EXPORT TVoidMemFunEvent: public SALOME_Event{
+template<class TObject> class /*EVENT_EXPORT */TVoidMemFunEvent: public SALOME_Event{
 public:
   typedef void (TObject::* TAction)();
   TVoidMemFunEvent(TObject* theObject, TAction theAction):
@@ -139,7 +139,7 @@ private:
   \class TMemFun1ArgEvent
   \brief Template for member function with one argument
 */
-template<class TObject, typename TRes, typename TArg, typename TStoreArg = TArg> class EVENT_EXPORT TMemFun1ArgEvent:
+template<class TObject, typename TRes, typename TArg, typename TStoreArg = TArg> class/* EVENT_EXPORT */TMemFun1ArgEvent:
 public SALOME_Event{
 public:
   typedef TRes TResult;
@@ -166,7 +166,7 @@ private:
   \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{
+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):
@@ -189,7 +189,7 @@ private:
   \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{
+/*EVENT_EXPORT */TMemFun2ArgEvent: public SALOME_Event{
 public:
   typedef TRes TResult;
   TResult myResult;
@@ -219,7 +219,7 @@ private:
   \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{
+/*EVENT_EXPORT*/ TVoidMemFun2ArgEvent: public SALOME_Event{
 public:
   typedef void (TObject::* TAction)(TArg,TArg1);
   TVoidMemFun2ArgEvent(TObject* theObject, TAction theAction, TArg theArg, TArg1 theArg1):
index bac910416b3aaec740bd667c4f947415bd8843a1..338543ee3b8920c16c544ca433323e52fcffe29f 100644 (file)
@@ -746,7 +746,7 @@ QByteArray GLViewer_MarkerSet::getByteCopy()
         aResult[i] = *aPointer;
         
     
-    for( ; i < aResult.size(); i++ )
+    for ( ; i < (int)aResult.size(); i++ )
         aResult[i] = aObject[i - anISize - 2*aFSize*myNumber - aFSize];
 
     return aResult;
@@ -1284,7 +1284,7 @@ QByteArray GLViewer_Polyline::getByteCopy()
     for( ; i < anISize + 2*aFSize*myNumber + 2*aBSize; i++, aPointer++ )
         aResult[i] = *aPointer;
 
-    for( ; i < aResult.size(); i++ )
+    for ( ; i < (int)aResult.size(); i++ )
         aResult[i] = aObject[i - anISize - 2*aFSize*myNumber - 2*aBSize];
 
     return aResult;
index 399a694442820826a5ae48d79d7c931bc0f4f008..d0001a49c18f42ab8c6efd5893e05358f4e056ab 100644 (file)
@@ -306,7 +306,7 @@ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY
     float aDY = ( aRowPixelHeight - 1 ) / aYScale, aDX;
     char aLetter;
     int aLettIndex, row;
-    for( int i = 0; i < theStr.length(); i++ )
+    for ( int i = 0; i < (int)theStr.length(); i++ )
     {
         aLetter    = theStr.data()[i];
         aLettIndex = (int)aLetter - FirstSymbolNumber;
@@ -338,7 +338,7 @@ void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY
 int GLViewer_TexFont::getStringWidth( QString theStr )
 {
     int aWidth = 0;
-    for( int i = 0; i < theStr.length(); i ++ )
+    for ( int i = 0; i < (int)theStr.length(); i ++ )
     {
         char aLetter = theStr.data()[i];
         int aLettIndex = (int)aLetter - FirstSymbolNumber;
index e5e3baa0518de9ba80878e6674de51225b6c37b5..7de98ed37321db2c9aaf99121c8a95bcc566f9a3 100644 (file)
@@ -187,17 +187,17 @@ QByteArray GLViewer_Object::getByteCopy()
 
     int aCurPos = 2*anISize + sizeOf8Float + aTypeLength + aToolTipLength;
     // adds aspect byte array
-    for( i = aCurPos; i < aCurPos + aAspect.size(); i++ )
+    for ( i = aCurPos; i < (int)( aCurPos + aAspect.size() ); i++ )
         aResult[i] = aAspect[i - aCurPos];
 
     aCurPos = aCurPos + aAspect.size();
     // adds GL text byte array
-    for( i = aCurPos; i < aCurPos + aGLText.size(); i++ )
+    for ( i = aCurPos; i < (int)( aCurPos + aGLText.size() ); i++ )
         aResult[i] = aGLText[i - aCurPos];    
 
     aCurPos += aGLText.size();
     aPointer = (char*)&myOwner;
-    for( i = 0; i < sizeof( GLViewer_Owner* ); i++, aPointer++ )
+    for( i = 0; i < sizeof( SUIT_DataOwner* ); i++, aPointer++ )
         aResult[ aCurPos + i ] = *aPointer;
 
     return aResult;
index 49373a8ccad7fe42674392d6de2fed26e6c527c1..2384bb4408db88e3522320870621435e329c5c48 100644 (file)
@@ -50,7 +50,7 @@ class GLViewer_AspectLine;
 class GLViewer_Group;
 class GLViewer_CoordSystem;
 class GLViewer_Text;
-class GLViewer_Owner;
+//class GLViewer_Owner;
 
 /*! 
  * Class GLViewer_Object
@@ -233,9 +233,9 @@ public:
   virtual bool              translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS ) = 0;
 #endif
   //!\warning It is for ouv
-  GLViewer_Owner*           owner() const { return myOwner; }
+  SUIT_DataOwner*           owner() const { return myOwner; }
   //!\warning It is for ouv
-  void                      setOwner( GLViewer_Owner* owner ) { myOwner = owner; }
+  void                      setOwner( SUIT_DataOwner* owner ) { myOwner = owner; }
   
   //! Adds object to group theGroup
   void                      setGroup( GLViewer_Group* theGroup );
@@ -297,26 +297,12 @@ protected:
   bool                      myIsVisible;
 
   //!\warning It is for ouv
-  GLViewer_Owner*           myOwner;
+  SUIT_DataOwner*           myOwner;
 
   //! Object Group
   GLViewer_Group*           myGroup;
 };
 
-
-//!\warning It is for ouv
-class GLVIEWER_API GLViewer_Owner : public SUIT_DataOwner
-{
-public:
-  //!\warning It is for ouv
-  GLViewer_Owner() : SUIT_DataOwner() {}
-  //!\warning It is for ouv
-  ~GLViewer_Owner() {}
-
-protected:
-
-};
-
 #ifdef WNT
 #pragma warning ( default:4251 )
 #endif
index 517aff5144b1a0346004a8ca56bf3186fc0e4fab..1f270a253f9bff75c83d254c7021b4b265eb426e 100644 (file)
 // File:      GLViewer_Tools.cxx
 // Created:   April, 2005
 
-//#include "GLViewerAfx.h"
 #include "GLViewer_Tools.h"
 
 #include <GL/gl.h>
 
-#include <iostream.h>
+#include <iostream>
 
 /*!
   Constructor
@@ -43,7 +42,7 @@ GLViewer_LineList::GLViewer_LineList( int size )
 
   if( !myArray )
   {
-    cout << "Can't allocate memory: " << size << endl;
+    std::cout << "Can't allocate memory: " << size << std::endl;
     myRealSize = 0;
   }
   else
@@ -386,11 +385,11 @@ void GLViewer_LineList::clear()
 */
 void GLViewer_LineList::print()
 {
-  cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::";
+  std::cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::";
   for( int i = 0; i < mySegmentNumber; i++ )
-    cout << "  " << myArray[2*i] << " " << myArray[2*i+1] << " | ";
+    std::cout << "  " << myArray[2*i] << " " << myArray[2*i+1] << " | ";
 
-  cout << endl;
+  std::cout << std::endl;
 }
 
 /*!
@@ -694,11 +693,11 @@ void GLViewer_LineField::addRectangle( double top, double right, double bottom,
 */
 void GLViewer_LineField::print()
 {
-  cout << "My X matrix Number: " << myXSize << endl;
+  std::cout << "My X matrix Number: " << myXSize << std::endl;
   for( int i = 0; i < myXSize; i++ )
     myXLineArray[i]->print();
 
-  cout << "My Y matrix Number: " << myYSize << endl;
+  std::cout << "My Y matrix Number: " << myYSize << std::endl;
   for( int j = 0; j < myYSize; j++ )
     myYLineArray[j]->print();
 }
@@ -724,7 +723,7 @@ void GLViewer_LineField::show()
   }
   glEnd();
   delete[] anArray;
-  cout << "Show function" << endl;
+  std::cout << "Show function" << std::endl;
 }
 
 /*!
@@ -1005,7 +1004,7 @@ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete()
           aCurArray[i].myLineIndex == myEndPoint.myXLineIndex && 
           aCurArray[i].mySegmentindex == myEndPoint.myXSegmentIndex )
       {
-        cout << "Algorithm complete X!!!!!!!" << endl;
+        std::cout << "Algorithm complete X!!!!!!!" << std::endl;
         myEndPoint.mySolveIndex = i;
         return IS_SOLVED;
       }
@@ -1013,7 +1012,7 @@ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete()
                aCurArray[i].myLineIndex == myEndPoint.myYLineIndex && 
                aCurArray[i].mySegmentindex == myEndPoint.myYSegmentIndex )
       {
-        cout << "Algorithm complete Y!!!!!!!" << endl;
+        std::cout << "Algorithm complete Y!!!!!!!" << std::endl;
         myEndPoint.mySolveIndex = i;  
         return IS_SOLVED;
       }
@@ -1031,7 +1030,7 @@ GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete()
   else
     myCurArrayIndex = 0;
 
-  cout << "Number of ways: " << count << endl;
+  std::cout << "Number of ways: " << count << std::endl;
   if( count == 0 )
     return IS_LOOP;
 
@@ -1099,7 +1098,7 @@ GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm()
 
   while( true )
   {
-    cout << "-----------Iteration #" << myCurCount << "-------------" << endl;
+    std::cout << "-----------Iteration #" << myCurCount << "-------------" << std::endl;
     iteration();
 
     IterationStatus is = checkComplete();
index b9cbff5aef4336c90bd1ba3522ff838edeb416e4..8e1f1e860f69d761d704a7db5d0972594b534e88 100644 (file)
 #include "GLViewer_Viewer2d.h"
 #include "SUIT_Desktop.h"
 
-int GLViewer_ViewManager::myMaxId = 0;
-
 /*!Constructor.*/
 GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop )
-: SUIT_ViewManager( theStudy, theDesktop )
+: SUIT_ViewManager( theStudy, theDesktop, new GLViewer_Viewer2d( "GLViewer" ) )
 {
-    myId = ++myMaxId;
-    setViewModel( new GLViewer_Viewer2d( "GLViewer" ) );
+  setTitle( tr( "GL_VIEW_TITLE" ) );
 }
 
 /*!Destructor.*/
@@ -43,13 +40,6 @@ 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 )
 {
index cfc25f1f97084821e022a317a2445a80aa9775a3..3542d63f35cf876df4333af606660068c24c13ec 100644 (file)
@@ -36,18 +36,11 @@ class GLVIEWER_API GLViewer_ViewManager : public SUIT_ViewManager
   Q_OBJECT
 public:
     GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop );
-    ~GLViewer_ViewManager();
+    virtual ~GLViewer_ViewManager();
 
     GLViewer_Viewer* getGLViewer() { return (GLViewer_Viewer*) myViewModel; }
 
     virtual void     contextMenuPopup( QPopupMenu* );
-
-protected:
-    void         setViewName(SUIT_ViewWindow* theView);
-
-protected:
-    static  int  myMaxId;
-    int          myId;
 };
 
 #endif // GLVIEWER_VIEWMANAGER_H
index 180ed113e3f104660247508b53dfa0b9ad5de61b..3055726ec0eca88903758397465ce623d648825c 100644 (file)
@@ -1367,7 +1367,7 @@ void GLViewer_ViewPort2d::onMaybeTip( QPoint thePoint, QString& theText, QFont&
       int str_size = aList.first().length();
       for( int i = 1, size = aList.count(); i < size; i++ )
       {
-        if( str_size < aList[i].length() )
+        if ( str_size < (int)aList[i].length() )
         {
           index = i;
           str_size = aList[i].length();
diff --git a/src/GLViewer/Makefile.am b/src/GLViewer/Makefile.am
new file mode 100644 (file)
index 0000000..83fec2f
--- /dev/null
@@ -0,0 +1,115 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libGLViewer.la
+
+salomeinclude_HEADERS= \
+       GLViewer.h \
+       GLViewer_AspectLine.h \
+       GLViewer_BaseDrawers.h \
+       GLViewer_BaseObjects.h \
+       GLViewer_Compass.h \
+       GLViewer_Context.h \
+       GLViewer_CoordSystem.h \
+       GLViewer_Defs.h \
+       GLViewer_Drawer.h \
+       GLViewer_Geom.h \
+       GLViewer_Grid.h \
+       GLViewer_Group.h \
+       GLViewer_MimeSource.h \
+       GLViewer_Object.h \
+       GLViewer_Selector.h \
+       GLViewer_Selector2d.h \
+       GLViewer_Text.h \
+       GLViewer_Tools.h \
+       GLViewer_ToolTip.h \
+       GLViewer_ViewFrame.h \
+       GLViewer_ViewManager.h \
+       GLViewer_ViewPort.h \
+       GLViewer_ViewPort2d.h \
+       GLViewer_Viewer.h \
+       GLViewer_Viewer2d.h \
+       GLViewer_Widget.h
+
+dist_libGLViewer_la_SOURCES= \
+       GLViewer_AspectLine.cxx \
+       GLViewer_BaseDrawers.cxx \
+       GLViewer_BaseObjects.cxx \
+       GLViewer_Compass.cxx \
+       GLViewer_Context.cxx \
+       GLViewer_CoordSystem.cxx \
+       GLViewer_Drawer.cxx \
+       GLViewer_Geom.cxx \
+       GLViewer_Grid.cxx \
+       GLViewer_Group.cxx \
+       GLViewer_MimeSource.cxx \
+       GLViewer_Object.cxx \
+       GLViewer_Selector.cxx \
+       GLViewer_Selector2d.cxx \
+       GLViewer_Text.cxx \
+       GLViewer_Tools.cxx \
+       GLViewer_ToolTip.cxx \
+       GLViewer_ViewFrame.cxx \
+       GLViewer_ViewManager.cxx \
+       GLViewer_ViewPort.cxx \
+       GLViewer_ViewPort2d.cxx \
+       GLViewer_Viewer.cxx \
+       GLViewer_Viewer2d.cxx \
+       GLViewer_Widget.cxx
+
+MOC_FILES= \
+       GLViewer_Selector_moc.cxx \
+       GLViewer_Selector2d_moc.cxx \
+       GLViewer_ToolTip_moc.cxx \
+       GLViewer_ViewFrame_moc.cxx \
+       GLViewer_ViewManager_moc.cxx \
+       GLViewer_ViewPort_moc.cxx \
+       GLViewer_ViewPort2d_moc.cxx \
+       GLViewer_Viewer_moc.cxx \
+       GLViewer_Viewer2d_moc.cxx \
+       GLViewer_Widget_moc.cxx
+nodist_libGLViewer_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA= \
+       resources/cursor_rotate.png \
+       resources/cursor_sketch.png \
+       resources/cursor_zoom.png \
+       resources/view_dump.png \
+       resources/view_fitall.png \
+       resources/view_fitarea.png \
+       resources/view_fitselect.png \
+       resources/view_glpan.png \
+       resources/view_pan.png \
+       resources/view_reset.png \
+       resources/view_zoom.png
+
+nodist_salomeres_DATA= \
+       GLViewer_images.qm \
+       GLViewer_msg_en.qm
+
+libGLViewer_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+libGLViewer_la_LDFLAGS=$(QT_MT_LIBS) $(CAS_KERNEL)
+
+libGLViewer_la_LIBADD= ../SUIT/libsuit.la
diff --git a/src/GLViewer/Makefile.in b/src/GLViewer/Makefile.in
deleted file mode 100644 (file)
index 7686943..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= GLViewer.h \
-               GLViewer_AspectLine.h \
-               GLViewer_BaseDrawers.h \
-               GLViewer_BaseObjects.h \
-               GLViewer_Compass.h \
-               GLViewer_Context.h \
-               GLViewer_CoordSystem.h \
-               GLViewer_Defs.h \
-               GLViewer_Drawer.h \
-               GLViewer_Geom.h \
-               GLViewer_Grid.h \
-               GLViewer_Group.h \
-               GLViewer_MimeSource.h \
-               GLViewer_Object.h \
-               GLViewer_Selector.h \
-               GLViewer_Selector2d.h \
-               GLViewer_Text.h \
-               GLViewer_Tools.h \
-               GLViewer_ToolTip.h \
-               GLViewer_ViewFrame.h \
-               GLViewer_ViewManager.h \
-               GLViewer_ViewPort.h \
-               GLViewer_ViewPort2d.h \
-               GLViewer_Viewer.h \
-               GLViewer_Viewer2d.h \
-               GLViewer_Widget.h
-                    
-# .po files to transform in .qm
-PO_FILES = GLViewer_images.po \
-          GLViewer_msg_en.po
-
-# Libraries targets
-LIB = libGLViewer.la
-
-LIB_SRC= GLViewer_AspectLine.cxx \
-        GLViewer_BaseDrawers.cxx \
-        GLViewer_BaseObjects.cxx \
-        GLViewer_Compass.cxx \
-        GLViewer_Context.cxx \
-        GLViewer_CoordSystem.cxx \
-        GLViewer_Drawer.cxx \
-        GLViewer_Geom.cxx \
-        GLViewer_Grid.cxx \
-        GLViewer_Group.cxx \
-        GLViewer_MimeSource.cxx \
-        GLViewer_Object.cxx \
-        GLViewer_Selector.cxx \
-        GLViewer_Selector2d.cxx \
-        GLViewer_Text.cxx \
-        GLViewer_Tools.cxx \
-        GLViewer_ToolTip.cxx \
-        GLViewer_ViewFrame.cxx \
-        GLViewer_ViewManager.cxx \
-        GLViewer_ViewPort.cxx \
-        GLViewer_ViewPort2d.cxx \
-        GLViewer_Viewer.cxx \
-        GLViewer_Viewer2d.cxx \
-        GLViewer_Widget.cxx
-
-LIB_MOC = GLViewer_Selector.h \
-       GLViewer_Selector2d.h \
-       GLViewer_ToolTip.h \
-       GLViewer_ViewFrame.h \
-       GLViewer_ViewManager.h \
-       GLViewer_ViewPort.h \
-       GLViewer_ViewPort2d.h \
-       GLViewer_Viewer.h \
-       GLViewer_Viewer2d.h \
-       GLViewer_Widget.h
-
-RESOURCES_FILES = cursor_rotate.png \
-                 cursor_sketch.png \
-                 cursor_zoom.png \
-                 view_dump.png \
-                 view_fitall.png \
-                 view_fitarea.png \
-                 view_fitselect.png \
-                 view_glpan.png \
-                 view_pan.png \
-                 view_reset.png \
-                 view_zoom.png
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL)
-
-LIBS+= -lsuit -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lGLU
-
-@CONCLUDE@
index d51c7d3a381f95dc0790ea8177ced823bc5c222b..d978408314bc1aef08253fdc63c11a359a3d3dbf 100644 (file)
@@ -103,3 +103,6 @@ msgstr "Error"
 
 msgid "GLViewer_ViewFrame::DUMP_VIEW_ERROR_DLG_TEXT"
 msgstr "Can't save Dump View in file"
+
+msgid "GLViewer_ViewManager::GL_VIEW_TITLE"
+msgstr "GL Scene:%M - viewer:%V"
index 0ccc31bb46ba2b75ba10bd87e6c4a26b8fa62b91..2e59728d023febeb1f739a63ea596adcb42519fb 100644 (file)
 
 #include "LightApp_OBFilter.h"
 
+#include "LightApp_EventFilter.h"
+
 #include "LightApp_OBSelector.h"
 #include "LightApp_SelectionMgr.h"
+#include "LightApp_DataObject.h"
 
 #include <CAM_Module.h>
 #include <CAM_DataModel.h>
 #include <QtxMRUAction.h>
 #include <QtxDockAction.h>
 #include <QtxToolBar.h>
+#include <qprocess.h>
 
 #include <LogWindow.h>
 #include <OB_Browser.h>
 #include <OB_ListView.h>
+#include <OB_ObjSearch.h>
 
 #ifndef DISABLE_GLVIEWER
   #include <GLViewer_Viewer.h>
 //  #include <SUPERVGraph_ViewManager.h>
 //#endif
 
+#ifndef DISABLE_QXGRAPHVIEWER
+  #include <QxGraph_ViewModel.h>
+  #include <QxGraph_ViewWindow.h>
+  #include <QxGraph_ViewManager.h>
+#endif
+
 #include <QtxWorkstack.h>
 
 #include <qdir.h>
@@ -231,6 +242,15 @@ myPrefs( 0 )
   myAccel->setActionKey( SUIT_Accel::RotateUp,    ALT+Key_Up,        VTKViewer_Viewer::Type() );
   myAccel->setActionKey( SUIT_Accel::RotateDown,  ALT+Key_Down,      VTKViewer_Viewer::Type() );
 #endif
+#ifndef DISABLE_PLOT2DVIEWER
+  myAccel->setActionKey( SUIT_Accel::PanLeft,     CTRL+Key_Left,     Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::PanRight,    CTRL+Key_Right,    Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::PanUp,       CTRL+Key_Up,       Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::PanDown,     CTRL+Key_Down,     Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::ZoomIn,      CTRL+Key_Plus,     Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::ZoomOut,     CTRL+Key_Minus,    Plot2d_Viewer::Type() );
+  myAccel->setActionKey( SUIT_Accel::ZoomFit,     CTRL+Key_Asterisk, Plot2d_Viewer::Type() );
+#endif
 
   connect( mySelMgr, SIGNAL( selectionChanged() ), this, SLOT( onSelection() ) );
 
@@ -287,6 +307,8 @@ void LightApp_Application::start()
 
   putInfo( "" );
   desktop()->statusBar()->message( "" );
+
+  LightApp_EventFilter::Init();
 }
 
 /*!Gets application name.*/
@@ -439,12 +461,12 @@ void LightApp_Application::createActions()
   int id = LightApp_Application::UserID + FIRST_HELP_ID;
   // help for KERNEL and GUI
   QCString dir;
-  QString aFileName = "index.htm";
+  QString aFileName = "index.html";
   QString root;
   QAction* a;
   if (dir = getenv("GUI_ROOT_DIR")) {
-    root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") + 
-                         Qtx::addSlash("gui") +  Qtx::addSlash("GUI") );
+    root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") +
+                          Qtx::addSlash("salome") + Qtx::addSlash("gui") +  Qtx::addSlash("GUI") );
     if ( QFileInfo( root + aFileName ).exists() ) {
       a = createAction( id, tr( QString("GUI Help") ), QIconSet(),
                        tr( QString("GUI Help") ),
@@ -456,10 +478,9 @@ void LightApp_Application::createActions()
     }
   }
   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() ) {
+    if ( QFileInfo( root + aFileName ).exists() ) {
       a = createAction( id, tr( QString("KERNEL Help") ), QIconSet(),
                        tr( QString("KERNEL Help") ),
                        tr( QString("KERNEL Help") ),
@@ -479,8 +500,8 @@ void LightApp_Application::createActions()
     QString modName = moduleName( *it );
     
     if (dir = getenv( modName + "_ROOT_DIR")) {
-      root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("doc") +  Qtx::addSlash("salome") + 
-                           Qtx::addSlash("gui") +  Qtx::addSlash(modName) );
+      root = Qtx::addSlash( Qtx::addSlash(dir) +  Qtx::addSlash("share") + 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(),
@@ -509,67 +530,73 @@ void LightApp_Application::createActions()
   if ( modIcon.isNull() )
     modIcon = QPixmap( imageEmptyIcon );
 
-  QToolBar* modTBar = new QtxToolBar( true, desk );
-  modTBar->setLabel( tr( "INF_TOOLBAR_MODULES" ) );
+  QStringList modList;
+  modules( modList, false );
+
+  if( modList.count()>1 )
+  {
+    QToolBar* modTBar = new QtxToolBar( true, desk );
+    modTBar->setLabel( tr( "INF_TOOLBAR_MODULES" ) );
 
-  QActionGroup* modGroup = new QActionGroup( this );
-  modGroup->setExclusive( true );
-  modGroup->setUsesDropDown( true );
+    QActionGroup* modGroup = new QActionGroup( this );
+    modGroup->setExclusive( true );
+    modGroup->setUsesDropDown( true );
 
-  a = createAction( -1, tr( "APP_NAME" ), defIcon, tr( "APP_NAME" ),
-                    tr( "PRP_APP_MODULE" ), 0, desk, true );
-  modGroup->add( a );
-  myActions.insert( QString(), a );
+    a = createAction( -1, tr( "APP_NAME" ), defIcon, tr( "APP_NAME" ),
+                      tr( "PRP_APP_MODULE" ), 0, desk, true );
+    modGroup->add( a );
+    myActions.insert( QString(), a );
 
-  QMap<QString, QString> iconMap;
-  moduleIconNames( iconMap );
+    QMap<QString, QString> iconMap;
+    moduleIconNames( iconMap );
 
-  const int iconSize = 20;
+    const int iconSize = 20;
 
-  modGroup->addTo( modTBar );
-  QObjectList *l = modTBar->queryList( "QComboBox" );
-  QObjectListIt oit( *l );
-  while ( QObject* obj = oit.current() ) {
-    QComboBox* cb = (QComboBox*)obj;
-    if ( cb ) cb->setFocusPolicy( QWidget::NoFocus );
+    modGroup->addTo( modTBar );
+    QObjectList *l = modTBar->queryList( "QComboBox" );
+    QObjectListIt oit( *l );
+    while ( QObject* obj = oit.current() ) {
+      QComboBox* cb = (QComboBox*)obj;
+      if ( cb ) cb->setFocusPolicy( QWidget::NoFocus );
     ++oit;
-  }
-  delete l;
+    }
+    delete l;
   
-   modTBar->addSeparator();
+    modTBar->addSeparator();
 
-  QStringList modList;
-  modules( modList, false );
-
-  for ( it = modList.begin(); it != modList.end(); ++it )
-  {
-    if ( !isLibExists( *it ) )
+    for ( it = modList.begin(); it != modList.end(); ++it )
     {
-      qDebug( QString( "Library '%1' cannot be found" ).arg( *it ) );
-      continue;
-    }
+      if ( !isLibExists( *it ) )
+        continue;
+    
+      QString iconName;
+      if ( iconMap.contains( *it ) )
+        iconName = iconMap[*it];
 
-    QString iconName;
-    if ( iconMap.contains( *it ) )
-      iconName = iconMap[*it];
+      QString modName = moduleName( *it );
 
-    QString modName = moduleName( *it );
+      QPixmap icon = resMgr->loadPixmap( modName, iconName, false );
+      if ( icon.isNull() )
+      {
+       icon = modIcon;
+       printf( "****************************************************************\n" );
+       printf( "*    Icon for %s not found. Using the default one.\n", (*it).latin1() );
+       printf( "****************************************************************\n" );
+      }
 
-    QPixmap icon = resMgr->loadPixmap( modName, iconName, false );
-    if ( icon.isNull() )
-      icon = modIcon;
+      icon.convertFromImage( icon.convertToImage().smoothScale( iconSize, iconSize, QImage::ScaleMin ) );
 
-    icon.convertFromImage( icon.convertToImage().smoothScale( iconSize, iconSize, QImage::ScaleMin ) );
+      QAction* a = createAction( -1, *it, icon, *it, tr( "PRP_MODULE" ).arg( *it ), 0, desk, true );
+      a->addTo( modTBar );
+      modGroup->add( a );
 
-    QAction* a = createAction( -1, *it, icon, *it, tr( "PRP_MODULE" ).arg( *it ), 0, desk, true );
-    a->addTo( modTBar );
-    modGroup->add( a );
+      myActions.insert( *it, a );
+    }
 
-    myActions.insert( *it, a );
+    SUIT_Tools::simplifySeparators( modTBar );
+    connect( modGroup, SIGNAL( selected( QAction* ) ), this, SLOT( onModuleActivation( QAction* ) ) );
   }
 
-  SUIT_Tools::simplifySeparators( modTBar );
-
   // New window
   int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, MenuWindowId, 100 );
   int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 );
@@ -588,14 +615,15 @@ void LightApp_Application::createActions()
 #ifndef DISABLE_VTKVIEWER
   createActionForViewer( NewVTKViewId, newWinMenu, QString::number( 3 ), ALT+Key_K );
 #endif
+#ifndef DISABLE_QXGRAPHVIEWER
+  createActionForViewer( NewQxGraphViewId, newWinMenu, QString::number( 4 ), ALT+Key_C );
+#endif
 
 
   createAction( RenameId, tr( "TOT_RENAME" ), QIconSet(), tr( "MEN_DESK_RENAME" ), tr( "PRP_RENAME" ),
                SHIFT+Key_R, desk, false, this, SLOT( onRenameWindow() ) );
   createMenu( RenameId, windowMenu, -1 );
 
-  connect( modGroup, SIGNAL( selected( QAction* ) ), this, SLOT( onModuleActivation( QAction* ) ) );
-
   int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 );
   createMenu( PreferencesId, fileMenu, 15, -1 );
   createMenu( separator(), fileMenu, -1, 15, -1 );
@@ -627,20 +655,16 @@ void LightApp_Application::onModuleActivation( QAction* a )
   bool cancelled = false;
   while ( !modName.isEmpty() && !activeStudy() && !cancelled ){
     LightApp_ModuleDlg aDlg( desktop(), modName, icon );
-    int res = aDlg.exec();
+    QMap<int, QString> opmap = activateModuleActions();
+    for ( QMap<int, QString>::ConstIterator it = opmap.begin(); it != opmap.end(); ++it )
+      aDlg.addButton( it.data(), it.key() );
 
-    switch ( res ){
-    case 1:
-      onNewDoc();
-      break;
-    case 2:
-      onOpenDoc();
-      break;
-    case 3:
-      //onLoadStudy();
-      //break;
-    case 0:
-    default:
+    int res = aDlg.exec();
+    if ( res != QDialog::Rejected ) {
+      // some operation is selected
+      moduleActionSelected( res );
+    }
+    else {
       putInfo( tr("INF_CANCELLED") );
       myActions[QString()]->setOn( true );
       cancelled = true;
@@ -691,6 +715,11 @@ void LightApp_Application::onNewWindow()
   case NewVTKViewId:
     type = VTKViewer_Viewer::Type();
     break;
+#endif
+#ifndef DISABLE_QXGRAPHVIEWER
+  case NewQxGraphViewId:
+    type = QxGraph_Viewer::Type();
+    break;
 #endif
   }
 
@@ -889,17 +918,24 @@ void LightApp_Application::updateCommandsStatus()
   if( a )
     a->setEnabled( activeStudy() );
 #endif
+
+#ifndef DISABLE_QXGRAPHVIEWER
+  a = action( NewQxGraphViewId );
+  if( a )
+    a->setEnabled( activeStudy() );
+#endif
 }
 
 /*!
   \class RunBrowser
   Runs system command in separate thread
 */
-class RunBrowser: public QThread {
+class RunBrowser: public QThread
+{
 public:
-
-  RunBrowser( LightApp_Application* app, QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL):
-    myApp(theApp), myParams(theParams), 
+  RunBrowser (LightApp_Application* app, QString theApp, QString theParams,
+              QString theHelpFile, QString theContext=NULL)
+    myApp(theApp), myParams(theParams), 
 #ifdef WIN32
       myHelpFile("file://" + theHelpFile + theContext), 
 #else
@@ -907,25 +943,35 @@ public:
 #endif
       myStatus(0),
       myLApp( app )
-{
-};
+  {
+  };
 
   virtual void run()
   {
     QString aCommand;
 
-    if ( !myApp.isEmpty())
+    if (!myApp.isEmpty())
+    {
+      //aCommand.sprintf("%s %s %s",myApp.latin1(),myParams.latin1(),myHelpFile.latin1());
+
+      //QProcess* proc = new QProcess();
+      //proc->addArgument( aCommand );
+
+      QProcess* proc = new QProcess();
+      proc->addArgument( myApp );
+      if (!myParams.isEmpty()) proc->addArgument( myParams );
+      proc->addArgument( myHelpFile );
+      //myStatus = system(aCommand);
+
+      //if(myStatus != 0)
+      if(!proc->start())
       {
-       aCommand.sprintf("%s %s %s",myApp.latin1(),myParams.latin1(),myHelpFile.latin1());
-       myStatus = system(aCommand);
-       if(myStatus != 0)
-         {
-           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 );
-         }
+        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 );
       }
+    }
   }
 
 private:
@@ -944,17 +990,27 @@ void LightApp_Application::onHelpContentsModule()
   const QAction* obj = (QAction*) sender();
 
   QString aComponentName = obj->name();
-  QString aFileName = "index.htm";
-  QString aFileNameKernel = "index.html";
+  QString aFileName = "index.html";
 
   QCString dir = getenv( aComponentName + "_ROOT_DIR");
   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) );
+    Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + Qtx::addSlash("salome") + Qtx::addSlash("gui") +  Qtx::addSlash(aComponentName) );
   
-  QString helpFile = QFileInfo( homeDir + (!aComponentName.compare(QString("KERNEL")) ? aFileNameKernel : aFileName) ).absFilePath();
+  QString helpFile = QFileInfo( homeDir + aFileName ).absFilePath();
   SUIT_ResourceMgr* resMgr = resourceMgr();
-  QString anApp = resMgr->stringValue("ExternalBrowser", "application");
+       QString platform;
+#ifdef WIN32
+       platform = "winapplication";
+#else
+       platform = "application";
+#endif
+       QString anApp = resMgr->stringValue("ExternalBrowser", platform);
+#ifdef WIN32
+       QString quote("\""); 
+       anApp.prepend( quote ); 
+       anApp.append( quote ); 
+#endif
   QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
 
   if (!anApp.isEmpty()) {
@@ -975,11 +1031,22 @@ void LightApp_Application::onHelpContentsModule()
 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 homeDir = Qtx::addSlash(Qtx::addSlash(dir)+Qtx::addSlash("share")+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 platform;
+#ifdef WIN32
+       platform = "winapplication";
+#else
+       platform = "application";
+#endif
+       QString anApp = resMgr->stringValue("ExternalBrowser", platform);
+#ifdef WIN32
+       QString quote("\""); 
+       anApp.prepend( quote ); 
+       anApp.append( quote ); 
+#endif
   QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
 
   if (!anApp.isEmpty()) {
@@ -1109,11 +1176,13 @@ void LightApp_Application::removeWindow( const int flag, const int studyId )
       sId = activeStudy()->id();
   }
 
+  bool anIsEmpty = !myWindows[flag]->isEmpty();
   QWidget* wid = myWindows[flag]->widget( sId );
   myWindows[flag]->remove( sId );
   delete wid;
 
-  setWindowShown( flag, !myWindows[flag]->isEmpty() );
+  //setWindowShown( flag, !myWindows[flag]->isEmpty() );
+  setWindowShown( flag, anIsEmpty );
 }
 
 /*!
@@ -1314,6 +1383,12 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType
   //    viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop(), new SUPERVGraph_Viewer() );
   //  }
   //#endif
+#ifndef DISABLE_QXGRAPHVIEWER
+  if( vmType == QxGraph_Viewer::Type() )
+    {
+      viewMgr = new QxGraph_ViewManager( activeStudy(), desktop(), new QxGraph_Viewer() );
+    }
+#endif
 #ifndef DISABLE_OCCVIEWER
   if( vmType == OCCViewer_Viewer::Type() )
   {
@@ -1325,7 +1400,7 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType
     vm = new OCCViewer_Viewer();
 #endif
     vm->setBackgroundColor( resMgr->colorValue( "OCCViewer", "background", vm->backgroundColor() ) );
-    vm->setTrihedronSize( resMgr->integerValue( "OCCViewer", "trihedron_size", vm->trihedronSize() ) );
+    vm->setTrihedronSize( resMgr->doubleValue( "OCCViewer", "trihedron_size", vm->trihedronSize() ) );
     int u( 1 ), v( 1 );
     vm->isos( u, v );
     u = resMgr->integerValue( "OCCViewer", "iso_number_u", u );
@@ -1348,7 +1423,7 @@ SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType
     if( vm )
     {
       vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) );
-      vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ),
+      vm->setTrihedronSize( resMgr->doubleValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ),
                            resMgr->booleanValue( "VTKViewer", "relative_size", vm->trihedronRelative() ) );
       new LightApp_VTKSelector( vm, mySelMgr );
     }
@@ -1399,6 +1474,9 @@ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy )
 
   activateModule( defaultModule() );
 
+  if ( objectBrowser() )
+    objectBrowser()->openLevels();
+
   activateWindows();
 }
 
@@ -1415,12 +1493,14 @@ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy )
     //aRoot->dump();
   }
   getWindow( WT_ObjectBrowser );
-  if ( objectBrowser() != 0 ) {
+  if ( objectBrowser() )
     objectBrowser()->setRootObject( aRoot );
-  }
 
   activateModule( defaultModule() );
 
+  if ( objectBrowser() )
+    objectBrowser()->openLevels();
+
   activateWindows();
 
   emit studyOpened();
@@ -1433,16 +1513,18 @@ void LightApp_Application::onStudySaved( SUIT_Study* )
 }
 
 /*!Protected SLOT. On study closed.*/
-void LightApp_Application::onStudyClosed( SUIT_Study* )
+void LightApp_Application::onStudyClosed( SUIT_Study* )
 {
-  emit studyClosed();
-
   // Bug 10396: clear selection
   mySelMgr->clearSelected();
 
+  // Bug 12944: emit signal only after clear selection
+  emit studyClosed();
+
   activateModule( "" );
 
-  saveWindowsGeometry();
+  for ( WindowMap::ConstIterator itr = myWindows.begin(); s && itr != myWindows.end(); ++itr )
+    removeWindow( itr.key(), s->id() );
 }
 
 /*!Protected SLOT.On desktop activated.*/
@@ -1533,6 +1615,8 @@ void LightApp_Application::onPreferenceChanged( QString& modName, QString& secti
     sMod->preferencesChanged( section, param );
   else
     preferencesChanged( section, param );
+  // emit signal to allow additional preferences changing processing
+  emit preferenceChanged( modName, section, param );
 }
 
 /*!Private SLOT. On open document with name \a aName.*/
@@ -1545,9 +1629,6 @@ void LightApp_Application::onMRUActivated( QString aName )
 void LightApp_Application::beforeCloseDoc( SUIT_Study* s )
 {
   CAM_Application::beforeCloseDoc( s );
-
-  for ( WindowMap::ConstIterator itr = myWindows.begin(); s && itr != myWindows.end(); ++itr )
-    removeWindow( itr.key(), s->id() );
 }
 
 /*!Update actions.*/
@@ -1584,6 +1665,7 @@ QWidget* LightApp_Application::createWindow( const int flag )
   if ( flag == WT_ObjectBrowser )
   {
     OB_Browser* ob = new OB_Browser( desktop() );
+    ob->setSearch( new OB_ObjSearch( ob ) );
     ob->setAutoUpdate( true );
     //ob->setAutoOpenLevel( 1 ); // commented by ASV as a fix to bug IPAL10107
     ob->setCaption( tr( "OBJECT_BROWSER" ) );
@@ -1739,7 +1821,13 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
 
   int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab );
   pref->setItemProperty( extgroup, "columns", 1 );
-  int apppref = pref->addPreference( tr( "PREF_APP" ), extgroup, LightApp_Preferences::File, "ExternalBrowser", "application" );
+       QString platform;
+#ifdef WIN32
+       platform = "winapplication";
+#else
+       platform = "application";
+#endif
+  int apppref = pref->addPreference( tr( "PREF_APP" ), extgroup, LightApp_Preferences::File, "ExternalBrowser", platform );
   pref->setItemProperty( apppref, "existing", true );
   pref->setItemProperty( apppref, "flags", QFileInfo::ExeUser );
   pref->setItemProperty( apppref, "readOnly", false );
@@ -1765,11 +1853,11 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->setItemProperty( plot2dGroup, "columns", 1 );
 
   int occTS = pref->addPreference( tr( "PREF_TRIHEDRON_SIZE" ), occGroup,
-                                  LightApp_Preferences::IntSpin, "OCCViewer", "trihedron_size" );
+                                  LightApp_Preferences::DblSpin, "OCCViewer", "trihedron_size" );
   pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), occGroup,
                       LightApp_Preferences::Color, "OCCViewer", "background" );
 
-  pref->setItemProperty( occTS, "min", 1 );
+  pref->setItemProperty( occTS, "min", 1.0E-06 );
   pref->setItemProperty( occTS, "max", 1000 );
 
   int isoU = pref->addPreference( tr( "PREF_ISOS_U" ), occGroup,
@@ -1784,12 +1872,12 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->setItemProperty( isoV, "max", 100000 );
 
   int vtkTS = pref->addPreference( tr( "PREF_TRIHEDRON_SIZE" ), vtkGroup,
-                                  LightApp_Preferences::IntSpin, "VTKViewer", "trihedron_size" );
+                                  LightApp_Preferences::DblSpin, "VTKViewer", "trihedron_size" );
   pref->addPreference( tr( "PREF_RELATIVE_SIZE" ), vtkGroup, LightApp_Preferences::Bool, "VTKViewer", "relative_size" );
   pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), vtkGroup,
                       LightApp_Preferences::Color, "VTKViewer", "background" );
 
-  pref->setItemProperty( vtkTS, "min", 1 );
+  pref->setItemProperty( vtkTS, "min", 1.0E-06 );
   pref->setItemProperty( vtkTS, "max", 150 );
 
   pref->addPreference( tr( "PREF_SHOW_LEGEND" ), plot2dGroup,
@@ -1891,7 +1979,7 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
 #ifndef DISABLE_OCCVIEWER
   if ( sec == QString( "OCCViewer" ) && param == QString( "trihedron_size" ) )
   {
-    int sz = resMgr->integerValue( sec, param, -1 );
+    double sz = resMgr->doubleValue( sec, param, -1 );
     QPtrList<SUIT_ViewManager> lst;
     viewManagers( OCCViewer_Viewer::Type(), lst );
     for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current() && sz >= 0; ++it )
@@ -1910,7 +1998,7 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
 #ifndef DISABLE_VTKVIEWER
   if ( sec == QString( "VTKViewer" ) && (param == QString( "trihedron_size" ) || param == QString( "relative_size" )) )
   {
-    int sz = resMgr->integerValue( "VTKViewer", "trihedron_size", -1 );
+    double sz = resMgr->doubleValue( "VTKViewer", "trihedron_size", -1 );
     bool isRelative = resMgr->booleanValue( "VTKViewer", "relative_size", true );
     QPtrList<SUIT_ViewManager> lst;
 #ifndef DISABLE_SALOMEOBJECT
@@ -2016,6 +2104,39 @@ void LightApp_Application::updateDesktopTitle() {
   desktop()->setCaption( aTitle );
 }
 
+/*!
+  \brief Get module activation actions
+  \return map <action_id><action_name> where
+  - action_id is unique non-zero action identifier
+  - action_name is action title
+  \sa moduleActionSelected()
+*/
+QMap<int, QString> LightApp_Application::activateModuleActions() const
+{
+  QMap<int, QString> opmap;
+  opmap.insert( NewStudyId,  tr( "ACTIVATE_MODULE_OP_NEW" ) );
+  opmap.insert( OpenStudyId, tr( "ACTIVATE_MODULE_OP_OPEN" ) );
+  return opmap;
+}
+
+/*!
+  \brief Process module activation action.
+  \param id action identifier
+  \sa activateModuleActions()
+*/
+void LightApp_Application::moduleActionSelected( const int id )
+{
+  switch ( id ) {
+  case NewStudyId:
+    onNewDoc();
+    break;
+  case OpenStudyId:
+    onOpenDoc();
+    break;
+  default:
+    break;
+  }
+}
 /*!
   Updates windows after close document
 */
@@ -2080,8 +2201,15 @@ void LightApp_Application::updateWindows()
   currentWindows( winMap );
 
   if ( activeStudy() ) {
-    for ( QMap<int, int>::ConstIterator it = winMap.begin(); it != winMap.end(); ++it )
-      getWindow( it.key() );
+    for ( QMap<int, int>::ConstIterator it = winMap.begin(); it != winMap.end(); ++it ) {
+      getWindow( it.key() ); 
+      
+      Dock dock; int index, extraOffset; bool nl;
+      if ( desktop()->getLocation( myWindows[it.key()], dock, index, nl, extraOffset )
+          &&
+          dock != (Dock)it.data() )
+       desktop()->moveDockWindow( myWindows[it.key()], (Dock)it.data() );
+    }
 
     loadWindowsGeometry();
   }
@@ -2225,6 +2353,7 @@ void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* th
 
   thePopup->insertSeparator();
   thePopup->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) );
+  thePopup->insertItem( tr( "MEN_FIND" ), this, SLOT( onFind() ) );
 }
 
 /*!
@@ -2323,6 +2452,10 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const
     return false;
 
   QString lib = moduleLibrary( moduleTitle );
+  
+  //abd: changed libSalomePyQtGUI to SalomePyQtGUI for WIN32
+  bool isPythonModule = lib.contains("SalomePyQtGUI");
+
   QStringList paths;
 #ifdef WIN32
   paths = QStringList::split( ";", ::getenv( "PATH" ) );
@@ -2330,11 +2463,64 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const
   paths = QStringList::split( ":", ::getenv( "LD_LIBRARY_PATH" ) );
 #endif
 
+  bool isLibFound = false;
   QStringList::const_iterator anIt = paths.begin(), aLast = paths.end();
   for( ; anIt!=aLast; anIt++ )
   {
     QFileInfo inf( Qtx::addSlash( *anIt ) + lib );
+    
     if( inf.exists() )
+      {
+       isLibFound = true;
+       break;
+      }
+  }
+  
+  if ( !isLibFound )
+    {
+      printf( "****************************************************************\n" );
+      printf( "*    Warning: library %s cannot be found\n", lib.latin1() );
+      printf( "*    Module %s will not be available in GUI mode\n", moduleTitle.latin1() );
+      printf( "****************************************************************\n" );
+    }
+  else if ( !isPythonModule )
+    return true;
+
+  if ( isPythonModule )
+    {
+      QString pylib = moduleName( moduleTitle ) + QString(".py");
+      QString pylibgui = moduleName( moduleTitle ) + QString("GUI.py");
+
+      // Check the python library
+#ifdef WIN32
+      paths = QStringList::split( ";", ::getenv( "PATH" ) );
+#else
+      paths = QStringList::split( ":", ::getenv( "PYTHONPATH" ) );
+#endif
+      bool isPyLib = false, isPyGuiLib = false;
+      QStringList::const_iterator anIt = paths.begin(), aLast = paths.end();
+      for( ; anIt!=aLast; anIt++ )
+       {
+         QFileInfo inf( Qtx::addSlash( *anIt ) + pylib );
+         QFileInfo infgui( Qtx::addSlash( *anIt ) + pylibgui );
+    
+         if( !isPyLib && inf.exists() )
+           isPyLib = true;
+         
+         if( !isPyGuiLib && infgui.exists() )
+           isPyGuiLib = true;
+         
+         if ( isPyLib && isPyGuiLib && isLibFound)
+           return true;
+       }
+      
+      printf( "****************************************************************\n" );
+      printf( "*    Warning: python library for %s cannot be found:\n", moduleTitle.latin1() );
+      if (!isPyLib)
+       printf( "*    No module named %s\n", moduleName( moduleTitle ).latin1() );
+      if (!isPyGuiLib)
+       printf( "*    No module named %s\n", (moduleName( moduleTitle ) + QString("GUI")).latin1() );
+      printf( "****************************************************************\n" );
       return true;
   }
   return false;
@@ -2389,3 +2575,22 @@ bool LightApp_Application::event( QEvent* e )
   }
   return CAM_Application::event( e );
 }
+
+/*! Check data object */
+bool LightApp_Application::checkDataObject(LightApp_DataObject* theObj)
+{
+  if (theObj)
+    {
+      bool isSuitable =        !theObj->entry().isEmpty() && 
+                       !theObj->componentDataType().isEmpty() && 
+                       !theObj->name().isEmpty();
+      return isSuitable;
+    }
+
+  return false;
+}
+
+void LightApp_Application::onFind()
+{
+  objectBrowser()->enableSearch( true );
+}
index b7131da99d959aaf112ed86ee6c97fa9d07653a0..e83e3c2fdbec22c56e005441bcf8bd26932f4145 100644 (file)
@@ -40,6 +40,7 @@ class STD_Application;
 class LightApp_WidgetContainer;
 class LightApp_Preferences;
 class LightApp_SelectionMgr;
+class LightApp_DataObject;
 class SUIT_Study;
 class SUIT_Accel;
 class CAM_Module;
@@ -90,7 +91,15 @@ public:
          NewVTKViewId,
 #endif
 
+#ifndef DISABLE_QXGRAPHVIEWER
+         NewQxGraphViewId,
+#endif
+
          PreferencesId, MRUId, UserID };
+
+protected:
+  enum { NewStudyId = 1, OpenStudyId };
+
 public:
   LightApp_Application();
   virtual ~LightApp_Application();
@@ -128,6 +137,8 @@ public:
   SUIT_ViewManager*                   getViewManager( const QString&, const bool );
   virtual void                        addViewManager( SUIT_ViewManager* );
   virtual void                        removeViewManager( SUIT_ViewManager* );
+  virtual SUIT_ViewManager*           createViewManager( const QString& vmType );
+
   QWidget*                            getWindow( const int, const int = -1 );
   QWidget*                            window( const int, const int = -1 ) const;
   void                                addWindow( QWidget*, const int, const int = -1 );
@@ -149,11 +160,14 @@ public:
   static int                          studyId();
 
   virtual bool                        event( QEvent* );
+  
+  virtual bool                        checkDataObject( LightApp_DataObject* theObj );
 
 signals:
   void                                studyOpened();
   void                                studySaved();
   void                                studyClosed();
+  void                                preferenceChanged( const QString&, const QString&, const QString& );
 
 public slots:
   virtual void                        onHelpContentsModule();
@@ -189,6 +203,9 @@ protected:
   virtual void                        preferencesChanged( const QString&, const QString& );
   virtual void                        savePreferences();
   virtual void                        updateDesktopTitle();
+  
+  virtual QMap<int, QString>          activateModuleActions() const;
+  virtual void                        moduleActionSelected( const int );
 
 protected slots:
   virtual void                        onDesktopActivated();
@@ -207,6 +224,7 @@ protected slots:
 private slots:
   void                                onSelection();
   void                                onRefresh();
+  void                                onFind();
   void                                onPreferences();
   void                                onMRUActivated( QString );
   void                                onPreferenceChanged( QString&, QString&, QString& );
@@ -226,7 +244,6 @@ protected:
   QString                             defaultModule() const;
   void                                currentWindows( QMap<int, int>& ) const;
   void                                currentViewManagers( QStringList& ) const;
-  virtual SUIT_ViewManager*           createViewManager( const QString& vmType );
   void                                moduleIconNames( QMap<QString, QString>& ) const;
 
   void                                activateWindows();
index 9fe3b086adcae75c24f3cbfe3812f1e0f818b1e7..702ef7b335b767c327bee3ee850ffa897052c710 100644 (file)
@@ -110,16 +110,29 @@ void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* )
 {
   LightApp_ModuleObject* modelRoot = dynamic_cast<LightApp_ModuleObject*>( root() );
   DataObjectList ch;
+  QMap<SUIT_DataObject*,int> aMap;
   if( modelRoot )
   {
     ch = modelRoot->children();
     for ( DataObjectListIterator it( ch ); it.current(); ++it )
       it.current()->setParent( 0 );
   }
+
   build();
+
+  modelRoot = dynamic_cast<LightApp_ModuleObject*>( root() );
+  if( modelRoot )
+  {
+    DataObjectList new_ch = modelRoot->children();
+    for ( DataObjectListIterator it1( new_ch ); it1.current(); ++it1 )
+      aMap.insert( it1.current(), 0 );
+  }
+
   updateWidgets();
+
   for( DataObjectListIterator it( ch ); it.current(); ++it )
-    delete it.current();
+    if( !aMap.contains( it.current() ) )
+      delete it.current();
 }
 
 /*!
index dea72f88c94120a8c6813d8c640264d45f8ab860..dd3c22f1622e6dc55248c3f1a9fa77c1485bfecf 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include "LightApp_DataOwner.h"
 
 #include "LightApp_DataObject.h"
 
-#ifndef WNT
-#include <typeinfo>
-#define _typeinfo std::type_info
-#else
-#include <typeinfo.h>
-#define _typeinfo type_info
-#endif
-
 #include <iostream>
 
 /*!Constructor. Initialize by \a theEntry.*/
-LightApp_DataOwner
-::LightApp_DataOwner( const QString& theEntry ): 
-  myEntry( theEntry )
+LightApp_DataOwner::LightApp_DataOwner( const QString& theEntry )
+: myEntry( theEntry )
 {
 }
 
 #ifndef DISABLE_SALOMEOBJECT
 /*!Constructor. Initialize by \a SALOME_InteractiveObject.*/
-LightApp_DataOwner
-::LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO ):
+LightApp_DataOwner::LightApp_DataOwner( const Handle(SALOME_InteractiveObject)& theIO ):
   myEntry(!theIO.IsNull()? theIO->getEntry(): ""),
   myIO(theIO)
 {
@@ -48,40 +39,25 @@ LightApp_DataOwner
 #endif
 
 /*!Destructor. Do nothing.*/
-LightApp_DataOwner
-::~LightApp_DataOwner()
-{
-}
-
-/*!Checks: Is current data owner equal \a obj.*/
-bool
-LightApp_DataOwner
-::isEqual( const SUIT_DataOwner& obj ) const
+LightApp_DataOwner::~LightApp_DataOwner()
 {
-  const LightApp_DataOwner* other = dynamic_cast<const LightApp_DataOwner*>( &obj );
-
-  return other && entry() == other->entry();
 }
 
-bool LightApp_DataOwner::operator<( const SUIT_DataOwner& obj ) const
+/*!Gets key string, used for data owners comparison.*/
+QString LightApp_DataOwner::keyString() const
 {
-  const LightApp_DataOwner* other = dynamic_cast<const LightApp_DataOwner*>( &obj );
-  return entry() < other->entry();
+  return myEntry;
 }
 
 /*!Gets entry.*/
-QString
-LightApp_DataOwner
-::entry() const
+QString LightApp_DataOwner::entry() const
 {
   return myEntry;
 }
 
 #ifndef DISABLE_SALOMEOBJECT
 /*!Gets SALOME_InteractiveObject.*/
-const Handle(SALOME_InteractiveObject)&
-LightApp_DataOwner
-::IO() const
+const Handle(SALOME_InteractiveObject)& LightApp_DataOwner::IO() const
 {
   return myIO;
 }
index 7fd43eedceb14560da1c81f0194f6efd13f5ef07..e2df564ef25fb110c50a5c699970d88b440a2e98 100644 (file)
@@ -27,6 +27,7 @@
   #include "SALOME_InteractiveObject.hxx"
 #endif
 
+
 /*!
   This class provide data owner objects.
 */
@@ -39,8 +40,9 @@ public:
     LightApp_DataOwner( const QString& );
     virtual ~LightApp_DataOwner();
 
-    virtual bool isEqual( const SUIT_DataOwner& ) const;
-    virtual bool operator<( const SUIT_DataOwner& ) const;
+    // *** jfa: The below line has been put here 14.02.2007.
+    // *** It cancels modifications from branch BR_Dev_For_4_0
+    virtual QString keyString() const;
 
 #ifndef DISABLE_SALOMEOBJECT
     const Handle(SALOME_InteractiveObject)& IO() const;
index aaf1d3613ab45707fb33cf6ce8e211b0bf98e565..c64c739ebf48dfa1c2f85484627db7f2047113cd 100644 (file)
 
 #include "LightApp_DataObject.h"
 
-#ifdef WNT
-#include <typeinfo.h>
-#endif
-
 /*!Constructor.Initialize by \a entry and \a index*/
 LightApp_DataSubOwner::LightApp_DataSubOwner( const QString& entry, const int index )
 : LightApp_DataOwner( entry ),
@@ -36,14 +32,12 @@ LightApp_DataSubOwner::~LightApp_DataSubOwner()
 {
 }
 
-/*!Checks: Is current data sub owner equal \a obj.*/
-bool LightApp_DataSubOwner::isEqual( const SUIT_DataOwner& obj ) const
-{  
-  if (LightApp_DataOwner::isEqual(obj)) {
-    const LightApp_DataSubOwner* other = dynamic_cast<const LightApp_DataSubOwner*>( &obj );
-    return other && index() == other->index();
-  }
-  return false;
+/*!Gets key string, used for data owners comparison.*/
+QString LightApp_DataSubOwner::keyString() const
+{
+  QString aKey = LightApp_DataOwner::keyString();
+  aKey += QString("_%1").arg(index());
+  return aKey;
 }
 
 /*!Gets index.*/
index 0bd219c4287c5966c48155fa469891d0acf94545..7e8e7f3ea6b87bc78073fe363f33c8ef49bb9c85 100644 (file)
@@ -32,8 +32,10 @@ public:
     LightApp_DataSubOwner( const QString&, const int );
     virtual ~LightApp_DataSubOwner();
 
-    virtual bool isEqual( const SUIT_DataOwner& ) const;
-    int          index() const;
+    // *** jfa: The below line has been put here 14.02.2007.
+    // *** It cancels modifications from branch BR_Dev_For_4_0
+    virtual QString keyString() const;
+    int             index() const;
 
 private:
     int          myIndex;
index a862d63887eed5cccf10a9df7b5d2a1cdef6e32d..6e3b3b8a027f200e108857851c6116fb3d60b18d 100644 (file)
@@ -35,6 +35,10 @@ class QLabel;
 
 class SUIT_ResourceMgr;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*!
   \class LightApp_Dialog
   Base class for all LightApp dialogs.
@@ -50,7 +54,7 @@ class LIGHTAPP_EXPORT LightApp_Dialog : public QtxDialog
 public:
   typedef QValueList<int>        TypesList;
   typedef QMap<int,QStringList>  SelectedObjects;
-  
+
   enum ObjectWg
   {
     Label   = 0x00000001,
@@ -149,7 +153,7 @@ public:
 
   //! Set all object selection buttons to inactive state
   void deactivateAll();
-  
+
 signals:
   //! selection in certain widget is changed
   void selectionChanged ( int );
@@ -281,9 +285,14 @@ private:
   
 private:
   ObjectMap           myObjects;
+  
   QMap<int,QString>   myTypeNames;
   bool                myIsExclusive, myIsBusy;
   QPixmap             myPixmap;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 3f65e7bcae7a2048a6ed5196ba5348658ae04537..5b4318965931b21d727f29949daa60a5ec25b43b 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef LIGHTAPP_DISPLAYER_HEADER
 #define LIGHTAPP_DISPLAYER_HEADER
 
+#include "LightApp.h"
+
 #include <SALOME_Prs.h>
 
 class QString;
@@ -29,7 +31,7 @@ class QString;
   Uniform mechanism of display/erase of objects in different views.
   Objects are specified by string entry
 */
-class LightApp_Displayer : public SALOME_Displayer
+class LIGHTAPP_EXPORT LightApp_Displayer : public SALOME_Displayer
 {
 public:
   LightApp_Displayer();
diff --git a/src/LightApp/LightApp_EventFilter.cxx b/src/LightApp/LightApp_EventFilter.cxx
new file mode 100644 (file)
index 0000000..77ab42c
--- /dev/null
@@ -0,0 +1,81 @@
+// 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
+//
+
+#include "LightApp_EventFilter.h"
+
+#include <SUIT_Desktop.h>
+
+#include <qapplication.h>
+
+LightApp_EventFilter* LightApp_EventFilter::myFilter = NULL;
+
+/*!Constructor.*/
+LightApp_EventFilter::LightApp_EventFilter()
+: QObject()
+{
+  qApp->installEventFilter( this );
+}
+
+/*!Destructor.*/
+LightApp_EventFilter::~LightApp_EventFilter()
+{
+  qApp->removeEventFilter( this );
+}
+
+/*!
+  Custom event filter
+*/
+bool LightApp_EventFilter::eventFilter( QObject* o, QEvent* e )
+{
+  if ( e->type() == QEvent::WindowActivate && o->inherits("QDialog") )
+    {
+      QWidget* parent = ((QWidget*)o)->parentWidget();
+      
+      SUIT_Desktop* aDesktop = 0;
+      
+      while( parent )
+       {
+         if ( aDesktop = dynamic_cast<SUIT_Desktop*>(parent) )
+           break;
+         parent = parent->parentWidget();
+       }
+      
+      if ( aDesktop )
+       aDesktop->emitActivated();
+    }
+  
+  return QObject::eventFilter( o, e );
+}
+
+/*!Create new instance of LightApp_EventFilter*/
+void LightApp_EventFilter::Init()
+{
+  if( myFilter==NULL )
+    myFilter = new LightApp_EventFilter();
+}
+
+/*!Destroy filter.*/
+void LightApp_EventFilter::Destroy()
+{
+  if( myFilter )
+  {
+    delete myFilter;
+    myFilter = NULL;
+  }
+}
diff --git a/src/LightApp/LightApp_EventFilter.h b/src/LightApp/LightApp_EventFilter.h
new file mode 100644 (file)
index 0000000..836db44
--- /dev/null
@@ -0,0 +1,56 @@
+// 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
+//
+
+#ifndef LIGHTAPP_EVENTFILTER_H
+#define LIGHTAPP_EVENTFILTER_H
+
+#include "LightApp.h"
+
+#include <qobject.h>
+
+#if defined WNT
+#pragma warning( disable: 4251 )
+#endif
+
+/*!
+  Class provide event filter.
+*/
+class LIGHTAPP_EXPORT LightApp_EventFilter: public QObject 
+{
+public:
+  static void Init();
+  static void Destroy();
+
+protected:
+  LightApp_EventFilter();
+  virtual ~LightApp_EventFilter();
+
+private:
+  /*! global event filter for qapplication */
+  virtual bool eventFilter( QObject* o, QEvent* e );
+
+private:
+  static LightApp_EventFilter* myFilter;
+};
+
+#if defined WNT
+#pragma warning( default: 4251 )
+#endif
+
+#endif
index ceebdeeb41d880fc85993ff72d6a2eba9a4f7e23..d7c14c59b186ac0d81ea0770a187c43e59932d9c 100644 (file)
@@ -19,6 +19,7 @@
 #include "LightApp_GLSelector.h"
 
 #include "LightApp_DataOwner.h"
+#include "LightApp_DataObject.h"
 
 #include <GLViewer_Context.h>
 
@@ -64,8 +65,8 @@ void LightApp_GLSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
     GLViewer_Object* obj = cont->SelectedObject();
     if ( obj )
     {
-      LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() );
-      if( owner )
+      LightApp_DataOwner* owner = dynamic_cast<LightApp_DataOwner*>( obj->owner() );
+      if ( owner )
         aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( owner->entry() ) ) );
     }
   }
@@ -81,70 +82,32 @@ void LightApp_GLSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
   if ( !cont )
     return;
 
-  QMap<QString, GLViewer_Object*> aDisplayed;
-  const ObjList& displayed = cont->getObjects();
-  for ( ObjList::const_iterator it = displayed.begin(); it != displayed.end(); ++it )
-  {
-    GLViewer_Object* obj = *it;
-    if ( obj && obj->getVisible() )
-    {
-      LightApp_GLOwner* owner = dynamic_cast< LightApp_GLOwner* >( obj->owner() );
-      if ( owner )
-       aDisplayed.insert( owner->entry(), obj );
-    }
-  }
-
-  int Nb = 0;
-  cont->clearSelected( false );
+  QMap<QString, int> aSelected;
   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;
+    if ( owner )
+      aSelected.insert( owner->entry(), 0 );
+  }
 
-    if ( aDisplayed.contains( owner->entry() ) )
+  bool changed = false;
+  const ObjList& displayed = cont->getObjects();
+  for ( ObjList::const_iterator it = displayed.begin(); it != displayed.end(); ++it )
+  {
+    GLViewer_Object* obj = *it;
+    if ( obj && obj->getVisible() )
     {
-      cont->setSelected( aDisplayed[owner->entry()], false );
-      Nb++;
+      LightApp_DataOwner* owner = dynamic_cast<LightApp_DataOwner*>( obj->owner() );
+      bool sel = owner && aSelected.contains( owner->entry() );
+      changed = changed || sel != (bool)obj->isSelected();
+      if ( sel && !obj->isSelected() )
+        cont->setSelected( obj, false );
+      else if ( !sel && obj->isSelected() )
+        cont->remSelected( obj, false );
     }
   }
 
-  if ( Nb > 0 )
+  if ( changed )
     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 13cb191beea846b702c16c31dd6730262eb4b664..b6360160497bc134a4a0d9b0d68b7ee3567e4f66 100644 (file)
@@ -28,6 +28,8 @@
 #include <string>
 #include <GLViewer_Object.h>
 
+class LightApp_DataObject;
+
 /*!
   \class LightApp_GLSelector
   Custom selector to get/set selection from GL viewer
@@ -56,20 +58,4 @@ private:
 };
 
 
-/*!
-  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 9c1a71335ff97e3508ff2a8a8b709f7f9eee32e0..437a4724f01a60f6cbefb3d03726fa245c806603 100644 (file)
@@ -138,7 +138,6 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel,
   bool upd = getApp()->objectBrowser()->isAutoUpdate();
   getApp()->objectBrowser()->setAutoUpdate( false );
 
-  SUIT_DataObject* aDataObject = theDataObject;
   if( theIsUpdateDataModel ){
     if( CAM_DataModel* aDataModel = dataModel() ){
       if ( LightApp_DataModel* aModel = dynamic_cast<LightApp_DataModel*>( aDataModel ) ) {
@@ -149,14 +148,11 @@ void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel,
        LightApp_DataObject* anObject = dynamic_cast<LightApp_DataObject*>(theDataObject);
        LightApp_Study* aStudy = dynamic_cast<LightApp_Study*>(getApp()->activeStudy());
         aModel->update( anObject, aStudy );
-
-       if(aParent && aParent->childPos(anObject) < 0)
-         aDataObject = dynamic_cast<LightApp_DataObject*>(aParent);
       }
     }
   }
   getApp()->objectBrowser()->setAutoUpdate( upd );
-  getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ );
+  getApp()->objectBrowser()->updateTree( 0, false );
 }
 
 /*!NOT IMPLEMENTED*/
@@ -321,9 +317,9 @@ QtxPopupMgr* LightApp_Module::popupMgr()
     SUIT_Desktop* d = application()->desktop();
     
     QAction 
-      *disp = createAction( -1, tr( "TOP_DISPLAY" ), p, tr( "MEN_DISPLAY" ), tr( "STB_DISPLAY" ),
+      *disp = createAction( -1, tr( "TOP_SHOW" ), p, tr( "MEN_SHOW" ), tr( "STB_SHOW" ),
                            0, d, false, this, SLOT( onShowHide() ) ),
-      *erase = createAction( -1, tr( "TOP_ERASE" ), p, tr( "MEN_ERASE" ), tr( "STB_ERASE" ),
+      *erase = createAction( -1, tr( "TOP_HIDE" ), p, tr( "MEN_HIDE" ), tr( "STB_HIDE" ),
                             0, d, false, this, SLOT( onShowHide() ) ),
       *dispOnly = createAction( -1, tr( "TOP_DISPLAY_ONLY" ), p, tr( "MEN_DISPLAY_ONLY" ), tr( "STB_DISPLAY_ONLY" ),
                                0, d, false, this, SLOT( onShowHide() ) ),
@@ -340,7 +336,7 @@ QtxPopupMgr* LightApp_Module::popupMgr()
     myPopupMgr->insert( eraseAll, -1, 0 );
     myPopupMgr->insert( separator(), -1, 0 );
 
-    QString oneAndNotActive = "( count( $component ) = 1 ) and ( component != activeModule )";
+    QString oneAndNotActive = "( count( $component ) = 1 ) and ( not( activeModule in $component ) )";
     QString uniform = "true in $canBeDisplayed and %1 and ( activeModule = '%2' )";
     uniform = uniform.arg( oneAndNotActive ).arg( name() );
     myPopupMgr->setRule( disp, /*QString( "( not isVisible ) and " ) + */ uniform, true );
index 17a95366f5dea8a5a2be19c3d728d6b85bac2372..dbfed0b70f9c7b3e194e0128c95840b9d1425c6f 100644 (file)
@@ -46,6 +46,10 @@ class QtxPopupMgr;
 class QString;
 class QVariant;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*!
   \class LightApp_Module
   Base class for all light modules
@@ -84,6 +88,7 @@ public:
   virtual void                        studyActivated() {};
 
   virtual LightApp_Displayer*         displayer();
+  virtual LightApp_Selection*         createSelection() const;
 
 public slots:
   virtual bool                        activateModule( SUIT_Study* );
@@ -107,7 +112,6 @@ protected:
   LightApp_Preferences*               preferences() const;
 
   virtual CAM_DataModel*              createDataModel();
-  virtual LightApp_Selection*         createSelection() const;
 
   int                                 addPreference( const QString& label );
   int                                 addPreference( const QString& label, const int pId, const int = -1,
@@ -140,4 +144,8 @@ protected:
   int                   myDisplay, myErase, myDisplayOnly, myEraseAll;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 0a45b8d35681566ed9b553436cf9728e882ec491..3fcaf5112f92afd917c0de0239b47d625c736f25 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//  File   : LightApp_ModuleDlg.cxx\r
-//  Author : Michael Zorin (mzn)\r
-//  Module : LightApp\r
-\r
-#include <LightApp_ModuleDlg.h>\r
-\r
-#include <qframe.h>\r
-#include <qlabel.h>\r
-#include <qpushbutton.h>\r
-#include <qlayout.h>\r
-#include <qpixmap.h>\r
-\r
-#ifndef WIN32\r
-using namespace std;\r
-#endif\r
-\r
-/*!Default icon*/\r
-static const char* const default_icon[] = { \r
-"48 48 17 1",\r
-". c None",\r
-"# c #161e4c",\r
-"b c #1d3638",\r
-"e c #2f585b",\r
-"i c #345b5e",\r
-"c c #386266",\r
-"g c #3f7477",\r
-"d c #4d8589",\r
-"m c #519099",\r
-"o c #6abbc1",\r
-"a c #70c9d3",\r
-"f c #79ddea",\r
-"n c #7adff2",\r
-"k c #7ce2f4",\r
-"j c #993550",\r
-"h c #d84b71",\r
-"l c #ef537d",\r
-"................................................",\r
-"................................................",\r
-"................................................",\r
-"................................................",\r
-"................................................",\r
-"................########.########.########......",\r
-"...............#aaaaaa###aaaaaa###aaaaaa##......",\r
-"..............#aaaaaa#b#aaaaaa#b#aaaaaa#c#......",\r
-".............########b########b########cc#......",\r
-".............#dddddd#b#dddddd#b#dddddd#cc#......",\r
-"...........########d########d########d#cc#......",\r
-"..........#aaaaaa###aaaaaa###aaaaaa##d#cc#......",\r
-".........#aaaaaa#b#aaaaaa#b#aaaaaa#c#d#cc#......",\r
-"........########b########e########cc#d#c#.......",\r
-"........#dddddd#b#dddddd#e#ffffff#cc#d####......",\r
-"......########d########d########f#cc###g##......",\r
-".....#aaaaaa###aaaaaa###hhhhhh##f#cc#gg#c#......",\r
-"....#aaaaaa#b#aaaaaa#i#hhhhhh#j#f#cc###cc#......",\r
-"...########b########i########jj#f#c#gg#cc#......",\r
-"...#kkkkkk#b#kkkkkk#i#llllll#jj#f####g#cc#......",\r
-"...#kkkkkk#b#kkkkkk#i#llllll#jj###m##g#cc#......",\r
-"...#knnkkk#b#kkkkkk#i#llllll#jj#mm#c#g#cc#......",\r
-"...#knnkkk#b#kkkkkk#i#llllll#jj###cc#g#c#.......",\r
-"...#kkkkkk#b#kkkkkk#i#llllll#j#dd#cc#g####......",\r
-"...#kkkkkk###kkkkkk###llllll####d#cc###g##......",\r
-"...########g########g########o##d#cc#gg#c#......",\r
-"....#gggggg#b#gggggg#b#oooooo#c#d#cc###cc#......",\r
-"...########b########b########cc#d#c#gg#cc#......",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#d####g#cc#......",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###g##g#cc#......",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#gg#c#g#cc#......",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###cc#g#c#.......",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#gg#cc#g##........",\r
-"...#kkkkkk###kkkkkk###kkkkkk####g#cc###.........",\r
-"...########g########g########g##g#cc#...........",\r
-"....#gggggg#b#gggggg#b#gggggg#c#g#cc#...........",\r
-"...########b########b########cc#g#c#............",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#g##.............",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###..............",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",\r
-"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#.................",\r
-"...#kkkkkk###kkkkkk###kkkkkk##..................",\r
-"...########.########.########...................",\r
-"................................................",\r
-"................................................",\r
-"................................................",\r
-"................................................"};\r
-\r
-//==============================================================================================================================\r
-/*!\r
- *  LightApp_ModuleDlg::LightApp_ModuleDlg \n\r
- *\r
- *  Constructor.\r
- */\r
-//==============================================================================================================================\r
-LightApp_ModuleDlg::LightApp_ModuleDlg ( QWidget * parent, const QString& component, const QPixmap icon )\r
-     : QDialog ( parent, "ActivateModuleDlg", true,  WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )\r
-{\r
-  QPixmap defaultIcon( ( const char** ) default_icon );\r
-  setCaption( tr( "CAPTION" ) );\r
-  setSizeGripEnabled( TRUE );\r
-  \r
-  QGridLayout* ActivateModuleDlgLayout = new QGridLayout( this ); \r
-  ActivateModuleDlgLayout->setMargin( 11 ); ActivateModuleDlgLayout->setSpacing( 6 );\r
-\r
-  // Module's name and icon\r
-  myComponentFrame = new QFrame( this, "myComponentFrame" );\r
-  myComponentFrame->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ) );\r
-  myComponentFrame->setMinimumHeight( 100 );\r
-  myComponentFrame->setFrameStyle( QFrame::Box | QFrame::Sunken );\r
-  \r
-  QGridLayout* myComponentFrameLayout = new QGridLayout( myComponentFrame ); \r
-  myComponentFrameLayout->setMargin( 11 ); myComponentFrameLayout->setSpacing( 6 );\r
-\r
-  // --> icon\r
-  myComponentIcon = new QLabel( myComponentFrame, "myComponentIcon" );\r
-  myComponentIcon->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );\r
-  myComponentIcon->setPixmap( !icon.isNull() ? icon : defaultIcon );\r
-  myComponentIcon->setScaledContents( false );\r
-  myComponentIcon->setAlignment( AlignCenter );\r
-  // --> name\r
-  myComponentLab = new QLabel( component, myComponentFrame, "myComponentLab" );\r
-  QFont fnt = myComponentLab->font(); fnt.setBold( TRUE ); myComponentLab->setFont( fnt ); \r
-  myComponentLab->setAlignment( AlignCenter );\r
-\r
-  myComponentFrameLayout->addWidget( myComponentIcon, 0, 0 );\r
-  myComponentFrameLayout->addWidget( myComponentLab,  0, 1 );\r
-\r
-  // Info\r
-  QVBoxLayout* infoLayout = new QVBoxLayout();\r
-  infoLayout->setMargin( 0 ); infoLayout->setSpacing( 6 );\r
-  \r
-  // --> top line\r
-  QFrame* myLine1 = new QFrame( this, "myLine1" );\r
-  myLine1->setFrameStyle( QFrame::HLine | QFrame::Plain );\r
-  // --> info label  \r
-  myInfoLabel = new QLabel( tr ("ActivateComponent_DESCRIPTION"), this, "myInfoLabel" );\r
-  myInfoLabel->setAlignment( AlignCenter );\r
-  // --> bottom line\r
-  QFrame*  myLine2 = new QFrame( this, "myLine2" );\r
-  myLine2->setFrameStyle( QFrame::HLine | QFrame::Plain );\r
-  \r
-  infoLayout->addStretch();\r
-  infoLayout->addWidget( myLine1 );\r
-  infoLayout->addWidget( myInfoLabel );\r
-  infoLayout->addWidget( myLine2 );\r
-  infoLayout->addStretch();\r
-  \r
-  // Buttons\r
-  QHBoxLayout* btnLayout = new QHBoxLayout(); \r
-  btnLayout->setMargin( 0 ); btnLayout->setSpacing( 6 );\r
-  \r
-  // --> New\r
-  myNewBtn = new QPushButton( tr( "NEW" ), this, "myNewBtn" );\r
-  myNewBtn->setDefault( true ); myNewBtn->setAutoDefault( true );\r
-  // --> Open\r
-  myOpenBtn = new QPushButton( tr( "OPEN" ), this, "myOpenBtn" );\r
-  myOpenBtn->setAutoDefault( true );\r
-  // --> Load\r
-  myLoadBtn = new QPushButton( tr( "LOAD" ), this, "myLoadBtn" );\r
-  myLoadBtn->setAutoDefault( true );\r
-  // --> Cancel\r
-  myCancelBtn = new QPushButton( tr( "CANCEL" ), this, "myCancelBtn" );\r
-  myCancelBtn->setAutoDefault( true );\r
-  \r
-  btnLayout->addWidget( myNewBtn );\r
-  btnLayout->addWidget( myOpenBtn );\r
-  btnLayout->addWidget( myLoadBtn );\r
-  btnLayout->addStretch();\r
-  btnLayout->addSpacing( 70 );\r
-  btnLayout->addStretch();\r
-  btnLayout->addWidget( myCancelBtn );\r
-\r
-  ActivateModuleDlgLayout->addWidget(          myComponentFrame, 0,    0    );\r
-  ActivateModuleDlgLayout->addLayout(          infoLayout,       0,    1    );\r
-  ActivateModuleDlgLayout->addMultiCellLayout( btnLayout,        1, 1, 0, 1 );\r
-\r
-  // signals and slots connections\r
-  connect( myNewBtn,    SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
-  connect( myOpenBtn,   SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
-  connect( myLoadBtn,   SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );\r
-  connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );\r
-}\r
-\r
-//==============================================================================================================================\r
-/*!\r
- *  LightApp_ModuleDlg::onButtonClicked\r
- *\r
- *  Buttons slot\r
- */\r
-//==============================================================================================================================\r
-void LightApp_ModuleDlg::onButtonClicked()\r
-{\r
-  QPushButton* btn = ( QPushButton* )sender();\r
-  if ( btn == myNewBtn )\r
-    done( 1 );\r
-  if ( btn == myOpenBtn )\r
-    done( 2 );\r
-  if ( btn == myLoadBtn )\r
-    done( 3 );\r
-}\r
+//  File   : LightApp_ModuleDlg.cxx
+//  Author : Michael Zorin (mzn)
+//  Module : LightApp
+
+#include <LightApp_ModuleDlg.h>
+
+#include <qlabel.h>
+
+static const char* default_icon[] = { 
+"48 48 17 1",
+". c None",
+"# c #161e4c",
+"b c #1d3638",
+"e c #2f585b",
+"i c #345b5e",
+"c c #386266",
+"g c #3f7477",
+"d c #4d8589",
+"m c #519099",
+"o c #6abbc1",
+"a c #70c9d3",
+"f c #79ddea",
+"n c #7adff2",
+"k c #7ce2f4",
+"j c #993550",
+"h c #d84b71",
+"l c #ef537d",
+"................................................",
+"................................................",
+"................................................",
+"................................................",
+"................................................",
+"................########.########.########......",
+"...............#aaaaaa###aaaaaa###aaaaaa##......",
+"..............#aaaaaa#b#aaaaaa#b#aaaaaa#c#......",
+".............########b########b########cc#......",
+".............#dddddd#b#dddddd#b#dddddd#cc#......",
+"...........########d########d########d#cc#......",
+"..........#aaaaaa###aaaaaa###aaaaaa##d#cc#......",
+".........#aaaaaa#b#aaaaaa#b#aaaaaa#c#d#cc#......",
+"........########b########e########cc#d#c#.......",
+"........#dddddd#b#dddddd#e#ffffff#cc#d####......",
+"......########d########d########f#cc###g##......",
+".....#aaaaaa###aaaaaa###hhhhhh##f#cc#gg#c#......",
+"....#aaaaaa#b#aaaaaa#i#hhhhhh#j#f#cc###cc#......",
+"...########b########i########jj#f#c#gg#cc#......",
+"...#kkkkkk#b#kkkkkk#i#llllll#jj#f####g#cc#......",
+"...#kkkkkk#b#kkkkkk#i#llllll#jj###m##g#cc#......",
+"...#knnkkk#b#kkkkkk#i#llllll#jj#mm#c#g#cc#......",
+"...#knnkkk#b#kkkkkk#i#llllll#jj###cc#g#c#.......",
+"...#kkkkkk#b#kkkkkk#i#llllll#j#dd#cc#g####......",
+"...#kkkkkk###kkkkkk###llllll####d#cc###g##......",
+"...########g########g########o##d#cc#gg#c#......",
+"....#gggggg#b#gggggg#b#oooooo#c#d#cc###cc#......",
+"...########b########b########cc#d#c#gg#cc#......",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#d####g#cc#......",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###g##g#cc#......",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#gg#c#g#cc#......",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###cc#g#c#.......",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#gg#cc#g##........",
+"...#kkkkkk###kkkkkk###kkkkkk####g#cc###.........",
+"...########g########g########g##g#cc#...........",
+"....#gggggg#b#gggggg#b#gggggg#c#g#cc#...........",
+"...########b########b########cc#g#c#............",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#g##.............",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc###..............",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#cc#................",
+"...#kkkkkk#b#kkkkkk#b#kkkkkk#c#.................",
+"...#kkkkkk###kkkkkk###kkkkkk##..................",
+"...########.########.########...................",
+"................................................",
+"................................................",
+"................................................",
+"................................................"};
+
+LightApp_ModuleDlg::LightApp_ModuleDlg( QWidget*       parent, 
+                                       const QString& component,
+                                       const QPixmap& icon )
+: SUIT_MsgDlg( parent, tr( "CAPTION" ), tr ( "DESCRIPTION" ).arg( component ), !icon.isNull() ? icon : QPixmap( default_icon ) )
+{
+  iconLabel()->setFrameStyle( QFrame::Box | QFrame::Sunken );
+  iconLabel()->setMinimumSize( 70, 70 );
+}
+
+LightApp_ModuleDlg::~LightApp_ModuleDlg()
+{
+}
index 9b818344c71509e8c3ad43c1119903b5d7109e41..0f2dd79a9073d14d2b9d8ef22ac04e7f119b9a53 100644 (file)
 //
 // 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 : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
 //
-//  File   : LightApp_ModuleDlg.h
-//  Author : Michael ZORIN (mzn)
-//  Module : SALOME
 
 #ifndef LIGHTAPP_MODULEDLG_H
 #define LIGHTAPP_MODULEDLG_H
 
 #include "LightApp.h"
-#include <qdialog.h> 
-#include <qpixmap.h>
 
-class QFrame;
-class QLabel;
-class QPushButton;
+#include <SUIT_MsgDlg.h> 
 
-/*!
-  \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
+class LIGHTAPP_EXPORT LightApp_ModuleDlg : public SUIT_MsgDlg
 {
   Q_OBJECT
 
 public:
-  LightApp_ModuleDlg ( QWidget* parent, const QString& component, const QPixmap icon = QPixmap() ) ;
-  ~LightApp_ModuleDlg ( ) { };
-
-private slots:
-  void onButtonClicked();
-
-private:
-    QFrame*      myComponentFrame;
-    QLabel*      myComponentLab;
-    QLabel*      myComponentIcon;
-    QLabel*      myInfoLabel;
-    QPushButton* myNewBtn;
-    QPushButton* myOpenBtn;
-    QPushButton* myLoadBtn;
-    QPushButton* myCancelBtn;
+  LightApp_ModuleDlg( QWidget*, const QString&, const QPixmap& = QPixmap() );
+  ~LightApp_ModuleDlg();
 };
 
-#endif
+#endif // LIGHTAPP_MODULEDLG_H
 
index 3db25268573532cd78cdacef42e6c17a4be096cd..175356d91055531231907238bc4a7c9d631056dd 100644 (file)
 
 #include "LightApp_DataOwner.h"
 #include "LightApp_DataObject.h"
+#include "LightApp_Application.h"
 
 #include <OB_Browser.h>
 
+#include <SUIT_Session.h>
 #include <SUIT_DataObjectIterator.h>
+
 #include <qdatetime.h>
 
+#include <time.h>
+
 /*!
   Constructor
 */
@@ -61,6 +66,12 @@ OB_Browser* LightApp_OBSelector::browser() const
 void LightApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& theList ) const
 {
   if (mySelectedList.count() == 0 ) {
+    SUIT_Session* session = SUIT_Session::session();
+    SUIT_Application* sapp = session ? session->activeApplication() : 0;
+    LightApp_Application* app = dynamic_cast<LightApp_Application*>( sapp );
+    if( !app )
+      return;
+
     if ( !myBrowser )
       return;
     DataObjectList objlist;
@@ -69,7 +80,7 @@ void LightApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& theList ) const
     for ( DataObjectListIterator it( objlist ); it.current(); ++it )
     {
       LightApp_DataObject* obj = dynamic_cast<LightApp_DataObject*>( it.current() );
-      if ( obj )
+      if ( obj && app->checkDataObject(obj) )
       {
 #ifndef DISABLE_SALOMEOBJECT
         Handle(SALOME_InteractiveObject) aSObj = new SALOME_InteractiveObject
index 446ae593bf46bdbea8381408e4d4823d1f35c556..534cad26e9befc79573487d5a17352aad076e88d 100644 (file)
@@ -33,8 +33,10 @@ LightApp_OCCSelector::LightApp_OCCSelector( OCCViewer_Viewer* viewer, SUIT_Selec
 : SUIT_Selector( mgr, viewer ),
   myViewer( viewer )
 {
-  if ( myViewer )
+  if ( myViewer ) {
     connect( myViewer, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
+    connect( myViewer, SIGNAL( deselection() ), this, SLOT( onDeselection() ) );
+  }
 }
 
 /*!
@@ -52,12 +54,19 @@ OCCViewer_Viewer* LightApp_OCCSelector::viewer() const
   return myViewer;
 }
 
+
 /*!On selection changed.*/
 void LightApp_OCCSelector::onSelectionChanged()
 {
   selectionChanged();
 }
 
+/*!On selection cleared.*/
+void LightApp_OCCSelector::onDeselection()
+{
+  mySelectedExternals.clear();
+}
+
 /*!Gets selection list.*/
 void LightApp_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
 {
@@ -77,6 +86,11 @@ void LightApp_OCCSelector::getSelection( SUIT_DataOwnerPtrList& aList ) const
       aList.append( SUIT_DataOwnerPtr( new LightApp_DataOwner( entry( anIt.Value() ) ) ) );
 #endif
     }
+  // add externally selected objects
+  SUIT_DataOwnerPtrList::const_iterator anExtIter;
+  for(anExtIter = mySelectedExternals.begin(); anExtIter != mySelectedExternals.end(); anExtIter++) {
+    aList.append(*anExtIter);
+  }
 }
 
 /*!Sets selection list.*/
@@ -99,12 +113,16 @@ void LightApp_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
     if ( !entryStr.isEmpty() )
       aDisplayed.insert( entryStr, it.Value() );
   }
+  
+  mySelectedExternals.clear();
 
   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 && aDisplayed.contains( owner->entry() ) )
       aSelList.Append( aDisplayed[owner->entry()] );
+    else
+      mySelectedExternals.append(*itr);
   }
 
   myViewer->unHighlightAll( false );
index c358efe8aa48fd387c1442201afb0a880a17783d..905267435f9bda0d66800af793789594f20fcb48 100644 (file)
@@ -22,6 +22,7 @@
 #include "LightApp.h"
 
 #include <SUIT_Selector.h>
+#include <SUIT_DataOwner.h>
 
 #include <OCCViewer_ViewModel.h>
 
@@ -45,6 +46,7 @@ public:
 
 private slots:
   virtual void      onSelectionChanged();
+  virtual void      onDeselection();
 
 protected:
   virtual void      getSelection( SUIT_DataOwnerPtrList& ) const;
@@ -52,8 +54,10 @@ protected:
 
   QString           entry( const Handle_AIS_InteractiveObject& ) const;
 
+  SUIT_DataOwnerPtrList mySelectedExternals;
+
 private:
-  OCCViewer_Viewer* myViewer;
+  OCCViewer_Viewer*     myViewer;
 };
 
 #endif
index e15c168322a2e160e4607529b1d7c0d0de8b4e59..b691eb459d2246572520efbf658791aec1624e15 100644 (file)
@@ -143,7 +143,8 @@ void LightApp_PreferencesDlg::onImportPref()
   if( !mgr )
     return;
 
-  QFileDialog dlg( ".", "*", this, "", tr( "IMPORT_PREFERENCES" ) );
+  QFileDialog dlg( ".", "*", this, "" );
+  dlg.setCaption( tr("IMPORT_PREFERENCES") );
   dlg.setShowHiddenFiles( true );
   dlg.exec();
   QString fname = dlg.selectedFile();
index 5620c41d389b82ada1e64ea751f55098b6ff5b53..4b7e58ae5b76ff40fe25c1edce183fdf147137ea 100644 (file)
@@ -67,9 +67,10 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
     for( SUIT_Selector* selector = aSelectors.first(); selector; selector = aSelectors.next() )
     {
       qDebug( selector->type() );
-      if( selector->type()!=client )
+      if( selector->type() != client && selector->isEnabled() )
       {
-       mgr->selected( cur_sel, selector->type() );
+       //mgr->selected( cur_sel, selector->type() );
+        selector->selected( cur_sel );
        SUIT_DataOwnerPtrList::const_iterator aLIt = cur_sel.begin(), aLLast = cur_sel.end();
        for( ; aLIt!=aLLast; aLIt++ )
          sel.append( *aLIt ); //check entry and don't append if such entry is in list already
@@ -86,7 +87,7 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
       LightApp_DataOwner* sowner = dynamic_cast<LightApp_DataOwner*>( (*anIt ).get() );
       if( sowner )
       {
-        entry = myStudy->referencedToEntry( sowner->entry() );
+        entry = referencedToEntry( sowner->entry() );
        if( entries.contains( entry ) )
          continue;
 
@@ -100,6 +101,11 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
   }
 }
 
+QString LightApp_Selection::referencedToEntry( const QString& entry ) const
+{
+  return myStudy->referencedToEntry( entry );
+}
+
 /*!
   Gets count of entries.
 */
@@ -147,6 +153,9 @@ QtxValue LightApp_Selection::param( const int ind, const QString& p ) const
   else if( p=="isReference" )
     return QtxValue( isReference( ind ), false );
 
+  else if( p=="displayer" )
+    return param( ind, "component" );
+
   else if( p=="canBeDisplayed" )
   {
     QString mod_name = app->moduleTitle( param( ind, "component" ).toString() );
index 846699f3b5c413c33be073889e17c2c5efb9665b..7756a767dac82409fb1fef835018febf4e55981f 100644 (file)
@@ -65,6 +65,7 @@ protected:
   LightApp_Study*                study() const { return myStudy; }
   QString                        activeViewType() const;
   SUIT_ViewWindow*               activeVW() const;
+  virtual QString                referencedToEntry( const QString& ) const;
 
 private:
   QString                        myPopupClient;
index 6d8fb6d44f2e5ef20bc9d01553a701def7f3ca11..1c9e38b863014c129327abe176660f6d2a9de163 100644 (file)
@@ -73,7 +73,7 @@ void LightApp_SelectionMgr::selectedObjects( SALOME_ListIO& theList, const QStri
 
   QMap<QString,int> entryMap;
 
-  QString entry;
+  QString entry, checkEntry;
   for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
   {
     const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
@@ -85,9 +85,14 @@ void LightApp_SelectionMgr::selectedObjects( SALOME_ListIO& theList, const QStri
       return;
 
     entry = owner->entry();
+    // Entry to check object uniqueness.
+    // It is selected owner entry in the case, when we do not convert references,
+    // and entry of a real object, when we convert references.
+    checkEntry = entry;
     if ( convertReferences ) {
       QString refEntry = study->referencedToEntry( entry );
-      if( !entryMap.contains( entry ) ) {
+      checkEntry = refEntry;
+      if ( !entryMap.contains( checkEntry ) ) {
         if ( refEntry != entry ) {
           QString component = study->componentDataType( refEntry );
           theList.Append( new SALOME_InteractiveObject( refEntry, component, ""/*refobj->Name().c_str()*/ ) );
@@ -101,7 +106,7 @@ void LightApp_SelectionMgr::selectedObjects( SALOME_ListIO& theList, const QStri
        theList.Append( owner->IO() );
     }
 
-    entryMap.insert(owner->entry(), 1);
+    entryMap.insert(checkEntry, 1);
   }
 }
 
@@ -207,23 +212,26 @@ void LightApp_SelectionMgr::GetIndexes( const QString& theEntry, TColStd_Indexed
 /*!
   Add or remove interactive objects from selection manager.
 */
-bool LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, 
-                                              const TColStd_MapOfInteger& theIndexes, 
-                                              bool modeShift)
+//bool LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+void LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+                                              const TColStd_MapOfInteger& theIndexes,
+                                              bool modeShift)
 {
   SUIT_DataOwnerPtrList remainsOwners;
-  
+
   SUIT_DataOwnerPtrList aList;
   selected( aList );
 
+  QString ioEntry (IObject->getEntry());
+
   if ( !modeShift ) {
     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 ) 
+      if ( owner )
       {
-       if ( owner->entry() != QString(IObject->getEntry()) ) 
-       {         
+       if ( owner->entry() != ioEntry )
+       {
          const LightApp_DataSubOwner* subOwner = dynamic_cast<const LightApp_DataSubOwner*>( owner );
          if ( subOwner )
            remainsOwners.append( new LightApp_DataSubOwner( subOwner->entry(), subOwner->index() ) );
@@ -239,17 +247,17 @@ bool LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObj
   TColStd_MapIteratorOfMapOfInteger It;
   It.Initialize(theIndexes);
   for(;It.More();It.Next())
-    remainsOwners.append( new LightApp_DataSubOwner( QString(IObject->getEntry()), It.Key() ) );
-  
+    remainsOwners.append( new LightApp_DataSubOwner( ioEntry, It.Key() ) );
+
   bool append = false;
   setSelected( remainsOwners, append );
 
   emit currentSelectionChanged();
 
-  TColStd_IndexedMapOfInteger anIndexes;
-  GetIndexes( IObject, anIndexes );
-  return !anIndexes.IsEmpty();
-
+  // Bug 17269: To avoid calling of selected(aList)
+  //TColStd_IndexedMapOfInteger anIndexes;
+  //GetIndexes( IObject, anIndexes );
+  //return !anIndexes.IsEmpty();
 }
 
 /*!
@@ -311,14 +319,25 @@ void LightApp_SelectionMgr::selectedSubOwners( MapEntryOfMapOfInteger& theMap )
 
   for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
   {
-    const LightApp_DataSubOwner* subOwner = dynamic_cast<const LightApp_DataSubOwner*>( (*itr).operator->() );
+    const LightApp_DataSubOwner* subOwner =
+      dynamic_cast<const LightApp_DataSubOwner*>( (*itr).operator->() );
     if ( subOwner ) 
     {
       if ( !theMap.contains( subOwner->entry() ) )
       {
        anIndexes.Clear();
-       GetIndexes( subOwner->entry(), anIndexes );
-       theMap.insert( subOwner->entry(), anIndexes );
+       //Bug 17269: GetIndexes( subOwner->entry(), anIndexes );
+        //Bug 17269: To avoid multiple calling of selected(aList)
+        for ( SUIT_DataOwnerPtrList::const_iterator itr2 = itr; itr2 != aList.end(); ++itr2 )
+        {
+          const LightApp_DataSubOwner* subOwner2 =
+            dynamic_cast<const LightApp_DataSubOwner*>( (*itr2).operator->() );
+          if ( subOwner2 )
+            if ( subOwner2->entry() == subOwner->entry() )
+              anIndexes.Add( subOwner2->index() );
+        }
+        //
+        theMap.insert( subOwner->entry(), anIndexes );
       }
     }
   }
index be758e0795ffe6bb1f7d0f9094803982100a11ff..d865cac156ba7b4feafd40b41d5b99a898e8f1d9 100644 (file)
@@ -62,7 +62,8 @@ public:
   void                   GetIndexes( const QString& theEntry, 
                                     TColStd_IndexedMapOfInteger& theIndex );
 
-  bool                   AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, 
+  //bool                   AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, 
+  void                   AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject, 
                                           const TColStd_MapOfInteger& theIndices, 
                                           bool modeShift );
 
index a329cf88915c6f3bf88248fc10df89d986e903fb..657e30d9d16f9beef26f253f8a642b371a81f377 100644 (file)
@@ -63,17 +63,25 @@ void LightApp_ShowHideOp::startOperation()
   }
 
   LightApp_SelectionMgr* mgr = app->selectionMgr();
-  LightApp_Selection sel; sel.init( "", mgr );
-  if( sel.count()==0 && myActionType!=ERASE_ALL )
+  LightApp_Module* mod = dynamic_cast<LightApp_Module*>( app->activeModule() );
+  if( !mod )
+    return;
+
+  LightApp_Selection* sel = mod->createSelection();
+  if( !sel )
+    return;
+
+  sel->init( "", mgr );
+  if( sel->count()==0 && myActionType!=ERASE_ALL )
   {
     abort();
     return;
   }
 
   QString mod_name;
-  if( sel.count()>0 )
+  if( sel->count()>0 )
   {
-    QString aStr =  sel.param( 0, "component" ).toString();
+    QString aStr =  sel->param( 0, "displayer" ).toString();
     mod_name = app->moduleTitle( aStr );
   }
   else if( app->activeModule() )
@@ -144,4 +152,6 @@ void LightApp_ShowHideOp::startOperation()
   }
   d->UpdateViewer();
   commit();
+
+  delete sel;
 }
index d28da9faed22f01f9c422bd8777d048cf3ed6c53..99214fb9f2dbfa3e0a892ca24837bdddf67442fc 100644 (file)
 /*!
   Constructor.
 */
-LightApp_SVTKDataOwner
-::LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
-                         SUIT_Desktop* theDesktop ):
-  LightApp_DataOwner( theIO ),
-  myDesktop( theDesktop )
-{}
-#endif
-
-/*!
-  Destuctor.
-*/
-LightApp_SVTKDataOwner
-::~LightApp_SVTKDataOwner()
+LightApp_SVTKDataOwner::LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
+                                                                 SUIT_Desktop* theDesktop )
+: LightApp_DataOwner( theIO ),
+myDesktop( theDesktop )
+{
+}
+#else
+LightApp_SVTKDataOwner::LightApp_SVTKDataOwner( const QString& theEntry )
+: LightApp_DataOwner( theEntry )
 {
 }
+#endif
 
 /*!
   \return active SVTK view window
@@ -119,6 +116,14 @@ LightApp_SVTKDataOwner
 
 #endif
 
+/*!
+  Destuctor.
+*/
+/*
+LightApp_SVTKDataOwner::~LightApp_SVTKDataOwner()
+{
+}
+*/
 
 #ifndef DISABLE_VTKVIEWER
 /*!
@@ -134,14 +139,6 @@ LightApp_VTKSelector
     connect( myViewer, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
 }
 
-/*!
-  Destructor.
-*/
-LightApp_VTKSelector
-::~LightApp_VTKSelector()
-{
-}
-
 /*!
   Gets viewer.
 */
index aebf5f54a757bd65ca255a298c02af454fc81bb3..0f185cc53a6aa96fcad70337421c5d2d9c262c32 100644 (file)
@@ -43,12 +43,13 @@ class SUIT_Desktop;
 class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner
 {
  public:
+   virtual ~LightApp_SVTKDataOwner() {};
 #ifndef DISABLE_VTKVIEWER
    #ifndef DISABLE_SALOMEOBJECT
-    LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
-                           SUIT_Desktop* theDesktop );
+    LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)&, SUIT_Desktop* );
+   #else
+    LightApp_SVTKDataOwner( const QString& );
    #endif
-    virtual ~LightApp_SVTKDataOwner();
 
     /*!Gets dataowners ids list.*/
     const TColStd_IndexedMapOfInteger& GetIds() const;
@@ -64,9 +65,6 @@ class LIGHTAPP_EXPORT LightApp_SVTKDataOwner : public LightApp_DataOwner
 
     SVTK_ViewWindow* GetActiveViewWindow() const;
     SUIT_Desktop* myDesktop;
-    
-#else
-  LightApp_SVTKDataOwner( const QString& );
 #endif
 };
 
@@ -80,9 +78,9 @@ class LIGHTAPP_EXPORT LightApp_VTKSelector : public SUIT_Selector
   Q_OBJECT;
 
 public:
+  virtual ~LightApp_VTKSelector() {};
 #ifndef DISABLE_VTKVIEWER
   LightApp_VTKSelector( SVTK_ViewModelBase*, SUIT_SelectionMgr* );
-  virtual ~LightApp_VTKSelector();
 
   SVTK_ViewModelBase* viewer() const;
 
diff --git a/src/LightApp/Makefile.am b/src/LightApp/Makefile.am
new file mode 100755 (executable)
index 0000000..f59c4bd
--- /dev/null
@@ -0,0 +1,250 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libLightApp.la
+
+salomeinclude_HEADERS= \
+       LightApp.h \
+       LightApp_AboutDlg.h \
+       LightApp_Application.h \
+       LightApp_DataModel.h \
+       LightApp_DataObject.h \
+       LightApp_DataOwner.h \
+       LightApp_DataSubOwner.h \
+       LightApp_Dialog.h \
+       LightApp_Displayer.h \
+       LightApp_Driver.h \
+       LightApp_EventFilter.h \
+       LightApp_HDFDriver.h \
+       LightApp_Module.h \
+       LightApp_ModuleDlg.h \
+       LightApp_NameDlg.h \
+       LightApp_OBFilter.h \
+       LightApp_OBSelector.h \
+       LightApp_Operation.h \
+       LightApp_Selection.h \
+       LightApp_SelectionMgr.h \
+       LightApp_ShowHideOp.h \
+       LightApp_Study.h \
+       LightApp_SwitchOp.h \
+       LightApp_Preferences.h \
+       LightApp_PreferencesDlg.h \
+       LightApp_RootObject.h \
+       LightApp_UpdateFlags.h \
+       LightApp_WidgetContainer.h
+
+if ENABLE_VTKVIEWER
+if ENABLE_SALOMEOBJECT
+  salomeinclude_HEADERS+= LightApp_VTKSelector.h
+endif
+endif
+if ENABLE_OCCVIEWER
+  salomeinclude_HEADERS+= LightApp_OCCSelector.h
+endif
+if ENABLE_GLVIEWER
+  salomeinclude_HEADERS+= LightApp_GLSelector.h
+endif
+
+dist_libLightApp_la_SOURCES= \
+       LightApp_AboutDlg.cxx \
+       LightApp_Application.cxx \
+       LightApp_DataModel.cxx \
+       LightApp_DataObject.cxx \
+       LightApp_DataOwner.cxx \
+       LightApp_DataSubOwner.cxx \
+       LightApp_Dialog.cxx \
+       LightApp_Displayer.cxx \
+       LightApp_Driver.cxx \
+       LightApp_EventFilter.cxx \
+       LightApp_HDFDriver.cxx \
+       LightApp_Module.cxx \
+       LightApp_ModuleDlg.cxx \
+       LightApp_NameDlg.cxx \
+       LightApp_OBFilter.cxx \
+       LightApp_OBSelector.cxx \
+       LightApp_Operation.cxx \
+       LightApp_Selection.cxx \
+       LightApp_SelectionMgr.cxx \
+       LightApp_ShowHideOp.cxx \
+       LightApp_Study.cxx \
+       LightApp_SwitchOp.cxx \
+       LightApp_Preferences.cxx \
+       LightApp_PreferencesDlg.cxx \
+       LightApp_WidgetContainer.cxx
+
+if ENABLE_VTKVIEWER
+if ENABLE_SALOMEOBJECT
+  dist_libLightApp_la_SOURCES+= LightApp_VTKSelector.cxx
+endif
+endif
+if ENABLE_OCCVIEWER
+  dist_libLightApp_la_SOURCES+= LightApp_OCCSelector.cxx
+endif
+if ENABLE_GLVIEWER
+  dist_libLightApp_la_SOURCES+= LightApp_GLSelector.cxx
+endif
+
+MOC_FILES= \
+       LightApp_AboutDlg_moc.cxx \
+       LightApp_Application_moc.cxx \
+       LightApp_DataModel_moc.cxx \
+       LightApp_Dialog_moc.cxx \
+       LightApp_OBSelector_moc.cxx \
+       LightApp_Operation_moc.cxx \
+       LightApp_Module_moc.cxx \
+       LightApp_ModuleDlg_moc.cxx \
+       LightApp_NameDlg_moc.cxx \
+       LightApp_SelectionMgr_moc.cxx \
+       LightApp_ShowHideOp_moc.cxx \
+       LightApp_Study_moc.cxx \
+       LightApp_SwitchOp_moc.cxx \
+       LightApp_Preferences_moc.cxx \
+       LightApp_PreferencesDlg_moc.cxx \
+       LightApp_WidgetContainer_moc.cxx
+
+if ENABLE_VTKVIEWER
+if ENABLE_SALOMEOBJECT
+  MOC_FILES+= LightApp_VTKSelector_moc.cxx
+endif
+endif
+if ENABLE_OCCVIEWER
+  MOC_FILES+= LightApp_OCCSelector_moc.cxx
+endif
+if ENABLE_GLVIEWER
+  MOC_FILES+= LightApp_GLSelector_moc.cxx
+endif
+nodist_libLightApp_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA= \
+       resources/icon_about.png \
+       resources/icon_applogo.png \
+       resources/icon_default.png \
+       resources/icon_module.png \
+       resources/icon_module_big.png \
+       resources/icon_select.png \
+       resources/LightApp.ini \
+       resources/LightApp.xml
+
+nodist_salomeres_DATA= \
+       LightApp_images.qm \
+       LightApp_msg_en.qm
+
+libLightApp_la_CPPFLAGS=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(CAS_CPPFLAGS) \
+       $(HDF5_INCLUDES) @KERNEL_CXXFLAGS@ -I$(srcdir)/../SUIT -I$(srcdir)/../STD \
+       -I$(srcdir)/../CAM -I$(srcdir)/../ObjBrowser -I$(srcdir)/../LogWindow \
+       -I$(srcdir)/../Prs -I$(srcdir)/../Qtx
+libLightApp_la_LDFLAGS=$(QT_MT_LIBS)
+
+if ENABLE_VTKVIEWER
+  libLightApp_la_CPPFLAGS+= $(VTK_INCLUDES) -I$(srcdir)/../VTKViewer
+else
+  libLightApp_la_CPPFLAGS+= -DDISABLE_VTKVIEWER
+endif
+if ENABLE_PLOT2DVIEWER
+  libLightApp_la_CPPFLAGS+= $(QWT_INCLUDES) -I$(srcdir)/../Plot2d
+else
+  libLightApp_la_CPPFLAGS+= -DDISABLE_PLOT2DVIEWER
+endif
+if ENABLE_OCCVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../OCCViewer
+else !ENABLE_OCCVIEWER
+  libLightApp_la_CPPFLAGS+= -DDISABLE_OCCVIEWER
+endif
+if ENABLE_PYCONSOLE
+  libLightApp_la_CPPFLAGS+= $(PYTHON_INCLUDES) -I$(srcdir)/../PythonConsole -I$(srcdir)/../PyInterp
+  libLightApp_la_LDFLAGS+= $(PYTHON_LIBS)
+else !ENABLE_PYCONSOLE
+  libLightApp_la_CPPFLAGS+= -DDISABLE_PYCONSOLE
+endif
+if ENABLE_GLVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../GLViewer
+else !ENABLE_GLVIEWER
+  libLightApp_la_CPPFLAGS+= -DDISABLE_GLVIEWER
+endif
+if ENABLE_SUPERVGRAPHVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../SUPERVGraph
+else !ENABLE_SUPERVGRAPHVIEWER
+  libLightApp_la_CPPFLAGS+= -DDISABLE_SUPERVGRAPHVIEWER
+endif
+if ENABLE_QXGRAPHVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../QxGraph
+else !ENABLE_QXGRAPHVIEWER
+  libLightApp_la_CPPFLAGS+= -DDISABLE_QXGRAPHVIEWER
+endif
+
+if ENABLE_SALOMEOBJECT
+
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../OBJECT
+if ENABLE_PLOT2DVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../SPlot2d
+endif
+if ENABLE_OCCVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../SOCC
+endif
+if ENABLE_VTKVIEWER
+  libLightApp_la_CPPFLAGS+= -I$(srcdir)/../SVTK
+endif
+else !ENABLE_SALOMEOBJECT
+  libLightApp_la_CPPFLAGS+= -DDISABLE_SALOMEOBJECT
+  
+endif
+
+libLightApp_la_LIBADD= ../SUIT/libsuit.la ../STD/libstd.la ../CAM/libCAM.la \
+       ../ObjBrowser/libObjBrowser.la ../LogWindow/libLogWindow.la $(CAS_KERNEL) \
+       ../Prs/libSalomePrs.la $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist
+
+if ENABLE_SALOMEOBJECT
+  libLightApp_la_LIBADD+= ../OBJECT/libSalomeObject.la
+endif
+if ENABLE_VTKVIEWER
+  libLightApp_la_LIBADD+= ../VTKViewer/libVTKViewer.la
+if ENABLE_SALOMEOBJECT
+  libLightApp_la_LIBADD+= ../SVTK/libSVTK.la
+endif
+endif
+if ENABLE_OCCVIEWER
+  libLightApp_la_LIBADD+= ../OCCViewer/libOCCViewer.la
+if ENABLE_SALOMEOBJECT
+  libLightApp_la_LIBADD+= ../SOCC/libSOCC.la
+endif
+endif
+if ENABLE_GLVIEWER
+  libLightApp_la_LIBADD+= ../GLViewer/libGLViewer.la
+endif
+if ENABLE_PLOT2DVIEWER
+  libLightApp_la_LIBADD+= ../Plot2d/libPlot2d.la
+if ENABLE_SALOMEOBJECT
+  libLightApp_la_LIBADD+= ../SPlot2d/libSPlot2d.la
+endif
+endif
+if ENABLE_PYCONSOLE
+  libLightApp_la_LIBADD+= ../PyInterp/libPyInterp.la ../PythonConsole/libPythonConsole.la
+endif
+if ENABLE_SUPERVGRAPHVIEWER
+  libLightApp_la_LIBADD+= ../SUPERVGraph/libSUPERVGraph.la
+endif
+if ENABLE_QXGRAPHVIEWER
+  libLightApp_la_LIBADD+= ../QxGraph/libQxGraph.la
+endif
diff --git a/src/LightApp/Makefile.in b/src/LightApp/Makefile.in
deleted file mode 100755 (executable)
index 2fd596e..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= LightApp.h \
-               LightApp_AboutDlg.h \
-               LightApp_Application.h \
-               LightApp_DataModel.h \
-               LightApp_DataObject.h \
-               LightApp_DataOwner.h \
-               LightApp_DataSubOwner.h \
-               LightApp_Dialog.h \
-               LightApp_Displayer.h \
-               LightApp_Driver.h \
-               LightApp_HDFDriver.h \
-               LightApp_Module.h \
-               LightApp_ModuleDlg.h \
-               LightApp_NameDlg.h \
-               LightApp_OBFilter.h \
-               LightApp_OBSelector.h \
-               LightApp_Operation.h \
-               LightApp_Selection.h \
-               LightApp_SelectionMgr.h \
-               LightApp_ShowHideOp.h \
-               LightApp_Study.h \
-               LightApp_SwitchOp.h \
-               LightApp_Preferences.h \
-               LightApp_PreferencesDlg.h \
-               LightApp_RootObject.h \
-               LightApp_UpdateFlags.h \
-               LightApp_WidgetContainer.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 \
-          LightApp_msg_en.po
-
-# Libraries targets
-LIB = libLightApp.la
-
-LIB_SRC= LightApp_AboutDlg.cxx \
-        LightApp_Application.cxx \
-        LightApp_DataModel.cxx \
-        LightApp_DataObject.cxx \
-        LightApp_DataOwner.cxx \
-        LightApp_DataSubOwner.cxx \
-        LightApp_Dialog.cxx \
-        LightApp_Displayer.cxx \
-        LightApp_Driver.cxx \
-        LightApp_HDFDriver.cxx \
-        LightApp_Module.cxx \
-        LightApp_ModuleDlg.cxx \
-        LightApp_NameDlg.cxx \
-        LightApp_OBFilter.cxx \
-        LightApp_OBSelector.cxx \
-        LightApp_Operation.cxx \
-        LightApp_Selection.cxx \
-        LightApp_SelectionMgr.cxx \
-        LightApp_ShowHideOp.cxx \
-        LightApp_Study.cxx \
-        LightApp_SwitchOp.cxx \
-        LightApp_Preferences.cxx \
-        LightApp_PreferencesDlg.cxx \
-        LightApp_WidgetContainer.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_OBSelector.h \
-         LightApp_Operation.h \
-         LightApp_Module.h \
-         LightApp_ModuleDlg.h \
-         LightApp_NameDlg.h \
-         LightApp_SelectionMgr.h \
-         LightApp_ShowHideOp.h \
-         LightApp_Study.h \
-         LightApp_SwitchOp.h \
-         LightApp_Preferences.h \
-         LightApp_PreferencesDlg.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 \
-                 icon_module.png \
-                 icon_module_big.png \
-                 icon_select.png \
-                 LightApp.ini \
-                 LightApp.xml
-
-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
-
-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 814a5ec84d0fa0e71dbcd36a8223b7f8de232569..fb5a7018a5da3871f937bed83b3bb29f0aadeedc 100755 (executable)
@@ -7,14 +7,14 @@ language = en
 modules = LIGHT
 
 [resources]
-SUIT = $(SUITRoot)/resources
-STD = $(SUITRoot)/resources
-LightApp = $(SUITRoot)/resources
-Plot2d = $(SUITRoot)/resources
-GLViewer = $(SUITRoot)/resources
-OCCViewer = $(SUITRoot)/resources
-VTKViewer = $(SUITRoot)/resources
-LIGHT = $(LIGHT_ROOT_DIR)/share/salome/resources
+SUIT = $(GUI_ROOT_DIR)/share/salome/resources/gui
+STD = $(GUI_ROOT_DIR)/share/salome/resources/gui
+LightApp = $(GUI_ROOT_DIR)/share/salome/resources/gui
+Plot2d = $(GUI_ROOT_DIR)/share/salome/resources/gui
+GLViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+OCCViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+VTKViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+LIGHT = $(LIGHT_ROOT_DIR)/share/salome/resources/light
 
 [LIGHT]
 name = Light
index 7cb56db7bc919dde06e7b37cd192d5c3b363a82f..0c2f9ee0c8af820c79929167ecdeb6edc15e49e2 100644 (file)
   </section>
   <section name="splash" >
     <!-- Splash screen settings -->
-    <parameter name="image"       value="${SUITRoot}/resources/icon_about.png" />
+    <parameter name="image"       value="${GUI_ROOT_DIR}/share/salome/resources/gui/icon_about.png" />
     <parameter name="info"        value="%A : %V" />
-    <parameter name="text_colors" value="#543AA9|#FFFFFF" />
+    <parameter name="text_colors" value="#FFFFFF" />
+    <parameter name="margin"      value="10" />
   </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="SPlot2d"      value="${SUITRoot}/resources"/>
-    <parameter name="GLViewer"     value="${SUITRoot}/resources"/>
-    <parameter name="OCCViewer"    value="${SUITRoot}/resources"/>
-    <parameter name="VTKViewer"    value="${SUITRoot}/resources"/>
-    <parameter name="SalomeApp"    value="${SUITRoot}/resources"/>
-    <parameter name="OB"           value="${SUITRoot}/resources"/>
-    <parameter name="CAM"          value="${SUITRoot}/resources"/>
-    <parameter name="LightApp"     value="${SUITRoot}/resources"/>
-    <parameter name="SVTK"         value="${SUITRoot}/resources"/>
-    <parameter name="ToolsGUI"     value="${SUITRoot}/resources"/>
-    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="SUIT"         value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="STD"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="Plot2d"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SPlot2d"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="GLViewer"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="OCCViewer"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="VTKViewer"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SalomeApp"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="OB"           value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="CAM"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="LightApp"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SVTK"         value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="ToolsGUI"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources/light"/>
   </section>
   <section name="desktop" >
     <!-- Default GUI desktop state, position, size -->
index f06c47efc749934da7aa8bec67148f410b8358f2..c138bb49fedecad27fdf5afe6fafbcfcea2d6ba8 100644 (file)
@@ -40,7 +40,7 @@ msgid "ABOUT_VERSION"
 msgstr "Version %1"
 
 msgid "ABOUT_COPYRIGHT"
-msgstr "Copyright (C) 2003-2006 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS"
+msgstr "Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6,\nCEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS"
 
 msgid "ABOUT_LICENSE"
 msgstr "GNU LGPL"
@@ -95,6 +95,9 @@ msgstr "&OCC view"
 msgid "LightApp_Application::NEW_WINDOW_3"
 msgstr "VT&K view"
 
+msgid "LightApp_Application::NEW_WINDOW_4"
+msgstr "&QxGraph view"
+
 msgid "LightApp_Application::INF_CANCELLED"
 msgstr "Module activation cancelled"
 
@@ -251,6 +254,9 @@ msgstr "Quick directory list"
 msgid "LightApp_Application::MEN_REFRESH"
 msgstr "Refresh"
 
+msgid "LightApp_Application::MEN_FIND"
+msgstr "Find"
+
 msgid "LightApp_Application::PREF_GROUP_SUPERV"
 msgstr "Graph Supervisor"
 
@@ -288,61 +294,49 @@ msgstr "Import"
 
 //=======================================================================================
 
-msgid "LightApp_Module::TOP_DISPLAY"
-msgstr "Display"
+msgid "LightApp_Module::TOP_SHOW"
+msgstr "Show"
 
-msgid "LightApp_Module::MEN_DISPLAY"
-msgstr "Display"
+msgid "LightApp_Module::MEN_SHOW"
+msgstr "Show"
 
-msgid "LightApp_Module::STB_DISPLAY"
-msgstr "Display"
+msgid "LightApp_Module::STB_SHOW"
+msgstr "Show"
 
-msgid "LightApp_Module::TOP_ERASE"
-msgstr "Erase"
+msgid "LightApp_Module::TOP_HIDE"
+msgstr "Hide"
 
-msgid "LightApp_Module::MEN_ERASE"
-msgstr "Erase"
+msgid "LightApp_Module::MEN_HIDE"
+msgstr "Hide"
 
-msgid "LightApp_Module::STB_ERASE"
-msgstr "Erase"
+msgid "LightApp_Module::STB_HIDE"
+msgstr "Hide"
 
 msgid "LightApp_Module::TOP_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
 
 msgid "LightApp_Module::MEN_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
 
 msgid "LightApp_Module::STB_DISPLAY_ONLY"
-msgstr "Display only"
+msgstr "Show only"
 
 msgid "LightApp_Module::TOP_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
 
 msgid "LightApp_Module::MEN_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
 
 msgid "LightApp_Module::STB_ERASE_ALL"
-msgstr "Erase all"
+msgstr "Hide all"
 //=======================================================================================
 
 
 msgid "LightApp_ModuleDlg::CAPTION"
 msgstr "Activate module"
 
-msgid "LightApp_ModuleDlg::NEW"
-msgstr "&New"
-
-msgid "LightApp_ModuleDlg::OPEN"
-msgstr "&Open"
-
-msgid "LightApp_ModuleDlg::LOAD"
-msgstr "&Load"
-
-msgid "LightApp_ModuleDlg::CANCEL"
-msgstr "&Cancel"
-
-msgid "LightApp_ModuleDlg::ActivateComponent_DESCRIPTION"
-msgstr "Create, open or load study."
+msgid "LightApp_ModuleDlg::DESCRIPTION"
+msgstr "You're activating module <b>%1</b>.<br>Please, select required action by pressing the corresponding button below."
 
 msgid "LightApp_NameDlg::TLT_RENAME"
 msgstr "Rename"
@@ -350,3 +344,9 @@ msgstr "Rename"
 msgid "LightApp_NameDlg::NAME_LBL"
 msgstr "Name: "
 
+msgid "LightApp_Application::ACTIVATE_MODULE_OP_OPEN"
+msgstr "&Open..."
+
+msgid "LightApp_Application::ACTIVATE_MODULE_OP_NEW"
+msgstr "&New"
+
index 6817eb4073d11a0fe69b69d01bc06f5a8895f208..0cfa37ae050a1c9a07e31e61a0c072c9fe048e8b 100755 (executable)
Binary files a/src/LightApp/resources/icon_about.png and b/src/LightApp/resources/icon_about.png differ
diff --git a/src/LogWindow/Makefile.am b/src/LogWindow/Makefile.am
new file mode 100755 (executable)
index 0000000..83dcacd
--- /dev/null
@@ -0,0 +1,39 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libLogWindow.la
+
+salomeinclude_HEADERS= LogWindow.h
+
+dist_libLogWindow_la_SOURCES= LogWindow.cxx            
+
+MOC_FILES= LogWindow_moc.cxx
+nodist_libLogWindow_la_SOURCES = $(MOC_FILES)
+
+libLogWindow_la_CPPFLAGS=$(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+libLogWindow_la_LDFLAGS=$(QT_MT_LIBS) ../SUIT/libsuit.la ../Qtx/libqtx.la 
+
+
diff --git a/src/LogWindow/Makefile.in b/src/LogWindow/Makefile.in
deleted file mode 100755 (executable)
index d868371..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= LogWindow.h
-                    
-# Libraries targets
-LIB = libLogWindow.la
-
-LIB_SRC= LogWindow.cxx         
-LIB_MOC = LogWindow.h
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS)
-
-@CONCLUDE@
-
-
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100755 (executable)
index 0000000..1524bcb
--- /dev/null
@@ -0,0 +1,69 @@
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Patrick GOLDBRONN (CEA)
+#  Module : SALOME
+# $Header$
+
+SUBDIRS = CASCatch Qtx Style DDS QDS SUIT STD CAF CAM SUITApp LogWindow ObjBrowser Prs
+
+if ENABLE_SALOMEOBJECT
+  SUBDIRS += OBJECT
+endif
+
+if ENABLE_GLVIEWER
+  SUBDIRS += GLViewer
+endif
+
+if ENABLE_VTKVIEWER
+  SUBDIRS += VTKViewer
+if ENABLE_SALOMEOBJECT
+  SUBDIRS += SVTK
+endif
+endif
+if ENABLE_OCCVIEWER
+ SUBDIRS += OCCViewer
+if ENABLE_SALOMEOBJECT
+  SUBDIRS += SOCC
+endif
+endif
+if ENABLE_PYCONSOLE
+  SUBDIRS += PyInterp PythonConsole
+endif
+if ENABLE_PLOT2DVIEWER
+  SUBDIRS += Plot2d
+if ENABLE_SALOMEOBJECT
+  SUBDIRS += SPlot2d
+endif
+endif
+if ENABLE_SUPERVGRAPHVIEWER
+  SUBDIRS += SUPERVGraph
+endif
+if ENABLE_QXGRAPHVIEWER
+  SUBDIRS += QxGraph
+endif
+SUBDIRS += LightApp ResExporter
+
+if GUI_ENABLE_CORBA
+  SUBDIRS +=  RegistryDisplay TOOLSGUI \
+          Event Session SalomeApp SALOME_SWIG SALOME_PY SALOME_PYQT
+endif
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100755 (executable)
index 0bd6d18..0000000
+++ /dev/null
@@ -1,83 +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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Patrick GOLDBRONN (CEA)
-#  Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-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@
diff --git a/src/OBJECT/Makefile.am b/src/OBJECT/Makefile.am
new file mode 100755 (executable)
index 0000000..106033a
--- /dev/null
@@ -0,0 +1,71 @@
+#  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 $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSalomeObject.la
+
+salomeinclude_HEADERS= \
+       SALOME_InteractiveObject.hxx \
+       Handle_SALOME_InteractiveObject.hxx \
+       SALOME_AISShape.hxx \
+       Handle_SALOME_AISShape.hxx \
+       SALOME_AISObject.hxx \
+       Handle_SALOME_AISObject.hxx \
+       SALOME_ListIO.hxx \
+       SALOME_ListIteratorOfListIO.hxx \
+       Handle_SALOME_ListNodeOfListIO.hxx \
+       SALOME_ListNodeOfListIO.hxx \
+       Handle_SALOME_Filter.hxx \
+       SALOME_Filter.hxx \
+       Handle_SALOME_TypeFilter.hxx \
+       SALOME_TypeFilter.hxx \
+       SALOME_DataMapOfIOMapOfInteger.hxx \
+       SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx \
+       Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx \
+       SALOME_Selection.h
+
+dist_libSalomeObject_la_SOURCES= \
+       SALOME_InteractiveObject.cxx \
+       SALOME_AISShape.cxx\
+       SALOME_AISObject.cxx\
+       SALOME_ListIO_0.cxx \
+       SALOME_ListIteratorOfListIO_0.cxx \
+       SALOME_ListNodeOfListIO_0.cxx \
+       SALOME_Filter.cxx \
+       SALOME_TypeFilter.cxx \
+       SALOME_DataMapOfIOMapOfInteger_0.cxx \
+       SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx \
+       SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx
+
+libSalomeObject_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS)
+libSalomeObject_la_LDFLAGS=$(QT_LIBS) $(CAS_LDPATH) -lTKV3d
+
+EXTRA_DIST+= \
+       SALOME_AISObject.ixx \
+       SALOME_AISObject.jxx \
+       SALOME_AISShape.ixx \
+       SALOME_AISShape.jxx \
+       SALOME_Filter.ixx \
+       SALOME_Filter.jxx \
+       SALOME_InteractiveObject.ixx \
+       SALOME_InteractiveObject.jxx \
+       SALOME_TypeFilter.ixx \
+       SALOME_TypeFilter.jxx \
+       SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx
diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in
deleted file mode 100755 (executable)
index ad9e94c..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#  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=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
-                Handle_SALOME_InteractiveObject.hxx \
-                SALOME_AISShape.hxx \
-                Handle_SALOME_AISShape.hxx \
-                SALOME_AISObject.hxx \
-                Handle_SALOME_AISObject.hxx \
-                SALOME_ListIO.hxx \
-                SALOME_ListIteratorOfListIO.hxx \
-                Handle_SALOME_ListNodeOfListIO.hxx \
-                SALOME_ListNodeOfListIO.hxx \
-                Handle_SALOME_Filter.hxx \
-                SALOME_Filter.hxx \
-                Handle_SALOME_TypeFilter.hxx \
-                SALOME_TypeFilter.hxx \
-                SALOME_DataMapOfIOMapOfInteger.hxx \
-                SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx \
-                Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger.hxx \
-                SALOME_Selection.h
-
-
-# Libraries targets
-
-LIB = libSalomeObject.la
-LIB_SRC =       SALOME_InteractiveObject.cxx \
-                SALOME_AISShape.cxx\
-                SALOME_AISObject.cxx\
-                SALOME_ListIO_0.cxx \
-                SALOME_ListIteratorOfListIO_0.cxx \
-                SALOME_ListNodeOfListIO_0.cxx \
-                SALOME_Filter.cxx \
-                SALOME_TypeFilter.cxx \
-                SALOME_DataMapOfIOMapOfInteger_0.cxx \
-                SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_0.cxx \
-                SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx
-
-LIB_CLIENT_IDL =
-
-# Executables targets
-BIN = 
-BIN_SRC        =
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES)
-LDFLAGS+= $(QT_LIBS) $(CAS_LDPATH) -lTKV3d
-
-
-@CONCLUDE@
diff --git a/src/OCCViewer/Makefile.am b/src/OCCViewer/Makefile.am
new file mode 100755 (executable)
index 0000000..2bfc888
--- /dev/null
@@ -0,0 +1,98 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libOCCViewer.la
+
+salomeinclude_HEADERS= \
+       OCCViewer_AISSelector.h \
+       OCCViewer_ViewManager.h \
+       OCCViewer_ViewModel.h \
+       OCCViewer_ViewPort3d.h \
+       OCCViewer_ViewPort.h \
+       OCCViewer_ViewSketcher.h \
+       OCCViewer_ViewWindow.h \
+       OCCViewer_VService.h \
+       OCCViewer_CreateRestoreViewDlg.h \
+       OCCViewer.h \
+       OCCViewer_ClippingDlg.h \
+       OCCViewer_SetRotationPointDlg.h
+
+dist_libOCCViewer_la_SOURCES= \
+       OCCViewer_AISSelector.cxx \
+       OCCViewer_ViewManager.cxx \
+       OCCViewer_ViewModel.cxx \
+       OCCViewer_ViewPort3d.cxx \
+       OCCViewer_ViewPort.cxx \
+       OCCViewer_ViewSketcher.cxx \
+       OCCViewer_ViewWindow.cxx \
+       OCCViewer_VService.cxx \
+       OCCViewer_CreateRestoreViewDlg.cxx \
+       OCCViewer_SetRotationPointDlg.cxx \
+       OCCViewer_ClippingDlg.cxx
+
+MOC_FILES= \
+       OCCViewer_AISSelector_moc.cxx \
+       OCCViewer_ViewModel_moc.cxx \
+       OCCViewer_ViewPort3d_moc.cxx \
+       OCCViewer_ViewPort_moc.cxx \
+       OCCViewer_ViewSketcher_moc.cxx \
+       OCCViewer_ViewWindow_moc.cxx \
+       OCCViewer_ViewManager_moc.cxx \
+       OCCViewer_CreateRestoreViewDlg_moc.cxx \
+       OCCViewer_SetRotationPointDlg_moc.cxx \
+       OCCViewer_ClippingDlg_moc.cxx
+nodist_libOCCViewer_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA = \
+       resources/view_back.png \
+       resources/view_bottom.png \
+       resources/view_camera_dump.png \
+       resources/view_clone.png \
+       resources/view_clipping.png \
+       resources/view_clipping_pressed.png \
+       resources/view_fitall.png \
+       resources/view_fitarea.png \
+       resources/view_front.png \
+       resources/view_glpan.png \
+       resources/view_left.png \
+       resources/view_pan.png \
+       resources/view_presets.png \
+       resources/view_reset.png \
+       resources/view_right.png \
+       resources/view_rotate.png \
+       resources/view_shoot.png \
+       resources/view_top.png \
+       resources/view_triedre.png \
+       resources/view_zoom.png \
+       resources/view_rotation_point.png
+
+nodist_salomeres_DATA = \
+       OCCViewer_images.qm \
+       OCCViewer_msg_en.qm 
+
+libOCCViewer_la_CPPFLAGS=$(QT_INCLUDES) $(OGL_INCLUDES) $(CAS_CPPFLAGS) \
+       -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+libOCCViewer_la_LDFLAGS=$(OGL_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) $(CAS_VIEWER) ../SUIT/libsuit.la
diff --git a/src/OCCViewer/Makefile.in b/src/OCCViewer/Makefile.in
deleted file mode 100755 (executable)
index 842759a..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= OCCViewer_AISSelector.h \
-               OCCViewer_ViewManager.h \
-               OCCViewer_ViewModel.h \
-               OCCViewer_ViewPort3d.h \
-               OCCViewer_ViewPort.h \
-               OCCViewer_ViewWindow.h \
-               OCCViewer_VService.h \
-               OCCViewer_CreateRestoreViewDlg.h \
-               OCCViewer.h
-                    
-# .po files to transform in .qm
-PO_FILES = OCCViewer_images.po \
-          OCCViewer_msg_en.po 
-
-# Libraries targets
-LIB = libOCCViewer.la
-LIB_SRC= OCCViewer_AISSelector.cxx \
-        OCCViewer_ViewManager.cxx \
-        OCCViewer_ViewModel.cxx \
-        OCCViewer_ViewPort3d.cxx \
-        OCCViewer_ViewPort.cxx \
-        OCCViewer_ViewWindow.cxx \
-        OCCViewer_VService.cxx \
-        OCCViewer_CreateRestoreViewDlg.cxx \
-        OCCViewer_ClippingDlg.cxx
-
-LIB_MOC = OCCViewer_AISSelector.h \
-          OCCViewer_ViewModel.h \
-         OCCViewer_ViewPort3d.h \
-         OCCViewer_ViewPort.h \
-         OCCViewer_ViewWindow.h \
-         OCCViewer_ViewManager.h \
-         OCCViewer_CreateRestoreViewDlg.h \
-         OCCViewer_ClippingDlg.h
-
-RESOURCES_FILES = \
-view_back.png \
-view_bottom.png \
-view_camera_dump.png \
-view_clone.png \
-view_clipping.png \
-view_clipping_pressed.png \
-view_fitall.png \
-view_fitarea.png \
-view_front.png \
-view_glpan.png \
-view_left.png \
-view_pan.png \
-view_presets.png \
-view_reset.png \
-view_right.png \
-view_rotate.png \
-view_shoot.png \
-view_top.png \
-view_triedre.png \
-view_zoom.png
-
-CPPFLAGS+=$(QT_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES)
-
-LDFLAGS+=$(OGL_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) $(CAS_VIEWER) -lsuit
-
-@CONCLUDE@
-
-
index 177737599be599a52035fe50329c86a248baa25f..106e28b8f936830b36ecdabc02cf7ed7b8e78423 100644 (file)
@@ -76,15 +76,18 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupPointLayout->setMargin( 11 );
   
   // Controls
-  const double min = -1e+06;
-  const double max =  1e+06;
+  const double min = -1e+16;
+  const double max =  1e+16;
   const double step = 5;
+  const int precision = -6; // PAL12789. Minus is for using 'g' double->string conversion specifier,
+  //                          see QtxDblSpinBox::mapValueToText( double v )
 
   TextLabelX = new QLabel( GroupPoint, "TextLabelX" );
   TextLabelX->setText( tr("X:") );
   GroupPointLayout->addWidget( TextLabelX, 0, 0 );
   
   SpinBox_X = new QtxDblSpinBox( min, max, step, GroupPoint, "SpinBox_X" );
+  SpinBox_X->setPrecision( precision );
   GroupPointLayout->addWidget( SpinBox_X, 0, 1 );
 
   TextLabelY = new QLabel( GroupPoint, "TextLabelY" );
@@ -92,6 +95,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupPointLayout->addWidget( TextLabelY, 0, 2 );
 
   SpinBox_Y = new QtxDblSpinBox( min, max, step, GroupPoint, "SpinBox_Y" );
+  SpinBox_Y->setPrecision( precision );
   GroupPointLayout->addWidget( SpinBox_Y, 0, 3 );
 
   TextLabelZ = new QLabel( GroupPoint, "TextLabelZ" );
@@ -99,6 +103,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupPointLayout->addWidget( TextLabelZ, 0, 4 );
 
   SpinBox_Z = new QtxDblSpinBox( min, max, step, GroupPoint, "SpinBox_Z" );
+  SpinBox_Z->setPrecision( precision );
   GroupPointLayout->addWidget( SpinBox_Z, 0, 5 );
 
   resetButton  = new QPushButton( GroupPoint, "resetButton" );
@@ -122,6 +127,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupDirectionLayout->addWidget( TextLabelDx, 0, 0 );
   
   SpinBox_Dx = new QtxDblSpinBox( min, max, step, GroupDirection, "SpinBox_Dx" );
+  SpinBox_Dx->setPrecision( precision );
   GroupDirectionLayout->addWidget( SpinBox_Dx, 0, 1 );
 
   TextLabelDy = new QLabel( GroupDirection, "TextLabelDy" );
@@ -129,6 +135,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupDirectionLayout->addWidget( TextLabelDy, 0, 2 );
   
   SpinBox_Dy = new QtxDblSpinBox( min, max, step, GroupDirection, "SpinBox_Dy" );
+  SpinBox_Dy->setPrecision( precision );
   GroupDirectionLayout->addWidget( SpinBox_Dy, 0, 3 );
 
   TextLabelDz = new QLabel( GroupDirection, "TextLabelDz" );
@@ -136,6 +143,7 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   GroupDirectionLayout->addWidget( TextLabelDz, 0, 4 );
   
   SpinBox_Dz = new QtxDblSpinBox( min, max, step, GroupDirection, "SpinBox_Dz" );
+  SpinBox_Dz->setPrecision( precision );
   GroupDirectionLayout->addWidget( SpinBox_Dz, 0, 5 );
 
   invertButton  = new QPushButton( GroupDirection, "invertButton" );
@@ -212,6 +220,9 @@ OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidge
   connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
   
   myBusy = false;
+
+  connect(view, SIGNAL(Show( QShowEvent * )), this, SLOT(onViewShow()));
+  connect(view, SIGNAL(Hide( QHideEvent * )), this, SLOT(onViewHide()));
 }
 
 /*!
@@ -551,3 +562,17 @@ void OCCViewer_ClippingDlg::ReserveClippingPlane()
        myClippingPlane = aView3d->ActivePlane();
     }
 }
+
+void OCCViewer_ClippingDlg::onViewShow()
+{
+  if(myAction->isOn())
+    show();
+  else
+    hide();
+}
+
+void OCCViewer_ClippingDlg::onViewHide()
+{
+  hide();
+}
+
index 27efa2e9049d31a2449b3fc95b15bed37dcdb043..bed795811b7b16abdb380a6c5bcc2b40b54f8300 100644 (file)
@@ -105,6 +105,9 @@ private slots:
   void onModeChanged( int mode );
   void onValueChanged();
   void onPreview( bool on );
+
+  void onViewShow();
+  void onViewHide();
 };
 
 #endif // OCCVIEWER_CLIPPINGDLG_H
index 747ee1d39a418d5a035dda7b600609bfc724286a..e97cde8b9a9bbffcf3e3eb82050dfcf37bbcfab1 100755 (executable)
@@ -118,7 +118,7 @@ void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem )
                int index = curItem->listBox()->index( curItem );
                if( myKeyFlag == 2 )
                {
-                       for( int i = 0; i < myListBox->count(); i++ )
+                       for( int i = 0; i < (int)myListBox->count(); i++ )
                        {
                                if( myListBox->isSelected( i ) && i != index )
                                {
@@ -172,11 +172,11 @@ void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems()
        if( myListBox->count() && myListBox->isEditEnabled() )
        {
                int curIndex = -1;
-               for( int i = 0; i < myListBox->count(); i++ )
+               for( int i = 0; i < (int)myListBox->count(); i++ )
                        if( myListBox->isSelected( i ) )
                        {
                                myListBox->removeItem( i );
-                               for( int j = i; j < myParametersMap.count(); j++ )
+                               for( int j = i; j < (int)myParametersMap.count(); j++ )
                                        if( j != myParametersMap.count() - 1 )
                                                myParametersMap[ j ] = myParametersMap[ j + 1 ];
                                        else
diff --git a/src/OCCViewer/OCCViewer_SetRotationPointDlg.cxx b/src/OCCViewer/OCCViewer_SetRotationPointDlg.cxx
new file mode 100644 (file)
index 0000000..0aed2c2
--- /dev/null
@@ -0,0 +1,278 @@
+// 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_SetRotationPointDlg.h"
+
+#include <QtxAction.h>
+
+#include "OCCViewer_ViewWindow.h"
+
+#include <qlineedit.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qvalidator.h>
+#include <qbuttongroup.h>
+#include <qobjectlist.h>
+#include <qcheckbox.h>
+#include <qhbox.h>
+
+/*!
+  Constructor
+  \param view - view window
+  \param parent - parent widget
+  \param name - dialog name
+  \param modal - is this dialog modal
+  \param fl - flags
+*/
+OCCViewer_SetRotationPointDlg::OCCViewer_SetRotationPointDlg( OCCViewer_ViewWindow* view, QWidget* parent, const char* name, bool modal, WFlags fl )
+: QDialog( parent, "OCCViewer_SetRotationPointDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+  myView( view )
+{
+  setCaption(tr("CAPTION"));
+  setSizeGripEnabled(TRUE);
+
+  // Create layout for this dialog
+  QGridLayout* layoutDlg = new QGridLayout (this);
+  layoutDlg->setSpacing(6);
+  layoutDlg->setMargin(11);
+
+  // Create check box "Use Bounding Box Center"
+  QHBox* aCheckBox = new QHBox(this);
+
+  myIsBBCenter = new QCheckBox(tr("USE_BBCENTER"), aCheckBox);
+  myIsBBCenter->setChecked(true);
+  connect(myIsBBCenter, SIGNAL(stateChanged(int)), SLOT(onBBCenterChecked()));
+
+  // Create croup button with radio buttons
+  myGroupSelButton = new QButtonGroup(2,Qt::Vertical,"",this);
+  myGroupSelButton->setMargin(11);
+  
+  // Create "Set to Origin" button
+  myToOrigin = new QPushButton(myGroupSelButton);
+  myToOrigin->setText(tr("LBL_TOORIGIN"));
+  connect(myToOrigin, SIGNAL(clicked()), this, SLOT(onToOrigin()));
+
+  // Create "Select Point from View" button
+  mySelectPoint = new QPushButton(myGroupSelButton);
+  mySelectPoint->setText(tr("LBL_SELECTPOINT"));
+  mySelectPoint->setToggleButton(true);
+  connect(mySelectPoint, SIGNAL(clicked()), this, SLOT(onSelectPoint()));
+
+  // Create croup box with grid layout
+  myGroupBoxCoord = new QGroupBox(this, "GroupBox");
+  QHBoxLayout* aHBoxLayout = new QHBoxLayout(myGroupBoxCoord);
+  aHBoxLayout->setMargin(11);
+  aHBoxLayout->setSpacing(6);
+
+  // "X" coordinate
+  QLabel* TextLabelX = new QLabel (tr("LBL_X"), myGroupBoxCoord, "TextLabelX");
+  TextLabelX->setFixedWidth(15);
+  myX = new QLineEdit(myGroupBoxCoord);
+  myX->setValidator(new QDoubleValidator(myX));
+  myX->setText(QString::number(0.0));
+  connect(myX, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // "Y" coordinate
+  QLabel* TextLabelY = new QLabel (tr("LBL_Y"), myGroupBoxCoord, "TextLabelY");
+  TextLabelY->setFixedWidth(15);
+  myY = new QLineEdit(myGroupBoxCoord);
+  myY->setValidator(new QDoubleValidator(myY));
+  myY->setText(QString::number(0.0));
+  connect(myY, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // "Z" coordinate
+  QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), myGroupBoxCoord, "TextLabelZ");
+  TextLabelZ->setFixedWidth(15);
+  myZ = new QLineEdit(myGroupBoxCoord);
+  myZ->setValidator(new QDoubleValidator(myZ));
+  myZ->setText(QString::number(0.0));
+  connect(myZ, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // Layout widgets in the horizontal group box
+  aHBoxLayout->addWidget(TextLabelX);
+  aHBoxLayout->addWidget(myX);
+  aHBoxLayout->addWidget(TextLabelY);
+  aHBoxLayout->addWidget(myY);
+  aHBoxLayout->addWidget(TextLabelZ);
+  aHBoxLayout->addWidget(myZ);
+
+  // "Close" button
+  QGroupBox* aGroupBox = new QGroupBox(this);
+  QHBoxLayout* aHBoxLayout2 = new QHBoxLayout(aGroupBox);
+  aHBoxLayout2->setMargin(11);
+  aHBoxLayout2->setSpacing(6);
+
+  QPushButton* m_bClose = new QPushButton(tr("&Close"), aGroupBox, "m_bClose");
+  m_bClose->setAutoDefault(TRUE);
+  m_bClose->setFixedSize(m_bClose->sizeHint());
+  connect(m_bClose, SIGNAL(clicked()), this, SLOT(onClickClose()));
+
+  // Layout buttons
+  aHBoxLayout2->addWidget(m_bClose);
+
+  // Layout top level widgets
+  layoutDlg->addWidget(aCheckBox,0,0);
+  layoutDlg->addWidget(myGroupSelButton,1,0);
+  layoutDlg->addWidget(myGroupBoxCoord,2,0);
+  layoutDlg->addWidget(aGroupBox,3,0);
+  
+  setEnabled(myGroupSelButton,!myIsBBCenter->isChecked());
+  setEnabled(myGroupBoxCoord,!myIsBBCenter->isChecked());
+
+  this->resize(400, this->sizeHint().height());
+
+  connect(view, SIGNAL(Show( QShowEvent * )), this, SLOT(onViewShow()));
+  connect(view, SIGNAL(Hide( QHideEvent * )), this, SLOT(onViewHide()));
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+OCCViewer_SetRotationPointDlg
+::~OCCViewer_SetRotationPointDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+
+/*!
+  Return true if it is the first show for this dialog
+*/
+bool
+OCCViewer_SetRotationPointDlg
+::IsFirstShown()
+{
+  return myIsBBCenter->isChecked() && myX->text().toDouble() == 0.
+    && myY->text().toDouble() == 0. && myZ->text().toDouble() == 0.;
+}
+
+void 
+OCCViewer_SetRotationPointDlg
+::setEnabled(QGroupBox* theGrp, const bool theState)
+{
+  QObjectList aChildren(*theGrp->children());
+  QObject* anObj;
+  for(anObj = aChildren.first(); anObj !=0; anObj = aChildren.next())
+  {
+    if (anObj !=0 && anObj->inherits("QLineEdit"))
+      ((QLineEdit*)anObj)->setReadOnly(!theState);
+    if (anObj !=0 && anObj->inherits("QPushButton"))
+      ((QLineEdit*)anObj)->setEnabled(theState);
+  }
+  
+}
+
+void 
+OCCViewer_SetRotationPointDlg
+::onBBCenterChecked()
+{
+  setEnabled(myGroupSelButton,!myIsBBCenter->isChecked());
+  setEnabled(myGroupBoxCoord,!myIsBBCenter->isChecked());
+  
+  if ( myIsBBCenter->isChecked() )
+  {
+    if ( mySelectPoint->state() == QButton::On )
+      mySelectPoint->toggle();
+    myView->activateSetRotationGravity();
+  }
+  else
+    myView->activateSetRotationSelected(myX->text().toDouble(), 
+                                       myY->text().toDouble(), 
+                                       myZ->text().toDouble());
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::onToOrigin()
+{
+  if ( mySelectPoint->state() == QButton::On )
+    mySelectPoint->toggle();
+  setCoords();
+  myView->activateSetRotationSelected(myX->text().toDouble(), 
+                                     myY->text().toDouble(), 
+                                     myZ->text().toDouble());
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::onSelectPoint()
+{
+  if ( mySelectPoint->state() == QButton::On )
+    myView->activateStartPointSelection();
+  else
+    mySelectPoint->toggle();
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::onCoordChanged()
+{
+  if ( !myIsBBCenter->isChecked() )
+  {
+    if ( mySelectPoint->state() == QButton::On
+        &&
+        ( myX->hasFocus() || myY->hasFocus() || myZ->hasFocus() ) )
+      mySelectPoint->toggle();
+    myView->activateSetRotationSelected(myX->text().toDouble(), 
+                                       myY->text().toDouble(), 
+                                       myZ->text().toDouble());
+  }
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::setCoords(double theX, double theY, double theZ)
+{
+  myX->setText(QString::number(theX));
+  myY->setText(QString::number(theY));
+  myZ->setText(QString::number(theZ));
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::toggleChange()
+{
+  if ( !myIsBBCenter->isChecked() )
+    mySelectPoint->toggle();
+}
+
+void
+OCCViewer_SetRotationPointDlg
+::onClickClose()
+{
+  myAction->setOn( false );
+  reject();
+}
+
+void 
+OCCViewer_SetRotationPointDlg
+::onViewShow()
+{
+  if(myAction->isOn())
+    show();
+  else
+    hide();
+}
+
+void 
+OCCViewer_SetRotationPointDlg
+::onViewHide()
+{
+  hide();
+}
diff --git a/src/OCCViewer/OCCViewer_SetRotationPointDlg.h b/src/OCCViewer/OCCViewer_SetRotationPointDlg.h
new file mode 100644 (file)
index 0000000..18c1f65
--- /dev/null
@@ -0,0 +1,82 @@
+// 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_SETROTATIONPOINTDLG_H
+#define OCCVIEWER_SETROTATIONPOINTDLG_H
+
+#include "OCCViewer.h"
+
+#include <qdialog.h>
+
+class QtxAction;
+
+class QLineEdit;
+class QPushButton;
+class QGroupBox;
+class QButtonGroup;
+class QCheckBox;
+
+class OCCViewer_ViewWindow;
+
+class OCCVIEWER_EXPORT OCCViewer_SetRotationPointDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  OCCViewer_SetRotationPointDlg(OCCViewer_ViewWindow* , QWidget* parent = 0, 
+                               const char* name = 0, bool modal = FALSE, WFlags fl = 0);
+  ~OCCViewer_SetRotationPointDlg();
+
+  void SetAction( QtxAction* theAction ) { myAction = theAction; }
+  bool IsFirstShown();
+
+  void setCoords(double theX=0., double theY=0., double theZ=0.);
+  void toggleChange();
+
+protected:
+  OCCViewer_ViewWindow* myView;
+  QtxAction* myAction;
+
+  QCheckBox*    myIsBBCenter;
+
+  QButtonGroup* myGroupSelButton;
+  QPushButton*  myToOrigin;
+  QPushButton*  mySelectPoint;
+
+  QGroupBox* myGroupBoxCoord;
+  QLineEdit* myX;
+  QLineEdit* myY;
+  QLineEdit* myZ;
+
+  void setEnabled(QGroupBox* theGrp, const bool theState);
+
+protected slots:
+  void onBBCenterChecked();
+  
+  void onToOrigin();
+  void onSelectPoint();
+
+  void onCoordChanged();
+
+  void onClickClose();
+
+  void onViewShow();
+  void onViewHide();
+};
+
+#endif // OCCVIEWER_SETROTATIONPOINTDLG_H
index 6436c81dec9d7d561aae5c6b5c6f5286983edd35..3d799109ff37646d6494ca4585f7c64cbfeb204d 100755 (executable)
 #include "OCCViewer_ViewWindow.h"
 #include "SUIT_Desktop.h"
 
-int OCCViewer_ViewManager::myMaxId = 0;
-
 /*!
   Constructor
 */
 OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop, bool DisplayTrihedron )
-: SUIT_ViewManager( study, theDesktop )
+: SUIT_ViewManager( study, theDesktop, new OCCViewer_Viewer( DisplayTrihedron ) )
 {
-  myId = ++myMaxId;
-  setViewModel( new OCCViewer_Viewer( DisplayTrihedron ) );
+  setTitle( tr( "OCC_VIEW_TITLE" ) );
 }
 
 /*!
@@ -39,16 +36,6 @@ 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
index 352e873c5932cffdd4d6ecdba1135dca419eb1a0..ea88d3577790a60217be9a48ff6883391cd1a2b6 100755 (executable)
@@ -36,13 +36,6 @@ public:
   OCCViewer_Viewer* getOCCViewer() { return (OCCViewer_Viewer*) myViewModel; }
 
   virtual void      contextMenuPopup( QPopupMenu* );
-
-protected:
-  void              setViewName(SUIT_ViewWindow* theView);
-
-protected:
-  static  int       myMaxId;
-  int               myId;
 };
 
 #endif
index b3577414d9fff61336e64f06b25568567b75980c..5e64aafb371914ef13e06cded138e3adf315bb0e 100755 (executable)
@@ -129,6 +129,7 @@ void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view )
 {
   if ( view ) {
     view->initLayout();
+    view->initSketchers();
     
     OCCViewer_ViewPort3d* vp3d = view->getViewPort();
     if ( vp3d )
@@ -201,6 +202,8 @@ void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* t
   myEndPnt.setX(theEvent->x()); myEndPnt.setY(theEvent->y());
   OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*) theWindow;
   bool aHasShift = (theEvent->state() & Qt::ShiftButton);
+  
+  if (!aHasShift) emit deselection();
 
   if (myStartPnt == myEndPnt)
   {
@@ -250,7 +253,7 @@ void OCCViewer_Viewer::enableSelection(bool isEnabled)
     return;
 
   QPtrVector<SUIT_ViewWindow> wins = myViewManager->getViews();
-  for ( int i = 0; i < wins.count(); i++ )
+  for ( int i = 0; i < (int)wins.count(); i++ )
   {
     OCCViewer_ViewWindow* win = ::qt_cast<OCCViewer_ViewWindow*>( wins.at( i ) );
     if ( win )
@@ -270,7 +273,7 @@ void OCCViewer_Viewer::enableMultiselection(bool isEnable)
     return;
 
   QPtrVector<SUIT_ViewWindow> wins = myViewManager->getViews();
-  for ( int i = 0; i < wins.count(); i++ )
+  for ( int i = 0; i < (int)wins.count(); i++ )
   {
     OCCViewer_ViewWindow* win = ::qt_cast<OCCViewer_ViewWindow*>( wins.at( i ) );
     if ( win )
@@ -337,6 +340,10 @@ void OCCViewer_Viewer::update()
 {
   if (!myV3dViewer.IsNull())
     myV3dViewer->Update();
+
+  OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
+  if ( aView )
+    aView->updateGravityCoords();
 }
 
 /*!
@@ -358,7 +365,7 @@ void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList)
 {
   AIS_ListIteratorOfListOfInteractive aIt;
   for (aIt.Initialize(theList); aIt.More(); aIt.Next())
-    myAISContext->SetSelected(aIt.Value(), false);
+    myAISContext->AddOrRemoveSelected(aIt.Value(), false);
   myAISContext->UpdateCurrentViewer();
 }
 
@@ -517,7 +524,7 @@ void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj,
 void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject)& obj,
                                              int mode, bool update )
 {
-  myAISContext->SetDisplayMode( obj, (Standard_Integer)mode, true );
+  myAISContext->SetDisplayMode( obj, (Standard_Integer)mode, update );
   if( update )
     myV3dViewer->Update();
 }
@@ -572,11 +579,11 @@ void OCCViewer_Viewer::setTrihedronShown( const bool on )
 /*!
   \return trihedron size
 */
-int OCCViewer_Viewer::trihedronSize() const
+double OCCViewer_Viewer::trihedronSize() const
 {
-  int sz = 0;
+  double sz = 0;
   if ( !myTrihedron.IsNull() )
-    sz = (int)myTrihedron->Size();
+    sz = myTrihedron->Size();
   return sz;
 }
 
@@ -584,7 +591,7 @@ int OCCViewer_Viewer::trihedronSize() const
   Changes trihedron size
   \param sz - new size
 */
-void OCCViewer_Viewer::setTrihedronSize( const int sz )
+void OCCViewer_Viewer::setTrihedronSize( const double sz )
 {
   if ( !myTrihedron.IsNull() )
     myTrihedron->SetSize( sz );
index ebdc4704901c3c1d583ffc47810e539dd2f9a3d0..654dec238b0a2f1a34b32ab0734876042a3b18c4 100755 (executable)
@@ -102,8 +102,8 @@ public:
   bool                            isTrihedronVisible() const;
   virtual void                    setTrihedronShown( const bool );
 
-  int                             trihedronSize() const;
-  virtual void                    setTrihedronSize( const int );
+  double                          trihedronSize() const;
+  virtual void                    setTrihedronSize( const double );
 
 public slots:
   void                            onClearViewAspects();
@@ -139,6 +139,7 @@ public:
 
 signals:
   void selectionChanged();
+  void deselection();
 
 protected:
   void initView( OCCViewer_ViewWindow* view );
index bd5ace4c6c0f175c0c66cba7d6bf2736e61c609f..b0c6e617e92ee5ae0df3f86438e64ef90403adb6 100755 (executable)
@@ -104,9 +104,9 @@ static Colormap choose_cmap( Display *dpy, XVisualInfo *vi )
     XStandardColormap *c;
     int n, i;
 
-#ifdef DEBUG
-    cout << "Choosing cmap for vID = " << vi->visualid << endl;
-#endif
+    //#ifdef DEBUG
+    //cout << "Choosing cmap for vID = " << vi->visualid << endl;
+    //#endif
 
     if ( vi->visualid == XVisualIDFromVisual( (Visual*)QPaintDevice::x11AppVisual() ) )
        {
@@ -196,7 +196,7 @@ void OCCViewer_ViewPort::initialize()
 {
   myPopupActions.setAutoDelete( true );
   myPaintersRedrawing = false;
-  myEnableSketching = false;
+  myEnableSketching = true;
   myEnableTransform = true;
   
   setMouseTracking( true );
index 357dd8d0c0688274e3423d9f95ef21e20e83b12a..b4742b2930dcd7acfa8605f7a84e5759813478e3 100755 (executable)
@@ -35,6 +35,10 @@ class QPainter;
 class OCCViewer_ViewSketcher;
 class OCCViewer_ViewTransformer;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*!
   \class OCCViewer_ViewPort
   Visualisation canvas of SUIT-based application
@@ -111,4 +115,8 @@ private:
        static int                               nCounter;                              /* objects counter */
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 50930efbc9e676fd3a775bf42d48e005eff781da..cbeb3ce9c3a61f9b6a084eeeeaa455c9d9f20a83 100755 (executable)
@@ -20,6 +20,7 @@
 #include "OCCViewer_ViewPort3d.h"
 
 #include "OCCViewer_VService.h"
+#include "OCCViewer_ViewWindow.h"
 
 #include <qrect.h>
 #include <qevent.h>
 #include <Xw_Window.hxx>
 #endif
 
+static double rx = 0.;
+static double ry = 0.;
+static int sx = 0;
+static int sy = 0;
+static Standard_Boolean zRotation = Standard_False;
+
 /*!
     Constructor
 */
@@ -289,8 +296,12 @@ void OCCViewer_ViewPort3d::fitRect( const QRect& rect )
 */
 void OCCViewer_ViewPort3d::zoom( int x0, int y0, int x, int y )
 {
-       if ( !activeView().IsNull() )
-           activeView()->Zoom( x0, y0, x, y );
+  if ( !activeView().IsNull() ) {
+    // as OCCT respects a sign of only dx,
+    // but we want both signes to be taken into account
+    //activeView()->Zoom( x0, y0, x, y );
+    activeView()->Zoom( x0 + y0, 0, x + y, 0 );
+  }
 }
 
 /*!
@@ -314,25 +325,86 @@ void OCCViewer_ViewPort3d::pan( int dx, int dy )
 /*!
     Inits 'rotation' transformation. [ protected ]
 */
-void OCCViewer_ViewPort3d::startRotation( int x, int y )
+void OCCViewer_ViewPort3d::startRotation( int x, int y, 
+                                         int theRotationPointType,
+                                         const gp_Pnt& theSelectedPoint )
 {
-       if ( !activeView().IsNull() )
-  {
-               myDegenerated = activeView()->DegenerateModeIsOn();
-               activeView()->SetDegenerateModeOn();
-    if (myAnimate) activeView()->SetAnimationModeOn();
-               activeView()->StartRotation( x, y, 0.45 );
+  if ( !activeView().IsNull() )
+    {
+      myDegenerated = activeView()->DegenerateModeIsOn();
+      activeView()->SetDegenerateModeOn();
+      if (myAnimate) activeView()->SetAnimationModeOn();
+
+      //double gx, gy, gz;
+      //double gx = activeView()->gx;
+      //activeView()->Gravity(gx,gy,gz);
+
+      switch ( theRotationPointType ) {
+      case OCCViewer_ViewWindow::GRAVITY:
+       activeView()->StartRotation( x, y, 0.45 );
+       break;
+      case OCCViewer_ViewWindow::SELECTED:
+       sx = x; sy = y;
+       
+       double X,Y;
+       activeView()->Size(X,Y);
+       rx = Standard_Real(activeView()->Convert(X)); 
+       ry = Standard_Real(activeView()->Convert(Y)); 
+       
+       activeView()->Rotate( 0., 0., 0., 
+                             theSelectedPoint.X(),theSelectedPoint.Y(), theSelectedPoint.Z(), 
+                             Standard_True );
+       
+       Quantity_Ratio zRotationThreshold;
+       zRotation = Standard_False;
+       zRotationThreshold = 0.45;
+       if( zRotationThreshold > 0. ) {
+         Standard_Real dx = Abs(sx - rx/2.);
+         Standard_Real dy = Abs(sy - ry/2.);
+         Standard_Real dd = zRotationThreshold * (rx + ry)/2.;
+         if( dx > dd || dy > dd ) zRotation = Standard_True;
        }
+       break;
+      default:
+       break;
+      }
+    }
 }
 
 /*!
     Rotates the viewport. [ protected ]
 */
-void OCCViewer_ViewPort3d::rotate( int x, int y )
+void OCCViewer_ViewPort3d::rotate( int x, int y, 
+                                  int theRotationPointType,
+                                  const gp_Pnt& theSelectedPoint )
 {
-       if ( !activeView().IsNull() )
-           activeView()->Rotation( x, y );
-//  setZSize( getZSize() );
+  if ( !activeView().IsNull() ) {
+    switch ( theRotationPointType ) {
+    case OCCViewer_ViewWindow::GRAVITY:
+      activeView()->Rotation( x, y );
+      break;
+    case OCCViewer_ViewWindow::SELECTED:
+      double dx, dy, dz;
+      if( zRotation ) {
+       dz = atan2(Standard_Real(x)-rx/2., ry/2.-Standard_Real(y)) - 
+         atan2(sx-rx/2.,ry/2.-sy);
+       dx = dy = 0.;
+      }
+      else {
+       dx = (Standard_Real(x) - sx) * Standard_PI/rx;
+       dy = (sy - Standard_Real(y)) * Standard_PI/ry;
+       dz = 0.;
+      }
+      
+      activeView()->Rotate( dx, dy, dz, 
+                           theSelectedPoint.X(),theSelectedPoint.Y(), theSelectedPoint.Z(),
+                           Standard_False );
+      break;
+    default:
+      break;
+    }
+  }
+  //  setZSize( getZSize() );
 }
 
 /*!
@@ -340,15 +412,15 @@ void OCCViewer_ViewPort3d::rotate( int x, int y )
 */
 void OCCViewer_ViewPort3d::endRotation()
 {
-       if ( !activeView().IsNull() )
-  {
-    if (myAnimate) activeView()->SetAnimationModeOff();
-               if ( !myDegenerated )
-      activeView()->SetDegenerateModeOff();
-    activeView()->ZFitAll(1.);
-    activeView()->SetZSize(0.);
-    activeView()->Update();
-       }
+  if ( !activeView().IsNull() )
+    {
+      if (myAnimate) activeView()->SetAnimationModeOff();
+      if ( !myDegenerated )
+       activeView()->SetDegenerateModeOff();
+      activeView()->ZFitAll(1.);
+      activeView()->SetZSize(0.);
+      activeView()->Update();
+    }
 }
 
 /*!
index 204b8eb995eb6be3cb5d5052ee7f3abcd4a97b6d..4f840bd02f8a23a1759ffcfcca726078115c4a73 100755 (executable)
 
 class QRect;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 class OCCVIEWER_EXPORT OCCViewer_ViewPort3d: public OCCViewer_ViewPort
 {
        Q_OBJECT
@@ -64,8 +68,8 @@ public:
        virtual void            zoom( int, int, int, int );
   virtual void         fitAll( bool keepScale = false, bool withZ = true, bool upd = true );
 
-       void                    startRotation( int, int );
-       void                    rotate( int, int );
+       void                    startRotation( int, int, int, const gp_Pnt& );
+       void                    rotate( int, int, int, const gp_Pnt& );
        void                    endRotation();
 
 protected:
@@ -89,4 +93,8 @@ private:
        double  myScale;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
diff --git a/src/OCCViewer/OCCViewer_ViewSketcher.cxx b/src/OCCViewer/OCCViewer_ViewSketcher.cxx
new file mode 100755 (executable)
index 0000000..a6e8d8e
--- /dev/null
@@ -0,0 +1,536 @@
+// 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
+//
+
+#include "OCCViewer_ViewSketcher.h"
+#include "OCCViewer_ViewWindow.h"
+#include "OCCViewer_ViewPort3d.h"
+
+#include <qapplication.h>
+#include <qpainter.h>
+#include <qpointarray.h>
+
+/****************************************************************
+**  Class: OCCViewer_ViewSketcher
+**  Level: Public
+*****************************************************************/
+
+OCCViewer_ViewSketcher::OCCViewer_ViewSketcher( OCCViewer_ViewWindow* vw, int type )
+: QObject( vw ),
+mySketchButton( Qt::LeftButton ),
+mypViewWindow( vw ),
+myType( type ),
+mypData( 0 ),
+myResult( Neutral ),
+myButtonState( 0 )
+{
+}
+
+OCCViewer_ViewSketcher::~OCCViewer_ViewSketcher()
+{
+}
+
+void OCCViewer_ViewSketcher::activate()
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  mySavedCursor = avp->cursor();
+  avp->setCursor( Qt::PointingHandCursor );
+  avp->installEventFilter( this );
+  qApp->installEventFilter( this );
+
+  connect( avp, SIGNAL( vpDrawExternal( QPainter* ) ), this, SLOT( onDrawViewPort() ) );
+
+  myStart = QPoint();
+  myResult = Neutral;
+
+  onActivate();
+}
+
+void OCCViewer_ViewSketcher::deactivate()
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  disconnect( avp, SIGNAL( vpDrawExternal( QPainter* ) ), this, SLOT( onDrawViewPort() ) );
+
+  qApp->removeEventFilter( this );
+  avp->removeEventFilter( this );
+  avp->setCursor( mySavedCursor );
+
+  onDeactivate();
+}
+
+int OCCViewer_ViewSketcher::type() const
+{
+  return myType;
+}
+
+void* OCCViewer_ViewSketcher::data() const
+{
+  return mypData;
+}
+
+int OCCViewer_ViewSketcher::result() const
+{
+  return myResult;
+}
+
+int OCCViewer_ViewSketcher::buttonState() const
+{
+  return myButtonState;
+}
+
+void OCCViewer_ViewSketcher::onActivate()
+{
+}
+
+void OCCViewer_ViewSketcher::onDeactivate()
+{
+}
+
+bool OCCViewer_ViewSketcher::isDefault() const
+{
+  return true;
+}
+
+bool OCCViewer_ViewSketcher::eventFilter( QObject* o, QEvent* e )
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  SketchState state = EnTrain;
+  bool ignore = false;
+  if ( o == avp )
+  {
+    switch ( e->type() )
+    {
+      case QEvent::MouseMove:
+      case QEvent::MouseButtonPress:
+      case QEvent::MouseButtonRelease:
+      case QEvent::MouseButtonDblClick:
+      {
+        QMouseEvent* me = (QMouseEvent*)e;
+
+        myButtonState = me->state();
+        if ( e->type() == QEvent::MouseButtonPress )
+          myButtonState |= me->button();
+
+        if ( myStart.isNull() && ( myButtonState & sketchButton() ) )
+        {
+          state = Debut;
+          myStart = me->pos();
+        }
+
+        myCurr = me->pos();
+
+        onMouse( me );
+
+        if ( myResult != Neutral )
+          state = Fin;
+
+        ignore = true;
+        break;
+      }
+      case QEvent::Hide:
+      case QEvent::HideToParent:
+        myResult = Reject;
+        onSketch( Fin );
+        break;
+      default:
+        break;
+    }
+  }
+  if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease )
+  {
+    ignore = onKey( (QKeyEvent*)e );
+    if ( myResult != Neutral )
+      state = Fin;
+  }
+
+  if ( ignore )
+  {
+    onSketch( state );
+    return true;
+  }
+  return QObject::eventFilter( o, e );
+}
+
+void OCCViewer_ViewSketcher::onDrawViewPort()
+{
+  onSketch( Debut );
+}
+
+bool OCCViewer_ViewSketcher::onKey( QKeyEvent* )
+{
+  return false;
+}
+
+void OCCViewer_ViewSketcher::onMouse( QMouseEvent* )
+{
+}
+
+int OCCViewer_ViewSketcher::sketchButton()
+{
+  return mySketchButton;
+}
+
+void OCCViewer_ViewSketcher::setSketchButton( int b )
+{
+  mySketchButton = b;
+}
+
+/****************************************************************
+**  Class: OCCViewer_RectSketcher
+**  Level: Public
+*****************************************************************/
+
+OCCViewer_RectSketcher::OCCViewer_RectSketcher( OCCViewer_ViewWindow* vw, int typ )
+: OCCViewer_ViewSketcher( vw, typ )
+{
+}
+
+OCCViewer_RectSketcher::~OCCViewer_RectSketcher()
+{
+  delete mypData;
+}
+
+void OCCViewer_RectSketcher::onActivate()
+{
+  mypData = new QRect();
+}
+
+void OCCViewer_RectSketcher::onDeactivate()
+{
+  delete mypData;
+  mypData = 0;
+}
+
+bool OCCViewer_RectSketcher::onKey( QKeyEvent* e )
+{
+  if ( e->key() == Qt::Key_Escape )
+    myResult = Reject;
+  else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return )
+    myResult = Accept;
+
+  return true;
+}
+
+void OCCViewer_RectSketcher::onMouse( QMouseEvent* e )
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  if ( avp->rect().contains( myCurr ) )
+    avp->setCursor( Qt::PointingHandCursor );
+  else
+    avp->setCursor( Qt::ForbiddenCursor );
+
+  if ( e->type() == QEvent::MouseButtonRelease && e->button() == sketchButton() )
+  {
+    myResult = Accept;
+    QApplication::postEvent( avp, new QMouseEvent( e->type(), e->pos(),
+                                                   e->globalPos(), e->state(), e->button() ) );
+  }
+}
+
+void OCCViewer_RectSketcher::onSketch( SketchState state )
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  QRect* sketchRect = (QRect*)data();
+  if ( myButtonState & sketchButton() )
+  {
+    QRect rect( QMIN( myStart.x(), myCurr.x() ), QMIN( myStart.y(), myCurr.y() ),
+                QABS( myStart.x() - myCurr.x() ), QABS( myStart.y() - myCurr.y() ) );
+    QPainter p( avp );
+    p.setPen( Qt::white );
+    p.setRasterOp( Qt::XorROP );
+    if ( state != Debut && !sketchRect->isEmpty() )
+      p.drawRect( *sketchRect );
+    *sketchRect = rect;
+    if ( !rect.isEmpty() && state != Fin )
+      p.drawRect( *sketchRect );
+  }
+
+  if ( state == Fin )
+  {
+    QApplication::syncX();  /* force rectangle redrawing */
+    mypViewWindow->activateSketching( OCCViewer_ViewWindow::NoSketching );
+  }
+}
+
+/****************************************************************
+**  Class: OCCViewer_PolygonSketcher
+**  Level: Public
+*****************************************************************/
+
+OCCViewer_PolygonSketcher::OCCViewer_PolygonSketcher( OCCViewer_ViewWindow* vw, int typ )
+: OCCViewer_ViewSketcher( vw, typ ),
+  myDbl           ( false ),
+  myToler         ( 5, 5 ),
+  mypPoints        ( 0L ),
+  myAddButton     ( 0 ),
+  myDelButton     ( 0 )
+{
+  mySketchButton = Qt::RightButton;
+}
+
+OCCViewer_PolygonSketcher::~OCCViewer_PolygonSketcher()
+{
+  delete mypPoints;
+  delete mypData;
+}
+
+void OCCViewer_PolygonSketcher::onActivate()
+{
+  myDbl = false;
+  mypData = new QPointArray( 0 );
+  mypPoints = new QPointArray( 0 );
+
+  switch ( sketchButton() )
+  {
+  case Qt::LeftButton:
+    myAddButton = Qt::RightButton;
+    myDelButton = Qt::MidButton;
+    break;
+  case Qt::MidButton:
+    myAddButton = Qt::LeftButton;
+    myDelButton = Qt::RightButton;
+    break;
+  case Qt::RightButton:
+  default:
+    myAddButton = Qt::LeftButton;
+    myDelButton = Qt::MidButton;
+    break;
+  };
+}
+
+void OCCViewer_PolygonSketcher::onDeactivate()
+{
+  delete mypPoints;
+  mypPoints = 0;
+  delete mypData;
+  mypData = 0;
+}
+
+bool OCCViewer_PolygonSketcher::onKey( QKeyEvent* e )
+{
+  if ( e->key() == Qt::Key_Escape )
+  {
+    myResult = Reject;
+    return true;
+  }
+  else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return )
+  {
+    QPointArray* points = (QPointArray*)data();
+    if ( points->count() )
+    {
+      QPoint last = points->point( points->count() - 1 );
+      if ( last != myCurr )
+      {
+        points->resize( points->count() + 1 );
+        points->setPoint( points->count() - 1, myCurr );
+      }
+    }
+    myResult = Accept;
+    return true;
+  }
+  else if ( e->key() == Qt::Key_Backspace && e->type() == QEvent::KeyRelease )
+  {
+    QPointArray* points = (QPointArray*)data();
+    if ( points->count() > 1 )
+      points->resize( points->count() - 1 );
+    onMouse( 0 );
+    return true;
+  }
+
+  return true;
+}
+
+void OCCViewer_PolygonSketcher::onMouse( QMouseEvent* e )
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  QPointArray* points = (QPointArray*)data();
+  if ( !points->count() && !myStart.isNull() )
+  {
+    points->resize( points->count() + 1 );
+    points->setPoint( points->count() - 1, myStart );
+  }
+
+  bool closed = false;
+  bool valid = avp->rect().contains( myCurr );
+  if ( !myStart.isNull() )
+  {
+    QRect aRect( myStart.x() - myToler.width(), myStart.y() - myToler.height(),
+                 2 * myToler.width(), 2 * myToler.height() );
+    closed = aRect.contains( myCurr );
+  }
+  valid = valid && isValid( points, myCurr );
+  if ( closed && !valid )
+    closed = false;
+
+  if ( closed )
+    avp->setCursor( Qt::CrossCursor );
+  else if ( valid )
+    avp->setCursor( Qt::PointingHandCursor );
+  else
+    avp->setCursor( Qt::ForbiddenCursor );
+
+  if ( !e )
+    return;
+
+  if ( e->type() == QEvent::MouseButtonRelease && ( e->button() & sketchButton() ) )
+  {
+    myResult = Reject;
+    QApplication::postEvent( avp, new QMouseEvent( e->type(), e->pos(),
+                                                   e->globalPos(), e->state(), e->button() ) );
+  }
+  else if ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myAddButton ) )
+  {
+    if ( closed )
+      myResult = Accept;
+    else
+    {
+      if ( myStart.isNull() )
+        myStart = myCurr;
+      else
+      {
+        QPoint last = points->point( points->count() - 1 );
+        if ( last != myCurr && valid )
+        {
+          points->resize( points->count() + 1 );
+          points->setPoint( points->count() - 1, myCurr );
+        }
+        if ( valid && myDbl )
+          myResult = Accept;
+      }
+    }
+  }
+  else if ( ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myDelButton ) ) ||
+            ( e->type() == QEvent::MouseButtonDblClick && ( e->button() & myDelButton ) ) )
+  {
+    if ( points->count() > 1 )
+      points->resize( points->count() - 1 );
+    onMouse( 0 );
+  }
+  myDbl = e->type() == QEvent::MouseButtonDblClick && ( e->button() & myAddButton );
+}
+
+void OCCViewer_PolygonSketcher::onSketch( SketchState state )
+{
+  OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+  QPointArray* points = (QPointArray*)data();
+  QPainter p( avp );
+  p.setPen( Qt::white );
+  p.setRasterOp( Qt::XorROP );
+  if ( state != Debut )
+    p.drawPolyline( *mypPoints );
+
+  if ( points->count() )
+  {
+    mypPoints->resize( points->count() + 1 );
+    for ( uint i = 0; i < points->count(); i++ )
+      mypPoints->setPoint( i, points->point( i ) );
+    mypPoints->setPoint( points->count(), myCurr );
+    if ( state != Fin )
+      p.drawPolyline( *mypPoints );
+  }
+
+  if ( state == Fin )
+  {
+    QApplication::syncX();
+    mypViewWindow->activateSketching( OCCViewer_ViewWindow::NoSketching );
+  }
+}
+
+bool OCCViewer_PolygonSketcher::isValid( const QPointArray* aPoints, const QPoint& aCur ) const
+{
+  if ( !aPoints->count() )
+    return true;
+
+  if ( aPoints->count() == 1 && aPoints->point( 0 ) == aCur )
+    return false;
+
+  const QPoint& aLast = aPoints->point( aPoints->count() - 1 );
+
+  if ( aLast == aCur )
+    return true;
+
+  bool res = true;
+  for ( uint i = 0; i < aPoints->count() - 1 && res; i++ )
+  {
+    const QPoint& aStart = aPoints->point( i );
+    const QPoint& anEnd  = aPoints->point( i + 1 );
+    res = !isIntersect( aStart, anEnd, aCur, aLast );
+  }
+
+  return res;
+}
+
+bool OCCViewer_PolygonSketcher::isIntersect( const QPoint& aStart1, const QPoint& anEnd1,
+                                            const QPoint& aStart2, const QPoint& anEnd2 ) const
+{
+  if ( ( aStart1 == aStart2 && anEnd1 == anEnd2 ) ||
+       ( aStart1 == anEnd2 && anEnd1 == aStart2 ) )
+    return true;
+
+  if ( aStart1 == aStart2 || aStart2 == anEnd1 ||
+       aStart1 == anEnd2 || anEnd1 == anEnd2 )
+    return false;
+
+  double x11 = aStart1.x() * 1.0;
+  double x12 = anEnd1.x() * 1.0;
+  double y11 = aStart1.y() * 1.0;
+  double y12 = anEnd1.y() * 1.0;
+
+  double x21 = aStart2.x() * 1.0;
+  double x22 = anEnd2.x() * 1.0;
+  double y21 = aStart2.y() * 1.0;
+  double y22 = anEnd2.y() * 1.0;
+
+  double k1 = x12 == x11 ? 0 : ( y12 - y11 ) / ( x12 - x11 );
+  double k2 = x22 == x21 ? 0 : ( y22 - y21 ) / ( x22 - x21 );
+
+  double b1 = y11 - k1 * x11;
+  double b2 = y21 - k2 * x21;
+
+  if ( k1 == k2 )
+  {
+    if ( b1 != b2 )
+      return false;
+    else
+      return !( ( QMAX( x11, x12 ) <= QMIN( x21, x22 ) ||
+                  QMIN( x11, x12 ) >= QMAX( x21, x22 ) ) &&
+                ( QMAX( y11, y12 ) <= QMIN( y21, y22 ) ||
+                  QMIN( y11, y12 ) >= QMAX( y21, y22 ) ) );
+  }
+  else
+  {
+    double x0 = ( b2 - b1 ) / ( k1 - k2 );
+    double y0 = ( k1 * b2 - k2 * b1 ) / ( k1 - k2 );
+
+    if ( QMIN( x11, x12 ) < x0 && x0 < QMAX( x11, x12 ) &&
+         QMIN( y11, y12 ) < y0 && y0 < QMAX( y11, y12 ) &&
+         QMIN( x21, x22 ) < x0 && x0 < QMAX( x21, x22 ) &&
+         QMIN( y21, y22 ) < y0 && y0 < QMAX( y21, y22 ) )
+      return true;
+  }
+  return false;
+}
+
+
diff --git a/src/OCCViewer/OCCViewer_ViewSketcher.h b/src/OCCViewer/OCCViewer_ViewSketcher.h
new file mode 100755 (executable)
index 0000000..367ece1
--- /dev/null
@@ -0,0 +1,137 @@
+// 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
+//
+#ifndef OCCVIEWER_VIEWSKETCHER_H
+#define OCCVIEWER_VIEWSKETCHER_H
+
+#include "OCCViewer.h"
+
+#include <qobject.h>
+#include <qcursor.h>
+
+class OCCViewer_ViewWindow;
+
+#ifdef WNT
+#pragma warning ( disable:4251 )
+#endif
+
+/*!
+  \class OCCViewer_ViewSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_ViewSketcher : public QObject
+{
+  Q_OBJECT
+
+public:
+  enum { Neutral, Accept, Reject };
+
+public:
+  OCCViewer_ViewSketcher( OCCViewer_ViewWindow*, int );
+  virtual ~OCCViewer_ViewSketcher();
+
+public:
+  int                          type() const;
+  int                          result() const;
+  int                          buttonState() const;
+  void*                        data() const;
+
+  void                         activate();
+  void                         deactivate();
+
+  int                          sketchButton();
+  void                         setSketchButton( int );
+
+  virtual bool                 isDefault() const;
+  virtual bool                 eventFilter( QObject*, QEvent* );
+
+private slots:
+  void                         onDrawViewPort();
+
+protected:
+  enum SketchState { Debut, EnTrain, Fin };
+  virtual bool                 onKey( QKeyEvent* );
+  virtual void                 onMouse( QMouseEvent* );
+  virtual void                 onSketch( SketchState ) = 0;
+  virtual void                 onActivate();
+  virtual void                 onDeactivate();
+
+protected:
+  int                          mySketchButton;
+  OCCViewer_ViewWindow*        mypViewWindow;
+  int                          myType;
+  void*                        mypData;
+  int                          myResult;
+  QCursor                      mySavedCursor;
+  QPoint                       myStart, myCurr;
+  int                          myButtonState;
+};
+
+/*!
+  \class OCCViewer_RectSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_RectSketcher : public OCCViewer_ViewSketcher
+{
+public:
+  OCCViewer_RectSketcher( OCCViewer_ViewWindow*, int );
+  virtual ~OCCViewer_RectSketcher();
+
+protected:
+  virtual bool                 onKey( QKeyEvent* );
+  virtual void                 onMouse( QMouseEvent* );
+  virtual void                 onSketch( SketchState );
+  virtual void                 onActivate();
+  virtual void                 onDeactivate();
+};
+
+/*!
+  \class OCCViewer_PolygonSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_PolygonSketcher : public OCCViewer_ViewSketcher
+{
+public:
+  OCCViewer_PolygonSketcher( OCCViewer_ViewWindow*, int );
+  virtual ~OCCViewer_PolygonSketcher();
+
+protected:
+  virtual bool                 onKey( QKeyEvent* );
+  virtual void                 onMouse( QMouseEvent* );
+  virtual void                 onSketch( SketchState );
+  virtual void                 onActivate();
+  virtual void                 onDeactivate();
+
+private:
+  bool                         isValid( const QPointArray*, const QPoint& ) const;
+  bool                         isIntersect( const QPoint&, const QPoint&,
+                                            const QPoint&, const QPoint& ) const;
+
+private:
+  bool                         myDbl;
+  QSize                        myToler;
+  QPointArray*                 mypPoints;
+  int                          myAddButton;
+  int                          myDelButton;
+};
+
+#ifdef WNT
+#pragma warning( default:4251 )
+#endif
+
+#endif
index cef3b10d89cd5b8702f4d53b3e7d34c056fcdb5a..78bd7147e870c31cda7a521668d7c1fd5b761668 100755 (executable)
 #include "OCCViewer_ViewWindow.h"
 #include "OCCViewer_ViewModel.h"
 #include "OCCViewer_ViewPort3d.h"
+#include "OCCViewer_ViewManager.h"
+#include "OCCViewer_ViewSketcher.h"
 #include "OCCViewer_CreateRestoreViewDlg.h"
 #include "OCCViewer_ClippingDlg.h"
+#include "OCCViewer_SetRotationPointDlg.h"
 
 #include "SUIT_Desktop.h"
 #include "SUIT_Session.h"
 #include <V3d_Plane.hxx>
 #include <gp_Dir.hxx>
 #include <gp_Pln.hxx>
+#include <TColgp_Array1OfPnt2d.hxx>
+
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <AIS_Shape.hxx>
+
+#include <BRep_Tool.hxx>
+#include <TopoDS.hxx>
+
+#include <BRepBndLib.hxx>
+#include <Graphic3d_MapIteratorOfMapOfStructure.hxx>
+#include <Visual3d_View.hxx>
+#include <Graphic3d_MapOfStructure.hxx>
+#include <Graphic3d_Structure.hxx>
+
+static QEvent* l_mbPressEvent = 0;
 
 const char* imageZoomCursor[] = { 
 "32 32 3 1",
@@ -174,6 +192,10 @@ OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_V
   myEnableDrawMode = false;
   updateEnabledDrawMode();
   myClippingDlg = 0;
+  mySetRotationPointDlg = 0;
+
+  mypSketcher = 0;
+  myCurSketch = -1;
 }
 
 /*!
@@ -184,9 +206,14 @@ void OCCViewer_ViewWindow::initLayout()
   myViewPort = new OCCViewer_ViewPort3d( this, myModel->getViewer3d(), V3d_ORTHOGRAPHIC );
   myViewPort->setBackgroundColor(black);
   myViewPort->installEventFilter(this);
-       setCentralWidget(myViewPort);
+  setCentralWidget(myViewPort);
   myOperation = NOTHING;
 
+  myCurrPointType = GRAVITY;
+  myPrevPointType = GRAVITY;
+  mySelectedPoint = gp_Pnt(0.,0.,0.);
+  myRotationPointSelection = false;
+
   setTransformRequested ( NOTHING );
   setTransformInProcess ( false );
 
@@ -305,7 +332,7 @@ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent)
 
   case ROTATE:
     if ( theEvent->button() == Qt::LeftButton ) {
-           myViewPort->startRotation(myStartX, myStartY);
+           myViewPort->startRotation(myStartX, myStartY, myCurrPointType, mySelectedPoint);
            emit vpTransformationStarted ( ROTATE );
          }
     break;
@@ -321,10 +348,44 @@ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent)
       break;
     case ROTATE:
            activateRotation();
-           myViewPort->startRotation(myStartX, myStartY);
+           myViewPort->startRotation(myStartX, myStartY, myCurrPointType, mySelectedPoint);
       break;
     default:
-      emit mousePressed(this, theEvent);
+      if ( myRotationPointSelection )
+      {
+       if ( theEvent->button() == Qt::LeftButton )
+       {
+         Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+         ic->Select();
+         for ( ic->InitSelected(); ic->MoreSelected(); ic->NextSelected() )
+         {
+           TopoDS_Shape aShape = ic->SelectedShape();
+           if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX )
+           {
+             gp_Pnt aPnt = BRep_Tool::Pnt( TopoDS::Vertex( ic->SelectedShape() ) ); 
+             if ( mySetRotationPointDlg )
+             {
+               myRotationPointSelection = false;
+               mySetRotationPointDlg->setCoords(aPnt.X(), aPnt.Y(), aPnt.Z());
+             }
+           }    
+           else 
+           {
+             myCurrPointType = myPrevPointType;
+             break;
+           }
+         }
+         if ( ic->NbSelected() == 0 ) myCurrPointType = myPrevPointType;
+         if ( mySetRotationPointDlg ) mySetRotationPointDlg->toggleChange();
+         ic->CloseAllContexts();
+         myOperation = NOTHING; 
+         setCursor( myCursor );
+         myCursorIsHand = false;
+         myRotationPointSelection = false;
+       }
+      }
+      else
+       emit mousePressed(this, theEvent);
       break;
     }
     /* notify that we start a transformation */
@@ -333,6 +394,11 @@ void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent)
   }
   if ( transformRequested() ) 
     setTransformInProcess( true );              
+
+  /* we may need it for sketching... */
+  if ( l_mbPressEvent )
+    delete l_mbPressEvent;
+  l_mbPressEvent = new QMouseEvent( *theEvent );
 }
 
 
@@ -384,6 +450,167 @@ void OCCViewer_ViewWindow::activateRotation()
   }
 }
 
+/*!
+  Compute the gravity center
+*/
+bool OCCViewer_ViewWindow::computeGravityCenter( double& theX, double& theY, double& theZ )
+{
+  Handle(Visual3d_View) aView = myViewPort->getView()->View();
+
+  Standard_Real Xmin,Ymin,Zmin,Xmax,Ymax,Zmax,U,V,W ;
+  Standard_Real Umin,Vmin,Umax,Vmax ;
+  Standard_Integer Nstruct,Npoint ;
+  Graphic3d_MapOfStructure MySetOfStructures;
+  
+  aView->DisplayedStructures (MySetOfStructures);
+  Nstruct = MySetOfStructures.Extent() ;
+  
+  Graphic3d_MapIteratorOfMapOfStructure MyIterator(MySetOfStructures) ;
+  aView->ViewMapping().WindowLimit(Umin,Vmin,Umax,Vmax) ;
+  Npoint = 0 ; theX = theY = theZ = 0. ;
+  for( ; MyIterator.More(); MyIterator.Next()) {
+    if (!(MyIterator.Key())->IsEmpty()) {
+      (MyIterator.Key())->MinMaxValues(Xmin,Ymin,Zmin,
+                                         Xmax,Ymax,Zmax) ;
+    
+      Standard_Real LIM = ShortRealLast() -1.;
+      if (!    (fabs(Xmin) > LIM || fabs(Ymin) > LIM || fabs(Zmin) > LIM 
+                ||  fabs(Xmax) > LIM || fabs(Ymax) > LIM || fabs(Zmax) > LIM )) {
+        
+        aView->Projects(Xmin,Ymin,Zmin,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmin ; theY += Ymin ; theZ += Zmin ;
+        }
+        aView->Projects(Xmax,Ymin,Zmin,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmax ; theY += Ymin ; theZ += Zmin ;
+        }
+        aView->Projects(Xmin,Ymax,Zmin,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmin ; theY += Ymax ; theZ += Zmin ;
+        }
+        aView->Projects(Xmax,Ymax,Zmin,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmax ; theY += Ymax ; theZ += Zmin ;
+        }
+        aView->Projects(Xmin,Ymin,Zmax,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmin ; theY += Ymin ; theZ += Zmax ;
+        }
+        aView->Projects(Xmax,Ymin,Zmax,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmax ; theY += Ymin ; theZ += Zmax ;
+        }
+        aView->Projects(Xmin,Ymax,Zmax,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmin ; theY += Ymax ; theZ += Zmax ;
+        }
+        aView->Projects(Xmax,Ymax,Zmax,U,V,W) ;
+        if( U >= Umin && U <= Umax && V >= Vmin && V <= Vmax ) {
+          Npoint++ ; theX += Xmax ; theY += Ymax ; theZ += Zmax ;
+        }
+      }
+    }
+  }
+  if( Npoint > 0 ) {
+    theX /= Npoint ; theY /= Npoint ; theZ /= Npoint ;
+  }
+  return true;
+}
+
+/*!
+  Set the gravity center as a rotation point
+*/
+void OCCViewer_ViewWindow::activateSetRotationGravity()
+{
+  if ( myRotationPointSelection )
+  {
+    Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+    ic->CloseAllContexts();
+    myOperation = NOTHING; 
+    setCursor( myCursor );
+    myCursorIsHand = false;
+    myRotationPointSelection = false;
+  }
+
+  myPrevPointType = myCurrPointType;
+  myCurrPointType = GRAVITY;
+
+  Standard_Real Xcenter, Ycenter, Zcenter;
+  if ( computeGravityCenter( Xcenter, Ycenter, Zcenter ) )
+    mySetRotationPointDlg->setCoords( Xcenter, Ycenter, Zcenter );
+}
+
+/*!
+  Update gravity center in the SetRotationPointDlg
+*/
+void OCCViewer_ViewWindow::updateGravityCoords()
+{
+  if ( mySetRotationPointDlg && mySetRotationPointDlg->isShown() && myCurrPointType == GRAVITY )
+  {
+    Standard_Real Xcenter, Ycenter, Zcenter;
+    if ( computeGravityCenter( Xcenter, Ycenter, Zcenter ) )
+      mySetRotationPointDlg->setCoords( Xcenter, Ycenter, Zcenter );
+  }
+}
+
+/*!
+  Set the point selected by user as a rotation point
+*/
+void OCCViewer_ViewWindow::activateSetRotationSelected(double theX, double theY, double theZ)
+{
+  if ( myRotationPointSelection )
+  {
+    Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+    ic->CloseAllContexts();
+    myOperation = NOTHING; 
+    setCursor( myCursor );
+    myCursorIsHand = false;
+    myRotationPointSelection = false;
+  }
+
+  myPrevPointType = myCurrPointType;
+  myCurrPointType = SELECTED;
+  mySelectedPoint.SetCoord(theX,theY,theZ);
+}
+
+/*!
+  Start the point selection process
+*/
+void OCCViewer_ViewWindow::activateStartPointSelection()
+{
+  myPrevPointType = myCurrPointType;
+  myCurrPointType = SELECTED;
+
+  // activate selection ------>
+  Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+
+  ic->OpenLocalContext();
+
+  AIS_ListOfInteractive aList;
+  ic->DisplayedObjects( aList );
+  for ( AIS_ListIteratorOfListOfInteractive it( aList ); it.More(); it.Next() ) 
+  {
+    Handle(AIS_InteractiveObject) anObj = it.Value();
+    if ( !anObj.IsNull() && anObj->HasPresentation() &&
+         anObj->IsKind( STANDARD_TYPE(AIS_Shape) ) )
+    {
+      ic->Load(anObj,-1);
+      ic->Activate(anObj,AIS_Shape::SelectionMode(TopAbs_VERTEX));
+     }
+  }  
+  // activate selection <------
+
+  if ( !myCursorIsHand )
+  {
+    QCursor handCursor (Qt::PointingHandCursor);
+    myCursorIsHand = true;             
+    myCursor = cursor();
+    setCursor( handCursor );
+  }
+  myRotationPointSelection = true;
+}
+
 /*!
   Starts global panning operation, sets corresponding cursor
 */
@@ -424,7 +651,7 @@ void OCCViewer_ViewWindow::activateWindowFit()
 void OCCViewer_ViewWindow::setTransformRequested ( OperationType op )
 {    
   myOperation = op;
-  myViewPort->setMouseTracking( myOperation == NOTHING );  
+  myViewPort->setMouseTracking( myOperation == NOTHING );
 }
 
 
@@ -437,7 +664,7 @@ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent)
   myCurrY = theEvent->y();
   switch (myOperation) {
   case ROTATE:
-    myViewPort->rotate(myCurrX, myCurrY);
+    myViewPort->rotate(myCurrX, myCurrY, myCurrPointType, mySelectedPoint);
     break;
     
   case ZOOMVIEW:
@@ -461,24 +688,54 @@ void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent)
     break;
     
   default:
-    int aState = theEvent->state();
-    //int aButton = theEvent->button();
-    if ( aState == Qt::LeftButton ||
-       aState == ( Qt::LeftButton | Qt::ShiftButton) ) {
-      myDrawRect = myEnableDrawMode;
-      if ( myDrawRect ) {
-        drawRect();
-       if ( !myCursorIsHand )  {   // we are going to sketch a rectangle
-          QCursor handCursor (Qt::PointingHandCursor);
-         myCursorIsHand = true;                
-         myCursor = cursor();
-         setCursor( handCursor );
+    if ( myRotationPointSelection )
+      emit mouseMoving( this, theEvent ); 
+    else
+    {
+      int aState = theEvent->state();
+      if ( aState == Qt::LeftButton ||
+          aState == ( Qt::LeftButton | Qt::ShiftButton) ) {
+       myDrawRect = myEnableDrawMode;
+       if ( myDrawRect ) {
+         drawRect();
+         if ( !myCursorIsHand )        {   // we are going to sketch a rectangle
+           QCursor handCursor (Qt::PointingHandCursor);
+           myCursorIsHand = true;              
+           myCursor = cursor();
+           setCursor( handCursor );
+         }
+       }
+      } 
+      else if ( aState == Qt::RightButton || 
+               aState == ( Qt::RightButton | Qt::ShiftButton ) ) {
+       OCCViewer_ViewSketcher* sketcher = 0;
+       for ( OCCViewer_ViewSketcher* sk = mySketchers.first();
+             sk && !sketcher; sk = mySketchers.next() )
+       {
+         if( sk->isDefault() && sk->sketchButton() & ( aState & Qt::MouseButtonMask ) )
+           sketcher = sk;
+       }
+       if ( sketcher && myCurSketch == -1 )
+       {
+         activateSketching( sketcher->type() );
+         if ( mypSketcher )
+         {
+           myCurSketch = mypSketcher->sketchButton();
+
+           if ( l_mbPressEvent )
+           {
+             QApplication::sendEvent( getViewPort(), l_mbPressEvent );
+             delete l_mbPressEvent;
+             l_mbPressEvent = 0;
+           }
+           QApplication::sendEvent( getViewPort(), theEvent );
+         }
        }
       }
-    } 
-    else {
-      emit mouseMoving( this, theEvent ); 
-    }          
+      else {
+       emit mouseMoving( this, theEvent ); 
+      }        
+    }  
   }
 }
 
@@ -490,13 +747,24 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent)
   switch ( myOperation ) {
   case NOTHING:
     {
+      int prevState = myCurSketch;
+      if(theEvent->state() == RightButton)
+      {
+       for ( OCCViewer_ViewSketcher* sk = mySketchers.first();
+             sk && myCurSketch != -1; sk = mySketchers.next() )
+       {
+         if( ( sk->sketchButton() & theEvent->state() ) && sk->sketchButton() == myCurSketch )
+           myCurSketch = -1;
+       }
+      }
+
       emit mouseReleased(this, theEvent);
-      if(theEvent->button() == RightButton)
+      if(theEvent->button() == RightButton && prevState == -1)
       {
-        QContextMenuEvent aEvent( QContextMenuEvent::Mouse,
-                                  theEvent->pos(), theEvent->globalPos(),
-                                  theEvent->state() );
-        emit contextMenuRequested( &aEvent );
+       QContextMenuEvent aEvent( QContextMenuEvent::Mouse,
+                                 theEvent->pos(), theEvent->globalPos(),
+                                 theEvent->state() );
+       emit contextMenuRequested( &aEvent );
       }
     }
     break;
@@ -538,6 +806,12 @@ void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent)
     resetState(); 
     myViewPort->update();
   }
+
+  if ( l_mbPressEvent )
+  {
+    delete l_mbPressEvent;
+    l_mbPressEvent = 0;
+  }
 }
 
 /*!
@@ -552,9 +826,17 @@ void OCCViewer_ViewWindow::resetState()
   myRect.setLeft(2);
   myRect.setRight(0);
   
-  if ( transformRequested() || myCursorIsHand ) 
-    setCursor( myCursor );
-  myCursorIsHand = false;
+  if ( myRotationPointSelection )
+  {
+    QCursor handCursor (Qt::PointingHandCursor);
+    setCursor( handCursor );
+  }
+  else
+  { 
+    if ( transformRequested() || myCursorIsHand ) 
+      setCursor( myCursor );
+    myCursorIsHand = false;
+  }
   
   if ( transformRequested() ) 
     emit vpTransformationFinished (myOperation);
@@ -630,7 +912,15 @@ void OCCViewer_ViewWindow::createActions()
                            tr( "MNU_GLOBALPAN_VIEW" ), 0, this);
   aAction->setStatusTip(tr("DSC_GLOBALPAN_VIEW"));
   connect(aAction, SIGNAL(activated()), this, SLOT(activateGlobalPanning()));
-       myActionsMap[ GlobalPanId ] = aAction;
+  myActionsMap[ GlobalPanId ] = aAction;
+
+  // Rotation Point
+  mySetRotationPointAction = new QtxAction(tr("MNU_CHANGINGROTATIONPOINT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_ROTATION_POINT" ) ),
+                           tr( "MNU_CHANGINGROTATIONPOINT_VIEW" ), 0, this);
+  mySetRotationPointAction->setStatusTip(tr("DSC_CHANGINGROTATIONPOINT_VIEW"));
+  mySetRotationPointAction->setToggleAction( true );
+  connect(mySetRotationPointAction, SIGNAL(toggled( bool )), this, SLOT(onSetRotationPoint( bool )));
+  myActionsMap[ ChangeRotationPointId ] = mySetRotationPointAction;
 
   // Rotation
   aAction = new QtxAction(tr("MNU_ROTATE_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_ROTATE" ) ),
@@ -695,7 +985,7 @@ void OCCViewer_ViewWindow::createActions()
   myClippingAction->setStatusTip(tr("DSC_CLIPPING"));
   myClippingAction->setToggleAction( true );
   connect(myClippingAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool )));
-       myActionsMap[ ClippingId ] = myClippingAction;
+  myActionsMap[ ClippingId ] = myClippingAction;
 
   aAction = new QtxAction(tr("MNU_SHOOT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_SHOOT_VIEW" ) ),
                            tr( "MNU_SHOOT_VIEW" ), 0, this);
@@ -736,6 +1026,8 @@ void OCCViewer_ViewWindow::createToolBar()
   aPanningBtn->AddAction(myActionsMap[PanId]);
   aPanningBtn->AddAction(myActionsMap[GlobalPanId]);
 
+  myActionsMap[ChangeRotationPointId]->addTo(myToolBar);
+
   myActionsMap[RotationId]->addTo(myToolBar);
 
   SUIT_ToolButton* aViewsBtn = new SUIT_ToolButton(myToolBar, "projection");
@@ -855,6 +1147,37 @@ void OCCViewer_ViewWindow::onFitAll()
   myViewPort->fitAll();
 }
 
+/*!
+  SLOT: called if change rotation point operation is activated
+*/
+void OCCViewer_ViewWindow::onSetRotationPoint( bool on )
+{
+  if ( on )
+    {
+      if ( !mySetRotationPointDlg )
+       {
+         mySetRotationPointDlg = new OCCViewer_SetRotationPointDlg( this, myDesktop );
+         mySetRotationPointDlg->SetAction( mySetRotationPointAction );
+       }
+
+      if ( !mySetRotationPointDlg->isShown() )
+      {
+       if ( mySetRotationPointDlg->IsFirstShown() )
+       { 
+         Standard_Real Xcenter, Ycenter, Zcenter;
+         if ( computeGravityCenter( Xcenter, Ycenter, Zcenter ) )
+           mySetRotationPointDlg->setCoords( Xcenter, Ycenter, Zcenter );
+       }
+       mySetRotationPointDlg->show();
+      }
+    }
+  else
+    {
+      if ( mySetRotationPointDlg->isShown() )
+       mySetRotationPointDlg->hide();
+    }
+}
+
 /*!
   Creates one more window with same content
 */
@@ -1088,3 +1411,155 @@ void OCCViewer_ViewWindow::setVisualParameters( const QString& parameters )
     performRestoring( params );
   }
 }
+
+/*!
+  Custom show event handler
+*/
+void OCCViewer_ViewWindow::showEvent( QShowEvent * theEvent ) 
+{
+  emit Show( theEvent );
+}
+
+/*!
+  Custom hide event handler
+*/
+void OCCViewer_ViewWindow::hideEvent( QHideEvent * theEvent ) 
+{
+  emit Hide( theEvent );
+}
+
+
+/*!
+    Creates default sketcher. [ virtual protected ]
+*/
+OCCViewer_ViewSketcher* OCCViewer_ViewWindow::createSketcher( int type )
+{
+  if ( type == Rect )
+    return new OCCViewer_RectSketcher( this, type );
+  if ( type == Polygon )
+    return new OCCViewer_PolygonSketcher( this, type );
+  return 0;
+}
+
+void OCCViewer_ViewWindow::initSketchers()
+{
+  if ( mySketchers.isEmpty() )
+  {
+    mySketchers.append( createSketcher( Rect ) );
+    mySketchers.append( createSketcher( Polygon ) );
+  }
+}
+
+OCCViewer_ViewSketcher* OCCViewer_ViewWindow::getSketcher( const int typ )
+{
+  OCCViewer_ViewSketcher* sketcher = 0;
+  for ( OCCViewer_ViewSketcher* sk = mySketchers.first();
+        sk && !sketcher; sk = mySketchers.next() )
+  {
+    if ( sk->type() == typ )
+      sketcher = sk;
+  }
+  return sketcher;
+}
+
+/*!
+    Handles requests for sketching in the active view. [ virtual public ]
+*/
+void OCCViewer_ViewWindow::activateSketching( int type )
+{
+  OCCViewer_ViewPort3d* vp = getViewPort();
+  if ( !vp )
+    return;
+
+  if ( !vp->isSketchingEnabled() )
+    return;
+
+  /* Finish current sketching */
+  if ( type == NoSketching )
+  {
+    if ( mypSketcher )
+    {
+      onSketchingFinished();
+      mypSketcher->deactivate();
+      mypSketcher = 0;
+    }
+  }
+  /* Activate new sketching */
+  else
+  {
+    activateSketching( NoSketching );  /* concurrency not suported */
+    mypSketcher = getSketcher( type );
+    if ( mypSketcher )
+    {
+      mypSketcher->activate();
+      onSketchingStarted();
+    }
+  }
+}
+
+/*!
+    Unhilights detected entities. [ virtual protected ]
+*/
+void OCCViewer_ViewWindow::onSketchingStarted()
+{
+}
+
+/*!
+    Selection by rectangle or polygon. [ virtual protected ]
+*/
+void OCCViewer_ViewWindow::onSketchingFinished()
+{
+  if ( mypSketcher && mypSketcher->result() == OCCViewer_ViewSketcher::Accept )
+  {
+    Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+    bool append = bool( mypSketcher->buttonState() & Qt::ShiftButton );
+    switch( mypSketcher->type() )
+    {
+    case Rect:
+      {
+       QRect* aRect = (QRect*)mypSketcher->data();
+       if( aRect )
+       {
+         int aLeft = aRect->left();
+         int aRight = aRect->right();
+         int aTop = aRect->top();
+         int aBottom = aRect->bottom();
+
+         if( append )
+           ic->ShiftSelect( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+         else
+           ic->Select( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+       }
+      }
+      break;
+    case Polygon:
+      {
+        QPointArray* aPolygon = (QPointArray*)mypSketcher->data();
+        if( aPolygon )
+        {
+         int size = aPolygon->size();
+         TColgp_Array1OfPnt2d anArray( 1, size );
+
+         QPointArray::Iterator it = aPolygon->begin();
+         QPointArray::Iterator itEnd = aPolygon->end();
+         for( int index = 1; it != itEnd; ++it, index++ )
+         {
+           QPoint aPoint = *it;
+           anArray.SetValue( index, gp_Pnt2d( aPoint.x(), aPoint.y() ) );
+         }
+
+         if( append )
+           ic->ShiftSelect( anArray, getViewPort()->getView(), Standard_False );
+         else
+           ic->Select( anArray, getViewPort()->getView(), Standard_False );
+        }
+      }
+      break;
+    default:
+      break;
+    }
+
+    OCCViewer_ViewManager* aViewMgr = ( OCCViewer_ViewManager* )getViewManager();
+    aViewMgr->getOCCViewer()->performSelectionChanged();
+  }
+}
index d9dafcffea161441661e9759660a25026449233e..c3e7ca9f48390079725cea2cee9e05ac215daa6c 100755 (executable)
@@ -20,6 +20,7 @@
 #define OCCVIEWER_VIEWWINDOW_H
 
 #include "OCCViewer_ViewModel.h"
+#include "OCCViewer_ViewSketcher.h"
 
 #include "SUIT_ViewWindow.h"
 
@@ -32,6 +33,7 @@ class SUIT_Desktop;
 class OCCViewer_ViewPort3d;
 
 class OCCViewer_ClippingDlg;
+class OCCViewer_SetRotationPointDlg;
 
 #ifdef WIN32
 #pragma warning( disable:4251 )
@@ -42,9 +44,14 @@ class OCCVIEWER_EXPORT OCCViewer_ViewWindow : public SUIT_ViewWindow
   Q_OBJECT
 
 public:
-  enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW,
+  enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, 
+                     PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW,
                       FRONTVIEW, BACKVIEW, TOPVIEW, BOTTOMVIEW, LEFTVIEW, RIGHTVIEW };
 
+  enum RotationPointType{ GRAVITY, SELECTED };
+
+  enum SketchingType { NoSketching, Rect, Polygon };
+
   OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
        virtual ~OCCViewer_ViewWindow() {};
 
@@ -67,6 +74,11 @@ public:
 
   virtual QString   getVisualParameters();
   virtual void      setVisualParameters( const QString& parameters );
+
+  virtual void            initSketchers();
+  OCCViewer_ViewSketcher* getSketcher( const int );
+
+  void                    activateSketching( int );
  
 public slots:
   void onFrontView();
@@ -83,20 +95,33 @@ public slots:
   void activateRotation();
   void activatePanning();
   void activateGlobalPanning();
+  void onSetRotationPoint( bool on );
   void onCloneView();
   void onClipping( bool on );
   void onMemorizeView();
   void onRestoreView();
   void onTrihedronShow();
   void setRestoreFlag();
-  
+
+  void activateSetRotationGravity();
+  void activateSetRotationSelected( double theX, double theY, double theZ );
+  void activateStartPointSelection();
+  void updateGravityCoords();
+   
+  virtual void showEvent( QShowEvent * );
+  virtual void hideEvent( QHideEvent * );
+
 signals:
   void vpTransformationStarted(OCCViewer_ViewWindow::OperationType type);
   void vpTransformationFinished(OCCViewer_ViewWindow::OperationType type);
   void cloneView();
 
+  void Show( QShowEvent * );
+  void Hide( QHideEvent * );
+
 protected:
-  enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
+  enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId,
+        ChangeRotationPointId, RotationId,
          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, CloneId, ClippingId, MemId, RestoreId,
          TrihedronShowId };
 
@@ -126,10 +151,27 @@ protected:
 
   viewAspect getViewParams() const;
 
+  bool computeGravityCenter( double& theX, double& theY, double& theZ );
+
+  virtual void                          onSketchingStarted();
+  virtual void                          onSketchingFinished();
+
+  virtual OCCViewer_ViewSketcher*       createSketcher( int );
+
+  OCCViewer_ViewSketcher*               mypSketcher;
+  QList<OCCViewer_ViewSketcher>         mySketchers;
+
+  int                                   myCurSketch;
+
   OperationType         myOperation;
   OCCViewer_Viewer*     myModel;
   OCCViewer_ViewPort3d* myViewPort;
 
+  RotationPointType     myCurrPointType;
+  RotationPointType     myPrevPointType;
+  gp_Pnt                mySelectedPoint;
+  bool                  myRotationPointSelection;
+
   int                                  myRestoreFlag;
 
   int                                  myStartX;
@@ -154,6 +196,9 @@ protected:
 private:
   OCCViewer_ClippingDlg* myClippingDlg;
   QtxAction* myClippingAction;
+
+  OCCViewer_SetRotationPointDlg* mySetRotationPointDlg;
+  QtxAction* mySetRotationPointAction;
   
 };
 
index b75530310a5242b716589ab9944028e797ab6f6a..4ab78a38d3f3a9953f24e99107717e6470c4a535 100755 (executable)
@@ -62,6 +62,9 @@ msgstr "view_reset.png"
 msgid "ICON_OCCVIEWER_VIEW_RIGHT"
 msgstr "view_right.png"
 
+msgid "ICON_OCCVIEWER_VIEW_ROTATION_POINT"
+msgstr "view_rotation_point.png"
+
 msgid "ICON_OCCVIEWER_VIEW_ROTATE"
 msgstr "view_rotate.png"
 
index 08af365aea75053ec223743ffcacb32ac9d258ac..71689709e2598921bad867f688f6aee6749b8c4e 100755 (executable)
@@ -107,9 +107,45 @@ msgstr "Selection of a new center of the view"
 msgid "MNU_GLOBALPAN_VIEW"
 msgstr "Global Panning"
 
+msgid "DSC_CHANGINGROTATIONPOINT_VIEW"
+msgstr "Change the point, around which the rotation is performed"
+
 msgid "DSC_ROTATE_VIEW"
 msgstr "Rotation of the point of view around the scene center"
 
+msgid "OCCViewer_SetRotationPointDlg::CAPTION"
+msgstr "Set Rotation Point"
+
+msgid "OCCViewer_SetRotationPointDlg::USE_BBCENTER"
+msgstr "Use Bounding Box Center"
+
+msgid "OCCViewer_SetRotationPointDlg::LBL_TOORIGIN"
+msgstr "Set to Origin"
+
+msgid "OCCViewer_SetRotationPointDlg::LBL_SELECTPOINT"
+msgstr "Select Point from View"
+
+msgid "OCCViewer_SetRotationPointDlg::LBL_X"
+msgstr "X :"
+
+msgid "OCCViewer_SetRotationPointDlg::LBL_Y"
+msgstr "Y :"
+
+msgid "OCCViewer_SetRotationPointDlg::LBL_Z"
+msgstr "Z :"
+
+msgid "MNU_CHANGINGROTATIONPOINT_VIEW"
+msgstr "Change Rotation Point"
+
+msgid "MNU_ROTATIONPOINTGRAVITY_VIEW"
+msgstr "Rotation Point : the gravity center"
+
+msgid "MNU_ROTATIONPOINT000_VIEW"
+msgstr "Rotation Point : (0,0,0)"
+
+msgid "MNU_ROTATIONPOINTSELECTED_VIEW"
+msgstr "Rotation Point : the point selected by the user"
+
 msgid "MNU_ROTATE_VIEW"
 msgstr "Rotation"
 
@@ -171,7 +207,7 @@ msgid "OCCViewer_Viewer::MEN_CHANGE_BACKGROUD"
 msgstr "Change background..."
 
 msgid "OCCViewer_ViewManager::OCC_VIEW_TITLE"
-msgstr "OCC scene:%1 - viewer:%2"
+msgstr "OCC scene:%M - viewer:%V"
 
 
 msgid "OCCViewer_CreateRestoreViewDlg::CAPTION"
diff --git a/src/OCCViewer/resources/view_rotation_point.png b/src/OCCViewer/resources/view_rotation_point.png
new file mode 100755 (executable)
index 0000000..59f5931
Binary files /dev/null and b/src/OCCViewer/resources/view_rotation_point.png differ
diff --git a/src/ObjBrowser/Makefile.am b/src/ObjBrowser/Makefile.am
new file mode 100755 (executable)
index 0000000..ba4e735
--- /dev/null
@@ -0,0 +1,56 @@
+#  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
+# $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libObjBrowser.la
+
+salomeinclude_HEADERS=\
+       OB.h \
+       OB_Browser.h \
+       OB_ListItem.h \
+       OB_ListView.h \
+       OB_Filter.h \
+       OB_FindDlg.h \
+       OB_ObjSearch.h
+
+dist_libObjBrowser_la_SOURCES= \
+       OB_Browser.cxx \
+       OB_ListItem.cxx \
+       OB_ListView.cxx \
+       OB_Filter.cxx \
+       OB_FindDlg.cxx \
+       OB_ObjSearch.cxx
+
+MOC_FILES= \
+       OB_Browser_moc.cxx \
+       OB_ListView_moc.cxx \
+       OB_FindDlg_moc.cxx
+nodist_libObjBrowser_la_SOURCES= $(MOC_FILES)
+
+nodist_salomeres_DATA = OB_msg_en.qm
+
+libObjBrowser_la_CPPFLAGS=$(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+libObjBrowser_la_LDFLAGS=$(QT_MT_LIBS)
+libObjBrowser_la_LIBADD= ../SUIT/libsuit.la ../Qtx/libqtx.la
diff --git a/src/ObjBrowser/Makefile.in b/src/ObjBrowser/Makefile.in
deleted file mode 100755 (executable)
index 71ff8fe..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#  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
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= OB.h \
-               OB_Browser.h \
-               OB_ListItem.h \
-               OB_ListView.h \
-               OB_Filter.h
-                    
-# Libraries targets
-LIB = libObjBrowser.la
-
-LIB_SRC= OB_Browser.cxx \
-        OB_ListItem.cxx \
-        OB_ListView.cxx \
-        OB_Filter.cxx
-
-LIB_MOC = OB_Browser.h \
-         OB_ListView.h
-
-# .po files to transform in .qm
-PO_FILES = OB_msg_en.po
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS)
-LIBS+= -lsuit
-
-@CONCLUDE@
-
-
index c0343a2ca5b7429c64b78a5cb6def3821dfb0215..41232b9a29e95585995e49a6b2f7886b1f6d2530 100755 (executable)
@@ -21,6 +21,7 @@
 #include "OB_Filter.h"
 #include "OB_ListItem.h"
 #include "OB_ListView.h"
+#include "OB_FindDlg.h"
 
 #include <SUIT_DataObjectIterator.h>
 #include <SUIT_TreeSync.h>
@@ -113,7 +114,7 @@ public:
   ObjPtr   nullSrc() const;
   ItemPtr  nullTrg() const;
   ItemPtr  createItem( const ObjPtr&, const ItemPtr&, const ItemPtr&, const bool ) const;
-  void     updateItem( const ItemPtr& ) const;
+  void     updateItem( const ObjPtr& , const ItemPtr& ) const;
   void     deleteItemWithChildren( const ItemPtr& ) const;
   void     children( const ObjPtr&, QValueList<ObjPtr>& ) const;
   void     children( const ItemPtr&, QValueList<ItemPtr>& ) const;
@@ -171,13 +172,17 @@ bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const
   Updates item
   \param p - item
 */
-void OB_BrowserSync::updateItem( const ItemPtr& p ) const
+void OB_BrowserSync::updateItem( const ObjPtr& o, const ItemPtr& p ) const
 {
   if ( p && needUpdate( p ) ) { 
     //    printf( "--- needUpdate for %s = true ---\n", p->text( 0 ).latin1() );
     myBrowser->updateText( p );
     p->update();
   }
+  if( o && myBrowser->getUpdater() )
+    {
+      myBrowser->getUpdater()->update( o, p );
+    }
 }
 
 /*!
@@ -288,6 +293,7 @@ OB_Browser::OB_Browser( QWidget* parent, SUIT_DataObject* root )
 
 myRoot( 0 ),
 myTooltip( 0 ),
+myUpdater( 0 ),
 myAutoOpenLevel( 0 ),
 myAutoUpdate( false ),
 myAutoDelObjs( false ),
@@ -301,8 +307,12 @@ myRootDecorated( true )
   myView->installEventFilter( this );
   myView->viewport()->installEventFilter( this );
 
+  myFindDlg = new OB_FindDlg( this );
+  myFindDlg->hide();
+
   QVBoxLayout* main = new QVBoxLayout( this );
-  main->addWidget( myView );
+  main->addWidget( myView, 1 );
+  main->addWidget( myFindDlg, 0 );
 
   myShowToolTips = true;
   myTooltip = new ToolTip( this, myView->viewport() );
@@ -325,6 +335,7 @@ OB_Browser::~OB_Browser()
 {
   myItems.clear();
   delete myTooltip;
+  setUpdater( 0 );
 }
 
 /*!
@@ -366,8 +377,25 @@ void OB_Browser::setAutoOpenLevel( const int level )
     return;
 
   myAutoOpenLevel = level;
+}
 
-  autoOpenBranches();
+/*!
+  Opens branches from 1 to \alevels. If parameter value negative then autoOpenLevel() value will be used.
+  \sa autoOpenLevel()
+*/
+void OB_Browser::openLevels( const int levels )
+{
+  int level = levels < 0 ? autoOpenLevel() : levels;
+  QListView* lv = listView();
+  if ( !lv || level < 1 )
+    return;
+
+  QListViewItem* item = lv->firstChild();
+  while ( item )
+  {
+    openBranch( item, level );
+    item = item->nextSibling();
+  }
 }
 
 /*!
@@ -421,6 +449,24 @@ void OB_Browser::setAutoDeleteObjects( const bool on )
   myAutoDelObjs = on;
 }
 
+/*!
+  \return updater of browser
+*/
+OB_Updater* OB_Browser::getUpdater() const
+{
+  return myUpdater;
+}
+
+/*!
+  \sets new updater of browser
+*/
+void OB_Browser::setUpdater( OB_Updater* theUpdate )
+{
+  if( myUpdater )
+    delete myUpdater;
+  myUpdater = theUpdate;
+}
+
 /*!
   \return root SUIT object of browser
 */
@@ -892,7 +938,7 @@ void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen )
 
   restoreState( selObjs, openObjs, curObj, selKeys, openKeys, curKey );
 
-  if( autoOpen )
+  if ( autoOpen )
     autoOpenBranches();
 
   setModified();
@@ -939,8 +985,6 @@ void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg )
 
   restoreState( selObjs, openObjs, curObj, selKeys, openKeys, curKey );
 
-  autoOpenBranches();
-
   setModified();
 
   if ( selNum != numberOfSelected() )
@@ -1574,17 +1618,7 @@ void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd )
 */
 void OB_Browser::autoOpenBranches()
 {
-  int level = autoOpenLevel();
-  QListView* lv = listView();
-  if ( !lv || level < 1 )
-    return;
-
-  QListViewItem* item = lv->firstChild();
-  while ( item )
-  {
-    openBranch( item, level );
-    item = item->nextSibling();
-  }
+  openLevels();
 }
 
 /*!
@@ -1622,3 +1656,17 @@ void OB_Browser::setModified()
   myModifiedTime = clock();
 }
 
+OB_ObjSearch* OB_Browser::getSearch() const
+{
+  return myFindDlg->getSearch();
+}
+
+void OB_Browser::setSearch( OB_ObjSearch* s )
+{
+  myFindDlg->setSearch( s );
+}
+
+void OB_Browser::enableSearch( const bool on )
+{
+  myFindDlg->setShown( on );
+}
index 6299afd2d87a23b0ff7ee687726c61b2b33a7fa8..e7524fb688ecfea314009c2bc5e2543ab66085a9 100755 (executable)
@@ -38,6 +38,16 @@ class QToolTip;
 class OB_Filter;
 class OB_ListView;
 class OB_ListItem;
+class OB_ObjSearch;
+class OB_FindDlg;
+
+class OB_Updater 
+{
+public:
+  OB_Updater(){};
+  virtual ~OB_Updater(){};
+  virtual void update( SUIT_DataObject* theObj, OB_ListItem* theLI ) = 0;
+};
 
 /*!
   \class OB_Browser
@@ -77,7 +87,7 @@ public:
   bool              isAutoDeleteObjects() const;
   virtual void      setAutoDeleteObjects( const bool );
 
-  virtual void      updateTree( SUIT_DataObject* = 0, const bool autoOpen = true );
+  virtual void      updateTree( SUIT_DataObject* = 0, const bool = false );
   virtual void      replaceTree( SUIT_DataObject*, SUIT_DataObject* );
 
   bool              isShowToolTips();
@@ -95,6 +105,7 @@ public:
 
   int               autoOpenLevel() const;
   void              setAutoOpenLevel( const int );
+  void              openLevels( const int = -1 );
 
   virtual int       addColumn( const QString&, const int id = -1, const int width = -1 );
   virtual int       addColumn( const QIconSet&, const QString&, const int id = -1, const int width = -1 );
@@ -126,6 +137,13 @@ public:
 
   void              setModified();
   unsigned long     getModifiedTime() { return myModifiedTime; }
+  
+  OB_Updater*       getUpdater() const;
+  virtual void      setUpdater( OB_Updater* theUpdate = 0 );
+
+  OB_ObjSearch*     getSearch() const;
+  void              setSearch( OB_ObjSearch* );
+  void              enableSearch( const bool );
 
 signals:
   void              selectionChanged();
@@ -188,12 +206,14 @@ private:
   SUIT_DataObject*  myRoot;
   ItemMap           myItems;
   QToolTip*         myTooltip;
+  OB_Updater*       myUpdater;
   QMap<int, int>    myColumnIds;
   bool              myAutoUpdate;
   bool              myAutoDelObjs;
   bool              myShowToolTips;
   bool              myRootDecorated;
   int               myAutoOpenLevel;
+  OB_FindDlg       *myFindDlg;
 
   friend class OB_Browser::ToolTip;
 
diff --git a/src/ObjBrowser/OB_FindDlg.cxx b/src/ObjBrowser/OB_FindDlg.cxx
new file mode 100644 (file)
index 0000000..07ed30d
--- /dev/null
@@ -0,0 +1,92 @@
+
+#include <OB_FindDlg.h>
+#include <OB_ObjSearch.h>
+#include <OB_Browser.h>
+#include <OB_ListItem.h>
+
+#include <SUIT_DataObject.h>
+#include <SUIT_MessageBox.h>
+
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+
+OB_FindDlg::OB_FindDlg( QWidget* parent )
+: QGroupBox( 1, Qt::Horizontal, tr( "FIND" ), parent ),
+  mySearch( 0 )
+{
+  QFrame *btns = new QFrame( this ), *checks = new QFrame( this );
+  
+  myData = new QLineEdit( btns );
+  myToFirst = new QPushButton( "|<<", btns );
+  myToLast = new QPushButton( ">>|", btns );
+  myNext = new QPushButton( ">>", btns );
+  myPrev = new QPushButton( "<<", btns );
+  myClose = new QPushButton( tr( "CLOSE" ), checks );
+  myIsCaseSens = new QCheckBox( tr( "CASE_SENSITIVE" ), checks );
+  myIsRegExp = new QCheckBox( tr( "IS_REG_EXP" ), checks );
+  int w = 30, h = myToFirst->height();
+  myToFirst->setMaximumSize( w, h );
+  myToLast->setMaximumSize( w, h );
+  myNext->setMaximumSize( w, h );
+  myPrev->setMaximumSize( w, h );
+
+  QHBoxLayout* l = new QHBoxLayout( btns, 5, 5 );
+  l->addWidget( myToFirst, 0 );
+  l->addWidget( myPrev, 0 );
+  l->addWidget( myData, 1 );
+  l->addWidget( myNext, 0 );
+  l->addWidget( myToLast, 0 );
+
+  QHBoxLayout* c = new QHBoxLayout( checks, 5, 5 );
+  c->addWidget( myIsCaseSens, 0 );
+  c->addWidget( myIsRegExp, 0 );
+  c->addWidget( myClose, 0 );
+
+  connect( myToFirst, SIGNAL( clicked() ), this, SLOT( onFind() ) );
+  connect( myToLast, SIGNAL( clicked() ), this, SLOT( onFind() ) );
+  connect( myNext, SIGNAL( clicked() ), this, SLOT( onFind() ) );
+  connect( myPrev, SIGNAL( clicked() ), this, SLOT( onFind() ) );
+  connect( myClose, SIGNAL( clicked() ), this, SLOT( onClose() ) );
+}
+
+OB_FindDlg::~OB_FindDlg()
+{
+}
+
+void OB_FindDlg::onClose()
+{
+  hide();
+}
+
+void OB_FindDlg::onFind()
+{
+  OB_ListItem* it = 0;
+  mySearch->setPattern( myData->text(), myIsRegExp->isChecked(), myIsCaseSens->isChecked() );
+  if( sender()==myToFirst )
+    it = mySearch->findFirst();
+  else if( sender()==myNext )
+    it = mySearch->findNext();
+  else if( sender()==myPrev )
+    it = mySearch->findPrev();
+  else if( sender()==myToLast )
+    it = mySearch->findLast();
+  if( it )
+  {
+    mySearch->browser()->setSelected( it->dataObject(), false );
+    mySearch->browser()->listView()->ensureItemVisible( it );
+  }
+  else
+    SUIT_MessageBox::info1( this, tr( "FIND" ), tr( "NOT_FOUND" ), tr( "OK" ) );
+}
+
+OB_ObjSearch* OB_FindDlg::getSearch() const
+{
+  return mySearch;
+}
+
+void OB_FindDlg::setSearch( OB_ObjSearch* s )
+{
+  mySearch = s;
+}
diff --git a/src/ObjBrowser/OB_FindDlg.h b/src/ObjBrowser/OB_FindDlg.h
new file mode 100644 (file)
index 0000000..4c8230d
--- /dev/null
@@ -0,0 +1,34 @@
+
+#ifndef OBJECT_BROWSER_FIND_DIALOG_HEADER
+#define OBJECT_BROWSER_FIND_DIALOG_HEADER
+
+#include <qgroupbox.h>
+
+class OB_ObjSearch;
+class QLineEdit;
+class QPushButton;
+class QCheckBox;
+
+class OB_FindDlg : public QGroupBox
+{
+  Q_OBJECT
+
+public:
+  OB_FindDlg( QWidget* = 0 );
+  virtual ~OB_FindDlg();
+
+  OB_ObjSearch* getSearch() const;
+  void setSearch( OB_ObjSearch* );
+
+private slots:
+  void onFind();
+  void onClose();
+
+private:
+  QLineEdit* myData;
+  QPushButton *myToFirst, *myToLast, *myNext, *myPrev, *myClose;
+  QCheckBox *myIsCaseSens, *myIsRegExp;
+  OB_ObjSearch* mySearch;
+};
+
+#endif
index b91b92e2d769647837d49dcf35fdfb2e3ac0bbce..f5fb6cb110f252d335595661b420f5bd6b26b242 100755 (executable)
 #include <iostream>
 using namespace std;
 
+#ifdef WNT
+#define min(a, b)  (((a) < (b)) ? (a) : (b))
+#endif
+
 /*!
   Constructor
 */
@@ -124,6 +128,8 @@ void ListItemF<T>::update()
     else
       myT->setPixmap( 0, p );
   }
+  else if ( p.isNull() )
+    myT->setPixmap( 0, p );
 
   myT->setDragEnabled( obj->isDragable() );
   myT->setDropEnabled( true );
index ebcd5c87947e1f78c986700583fcccadeac4b9cc..728e12c278ca6eca8df4db1a3496cdc5b860e0b5 100755 (executable)
@@ -222,9 +222,10 @@ bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) con
 void OB_ListView::setColumnWidth( int col, int width )
 {
   int max = columnMaxWidth( col );
-  if( max>0 && width>max )
+  if ( max>0 && width>max )
     width = max;
-  QListView::setColumnWidth( col, width );
+
+  QtxListView::setColumnWidth( col, width );
 }
 
 /*!
diff --git a/src/ObjBrowser/OB_ObjSearch.cxx b/src/ObjBrowser/OB_ObjSearch.cxx
new file mode 100644 (file)
index 0000000..84d9c2c
--- /dev/null
@@ -0,0 +1,107 @@
+
+#include <OB_ObjSearch.h>
+#include <OB_ListItem.h>
+#include <OB_Browser.h>
+
+#include <qregexp.h>
+
+OB_ObjSearch::OB_ObjSearch( OB_Browser* b )
+: myBrowser( b )
+{
+}
+
+OB_ObjSearch::~OB_ObjSearch()
+{
+}
+
+OB_ListItem* OB_ObjSearch::tail( const bool first ) const
+{
+  QListView* lv = myBrowser->listView();
+  return dynamic_cast<OB_ListItem*>( first ? lv->firstChild() : lv->lastItem() );
+}
+
+OB_ListItem* OB_ObjSearch::next( OB_ListItem* i, const bool forward ) const
+{
+  QListViewItemIterator it( i );
+  if( forward )
+    it++;
+  else
+    it--;
+  return dynamic_cast<OB_ListItem*>( *it );
+}
+
+SUIT_DataObject* OB_ObjSearch::data( OB_ListItem* i ) const
+{
+  return i ? i->dataObject() : 0;
+}
+
+void OB_ObjSearch::setPattern( const QString& data, const bool is_reg_exp, const bool is_case_sens )
+{
+  myData = data;
+  myIsRegExp = is_reg_exp;
+  myIsCaseSens = is_case_sens;
+}
+
+bool OB_ObjSearch::matches( SUIT_DataObject* obj ) const
+{
+  if( !obj )
+    return false;
+
+  QString txt = obj->name();
+  if( myIsRegExp )
+  {
+    QRegExp re( myData );
+    re.setCaseSensitive( myIsCaseSens );
+    return txt.contains( re );
+  }
+  else
+    return txt.contains( myData, myIsCaseSens );
+}
+
+OB_Browser* OB_ObjSearch::browser() const
+{
+  return myBrowser;
+}
+
+OB_ListItem* OB_ObjSearch::findFirst() const
+{
+  return find( tail( true ), true, false, false );
+}
+
+OB_ListItem* OB_ObjSearch::findLast() const
+{
+  return find( tail( false ), false, false, false );
+}
+
+OB_ListItem* OB_ObjSearch::findNext() const
+{
+  return find( current(), true, true, true );
+}
+
+OB_ListItem* OB_ObjSearch::findPrev() const
+{
+  return find( current(), false, true, true );
+}
+
+OB_ListItem* OB_ObjSearch::find( OB_ListItem* i, const bool forward,
+                                 const bool ignore_first, const bool cyclic ) const
+{
+  if( !i )
+    i = tail( forward );
+
+  if( ignore_first )
+    i = next( i, forward );
+
+  while( i && !matches( data( i ) ) )
+    i = next( i, forward );
+
+  if( !i && cyclic )
+    return find( tail( forward ), forward, false, false );
+
+  return i;
+}
+
+OB_ListItem* OB_ObjSearch::current() const
+{
+  return dynamic_cast<OB_ListItem*>( myBrowser->listView()->currentItem() );
+}
diff --git a/src/ObjBrowser/OB_ObjSearch.h b/src/ObjBrowser/OB_ObjSearch.h
new file mode 100644 (file)
index 0000000..6106d9f
--- /dev/null
@@ -0,0 +1,39 @@
+
+#ifndef OBJECT_BROWSER_OBJECT_SEARCH_HEADER
+#define OBJECT_BROWSER_OBJECT_SEARCH_HEADER
+
+#include <qstring.h>
+
+class OB_ListItem;
+class OB_Browser;
+class SUIT_DataObject;
+
+class OB_ObjSearch
+{
+public:
+  OB_ObjSearch( OB_Browser* );
+  virtual ~OB_ObjSearch();
+
+  void setPattern( const QString&, const bool, const bool );
+  OB_Browser* browser() const;
+
+  OB_ListItem* findFirst() const;
+  OB_ListItem* findLast() const;
+  OB_ListItem* findNext() const;
+  OB_ListItem* findPrev() const;
+
+protected:
+  virtual OB_ListItem* current() const;
+  virtual OB_ListItem* tail( const bool ) const;
+  virtual OB_ListItem* next( OB_ListItem*, const bool ) const;
+  virtual SUIT_DataObject* data( OB_ListItem* ) const;
+  virtual bool matches( SUIT_DataObject* ) const;
+  OB_ListItem* find( OB_ListItem*, const bool, const bool, const bool ) const;
+
+private:
+  OB_Browser* myBrowser;
+  QString myData;
+  bool myIsRegExp, myIsCaseSens;
+};
+
+#endif
index 4b18212e97b2d274395c82592971121805a62bcd..2209af5a6bdd01989a7a35fd8482d3a48d6e4481 100755 (executable)
@@ -30,3 +30,17 @@ msgstr ""
 msgid "MEN_EXPAND_ALL"
 msgstr "Expand All"
 
+msgid "OB_FindDlg::FIND"
+msgstr "Find"
+
+msgid "OB_FindDlg::CLOSE"
+msgstr "Close"
+
+msgid "OB_FindDlg::CASE_SENSITIVE"
+msgstr "Case sensitive"
+
+msgid "OB_FindDlg::IS_REG_EXP"
+msgstr "Regular expression"
+
+msgid "OB_FindDlg::NOT_FOUND"
+msgstr "There is no object is found"
diff --git a/src/Plot2d/Makefile.am b/src/Plot2d/Makefile.am
new file mode 100755 (executable)
index 0000000..b2fd5cf
--- /dev/null
@@ -0,0 +1,92 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES= libPlot2d.la
+
+# header files 
+salomeinclude_HEADERS= \
+       Plot2d.h \
+       Plot2d_Curve.h \
+       Plot2d_FitDataDlg.h \
+       Plot2d_Prs.h \
+       Plot2d_SetupViewDlg.h \
+       Plot2d_ViewFrame.h \
+       Plot2d_ViewManager.h \
+       Plot2d_ViewModel.h \
+       Plot2d_ViewWindow.h \
+       Plot2d_SetupCurveDlg.h \
+       Plot2d_ToolTip.h
+
+dist_libPlot2d_la_SOURCES= \
+       Plot2d_Curve.cxx \
+       Plot2d_FitDataDlg.cxx \
+       Plot2d_Prs.cxx \
+       Plot2d_SetupViewDlg.cxx \
+       Plot2d_ViewFrame.cxx \
+       Plot2d_ViewManager.cxx \
+       Plot2d_ViewModel.cxx \
+       Plot2d_ViewWindow.cxx \
+       Plot2d_SetupCurveDlg.cxx \
+       Plot2d_ToolTip.cxx
+
+MOC_FILES = \
+       Plot2d_FitDataDlg_moc.cxx \
+       Plot2d_SetupViewDlg_moc.cxx \
+       Plot2d_ViewFrame_moc.cxx \
+       Plot2d_ViewManager_moc.cxx \
+       Plot2d_ViewModel_moc.cxx \
+       Plot2d_ViewWindow_moc.cxx \
+       Plot2d_SetupCurveDlg_moc.cxx \
+       Plot2d_ToolTip_moc.cxx
+nodist_libPlot2d_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA = \
+       resources/plot2d_clone.png \
+       resources/plot2d_camera_dump.png \
+       resources/plot2d_fitall.png \
+       resources/plot2d_fitarea.png \
+       resources/plot2d_glpan.png \
+       resources/plot2d_legend.png \
+       resources/plot2d_linear.png \
+       resources/plot2d_linear_y.png \
+       resources/plot2d_lines.png \
+       resources/plot2d_log.png \
+       resources/plot2d_log_y.png \
+       resources/plot2d_pan.png \
+       resources/plot2d_points.png \
+       resources/plot2d_settings.png \
+       resources/plot2d_splines.png \
+       resources/plot2d_zoom.png
+
+nodist_salomeres_DATA= \
+       Plot2d_images.qm \
+       Plot2d_msg_en.qm 
+
+libPlot2d_la_CPPFLAGS=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
+
+libPlot2d_la_LDFLAGS=$(QWT_LIBS) $(QT_MT_LIBS) ../SUIT/libsuit.la
+
+
diff --git a/src/Plot2d/Makefile.in b/src/Plot2d/Makefile.in
deleted file mode 100755 (executable)
index 647c1b8..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= Plot2d.h \
-               Plot2d_Curve.h \
-               Plot2d_FitDataDlg.h \
-               Plot2d_Prs.h \
-               Plot2d_SetupViewDlg.h \
-               Plot2d_ViewFrame.h \
-               Plot2d_ViewManager.h \
-               Plot2d_ViewModel.h \
-               Plot2d_ViewWindow.h \
-               Plot2d_SetupCurveDlg.h
-
-# .po files to transform in .qm
-PO_FILES = Plot2d_images.po \
-          Plot2d_msg_en.po 
-                    
-# Libraries targets
-LIB = libPlot2d.la
-LIB_SRC= Plot2d_Curve.cxx \
-        Plot2d_FitDataDlg.cxx \
-        Plot2d_Prs.cxx \
-        Plot2d_SetupViewDlg.cxx \
-        Plot2d_ViewFrame.cxx \
-        Plot2d_ViewManager.cxx \
-        Plot2d_ViewModel.cxx \
-        Plot2d_ViewWindow.cxx \
-        Plot2d_SetupCurveDlg.cxx
-
-LIB_MOC = \
-       Plot2d_FitDataDlg.h \
-       Plot2d_SetupViewDlg.h \
-       Plot2d_ViewFrame.h \
-       Plot2d_ViewManager.h \
-       Plot2d_ViewModel.h \
-       Plot2d_ViewWindow.h \
-       Plot2d_SetupCurveDlg.h
-
-RESOURCES_FILES = \
-plot2d_clone.png \
-plot2d_camera_dump.png \
-plot2d_fitall.png \
-plot2d_fitarea.png \
-plot2d_glpan.png \
-plot2d_legend.png \
-plot2d_linear.png \
-plot2d_linear_y.png \
-plot2d_lines.png \
-plot2d_log.png \
-plot2d_log_y.png \
-plot2d_pan.png \
-plot2d_points.png \
-plot2d_settings.png \
-plot2d_splines.png \
-plot2d_zoom.png
-
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES)
-
-LDFLAGS+=$(QWT_LIBS) $(QT_MT_LIBS) -lsuit
-
-@CONCLUDE@
-
-
index c86db8f328424aec8cee87bcd7a4b04c63cfbb92..bec633fdce725a59172f9ea564ace328a5ae835b 100755 (executable)
@@ -147,22 +147,24 @@ QString Plot2d_Curve::getVerUnits() const
 /*!
   Adds one point for curve.
 */
-void Plot2d_Curve::addPoint(double theX, double theY)
+void Plot2d_Curve::addPoint(double theX, double theY, const QString& txt )
 {
   Plot2d_Point aPoint;
   aPoint.x = theX;
   aPoint.y = theY;
+  aPoint.text = txt;
   myPoints.append(aPoint);
 }
 
 /*!
   Insert one point for curve on some position.
 */
-void Plot2d_Curve::insertPoint(int thePos, double theX, double theY)
+void Plot2d_Curve::insertPoint(int thePos, double theX, double theY, const QString& txt)
 {
   Plot2d_Point aPoint;
   aPoint.x = theX;
   aPoint.y = theY;
+  aPoint.text = txt;
 
   QValueList<Plot2d_Point>::iterator aIt;
   int aCurrent = 0;
@@ -211,10 +213,12 @@ pointList Plot2d_Curve::getPointList() const
 /*!
   Sets curve's data. 
 */
-void Plot2d_Curve::setData( const double* hData, const double* vData, long size )
+void Plot2d_Curve::setData( const double* hData, const double* vData, long size, const QStringList& lst )
 {
   clearAllPoints();
-  for(long i = 0; i < size; i++) addPoint(hData[i], vData[i]);
+  QStringList::const_iterator anIt = lst.begin(), aLast = lst.end(); 
+  for( long i = 0; i < size; i++, anIt++ )
+    addPoint( hData[i], vData[i], anIt==aLast ? QString::null : *anIt );
 }
 
 /*!
@@ -364,7 +368,7 @@ double Plot2d_Curve::getMinX() const
 {
   QValueList<Plot2d_Point>::const_iterator aIt;
   double aMinX = 1e150;
-  int aCurrent = 0;
+  //int aCurrent = 0;
   for(aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) {
     if ( (*aIt).x < aMinX )
       aMinX = (*aIt).x;
@@ -379,10 +383,35 @@ double Plot2d_Curve::getMinY() const
 {
   QValueList<Plot2d_Point>::const_iterator aIt;
   double aMinY = 1e150;
-  int aCurrent = 0;
+  //int aCurrent = 0;
   for(aIt = myPoints.begin(); aIt != myPoints.end(); ++aIt) {
     if ( (*aIt).y < aMinY )
       aMinY = (*aIt).y;
   }
   return aMinY;
 }
+
+/*!
+  Changes text assigned to point of curve
+  \param ind -- index of point
+  \param txt -- new text
+*/
+void Plot2d_Curve::setText( const int ind, const QString& txt )
+{
+  if( ind<0 || ind>=myPoints.count() )
+    return;
+
+  myPoints[ind].text = txt;
+}
+
+/*!
+  \return text assigned to point
+  \param ind -- index of point
+*/
+QString Plot2d_Curve::text( const int ind ) const
+{
+  if( ind<0 || ind>=myPoints.count() )
+    return QString::null;
+  else
+    return myPoints[ind].text;
+}
index 1fa244aa4eeafabdfcd90334a29bdd3872e8f273..bd3be97bdd2fd6c5f0150e32827be3a235f3039c 100755 (executable)
@@ -30,6 +30,7 @@ typedef struct
 {
   double x;
   double y;
+  QString text;
 } Plot2d_Point;
 
 typedef QValueList<Plot2d_Point> pointList;
@@ -57,16 +58,19 @@ public:
   QString     getHorUnits() const;
   void        setVerUnits( const QString& units );
   QString     getVerUnits() const;
-  void        addPoint(double theX, double theY);
-  void        insertPoint(int thePos, double theX, double theY);
+  void        addPoint(double theX, double theY, const QString& = QString::null );
+  void        insertPoint(int thePos, double theX, double theY, const QString& = QString::null );
   void        deletePoint(int thePos);
   void        clearAllPoints();
   pointList   getPointList() const;
 
-  void        setData( const double* hData, const double* vData, long size );
+  void        setData( const double* hData, const double* vData, long size, const QStringList& = QStringList() );
   double*     horData() const;
   double*     verData() const;
 
+  void        setText( const int, const QString& );
+  QString     text( const int ) const;
+
   int         nbPoints() const;
   bool        isEmpty() const;
 
index b36d11c5f94b1d977d8105ea5644f74aa344d55d..84d530aa6b07a3061b862e502adbcad2b3322e58 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef Plot2d_SetupCurveDlg_H
 #define Plot2d_SetupCurveDlg_H
 
+#include "Plot2d.h"
+
 #include <qdialog.h>
 
 /*!
@@ -37,7 +39,7 @@ class QComboBox;
 class QSpinBox;
 class QToolButton;
 
-class Plot2d_SetupCurveDlg : public QDialog
+class PLOT2D_EXPORT Plot2d_SetupCurveDlg : public QDialog
 { 
   Q_OBJECT
 
index 9f1b2f03a869b2af60eb1b160d9dffb3bcff329d..e8c8b54c10ce16f92d9d9c705a88cb2382d9d542 100755 (executable)
@@ -23,6 +23,9 @@
 
 #include "Plot2d_SetupViewDlg.h"
 
+#include "SUIT_Session.h"
+#include "SUIT_Application.h"
+
 #include <qcheckbox.h>
 #include <qlineedit.h>
 #include <qcombobox.h>
@@ -247,16 +250,20 @@ Plot2d_SetupViewDlg::Plot2d_SetupViewDlg( QWidget* parent, bool showDefCheck, bo
   aTabWidget->setCurrentPage( 0 );
   /* "Set as default" check box */
   myDefCheck = new QCheckBox( tr( "PLOT2D_SET_AS_DEFAULT_CHECK" ), this );
-  /* OK/Cancel buttons */
+
+  /* OK/Cancel/Help buttons */
   myOkBtn = new QPushButton( tr( "BUT_OK" ), this );
   myOkBtn->setAutoDefault( TRUE );
   myOkBtn->setDefault( TRUE );
   myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this );
   myCancelBtn->setAutoDefault( TRUE );
+  myHelpBtn = new QPushButton( tr( "BUT_HELP" ), this );
+  myHelpBtn->setAutoDefault( TRUE );
   QHBoxLayout* btnLayout = new QHBoxLayout;
   btnLayout->addWidget( myOkBtn );
   btnLayout->addStretch();
   btnLayout->addWidget( myCancelBtn );
+  btnLayout->addWidget( myHelpBtn );
   
   // layout widgets
   topLayout->addWidget( myTitleCheck,          0,    0    );
@@ -293,6 +300,7 @@ Plot2d_SetupViewDlg::Plot2d_SetupViewDlg( QWidget* parent, bool showDefCheck, bo
 
   connect( myOkBtn,         SIGNAL( clicked() ), this, SLOT( accept() ) );
   connect( myCancelBtn,     SIGNAL( clicked() ), this, SLOT( reject() ) );
+  connect( myHelpBtn,       SIGNAL( clicked() ), this, SLOT( onHelp() ) );
   
   if (mySecondAxisY) {
     connect( myTitleY2Check,   SIGNAL( clicked() ), this, SLOT( onY2TitleChecked() ) );
@@ -681,3 +689,13 @@ bool Plot2d_SetupViewDlg::isSetAsDefault()
 {
   return myDefCheck->isChecked();
 }
+
+/*!
+  Slot, called when user clicks "Help" button
+*/
+void Plot2d_SetupViewDlg::onHelp()
+{
+  SUIT_Application* app = SUIT_Session::session()->activeApplication();
+  if (app)
+    app->onHelpContextModule("GUI", "plot2d_viewer_page.html#settings");
+}
index 37db3d6414cd8c4588a3c336ef269ccee098565e..d04623a8b37e814e4441fe24462f0ef62806ff23 100755 (executable)
@@ -84,6 +84,7 @@ protected slots:
   void   onXGridMinorChecked();
   void   onYGridMinorChecked();
   void   onY2GridMinorChecked();
+  void   onHelp();
 
 private:
   QCheckBox*     myTitleCheck;
@@ -118,6 +119,7 @@ private:
 
   QPushButton*   myOkBtn;
   QPushButton*   myCancelBtn;
+  QPushButton*   myHelpBtn;
   bool           mySecondAxisY;
 };
 
diff --git a/src/Plot2d/Plot2d_ToolTip.cxx b/src/Plot2d/Plot2d_ToolTip.cxx
new file mode 100644 (file)
index 0000000..3cdb1ba
--- /dev/null
@@ -0,0 +1,93 @@
+// 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_ToolTip.cxx
+// Author:    Alexandre SOLOVYOV
+
+#include <Plot2d_ToolTip.h>
+#include <Plot2d_ViewFrame.h>
+#include <Plot2d_Curve.h>
+
+#include <qfontmetrics.h>
+
+#include <qwt_plot.h>
+#include <qwt_plot_canvas.h>
+
+const int maxDist = 3, tip_margin = 10;
+
+
+Plot2d_ToolTip::Plot2d_ToolTip( Plot2d_ViewFrame* frame, Plot2d_Plot2d* plot )
+: QtxToolTip( plot->canvas() ),
+  myFrame( frame ),
+  myPlot( plot )
+{
+  connect( this, SIGNAL( maybeTip( QPoint, QString&, QFont&, QRect&, QRect& ) ),
+          this, SLOT( onToolTip( QPoint, QString&, QFont&, QRect&, QRect& ) ) );
+}
+
+Plot2d_ToolTip::~Plot2d_ToolTip()
+{
+}
+
+void Plot2d_ToolTip::onToolTip( QPoint p, QString& str, QFont& f, QRect& txtRect, QRect& rect )
+{
+  int curInd, pInd, dist;
+  double x, y;
+  curInd = myPlot->closestCurve( p.x(), p.y(), dist, x, y, pInd );
+
+  if( dist>maxDist )
+    return;
+  
+  Plot2d_Curve* c = myFrame->getCurves().find( curInd );
+  if( !c )
+    return;
+
+  str = c->text( pInd );
+  if( !str )
+    return;
+
+  QFontMetrics m( f );
+  QStringList lst = QStringList::split( "\n", str );
+  QStringList::const_iterator anIt = lst.begin(), aLast = lst.end();
+  int w = 0, h = 0;
+  for( ; anIt!=aLast; anIt++ )
+  {
+    if( h>0 )
+      h+= m.lineSpacing();
+
+    QRect r = m.boundingRect( *anIt );
+    if( r.width()>w )
+      w = r.width();
+    h+=r.height();
+  }
+
+  txtRect = QRect( p.x(), p.y(), w, h );
+  rect = txtRect;
+}
+
+bool Plot2d_ToolTip::eventFilter( QObject* o, QEvent* e )
+{
+  bool res = QtxToolTip::eventFilter( o, e );
+  if( e && e->type() == QEvent::MouseMove )
+  {
+    QMouseEvent* me = ( QMouseEvent* )e;
+    if( me->state()==0 )
+      return true;
+  }
+  return res;
+}
diff --git a/src/Plot2d/Plot2d_ToolTip.h b/src/Plot2d/Plot2d_ToolTip.h
new file mode 100644 (file)
index 0000000..a26c46a
--- /dev/null
@@ -0,0 +1,50 @@
+// 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_ToolTip.h
+// Author:    Alexandre SOLOVYOV
+
+#ifndef PLOT2D_TOOLTIP_H
+#define PLOT2D_TOOLTIP_H
+
+#include <Plot2d.h>
+#include <QtxToolTip.h>
+
+class Plot2d_ViewFrame;
+class Plot2d_Plot2d;
+
+class PLOT2D_EXPORT Plot2d_ToolTip : public QtxToolTip
+{
+  Q_OBJECT
+
+public:
+  Plot2d_ToolTip( Plot2d_ViewFrame*, Plot2d_Plot2d* );
+  virtual ~Plot2d_ToolTip();
+
+public slots:
+  void onToolTip( QPoint, QString&, QFont&, QRect&, QRect& );
+
+protected:
+  virtual bool eventFilter( QObject*, QEvent* );
+
+private:
+  Plot2d_ViewFrame* myFrame;
+  Plot2d_Plot2d*    myPlot;
+};
+
+#endif
index f7b862f7b80fc7c6ff120dc4c7b31c7f4f43b0ec..55b805bfce768b014d076d1f43efe764735aca3c 100755 (executable)
@@ -23,6 +23,7 @@
 #include "Plot2d_FitDataDlg.h"
 #include "Plot2d_ViewWindow.h"
 #include "Plot2d_SetupViewDlg.h"
+#include "Plot2d_ToolTip.h"
 
 #include "SUIT_Tools.h"
 #include "SUIT_Session.h"
@@ -40,6 +41,7 @@
 #include <qmap.h>
 #include <qpainter.h>
 #include <qpaintdevicemetrics.h>
+#include <qevent.h>
 
 #include <qwt_math.h>
 #include <qwt_plot_canvas.h>
@@ -53,6 +55,8 @@
 #define DEFAULT_MARKER_SIZE    9     // default marker size
 #define MIN_RECT_SIZE          11    // min sensibility area size
 
+#define FITALL_EVENT           ( QEvent::User + 9999 )
+
 const char* imageZoomCursor[] = { 
 "32 32 3 1",
 ". c None",
@@ -152,6 +156,8 @@ Plot2d_ViewFrame::Plot2d_ViewFrame( QWidget* parent, const QString& title )
   /* Plot 2d View */
   QVBoxLayout* aLayout = new QVBoxLayout( this ); 
   myPlot = new Plot2d_Plot2d( this );
+  new Plot2d_ToolTip( this, myPlot );
+
   aLayout->addWidget( myPlot );
 
 //  createActions();
@@ -784,6 +790,13 @@ void Plot2d_ViewFrame::updateLegend( const Plot2d_Prs* prs )
 */
 void Plot2d_ViewFrame::fitAll()
 {
+  // Postpone fitAll operation until QwtPlot geometry
+  // has been fully defined
+  if ( !myPlot->polished() ){
+    QApplication::postEvent( this, new QCustomEvent( FITALL_EVENT ) );
+    return;
+  }
+
   QwtDiMap xMap1 = myPlot->canvasMap( QwtPlot::xBottom );
 
   myPlot->setAxisAutoScale( QwtPlot::yLeft );
@@ -1414,6 +1427,7 @@ void Plot2d_ViewFrame::plotMousePressed(const QMouseEvent& me )
       parent()->eventFilter(this, aEvent);
     }
   }
+  setFocus(); 
 }
 /*!
   Slot, called when user moves mouse
@@ -1425,41 +1439,11 @@ void Plot2d_ViewFrame::plotMouseMoved( const QMouseEvent& me )
 
   if ( myOperation != NoOpId) {
     if ( myOperation == ZoomId ) {
-      QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
-      QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
-
-      myPlot->setAxisScale( QwtPlot::yLeft, 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i1() ), 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i2() + dy ) );
-      myPlot->setAxisScale( QwtPlot::xBottom, 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i1() ), 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i2() - dx ) );
-      if (mySecondY) {
-        QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
-        myPlot->setAxisScale( QwtPlot::yRight, 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i1() ), 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i2() + dy ) );
-      }
-      myPlot->replot();
+      this->incrementalZoom( dx, dy ); 
       myPnt = me.pos();
     }
     else if ( myOperation == PanId ) {
-      QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
-      QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
-
-      myPlot->setAxisScale( QwtPlot::yLeft, 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i1()-dy ), 
-          myPlot->invTransform( QwtPlot::yLeft, yMap.i2()-dy ) );
-      myPlot->setAxisScale( QwtPlot::xBottom, 
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i1()-dx ),
-          myPlot->invTransform( QwtPlot::xBottom, xMap.i2()-dx ) ); 
-      if (mySecondY) {
-        QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
-        myPlot->setAxisScale( QwtPlot::yRight,
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i1()-dy ), 
-          myPlot->invTransform( QwtPlot::yRight, y2Map.i2()-dy ) );
-      }
-      myPlot->replot();
+      this->incrementalPan( dx, dy );
       myPnt = me.pos();
     }
   }
@@ -1614,7 +1598,8 @@ bool Plot2d_ViewFrame::isYLogEnabled() const
   Constructor
 */
 Plot2d_Plot2d::Plot2d_Plot2d( QWidget* parent )
-     : QwtPlot( parent )
+  : QwtPlot( parent ),
+    myIsPolished( false )
 {
   // outline
   enableOutline( true );
@@ -1794,6 +1779,16 @@ bool Plot2d_Plot2d::existMarker( const QwtSymbol::Style typeMarker, const QColor
   return false;
 }
 
+/*!
+  Sets the flag saying that QwtPlot geometry has been fully defined.
+*/
+void Plot2d_Plot2d::polish()
+{
+  QwtPlot::polish();
+  myIsPolished = true;
+}
+
+
 /*!
   Creates presentation of object
   Default implementation is empty
@@ -1980,3 +1975,108 @@ void Plot2d_ViewFrame::setVisualParameters( const QString& parameters )
     fitData( 0, xmin, xmax, ymin, ymax, y2min, y2max );
   }  
 }
+
+/*!
+  Incremental zooming operation
+*/
+void Plot2d_ViewFrame::incrementalPan( const int incrX, const int incrY ) {
+  QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
+  QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
+  
+  myPlot->setAxisScale( QwtPlot::yLeft, 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i1()-incrY ), 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i2()-incrY ) );
+  myPlot->setAxisScale( QwtPlot::xBottom, 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i1()-incrX ),
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i2()-incrX ) ); 
+  if (mySecondY) {
+    QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
+    myPlot->setAxisScale( QwtPlot::yRight,
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i1()-incrY ), 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i2()-incrY ) );
+  }
+  myPlot->replot();
+}
+
+/*!
+  Incremental panning operation
+*/
+void Plot2d_ViewFrame::incrementalZoom( const int incrX, const int incrY ) {
+  QwtDiMap xMap = myPlot->canvasMap( QwtPlot::xBottom );
+  QwtDiMap yMap = myPlot->canvasMap( QwtPlot::yLeft );
+  
+  myPlot->setAxisScale( QwtPlot::yLeft, 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i1() ), 
+                       myPlot->invTransform( QwtPlot::yLeft, yMap.i2() + incrY ) );
+  myPlot->setAxisScale( QwtPlot::xBottom, 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i1() ), 
+                       myPlot->invTransform( QwtPlot::xBottom, xMap.i2() - incrX ) );
+  if (mySecondY) {
+    QwtDiMap y2Map = myPlot->canvasMap( QwtPlot::yRight );
+    myPlot->setAxisScale( QwtPlot::yRight, 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i1() ), 
+                         myPlot->invTransform( QwtPlot::yRight, y2Map.i2() + incrY ) );
+  }
+  myPlot->replot();
+}
+
+#define INCREMENT_FOR_OP 10
+
+/*!
+  Performs incremental panning to the left
+*/
+void Plot2d_ViewFrame::onPanLeft()
+{
+  this->incrementalPan( -INCREMENT_FOR_OP, 0 );
+}
+
+/*!
+  Performs incremental panning to the right
+*/
+void Plot2d_ViewFrame::onPanRight()
+{
+  this->incrementalPan( INCREMENT_FOR_OP, 0 );
+}
+
+/*!
+  Performs incremental panning to the top
+*/
+void Plot2d_ViewFrame::onPanUp()
+{
+  this->incrementalPan( 0, -INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental panning to the bottom
+*/
+void Plot2d_ViewFrame::onPanDown()
+{
+  this->incrementalPan( 0, INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental zooming in
+*/
+void Plot2d_ViewFrame::onZoomIn()
+{
+  this->incrementalZoom( INCREMENT_FOR_OP, INCREMENT_FOR_OP );
+}
+
+/*!
+  Performs incremental zooming out
+*/
+void Plot2d_ViewFrame::onZoomOut()
+{
+  this->incrementalZoom( -INCREMENT_FOR_OP, -INCREMENT_FOR_OP );
+}
+
+/*!
+  Schedules a FitAll operation by putting it to the application's
+  event queue. This ensures that other important events (show, resize, etc.)
+  are processed first.
+*/
+void Plot2d_ViewFrame::customEvent( QCustomEvent* ce )
+{
+  if ( ce->type() == FITALL_EVENT )
+    fitAll();
+}
index 2c38caf1d76d83e772714ee1ae5027c9d9c4cfc4..108cbd9573cf42cfce02593947365b170cfcc3c1 100755 (executable)
@@ -25,6 +25,7 @@
 
 class Plot2d_Plot2d;
 class Plot2d_Prs;
+class QCustomEvent;
 
 typedef QIntDict<Plot2d_Curve> CurveDict;
 
@@ -121,6 +122,9 @@ public:
   QString getVisualParameters();
   void    setVisualParameters( const QString& parameters );
 
+  void    incrementalPan ( const int incrX, const int incrY );
+  void    incrementalZoom( const int incrX, const int incrY );
+
 protected:
   int     testOperation( const QMouseEvent& );
   void    readPreferences();
@@ -138,6 +142,16 @@ public slots:
   void    onFitData();
   void    onChangeBackground();
 
+  void    onPanLeft();
+  void    onPanRight();
+  void    onPanUp();
+  void    onPanDown();
+  void    onZoomIn();
+  void    onZoomOut();
+
+protected:
+  virtual void customEvent( QCustomEvent* );
+
 protected slots:
   void    plotMousePressed( const QMouseEvent& );
   void    plotMouseMoved( const QMouseEvent& );
@@ -173,6 +187,7 @@ protected:
 
 class Plot2d_Plot2d : public QwtPlot 
 {
+  Q_OBJECT
 public:
   Plot2d_Plot2d( QWidget* parent );
 
@@ -189,11 +204,17 @@ public:
   virtual QSizePolicy sizePolicy() const;
   virtual QSize       minimumSizeHint() const;
 
+  bool                polished() const { return myIsPolished; }
+
+public slots:
+  virtual void polish();
+
 protected:
   bool       existMarker( const QwtSymbol::Style typeMarker, const QColor& color, const Qt::PenStyle typeLine );
 
 protected:
   QValueList<QColor> myColors;
+  bool               myIsPolished;
 };
 
 #endif
index 405e90243b97dc2a9d4dac1a654657804154a787..7681bd3f2b4eeba76076ef263cb5581d7f7d6cc4 100755 (executable)
 #include "Plot2d_ViewModel.h"
 #include "Plot2d_ViewWindow.h"
 
-int Plot2d_ViewManager::myMaxId = 0;
-
 /*!
   Constructor
 */
 Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk ) 
-: SUIT_ViewManager( study, desk )
+: SUIT_ViewManager( study, desk, new Plot2d_Viewer() )
 {
-  myId = ++myMaxId;
-  Plot2d_Viewer* v = new Plot2d_Viewer();
-  setViewModel( v );
+  setTitle( tr( "PLOT2D_VIEW_TITLE" ) );
 }
 
 /*!
@@ -48,16 +44,6 @@ 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
index 051b26f193116c80090bf1cc815a87bde9a54b83..a26b01cb69406c7a2eb6582dff135c9d4e1bda7b 100755 (executable)
@@ -37,7 +37,6 @@ public:
   Plot2d_Viewer*     getPlot2dModel() const;
 
 protected:
-  void         setViewName(SUIT_ViewWindow* theView);
   bool         insertView(SUIT_ViewWindow* theView);
 
 public slots:
@@ -48,10 +47,6 @@ protected slots:
 
 signals:
   void cloneView( Plot2d_ViewFrame*, Plot2d_ViewFrame* );
-
-protected:
-  static  int  myMaxId;
-  int          myId;
 };
 
 #endif
index 3d268e1c4303912f0bdd1f1ec097304fa26ddff2..e689f6ef5870081c84097aced17c3923972b5185 100755 (executable)
@@ -76,6 +76,7 @@ void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup)
       if (thePopup->count() > 0) thePopup->insertSeparator();
         thePopup->insertItem("Show toolbar", this, SLOT(onShowToolbar()));
     }
+    aView->RefreshDumpImage();
   }
 }
 
index e562e30dc182786ffe2b86232434dfd965a91515..1fdf78431df0be57fd216580e09897533ce5debf 100755 (executable)
@@ -33,7 +33,6 @@
 #include <qlayout.h>
 #include <qapplication.h>
 #include <qpopupmenu.h>
-#include <qimage.h>
 
 /*!
   Constructor
@@ -43,6 +42,8 @@ Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* th
 {
   myModel = theModel;
 
+  myDumpImage = QImage();
+
   myViewFrame = new Plot2d_ViewFrame(this, "plotView");
   setCentralWidget(myViewFrame);
 
@@ -491,8 +492,13 @@ void Plot2d_ViewWindow::onDumpView()
 */
 QImage Plot2d_ViewWindow::dumpView()
 {
-  QPixmap px = QPixmap::grabWindow( myViewFrame->winId() );
-  return px.convertToImage();
+  if ( getToolBar()->hasMouse() || myDumpImage.isNull() )
+    {
+      QPixmap px = QPixmap::grabWindow( myViewFrame->winId() );
+      return px.convertToImage();
+    }
+  
+  return myDumpImage;
 }
 
 /*!
@@ -532,3 +538,12 @@ void Plot2d_ViewWindow::setVisualParameters( const QString& parameters )
 {
   myViewFrame->setVisualParameters( parameters );
 }
+
+/*!
+  \refresh QImage, containing all scene rendering in window
+*/
+void Plot2d_ViewWindow::RefreshDumpImage()
+{
+  QPixmap px = QPixmap::grabWindow( myViewFrame->winId() );
+  myDumpImage = px.convertToImage();
+}
index b8c3718d3d37ac8ad82b47a1d01cca4d080a7aaf..aa1d4dd6227c77d6de0f4fb51b634e36a0f5ee2b 100755 (executable)
@@ -22,6 +22,8 @@
 #include "Plot2d.h"
 #include <SUIT_ViewWindow.h>
 
+#include <qimage.h>
+
 #ifdef WIN32
 #pragma warning( disable:4251 )
 #endif
@@ -48,6 +50,8 @@ public:
 
   virtual QString   getVisualParameters();
   virtual void      setVisualParameters( const QString& parameters );
+  
+  virtual void      RefreshDumpImage();
 
 protected:
   virtual QImage    dumpView();
@@ -94,6 +98,8 @@ private:
   QToolBar*         myToolBar;
 
   SUIT_ToolButton*  myCurveBtn;
+
+  QImage myDumpImage;
 };
 
 #ifdef WIN32
index 0e7aa10ab33884aac78081a26ca4b0e2b87f7061..e0d764da7b31e25c828ee10071f9ab02914e0ed2 100755 (executable)
@@ -406,3 +406,6 @@ msgstr "Diagonal cross"
 
 msgid "POSTSCRIPT_FILES"
 msgstr "PostScript files (*.ps)"
+
+msgid "Plot2d_ViewManager::PLOT2D_VIEW_TITLE"
+msgstr "Plot2d scene:%M - viewer:%V"
diff --git a/src/Plot2d/resources/plot2d_rotate.png b/src/Plot2d/resources/plot2d_rotate.png
deleted file mode 100755 (executable)
index 80926c5..0000000
Binary files a/src/Plot2d/resources/plot2d_rotate.png and /dev/null differ
diff --git a/src/Prs/Makefile.am b/src/Prs/Makefile.am
new file mode 100755 (executable)
index 0000000..7f5d31a
--- /dev/null
@@ -0,0 +1,26 @@
+#  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 $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSalomePrs.la
+
+salomeinclude_HEADERS = SALOME_Prs.h
+
+dist_libSalomePrs_la_SOURCES = SALOME_Prs.cxx
diff --git a/src/Prs/Makefile.in b/src/Prs/Makefile.in
deleted file mode 100755 (executable)
index 56c07d0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#  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=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_HEADERS = SALOME_Prs.h
-
-# Libraries targets
-
-LIB = libSalomePrs.la
-LIB_SRC =       SALOME_Prs.cxx
-
-LIB_CLIENT_IDL = 
-
-# Executables targets
-BIN = 
-BIN_SRC        =
-
-CPPFLAGS+=
-LDFLAGS+=
-
-
-@CONCLUDE@
diff --git a/src/PyInterp/Makefile.am b/src/PyInterp/Makefile.am
new file mode 100755 (executable)
index 0000000..9a783f2
--- /dev/null
@@ -0,0 +1,43 @@
+#  SALOME PyInterp : implementation of base thread-safe Python services
+#
+#  Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF 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
+#  Module : SALOME
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libPyInterp.la
+
+salomeinclude_HEADERS= \
+       PyInterp.h \
+       PyInterp_base.h \
+       PyInterp_Dispatcher.h
+
+dist_libPyInterp_la_SOURCES= \
+       PyInterp_base.cxx \
+       PyInterp_Dispatcher.cxx
+
+MOC_FILES= PyInterp_Watcher_moc.cxx
+nodist_libPyInterp_la_SOURCES= $(MOC_FILES)
+
+libPyInterp_la_CPPFLAGS= $(PYTHON_INCLUDES) $(QT_INCLUDES)
+libPyInterp_la_LDFLAGS= $(PYTHON_LIBS) $(QT_MT_LIBS)
diff --git a/src/PyInterp/Makefile.in b/src/PyInterp/Makefile.in
deleted file mode 100755 (executable)
index d9af0dc..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#  SALOME PyInterp : implementation of base thread-safe Python services
-#
-#  Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF 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
-#  Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= PyInterp.h \
-               PyInterp_base.h \
-               PyInterp_Dispatcher.h
-                    
-# Libraries targets
-LIB = libPyInterp.la
-
-LIB_SRC= PyInterp_base.cxx \
-        PyInterp_Dispatcher.cxx
-
-LIB_MOC = PyInterp_Watcher.h
-
-CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_INCLUDES)
-
-LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS)
-
-@CONCLUDE@
index 1c0bd7f80abee28b9354e847686382190b428ead..af9536fd88e7e9c2caafeca55e30800b27b9dfdb 100755 (executable)
 #endif  // WNT
 
 // ========================================================
-// little trick - we do not have debug python libraries
+// little trick - if we do not have debug python libraries
 #ifdef _DEBUG
-
-#undef _DEBUG
-#include <Python.h>
-#define _DEBUG
-
-#else  // _DEBUG
+ #ifndef HAVE_DEBUG_PYTHON
+  #undef _DEBUG
+ #endif
+#endif
 
 #include <Python.h>
 
-#endif // _DEBUG
+#ifdef _DEBUG
+ #ifndef HAVE_DEBUG_PYTHON
+  #define _DEBUG
+ #endif
+#endif
 
 // ========================================================
 // avoid warning messages
index 7225855fe7172ec0946ef4ca317731543ae3f3f0..d2a855767b80850b97a94a406dadac7ead705721 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
 #include <cStringIO.h>
+#include <structmember.h>
 
 using namespace std;
 
@@ -72,6 +73,108 @@ PyLockWrapper PyInterp_base::GetLockWrapper(){
   return _tstate;
 }
 
+static void
+PyStdOut_dealloc(PyStdOut *self)
+{
+  PyObject_Del(self);
+}
+
+static PyObject *
+PyStdOut_write(PyStdOut *self, PyObject *args)
+{
+  char *c;
+  int l;
+  if (!PyArg_ParseTuple(args, "t#:write",&c, &l))
+    return NULL;
+  if(self->_cb==NULL) {
+    if ( self->_iscerr )
+      std::cerr << c ;
+    else
+      std::cout << c ;
+  }
+  else {
+    self->_cb(self->_data,c);
+  }
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyMethodDef PyStdOut_methods[] = {
+  {"write",  (PyCFunction)PyStdOut_write,  METH_VARARGS,
+    PyDoc_STR("write(string) -> None")},
+  {NULL,    NULL}   /* sentinel */
+};
+
+static PyMemberDef PyStdOut_memberlist[] = {
+  {"softspace", T_INT,  offsetof(PyStdOut, softspace), 0,
+   "flag indicating that a space needs to be printed; used by print"},
+  {NULL} /* Sentinel */
+};
+
+
+
+static PyTypeObject PyStdOut_Type = {
+  /* The ob_type field must be initialized in the module init function
+   * to be portable to Windows without using C++. */
+  PyObject_HEAD_INIT(NULL)
+  0,      /*ob_size*/
+  "PyOut",   /*tp_name*/
+  sizeof(PyStdOut),  /*tp_basicsize*/
+  0,      /*tp_itemsize*/
+  /* methods */
+  (destructor)PyStdOut_dealloc, /*tp_dealloc*/
+  0,      /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  0,      /*tp_compare*/
+  0,      /*tp_repr*/
+  0,      /*tp_as_number*/
+  0,      /*tp_as_sequence*/
+  0,      /*tp_as_mapping*/
+  0,      /*tp_hash*/
+        0,                      /*tp_call*/
+        0,                      /*tp_str*/
+        PyObject_GenericGetAttr,                      /*tp_getattro*/
+        /* softspace is writable:  we must supply tp_setattro */
+        PyObject_GenericSetAttr,    /* tp_setattro */
+        0,                      /*tp_as_buffer*/
+        Py_TPFLAGS_DEFAULT,     /*tp_flags*/
+        0,                      /*tp_doc*/
+        0,                      /*tp_traverse*/
+        0,                      /*tp_clear*/
+        0,                      /*tp_richcompare*/
+        0,                      /*tp_weaklistoffset*/
+        0,                      /*tp_iter*/
+        0,                      /*tp_iternext*/
+        PyStdOut_methods,                      /*tp_methods*/
+        PyStdOut_memberlist,                      /*tp_members*/
+        0,                      /*tp_getset*/
+        0,                      /*tp_base*/
+        0,                      /*tp_dict*/
+        0,                      /*tp_descr_get*/
+        0,                      /*tp_descr_set*/
+        0,                      /*tp_dictoffset*/
+        0,                      /*tp_init*/
+        0,                      /*tp_alloc*/
+        0,                      /*tp_new*/
+        0,                      /*tp_free*/
+        0,                      /*tp_is_gc*/
+};
+
+
+#define PyStdOut_Check(v)  ((v)->ob_type == &PyStdOut_Type)
+
+static PyStdOut * newPyStdOut( bool iscerr )
+{
+  PyStdOut *self;
+  self = PyObject_New(PyStdOut, &PyStdOut_Type);
+  if (self == NULL)
+    return NULL;
+  self->softspace = 0;
+  self->_cb = NULL;
+  self->_iscerr = iscerr;
+  return self;
+}
 
 // main python interpreter (static attributes)
 
@@ -124,12 +227,9 @@ void PyInterp_base::initialize()
     return;
   }
 
-  // Create cStringIO to capture stdout and stderr
-  PycString_IMPORT;
-  if (PycStringIO) { // CTH11627 : additional check
-    _vout = PycStringIO->NewOutput(128);
-    _verr = PycStringIO->NewOutput(128);
-  }
+  // Create python objects to capture stdout and stderr
+  _vout=(PyObject*)newPyStdOut( false ); // stdout 
+  _verr=(PyObject*)newPyStdOut( true );  // stderr
 
   // All the initRun outputs are redirected to the standard output (console)
   initRun();
@@ -147,6 +247,10 @@ void PyInterp_base::init_python()
   PySys_SetArgv(_argc, _argv);
   PyEval_InitThreads(); // Create (and acquire) the interpreter lock
   _interp = PyThreadState_Get()->interp;
+  if (PyType_Ready(&PyStdOut_Type) < 0)
+    {
+      PyErr_Print();
+    }
   _gtstate = PyEval_SaveThread(); // Release global thread state
 }
 
@@ -164,17 +268,18 @@ string PyInterp_base::getbanner()
 
 int PyInterp_base::initRun()
 {
+  // 
+  // probably all below code isn't required
+  //
+  /*
   PySys_SetObject("stderr",_verr);
   PySys_SetObject("stdout",_vout);
 
-  PyObjWrapper verr(PyObject_CallMethod(_verr,"reset",""));
-  PyObjWrapper vout(PyObject_CallMethod(_vout,"reset",""));
-
   //PyObject *m = PyImport_GetModuleDict();
   
   PySys_SetObject("stdout",PySys_GetObject("__stdout__"));
   PySys_SetObject("stderr",PySys_GetObject("__stderr__"));
-
+  */
   return 0;
 }
 
@@ -264,9 +369,6 @@ int PyInterp_base::simpleRun(const char *command)
   PySys_SetObject("stderr",_verr);
   PySys_SetObject("stdout",_vout);
 
-  PyObjWrapper verr(PyObject_CallMethod(_verr,"reset",""));
-  PyObjWrapper vout(PyObject_CallMethod(_vout,"reset",""));
-
   int ier = compile_command(command,_g);
 
   // Outputs are redirected on standards outputs (console)
@@ -300,17 +402,15 @@ const char * PyInterp_base::getNext()
 }
 
 
-string PyInterp_base::getverr(){ 
-  //PyLockWrapper aLock(_tstate);
-  PyObjWrapper v(PycStringIO->cgetvalue(_verr));
-  string aRet(PyString_AsString(v));
-  return aRet;
+void PyInterp_base::setvoutcb(PyOutChanged* cb, void* data)
+{  
+  ((PyStdOut*)_vout)->_cb=cb;
+  ((PyStdOut*)_vout)->_data=data;
 }
 
 
-string PyInterp_base::getvout(){  
-  //PyLockWrapper aLock(_tstate);
-  PyObjWrapper v(PycStringIO->cgetvalue(_vout));
-  string aRet(PyString_AsString(v));
-  return aRet;
+void PyInterp_base::setverrcb(PyOutChanged* cb, void* data)
+{  
+  ((PyStdOut*)_verr)->_cb=cb;
+  ((PyStdOut*)_verr)->_data=data;
 }
index 71931655cd30ae6db5061993290e8717ac047784..298b1c5088b2d3f8753017590d173a414f156d0d 100644 (file)
@@ -63,6 +63,8 @@ class PYINTERP_EXPORT PyLockWrapper
   ~PyLockWrapper();
 };
 
+typedef void PyOutChanged(void* data,char * c);
+
 class PYINTERP_EXPORT PyInterp_base{
  public:
   static int _argc;
@@ -85,8 +87,8 @@ class PYINTERP_EXPORT PyInterp_base{
   PyLockWrapper GetLockWrapper();
 
   std::string getbanner(); 
-  std::string getverr();
-  std::string getvout();  
+  void setverrcb(PyOutChanged*,void*);
+  void setvoutcb(PyOutChanged*,void*);
 
   const char * getPrevious();
   const char * getNext();    
@@ -142,4 +144,13 @@ public:
   }
 };
 
+
+typedef struct {
+  PyObject_HEAD
+  int softspace;
+  PyOutChanged* _cb;
+  void* _data;
+  bool _iscerr;
+} PyStdOut;
+
 #endif
diff --git a/src/PythonConsole/Makefile.am b/src/PythonConsole/Makefile.am
new file mode 100755 (executable)
index 0000000..8884cfa
--- /dev/null
@@ -0,0 +1,50 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libPythonConsole.la
+
+salomeinclude_HEADERS= \
+       PythonConsole.h \
+       PythonConsole_PyConsole.h \
+       PythonConsole_PyEditor.h \
+       PythonConsole_PyInterp.h
+
+dist_libPythonConsole_la_SOURCES= \
+       PythonConsole_PyConsole.cxx \
+       PythonConsole_PyEditor.cxx \
+       PythonConsole_PyInterp.cxx              
+
+MOC_FILES= \
+       PythonConsole_PyEditor_moc.cxx \
+       PythonConsole_PyConsole_moc.cxx
+nodist_libPythonConsole_la_SOURCES= $(MOC_FILES)
+
+
+libPythonConsole_la_CPPFLAGS= $(PYTHON_INCLUDES) $(QT_INCLUDES) \
+       -I$(srcdir)/../PyInterp -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+libPythonConsole_la_LDFLAGS= $(PYTHON_LIBS) $(QT_MT_LIBS)
+
+
diff --git a/src/PythonConsole/Makefile.in b/src/PythonConsole/Makefile.in
deleted file mode 100755 (executable)
index 692b54b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= PythonConsole.h \
-               PythonConsole_PyConsole.h \
-               PythonConsole_PyEditor.h \
-               PythonConsole_PyInterp.h
-                    
-# Libraries targets
-LIB = libPythonConsole.la
-
-LIB_SRC= PythonConsole_PyConsole.cxx \
-        PythonConsole_PyEditor.cxx \
-        PythonConsole_PyInterp.cxx             
-
-LIB_MOC = \
-       PythonConsole_PyEditor.h \
-       PythonConsole_PyConsole.h
-
-CPPFLAGS+= $(PYTHON_INCLUDES) $(QT_INCLUDES)
-
-LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS)
-
-@CONCLUDE@
-
-
index 98fa563c4c2443a748a04993a9d46c259a234c06..8e1db3946c9cf95f8f3c0111a36baeb117aa2558 100755 (executable)
 #endif  // WNT
 
 // ========================================================
-// little trick - we do not have debug python libraries
+// little trick - if we do not have debug python libraries
 #ifdef _DEBUG
-
+#ifndef HAVE_DEBUG_PYTHON
 #undef _DEBUG
-#include <Python.h>
-#define _DEBUG
-
-#else  // _DEBUG
+#endif
+#endif
 
-#include <Python.h>
+//#include <Python.h>
 
-#endif // _DEBUG
+#ifdef _DEBUG
+#ifndef HAVE_DEBUG_PYTHON
+#define _DEBUG
+#endif
+#endif
 
 // ========================================================
 // avoid warning messages
index 9eecd0f158223ef79724136f9194e4cae8a1053d..9c8f852377101f51f431e6cc293d4acc2f0f905d 100755 (executable)
@@ -16,6 +16,8 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
+#include <Python.h>
 #include "PythonConsole_PyConsole.h"
 #include "PythonConsole_PyEditor.h"
 #include "PyInterp_base.h"
@@ -63,6 +65,16 @@ void PythonConsole::exec( const QString& command )
     myEditor->exec( command );
 }
 
+/*!
+  Blocks execution of main application until command is executed
+  \param command - string with command and arguments
+*/
+void PythonConsole::execAndWait( const QString& command )
+{
+  if ( myEditor )
+    myEditor->execAndWait( command );
+}
+
 /*!
   Changes font of python console
   \param f - new font
index 4978214fbf356c9351d6a95328fa6a27055c5761..b3364e597b229b74b857d896d87aa3c5dcdb4fd3 100755 (executable)
@@ -39,7 +39,7 @@ public:
   virtual void   setFont( const QFont& );
 
   void           exec( const QString& command );
-
+  void           execAndWait( const QString& command );
 protected:
   PyInterp_base*          myInterp;
   PythonConsole_PyEditor* myEditor;
index 3093b89de88e8df55622b7482c69751e0799c86c..deecd648f886719e0c25919b31570d6ca16d884b 100755 (executable)
 #include <PyInterp_Dispatcher.h>
 
 #include <SUIT_Tools.h>
+#include <SUIT_Session.h>
 
 #include <qmap.h>
 #include <qclipboard.h>
 #include <qdragobject.h>
 #include <qapplication.h>
 #include <qpopupmenu.h>
+#include <qfontmetrics.h>
+#include <iostream>
 
 using namespace std;
 
@@ -51,12 +54,13 @@ enum { IdCopy, IdPaste, IdClear, IdSelectAll };
 
 static QString READY_PROMPT = ">>> ";
 static QString DOTS_PROMPT  = "... ";
-#define PROMPT_SIZE _currentPrompt.length()
+
+#define PROMPT_SIZE (int)_currentPrompt.length()
 
 class ExecCommand : public PyInterp_LockRequest
 {
 public:
-  ExecCommand(PyInterp_base* theInterp, const char* theCommand,
+  ExecCommand(PyInterp_base* theInterp, const QString& theCommand,
               PythonConsole_PyEditor* theListener, bool sync = false)
     : PyInterp_LockRequest( theInterp, theListener, sync ),
       myCommand( theCommand ), myState( PyInterp_Event::OK )
@@ -64,20 +68,17 @@ public:
 
 protected:
   virtual void execute(){
-    if(myCommand != ""){
+    if( !myCommand.stripWhiteSpace().isEmpty() ) {
 //      if(MYDEBUG) MESSAGE("*** ExecCommand::execute() started");
+      SUIT_Session::SetPythonExecuted(true); // disable GUI user actions
       int ret = getInterp()->run( myCommand.latin1() );
+      SUIT_Session::SetPythonExecuted(false); // enable GUI user actions
 //      if(MYDEBUG) MESSAGE("ExecCommand::execute() - myInterp = "<<getInterp()<<"; myCommand = '"<<myCommand.latin1()<<"' - "<<ret);
-      if(ret < 0)
+      if( ret < 0 )
        myState = PyInterp_Event::ERROR;
-      else if(ret > 0)
+      else if( ret > 0 )
        myState = PyInterp_Event::INCOMPLETE;
-      myError  = getInterp()->getverr().c_str();
-      myOutput = getInterp()->getvout().c_str();
 //      if(MYDEBUG) MESSAGE("*** ExecCommand::execute() finished");
-    }else{
-      myError = "";
-      myOutput = "";
     }
   }
 
@@ -86,22 +87,34 @@ protected:
     return new PyInterp_Event( myState, (PyInterp_Request*)this );    
   }
 
-public:
-  QString myError;
-  QString myOutput;
-
 private:
   QString myCommand;
   int myState;
 };
 
+#define PRINT_EVENT 65432
+
+class PrintEvent : public QCustomEvent
+{
+public:
+  PrintEvent( const char* c ) : QCustomEvent( PRINT_EVENT ), myText( c ) {}
+  QString text() const { return myText; }
+private:
+  QString myText;
+};
+
+void staticCallback( void* data, char* c )
+{
+  QApplication::postEvent( (PythonConsole_PyEditor*)data, new PrintEvent( c ) ); 
+}
 
 /*!
     Constructor
 */
 PythonConsole_PyEditor::PythonConsole_PyEditor(PyInterp_base* theInterp, QWidget *theParent, const char* theName): 
   QTextEdit(theParent,theName),
-  myInterp( 0 )
+  myInterp( 0 ),
+  myIsInLoop( false )
 {
   QString fntSet( "" );
   QFont aFont = SUIT_Tools::stringToFont( fntSet );
@@ -110,7 +123,11 @@ PythonConsole_PyEditor::PythonConsole_PyEditor(PyInterp_base* theInterp, QWidget
   setUndoRedoEnabled( false );
 
   _currentPrompt = READY_PROMPT;
-  setWordWrap(NoWrap);
+  setWordWrap( WidgetWidth );
+  setWrapPolicy( Anywhere );
+
+  theInterp->setvoutcb( staticCallback, this );
+  theInterp->setverrcb( staticCallback, this );
 
   connect(this,SIGNAL(returnPressed()),this,SLOT(handleReturn()) );
 
@@ -133,7 +150,43 @@ void PythonConsole_PyEditor::setText(QString s)
 {
   int para=paragraphs()-1;
   int col=paragraphLength(para);
-  insertAt(s,para,col);
+
+  // Limit length of the string because exception may occur if string too long (NPAL16033)
+  // Exception occurs if  one of paragraphs of the input string "s" is too long.  Now long 
+  // paragraph is limited with threshold numbers of characters and finished by " ..." string. 
+  // Note that first paragraph of the string is checked only because it is enough for bug fixing. 
+  // If it will be insufficient for other cases then more complicated check should be implemented.
+  // At present it is not done because of possible performance problem.
+
+  static int threshold = 50000;
+  long strLength = s.length();
+  if ( col + strLength <= threshold || s.find( '\n' ) < threshold )
+    insertAt(s,para,col);
+  else
+  {
+    if ( col >= threshold )
+    {
+      if ( text( para ).right( 5 )  != QString( " ...\n" ) )
+        insertAt(" ...\n",para,col);
+    }
+    else
+    {
+      long n = threshold - col; 
+      s.truncate( n );
+      if ( n >= 5 )
+      {
+        s.at( n - 5 ) = QChar( ' ' );
+        s.at( n - 4 ) = QChar( '.' );
+        s.at( n - 3 ) = QChar( '.' );
+        s.at( n - 2 ) = QChar( '.' );
+        s.at( n - 1 ) = QChar( '\n' );
+      }
+      else 
+        s = " ...\n";
+      insertAt(s,para,col);
+    }
+  }
+
   int n = paragraphs()-1;  
   setCursorPosition( n, paragraphLength(n)); 
 }
@@ -145,16 +198,32 @@ void PythonConsole_PyEditor::setText(QString s)
 void PythonConsole_PyEditor::exec( const QString& command )
 {
   // Some interactive command is being executed in this editor -> do nothing
-  if ( isReadOnly() )
+  if ( isReadOnly() ) {
+    myQueue.push_back( command );
     return;
+  }
   int para=paragraphs()-1;
   removeParagraph( para );
   _currentPrompt = READY_PROMPT;
   _buf.truncate(0);
   _isInHistory = false;
-  setText( "\n" + _currentPrompt); 
-  setText( command + "\n" ); 
-  handleReturn();
+  setText( "\n" + _currentPrompt);
+  // PAL15963 (Problem with option -u (--execute) of runSalome).
+  // Let events creating a study end before script execution starts
+  setText( command /*+ "\n"*/ );
+  //handleReturn();
+  qApp->postEvent( this, new QKeyEvent(QEvent::KeyPress,Key_Return,13,Qt::NoButton ));
+}
+
+void PythonConsole_PyEditor::execAndWait( const QString& command )
+{
+  if( myIsInLoop )
+    return;
+
+  myIsInLoop = true;
+  exec( command );
+  qApp->enter_loop();
+  myIsInLoop = false;
 }
 
 /*!
@@ -170,7 +239,7 @@ void PythonConsole_PyEditor::handleReturn()
   
   // Post a request to execute Python command
   // Editor will be informed via a custom event that execution has been completed
-  PyInterp_Dispatcher::Get()->Exec( new ExecCommand( myInterp, _buf.latin1(), this ) );
+  PyInterp_Dispatcher::Get()->Exec( new ExecCommand( myInterp, _buf, this ) );
 }
 
 /*!
@@ -212,13 +281,15 @@ void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event )
       int endLine = paragraphs() -1;
       col = charAt( event->pos(), &par );
       if ( col >= 0 && par >= 0 ) {
-       if ( par != endLine || col < PROMPT_SIZE )
-         setCursorPosition( endLine, paragraphLength( endLine ) );
+       // PAL12896 -->
+       if ( par != endLine || col < PROMPT_SIZE ) {
+         QPoint aPos = paragraphRect(endLine).bottomRight();
+         QMouseEvent* e = new QMouseEvent(event->type(),aPos,event->button(),event->state());
+         QTextEdit::contentsMouseReleaseEvent(e);
+       }
        else
-         setCursorPosition( par, col );
-       QApplication::clipboard()->setSelectionMode(TRUE);
-       paste();
-       QApplication::clipboard()->setSelectionMode(FALSE);
+         QTextEdit::contentsMouseReleaseEvent(event);
+       // PAL12896 <--
       }
     }
   }
@@ -357,21 +428,22 @@ void PythonConsole_PyEditor::keyPressEvent( QKeyEvent* e )
       else if ( ctrlPressed ) {
        moveCursor( QTextEdit::MoveUp, false );
       }
-      else { 
-       QString histLine = _currentPrompt;
-       if ( ! _isInHistory ) {
-         _isInHistory = true;
-         _currentCommand = text( endLine ).remove( 0, PROMPT_SIZE );
-         _currentCommand.truncate( _currentCommand.length() - 1 );
-       }
-       QString previousCommand = myInterp->getPrevious();
-       if ( previousCommand.compare( BEGIN_HISTORY_PY ) != 0 )
-  {
-    removeParagraph( endLine );
-         histLine.append( previousCommand );
-    append( histLine );
-       }
-       moveCursor( QTextEdit::MoveEnd, false );
+      else {
+        QString histLine = _currentPrompt;
+        if ( ! _isInHistory ) {
+          _isInHistory = true;
+          _currentCommand = text( endLine ).remove( 0, PROMPT_SIZE );
+          _currentCommand.truncate( _currentCommand.length() - 1 );
+        }
+        QString previousCommand = myInterp->getPrevious();
+        if ( previousCommand.compare( BEGIN_HISTORY_PY ) != 0 )
+        {
+          removeParagraph( endLine );
+          histLine.append( previousCommand );
+          append( histLine );
+        }
+        moveCursor( QTextEdit::MoveEnd, false );
+        scrollViewAfterHistoryUsing( previousCommand ); // NPAL16035
       }
       break;
     }
@@ -409,6 +481,7 @@ void PythonConsole_PyEditor::keyPressEvent( QKeyEvent* e )
          }
        }
        moveCursor( QTextEdit::MoveEnd, false );
+        scrollViewAfterHistoryUsing( nextCommand ); // NPAL16035
       }
       break;
     }
@@ -598,9 +671,9 @@ void PythonConsole_PyEditor::keyPressEvent( QKeyEvent* e )
        if ( ctrlPressed && !hasSelectedText() ) {
          QString txt = text( curLine );
          int ind = curCol;
-         while ( ind < txt.length()-1 && txt[ ind ] == ' ' ) ind++;
+         while ( ind < (int)( txt.length() - 1 ) && txt[ind] == ' ' ) ind++;
          ind = txt.find( ' ', ind );
-         while ( ind < txt.length()-1 && txt[ ind ] == ' ' ) ind++;
+         while ( ind < (int)( txt.length() - 1 ) && txt[ ind ] == ' ' ) ind++;
          if ( ind > PROMPT_SIZE-1 ) {
            setSelection( curLine, curCol, curLine, ind );
            removeSelectedText();
@@ -641,32 +714,39 @@ void PythonConsole_PyEditor::keyPressEvent( QKeyEvent* e )
 void PythonConsole_PyEditor::customEvent(QCustomEvent* e)
 {
   switch( e->type() ) {
+  case PRINT_EVENT:
+    {
+      PrintEvent* pe=(PrintEvent*)e;
+      setText( pe->text() );
+      return;
+    }
   case PyInterp_Event::OK:
   case PyInterp_Event::ERROR:
     {
-      PyInterp_Event* pe = dynamic_cast<PyInterp_Event*>( e );
-      if ( pe ){
-       ExecCommand* ec = dynamic_cast<ExecCommand*>( pe->GetRequest() );
-       if ( ec ){
-         // The next line has appeared dangerous in case if
-         // Python command execution has produced very large output.
-         // A more clever approach is needed...
-         setText(ec->myOutput);
-         setText(ec->myError);
-       }
-      }
       _buf.truncate(0);
       _currentPrompt = READY_PROMPT;
+      QString txt = text( paragraphs()-1 );
+      txt.truncate( txt.length()-1 );
+      if ( !txt.isEmpty() )
+       setText("\n");
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
       break;
     }
   case PyInterp_Event::INCOMPLETE:
     {
       _buf.append("\n");
       _currentPrompt = DOTS_PROMPT;
+      QString txt = text( paragraphs()-1 );
+      txt.truncate( txt.length()-1 );
+      if ( !txt.isEmpty() )
+       setText("\n");
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
       break;
     }
   default:
@@ -675,6 +755,12 @@ void PythonConsole_PyEditor::customEvent(QCustomEvent* e)
 
   setReadOnly( false );
   _isInHistory = false;
+
+  if ( e->type() == PyInterp_Event::OK && myQueue.count() > 0 ) {
+    QString nextcmd = myQueue[0];
+    myQueue.pop_front();
+    exec( nextcmd );
+  }
 }
 
 /*!
@@ -694,6 +780,8 @@ void PythonConsole_PyEditor::onPyInterpChanged( PyInterp_base* interp )
       _isInHistory = false;
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
     }
     else {
       clear();
@@ -711,7 +799,7 @@ QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos )
   QPopupMenu* popup = QTextEdit::createPopupMenu( pos );
 
   QValueList<int> ids;
-  for ( int i = 0; popup && i < popup->count(); i++ )
+  for ( int i = 0; popup && i < (int)popup->count(); i++ )
   {
     if ( !popup->isItemEnabled( popup->idAt( i ) ) )
       ids.append( popup->idAt( i ) );
@@ -730,3 +818,36 @@ QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos )
 
   return popup;
 }
+
+/*!
+  Scrolls view after use of history (Up/Down keys)to the left position if length
+  of command less than visible width of the view
+*/
+void PythonConsole_PyEditor::scrollViewAfterHistoryUsing( const QString& command )
+{
+  if ( !command.isEmpty() )
+  {
+    if ( command == QString( BEGIN_HISTORY_PY ) )
+    {
+      ensureCursorVisible();
+      return;
+    }
+
+    QFontMetrics aFM( currentFont() );
+    int aCommandLength = aFM.width( command ) + aFM.width( READY_PROMPT ) + 5;
+    int aVisibleWidth = visibleWidth();
+    QScrollBar* aBar = horizontalScrollBar();
+    if ( aBar )
+    {
+      if ( aCommandLength <= aVisibleWidth )
+        aBar->setValue( aBar->minValue() );
+      else  if ( aVisibleWidth > 0 )
+      {
+        double aRatio = aCommandLength / contentsWidth();
+        double aPos = ( aBar->maxValue() - aBar->minValue() ) * aRatio;
+        aBar->setValue( (int)aPos );
+        ensureCursorVisible();
+      }
+    }
+  }
+}
index 004b40021a5e7874b92cd8d0f15eb1bc9764296a..d8a2acb30ba223cedc819acc4303949d0d04bb51 100755 (executable)
@@ -47,6 +47,7 @@ public:
   bool isCommand(const QString& str) const;
 
   virtual void exec( const QString& command );
+  void execAndWait( const QString& command );
   
 protected:
   virtual void contentsDropEvent( QDropEvent* event );
@@ -54,24 +55,29 @@ protected:
   virtual void keyPressEvent (QKeyEvent* event);
   virtual void mousePressEvent (QMouseEvent* event);
   virtual void customEvent (QCustomEvent* event);
-  
+
 public slots:
   void handleReturn();
   void onPyInterpChanged( PyInterp_base* );
 
   virtual QPopupMenu* createPopupMenu( const QPoint& );
-  
+
+private:
+
+  void scrollViewAfterHistoryUsing( const QString& command );
+
 private:
   QString        _buf;
   QString        _currentCommand;
   QString        _currentPrompt;
-  bool           _isInHistory;
+  bool           _isInHistory, myIsInLoop;
 
   PyInterp_base* myInterp;
 
-  QString myBanner;
-  QString myOutput;
-  QString myError;
+  QString        myBanner;
+  QString        myOutput;
+  QString        myError;
+  QStringList    myQueue;
 };
 
 #endif
index 09ceadb27f13928cc03edefb75e4d2563b9d2d05..e540237796529b00b44dff2ee97d6238ede9ce0f 100755 (executable)
@@ -75,26 +75,57 @@ PythonConsole_PyInterp::~PythonConsole_PyInterp()
 
 bool PythonConsole_PyInterp::initState()
 {
+  /*
+   * The GIL is acquired on input and released on output
+   */
+    /*PyEval_AcquireLock();
+#ifdef WNT 
+  _tstate = PyGILState_GetThisThreadState();
+  // if no thread state defined
+  if ( _tstate )
+    PyThreadState_Swap(_tstate);
+  else
+#endif
+  {
+    _tstate = Py_NewInterpreter(); // create an interpreter and save current state
+    PySys_SetArgv(PyInterp_base::_argc,PyInterp_base::_argv); // initialize sys.argv
+    //if(MYDEBUG) MESSAGE("PythonConsole_PyInterp::initState - this = "<<this<<"; _tstate = "<<_tstate);
+  }*/
+
   /*
    * The GIL is acquired and will be held on initState output
    * It is the caller responsability to release the lock if needed
    */
   PyEval_AcquireLock();
+
   _tstate = Py_NewInterpreter(); // create an interpreter and save current state
   PySys_SetArgv(PyInterp_base::_argc,PyInterp_base::_argv); // initialize sys.argv
 //  if(MYDEBUG) MESSAGE("PythonConsole_PyInterp::initState - this = "<<this<<"; _tstate = "<<_tstate);
 
+
   /*
    * If builtinmodule has been initialized all the sub interpreters
    * will have the same __builtin__ module
    */
-  if(builtinmodule){ 
+  if(!builtinmodule) // PAL18041: deepcopy function don't work in Salome
+  {
+    //builtinmodule is static member of PyInterp class
+    //If it is not NULL (initialized to the builtin module of the main interpreter
+    //all the sub interpreters will have the same builtin
+    //_interp is a static member and is the main interpreter
+    //The first time we initialized it to the builtin of main interpreter
+    builtinmodule=PyDict_GetItemString(_interp->modules, "__builtin__");
+  }
+
+  if(builtinmodule)
+    { 
     PyObject *m = PyImport_GetModuleDict();
     PyDict_SetItemString(m, "__builtin__", builtinmodule);
 //    SCRUTE(builtinmodule->ob_refcnt); // builtinmodule reference counter
     _tstate->interp->builtins = PyModule_GetDict(builtinmodule);
     Py_INCREF(_tstate->interp->builtins);
-  }
+  }    
   PyEval_ReleaseThread(_tstate);
   return true;
 }
diff --git a/src/QDS/Makefile.am b/src/QDS/Makefile.am
new file mode 100755 (executable)
index 0000000..03513ac
--- /dev/null
@@ -0,0 +1,68 @@
+#  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
+#  $Header: /home/server/cvs/GUI/GUI_SRC/src/QDS/Makefile.in
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libQDS.la
+
+# header files 
+salomeinclude_HEADERS= QDS.h \
+       QDS_CheckBox.h \
+       QDS_ComboBox.h \
+       QDS_Datum.h \
+       QDS_LineEdit.h \
+       QDS_SpinBox.h \
+       QDS_SpinBoxDbl.h \
+       QDS_TextEdit.h \
+       QDS_Validator.h
+
+dist_libQDS_la_SOURCES= \
+       QDS.cxx \
+       QDS_CheckBox.cxx \
+       QDS_ComboBox.cxx \
+       QDS_Datum.cxx \
+       QDS_LineEdit.cxx \
+       QDS_SpinBox.cxx \
+       QDS_SpinBoxDbl.cxx \
+       QDS_TextEdit.cxx \
+       QDS_Validator.cxx
+MOC_FILES= \
+       QDS_CheckBox_moc.cxx \
+       QDS_ComboBox_moc.cxx \
+       QDS_Datum_moc.cxx \
+       QDS_LineEdit_moc.cxx \
+       QDS_SpinBox_moc.cxx \
+       QDS_SpinBoxDbl_moc.cxx \
+       QDS_TextEdit_moc.cxx
+nodist_libQDS_la_SOURCES= $(MOC_FILES)
+
+# may be neccessary for the external projects or future improvements
+EXTRA_DIST+= QDS_RadioBox.cxx QDS_RadioBox.h resources/QDS_msg_en.po
+
+libQDS_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) \
+                   -I$(srcdir)/../Qtx -I$(srcdir)/../DDS
+
+libQDS_la_LDFLAGS=$(QT_MT_LIBS) $(CAS_KERNEL)
+libQDS_la_LIBADD=../DDS/libDDS.la ../Qtx/libqtx.la
+
diff --git a/src/QDS/Makefile.in b/src/QDS/Makefile.in
deleted file mode 100755 (executable)
index 290054d..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#  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
-#  $Header: /home/server/cvs/GUI/GUI_SRC/src/QDS/Makefile.in
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= QDS.h \
-       QDS_CheckBox.h \
-       QDS_ComboBox.h \
-       QDS_Datum.h \
-       QDS_LineEdit.h \
-       QDS_SpinBox.h \
-       QDS_SpinBoxDbl.h \
-       QDS_TextEdit.h \
-       QDS_Validator.h
-                    
-# Libraries targets
-LIB = libQDS.la
-
-LIB_SRC= QDS.cxx \
-       QDS_CheckBox.cxx \
-       QDS_ComboBox.cxx \
-       QDS_Datum.cxx \
-       QDS_LineEdit.cxx \
-       QDS_SpinBox.cxx \
-       QDS_SpinBoxDbl.cxx \
-       QDS_TextEdit.cxx \
-       QDS_Validator.cxx
-LIB_MOC = QDS_CheckBox.h \
-       QDS_ComboBox.h \
-       QDS_Datum.h \
-       QDS_LineEdit.h \
-       QDS_SpinBox.h \
-       QDS_SpinBoxDbl.h \
-       QDS_TextEdit.h
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL) -lDDS -lqtx
-
-@CONCLUDE@
-
-
index 7b3f984b2c77263a4031ba81f28d782c9ec33775..fb1cdae2448ec31ca1181cfee38d4c587d2517d2 100644 (file)
@@ -30,6 +30,9 @@
 
 QValueList<QDS_Datum*> QDS::_datumList;
 
+/*!
+  Convert the OpenCascade ascii string to Qt string.
+*/
 QString QDS::toQString( const TCollection_AsciiString& src )
 {
   QTextCodec* codec = QTextCodec::codecForLocale();
@@ -40,6 +43,9 @@ QString QDS::toQString( const TCollection_AsciiString& src )
   return res;
 }
 
+/*!
+  Convert the OpenCascade unicode string to Qt string.
+*/
 QString QDS::toQString( const TCollection_ExtendedString& src )
 {
   if ( src.IsAscii() )
@@ -48,6 +54,9 @@ QString QDS::toQString( const TCollection_ExtendedString& src )
     return QString( (QChar*)src.ToExtString(), src.Length() );
 }
 
+/*!
+  Convert the OpenCascade ascii string to Qt string.
+*/
 QString QDS::toQString( const Handle(TCollection_HAsciiString)& src )
 {
   if ( src.IsNull() )
@@ -56,6 +65,9 @@ QString QDS::toQString( const Handle(TCollection_HAsciiString)& src )
     return toQString( src->String() );
 }
 
+/*!
+  Convert the OpenCascade unicode string to Qt string.
+*/
 QString QDS::toQString( const Handle(TCollection_HExtendedString)& src )
 {
   if ( src.IsNull() )
@@ -64,6 +76,9 @@ QString QDS::toQString( const Handle(TCollection_HExtendedString)& src )
     return toQString( src->String() );
 }
 
+/*!
+  Convert the Qt string to OpenCascade ascii string.
+*/
 TCollection_AsciiString QDS::toAsciiString( const QString& src )
 {
   TCollection_AsciiString res;
@@ -82,11 +97,17 @@ TCollection_AsciiString QDS::toAsciiString( const QString& src )
   return res;
 }
 
+/*!
+  Convert the OpenCascade unicode string to OpenCascade ascii string.
+*/
 TCollection_AsciiString QDS::toAsciiString( const TCollection_ExtendedString& src )
 {
   return TCollection_AsciiString( src );
 }
 
+/*!
+  Convert the OpenCascade unicode string to OpenCascade ascii string.
+*/
 TCollection_AsciiString QDS::toAsciiString( const Handle(TCollection_HExtendedString)& src )
 {
   TCollection_AsciiString res;
@@ -95,6 +116,9 @@ TCollection_AsciiString QDS::toAsciiString( const Handle(TCollection_HExtendedSt
   return res;
 }
 
+/*!
+  Convert the Qt string to OpenCascade unicode string.
+*/
 TCollection_ExtendedString QDS::toExtString( const QString& src )
 {
   if ( src.isEmpty() )
@@ -112,11 +136,18 @@ TCollection_ExtendedString QDS::toExtString( const QString& src )
   return trg;
 }
 
+/*!
+  Convert the OpenCascade ascii string to OpenCascade unicode string.
+*/
 TCollection_ExtendedString QDS::toExtString( const TCollection_AsciiString& src )
 {
   return TCollection_ExtendedString( src );
 }
 
+/*!
+  Load datum definitions in the dictionary from XML file \adictPath.
+  Returns true if load successed or false otherwise.
+*/
 bool QDS::load( const QString& dictPath )
 {
   if ( dictPath.isEmpty() )
@@ -125,6 +156,11 @@ bool QDS::load( const QString& dictPath )
   return DDS_Dictionary::Load( toAsciiString( dictPath ) );
 }
 
+/*!
+  Returns the label of unit system \asys. If component \acomp specified and not empty then
+  function find the given unit system in the given component otherwise all components will be searched.
+  If unit system not found then empty string returned.
+*/
 QString QDS::unitSystemLabel( const QString& sys, const QString& comp )
 {
   QString lab;
@@ -136,6 +172,11 @@ QString QDS::unitSystemLabel( const QString& sys, const QString& comp )
   return lab;
 }
 
+/*!
+  Gets the name of active unit system from the specified component \acomp.
+  If component not specified or component is empty string then first got component will be used.
+  If component exist then active unit system name returned or empty string otherwise.
+*/
 QString QDS::activeUnitSystem( const QString& comp )
 {
   QString sys;
@@ -146,6 +187,13 @@ QString QDS::activeUnitSystem( const QString& comp )
   return sys;
 }
 
+/*!
+  Sets the active unit system named \asys. If not empty component name \acomp specified then
+  unit system will be activated in the given component otherwise all components will be processed.
+
+  After the changing of active unit system function notify about it to all registered datums
+  from processed components using method QDS_Datum::unitSystemChanged();
+*/
 void QDS::setActiveUnitSystem( const QString& sys, const QString& comp )
 {
   Handle(DDS_Dictionary) dic = DDS_Dictionary::Get();
@@ -179,6 +227,10 @@ void QDS::setActiveUnitSystem( const QString& sys, const QString& comp )
   }
 }
 
+/*!
+  Register given datum \adatum in the static list.
+  This function invoked by QDS_Datum constructor.
+*/
 void QDS::insertDatum( QDS_Datum* datum )
 {
   if ( !datum )
@@ -187,6 +239,10 @@ void QDS::insertDatum( QDS_Datum* datum )
   _datumList.append( datum );
 }
 
+/*!
+  Remove given datum \adatum from the static list.
+  This function invoked by QDS_Datum destructor.
+*/
 void QDS::removeDatum( QDS_Datum* datum )
 {
   if ( !datum )
index 257dcb292d6e299f6fa1390b73c9a73a0253b283..6f3fecd85a79ce471daa8b7c692e27e912363078 100644 (file)
@@ -48,9 +48,18 @@ class Handle(TCollection_HExtendedString);
 class QDS_EXPORT QDS
 {
 public:
-  typedef enum { None = 0x00, Label = 0x01, Control = 0x02, Units = 0x04,
-                 NotFormat = 0x08, NotAccel = 0x10, UnitsWithLabel = 0x20,
-                 All = Label | Control | Units } DatumFlags;
+   /*! Enum describes bit flags of the Qt datum view and behaviour */
+  typedef enum
+  {
+    None = 0x00,                   //!< Non specified any flags (Default behaviour)
+    Label = 0x01,                  //!< Create subwidget for datum label
+    Control = 0x02,                //!< Create subwidget for datum input control
+    Units = 0x04,                  //!< Create subwidget for datum units of measure
+    NotFormat = 0x08,              //!< Don't format initial value
+    NotAccel = 0x10,               //!< Not support accelerators in datum label
+    UnitsWithLabel = 0x20,         //!< Display units of measure in label like "<label_text> (<units_text>) instead separate text"
+    All = Label | Control | Units  //!< Create all subwidgets
+  } DatumFlags;
 
 public:
   static bool                       load( const QString& );
index dc73cda956d5c8e542b4b86c3da3850de4862c9c..9713ca5e487fb495a27c0f5a4ca19928d1c2f497 100644 (file)
 
 #include <qcheckbox.h>
 
+/*
+  \class QDS_CheckBox
+  
+  Datum with control corresponding to check box. This control can have only two states:
+  1 (on/true) or 0 (off/false). QDS_CheckBox don't take into account standard parameter
+  properties (minimum, maximum, filter, etc).
+
+  QDS_CheckBox can set and get following values for access methods (setStringValue(),
+  setIntegerValue(), setDoubleValue(), stringValue(), integerValue(), doubleValue()):
+    \li "1"  - check box state is setted as on.
+    \li "0"  - check box state is setted as off.
+    \li "-1" - check box state is setted as "NoChage" (undefined).
+
+  User can set and check a state "NoChange" using methods clear() and isEmpty() accordingly.
+*/
+
 /*!
-  Constructor. This method is protected. Object can't be directly constructed.
-  Use static method QDS_CheckBox::Create instead.
+  Constructor. Create check box datum object with datum identifier \aid under widget \aparent.
+  Parameter \aflags define behaviour of datum and set of created subwidgets. Default value of
+  this parameter is QDS::All. Parameter \acomp specify the component name which will be used
+  during search of dictionary item.
 */
 QDS_CheckBox::QDS_CheckBox( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -45,7 +63,7 @@ void QDS_CheckBox::clear()
 }
 
 /*!
-  Returns string from QCheckBox widget.
+  Returns string from QCheckBox widget. If the check box state is on then 1 returned otherwise 0.
 */
 QString QDS_CheckBox::getString() const
 {
@@ -56,7 +74,9 @@ QString QDS_CheckBox::getString() const
 }
 
 /*!
-  Sets the string into QCheckBox widget.
+  Sets the string into QCheckBox widget. If argument \atxt is string with number "1" then check box
+  state is setted as on. If argument \atxt is string with number "0" then state is setted as off.
+  If argument \atxt is string with number "-1" then state is setted as "NoChage" (undefined).
 */
 void QDS_CheckBox::setString( const QString& txt )
 {
@@ -95,25 +115,35 @@ QWidget* QDS_CheckBox::createControl( QWidget* parent )
 }
 
 /*!
-  Notify about shanging of control state
+  Notify about ñhanging of control state
 */
 void QDS_CheckBox::onParamChanged()
 {
   emit paramChanged();
 }
 
+/*!
+  Notify about ñhanging of control state. Switch off check box property "tristate" when
+  state changed by user.
+*/
 void QDS_CheckBox::onStateChanged( int state )
 {
   if ( state != QButton::NoChange && checkBox() )
     checkBox()->setTristate( false );
 }
 
+/*!
+  Sets the check box state \atheState.
+*/
 void QDS_CheckBox::setChecked( const bool theState )
 {
   if ( checkBox() )
     checkBox()->setChecked( theState );
 }
 
+/*!
+  Returns current check box state.
+*/
 bool QDS_CheckBox::isChecked() const
 {
   return checkBox() ? checkBox()->isChecked() : false;
index ab97bade64aca29b6b5b57b5905bca6f50d55b91..ac068735e4edddb9660a29596bc254c5519bcaf3 100644 (file)
 
 #include <qlineedit.h>
 
+/*
+  \class QDS_ComboBox
+  
+  Datum with control corresponding to combo box. This control used for datum with enumerable values.
+  It can be used for datum which has type of value 'List'. Each item of combobox defined two properties:
+  integer identifier and string name. All operations on items performed via identifier.
+*/
+
 /*!
-  Constructor.
+  Constructor. Create combobox datum object with datum identifier \aid under widget \aparent. Parameter \aflags
+  define behaviour of datum and set of created subwidgets. Default value of this parameter is QDS::All.
+  Parameter \acomp specify the component name which will be used during search of dictionary item.
 */
 QDS_ComboBox::QDS_ComboBox( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -42,7 +52,7 @@ QDS_ComboBox::~QDS_ComboBox()
 }
 
 /*!
-  Returns true if ComboBox allow to edit current Text.
+  Returns true if ComboBox allow to edit current text.
 */
 bool QDS_ComboBox::editable() const
 {
@@ -70,7 +80,7 @@ void QDS_ComboBox::setEditable( const bool on )
 }
 
 /*!
-  Returns number of items in ComboBox. If total is 'false' then only
+  Returns number of items in ComboBox. If \atotal is 'false' then only
   visible items are taken into account otherwise all items.
 */
 int QDS_ComboBox::count( bool total ) const
@@ -84,7 +94,7 @@ int QDS_ComboBox::count( bool total ) const
 }
 
 /*!
-  Returns list of ids. If total is 'false' then only visible items
+  Returns list of list item identifiers \aids. If \atotal is 'false' then only visible items
   are taken into account otherwise all items.
 */
 void QDS_ComboBox::values( QValueList<int>& ids, bool total ) const
@@ -96,7 +106,7 @@ void QDS_ComboBox::values( QValueList<int>& ids, bool total ) const
 }
 
 /*!
-  Returns the current id as integer.
+  Returns the current id as integer. Reimplemented.
 */
 int QDS_ComboBox::integerValue() const
 {
@@ -112,7 +122,7 @@ int QDS_ComboBox::integerValue() const
 }
 
 /*!
-  Returns the current id as double.
+  Returns the current id as double. Reimplemented.
 */
 double QDS_ComboBox::doubleValue() const
 {
@@ -130,7 +140,7 @@ double QDS_ComboBox::doubleValue() const
 }
 
 /*!
-  Set the current item acording to specified id.
+  Set the current item acording to specified id. Reimplemented.
 */
 void QDS_ComboBox::setIntegerValue( const int id )
 {
@@ -143,7 +153,7 @@ void QDS_ComboBox::setIntegerValue( const int id )
 }
 
 /*!
-  Get the integer part of specified value and use it as new current identifier.
+  Get the integer part of specified value and use it as new current identifier. Reimplemented.
 */
 void QDS_ComboBox::setDoubleValue( const double val )
 {
@@ -157,7 +167,7 @@ void QDS_ComboBox::setDoubleValue( const double val )
 }
 
 /*!
-  Returns visible state of identificator.
+  Returns visible state of item specified by \aid.
 */
 bool QDS_ComboBox::state( const int id ) const
 {
@@ -168,8 +178,9 @@ bool QDS_ComboBox::state( const int id ) const
 }
 
 /*!
-  Sets the visible state of identificator. If 'id' is -1 then specified
-  state will be set to all ids.
+  Sets the visible state of item specified by \aid. If \aid is -1 then specified
+  state will be set to all items. If \aappend is set then keep status for other items
+  otherwise status of other items will be cleared.
 */
 void QDS_ComboBox::setState( const bool on, const int id, const bool append )
 {
@@ -186,7 +197,9 @@ void QDS_ComboBox::setState( const bool on, const int id, const bool append )
 }
 
 /*!
-  Sets the visible state of identificator from the specified list.
+  Sets the visible state of items specified by list of identifiers \aids.
+  If \aappend is set then keep status for other items otherwise status of other
+  items will be cleared.
 */
 void QDS_ComboBox::setState( const bool on, const QValueList<int>& ids, const bool append )
 {
@@ -222,7 +235,9 @@ void QDS_ComboBox::setState( const bool on, const QValueList<int>& ids, const bo
 }
 
 /*!
-  Sets the user items into the combo box.
+  Sets the custom user items into the combo box. User items like standard dictionary
+  list items will be added into the combobox. This functionality allow to user override
+  items.
 */
 void QDS_ComboBox::setValues( const QValueList<int>& ids, const QStringList& names )
 {
@@ -238,7 +253,7 @@ void QDS_ComboBox::setValues( const QValueList<int>& ids, const QStringList& nam
 /*!
   This is an overloaded member function, provided for convenience.
   It behaves essentially like the above function. It creates
-  QValueList (0, 1, 2 ... ) and call previous method
+  QValueList (0, 1, 2 ... ) and call previous method.
 */
 void QDS_ComboBox::setValues( const QStringList& names )
 {
@@ -287,7 +302,7 @@ QString QDS_ComboBox::valueToString( const int val ) const
 }
 
 /*!
-  Returns string from QLineEdit widget.
+  Returns string from QComboBox widget. Reimplemented.
 */
 QString QDS_ComboBox::getString() const
 {
@@ -307,7 +322,7 @@ QString QDS_ComboBox::getString() const
 }
 
 /*!
-  Sets the string into QLineEdit widget.
+  Sets the string into QComboBox widget. Reimplemented.
 */
 void QDS_ComboBox::setString( const QString& txt )
 {
@@ -352,7 +367,7 @@ QtxComboBox* QDS_ComboBox::comboBox() const
 }
 
 /*!
-  Create QComboBox widget as control subwidget.
+  Create QComboBox widget as control subwidget. Reimplemented.
 */
 QWidget* QDS_ComboBox::createControl( QWidget* parent )
 {
@@ -364,6 +379,10 @@ QWidget* QDS_ComboBox::createControl( QWidget* parent )
   return cb;
 }
 
+/*!
+  Notification about active unit system changing. Reimplemented from QDS_Datum.
+  Update combobox content.
+*/
 void QDS_ComboBox::unitSystemChanged( const QString& system )
 {
   QDS_Datum::unitSystemChanged( system );
@@ -454,7 +473,7 @@ void QDS_ComboBox::onTextChanged( const QString& )
 }
 
 /*!
-  Notify about activation new item.
+  Notify about activation combobox item.
 */
 void QDS_ComboBox::onActivated( int idx )
 {
@@ -474,7 +493,7 @@ void QDS_ComboBox::onActivated( int idx )
 }
 
 /*!
-  Updates ComboBox after have change of visible state or items have been inserted / removed.
+  Updates ComboBox after have change of visible state or items have been inserted/removed.
 */
 void QDS_ComboBox::updateComboBox()
 {
index 87dc0c20291f9966960fb18364774ca8d06f843f..a542a19b40812925a21e09d4db3bea9099201eed 100644 (file)
 #include <qvalidator.h>
 #include <qmessagebox.h>
 
+#include <TColStd_SequenceOfAsciiString.hxx>
+
 /*!
-  Class: QDS_Datum::Wrapper
-  Descr: Wrapper widget for sub widgets. [internal]
+  class: QDS_Datum::Wrapper
+  descr: Wrapper widget for sub widgets. [internal]
 */
 
 class QDS_Datum::Wrapper : public QWidget
@@ -45,16 +47,13 @@ public:
   QWidget*      widget() const;
   void          setWidget( QWidget* );
 
-  virtual bool  eventFilter( QObject*, QEvent* );
-
-protected:
-  virtual void  resizeEvent( QResizeEvent* );
+  virtual void  setGeometry( int x, int y, int w, int h );
+  virtual void  setSizePolicy( QSizePolicy );
 
 private:
   QWidget*      myWid;
 };
 
-
 QDS_Datum::Wrapper::Wrapper( QWidget* parent )
 : QWidget( parent ),
 myWid( 0 )
@@ -78,9 +77,6 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
   if ( myWid == wid )
     return;
 
-  if ( myWid )
-    myWid->removeEventFilter( this );
-
   myWid = wid;
 
   if ( !myWid )
@@ -94,34 +90,67 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
 
   myWid->updateGeometry();
   updateGeometry();
-
-  myWid->installEventFilter( this );
 }
 
-bool QDS_Datum::Wrapper::eventFilter( QObject* o, QEvent* e )
+void QDS_Datum::Wrapper::setSizePolicy( QSizePolicy sp )
 {
-  if ( e->type() == QEvent::Resize && o == widget() )
-  {
-    QResizeEvent* re = (QResizeEvent*)e;
-    if ( re->size() != size() )
-      resize( re->size() );
-  }
-  return QWidget::eventFilter( o, e );
+  QWidget::setSizePolicy( sp );
+
+  if ( widget() )
+    widget()->setSizePolicy( sp );
 }
 
-void QDS_Datum::Wrapper::resizeEvent( QResizeEvent* e )
+void QDS_Datum::Wrapper::setGeometry( int x, int y, int w, int h )
 {
-  QWidget::resizeEvent( e );
+  QWidget::setGeometry( x, y, w, h );
 
   if ( widget() && widget()->size() != size() )
-    widget()->resize( size() );
+    widget()->setGeometry( 0, 0, width(), height() );
 }
 
 /*!
-  Class: QDS_Datum
-  Descr: Base class for control used data dictionary. [public]
+  \class QDS_Datum
+
+  This is a base class for control using the data dictionary. Datum is successor of QObject (not QWidget).
+  This object can have three sub widgets named as Label, Control and Units. User can skip creation of
+  some of them manipulate by parameter \aflags. Label widget display label of datum, Control widget allow
+  to input value, Units widget display units of measure in the active system.
+  
+  These widgets constructs under parent of datum. If this parent has layout which can automaticaly add child
+  widgets (see QLayout::setAutoAdd()) then these subwidgets will be placed in following order: first widget
+  is Label, second - Control, third - Unints. User can add these widgets to layout manually using methods
+  QDS_Datum::addTo() or QDS_Datum::widget(). In last case User can retrieve desired widget and place it into
+  layout.
+
+  If use QGroupBox as parent widget for datum object then all subwidgets will be arranged automatically by
+  group box according to column and orientation properties of QGroupBox.
+
+  For example:
+    QGroupBox* box = new QGroupBox( 3, Qt::Horizontal, "datum box" );
+    QDS_Datum* d1  = new QDS_Datum( "datum_1", box, All );
+    QDS_Datum* d2  = new QDS_Datum( "datum_2", box, All );
+    QDS_Datum* d3  = new QDS_Datum( "datum_3", box, All );
+
+  In this example we create the QGroupBox with 3 horizontal columns. All created datum widgets will be
+  placed automatically three widgets in a row. Each datum will be placed from up to bottom one by one.
+
+  Datum value is stored as string. User can get/set this value in different kinds:
+    \liAs string  - methods stringValue()/setStringValue().
+    \liAs integer - methods integerValue()/setIntegerValue(). Given value converted to/from SI.
+    \liAs double  - methods doubleValue()/setDoubleValue(). Given value converted to/from SI.
+    \liAs variant - methods value()/setValue().
+
+  User can perform some actions on datum subwidgets using following methods: isEnabled(),
+  setEnabled(), show(), hide(), setShown(), setFocus(), setAlignment().
 */
 
+/*!
+  Constructor. Create datum object with datum identifier \aid under widget \aparent. Parameter \aflags
+  define behaviour of datum and set of created subwidgets. Default value of this parameter is QDS::All.
+  Parameter \acomp specify the component name which will be used during search of dictionary item.
+
+  Datum register self in the static list by QDS::insertDatum().
+*/
 QDS_Datum::QDS_Datum( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QObject( parent ),
 myId( id ),
@@ -161,6 +190,10 @@ myInitialised( false )
   insertDatum( this );
 }
 
+/*!
+  Destructor. Destroy all subwidget.
+  Datum unregister self from the static list by QDS::removeDatum().
+*/
 QDS_Datum::~QDS_Datum()
 {
   removeDatum( this );
@@ -174,11 +207,17 @@ QDS_Datum::~QDS_Datum()
 */
 }
 
+/*!
+  Overloaded operator allow to retrieve main subwidget named Control.
+*/
 QDS_Datum::operator QWidget*() const
 {
   return widget( Control );
 }
 
+/*!
+  Returns the datum id.
+*/
 QString QDS_Datum::id() const
 {
   initDatum();
@@ -186,6 +225,9 @@ QString QDS_Datum::id() const
   return myId;
 }
 
+/*!
+  Returns the datum type of value.
+*/
 int QDS_Datum::type() const
 {
   initDatum();
@@ -196,6 +238,9 @@ int QDS_Datum::type() const
   return res;
 }
 
+/*!
+  Returns the datum label string.
+*/
 QString QDS_Datum::label() const
 {
   initDatum();
@@ -210,6 +255,9 @@ QString QDS_Datum::label() const
   return labStr;
 }
 
+/*!
+  Returns the datum units string.
+*/
 QString QDS_Datum::units() const
 {
   initDatum();
@@ -220,6 +268,9 @@ QString QDS_Datum::units() const
   return unitStr;
 }
 
+/*!
+  Returns the datum value filter string.
+*/
 QString QDS_Datum::filter() const
 {
   initDatum();
@@ -230,6 +281,9 @@ QString QDS_Datum::filter() const
   return fltr;
 }
 
+/*!
+  Returns the datum value format string.
+*/
 QString QDS_Datum::format() const
 {
   initDatum();
@@ -240,6 +294,9 @@ QString QDS_Datum::format() const
   return fmtStr;
 }
 
+/*!
+  Returns the datum default value string.
+*/
 QString QDS_Datum::defaultValue() const
 {
   initDatum();
@@ -261,6 +318,9 @@ QString QDS_Datum::defaultValue() const
   return aDef;
 }
 
+/*!
+  Returns the datum minimum value string.
+*/
 QString QDS_Datum::minimumValue() const
 {
   initDatum();
@@ -271,6 +331,9 @@ QString QDS_Datum::minimumValue() const
   return min;
 }
 
+/*!
+  Returns the datum maximum value string.
+*/
 QString QDS_Datum::maximumValue() const
 {
   initDatum();
@@ -281,6 +344,9 @@ QString QDS_Datum::maximumValue() const
   return max;
 }
 
+/*!
+  Returns the datum long description.
+*/
 QString QDS_Datum::longDescription() const
 {
   initDatum();
@@ -291,6 +357,9 @@ QString QDS_Datum::longDescription() const
   return ldStr;
 }
 
+/*!
+  Returns the datum short description.
+*/
 QString QDS_Datum::shortDescription() const
 {
   initDatum();
@@ -301,6 +370,75 @@ QString QDS_Datum::shortDescription() const
   return sdStr;
 }
 
+/*!
+  Returns the list of option names.
+*/
+QStringList QDS_Datum::options() const
+{
+  QStringList res;
+  if ( !dicItem().IsNull() )
+  {
+    TColStd_SequenceOfAsciiString lst;
+    dicItem()->GetOptionNames( lst );
+    for ( int i = 1; i <= lst.Length(); i++ )
+      res.append( toQString( lst.Value( i ) ) );
+  }
+  return res;
+}
+
+/*!
+  Returns the option specified by \aname as QVariant.
+  If option not exist then not valid QVariant returned.
+*/
+QVariant QDS_Datum::option( const QString& name ) const
+{
+  QVariant res;
+  if ( !dicItem().IsNull() )
+    res = QVariant( toQString( dicItem()->GetOption( toAsciiString( name ) ) ) );
+  return res;
+}
+
+/*!
+  Returns the option specified by \aname as QString.
+  If option not exist then empty string returned.
+*/
+QString QDS_Datum::optionString( const QString& name ) const
+{
+  QString res;
+  if ( !dicItem().IsNull() )
+    res = toQString( dicItem()->GetOption( toAsciiString( name ) ) );
+  return res;
+}
+
+/*!
+  Returns the option specified by \aname as double.
+  If option not exist then 0 returned.
+*/
+double QDS_Datum::optionDouble( const QString& name ) const
+{
+  double res = 0;
+  QVariant opt = option( name );
+  if ( opt.isValid() && opt.canCast( QVariant::Double ) )
+    res = opt.toDouble();
+  return res;
+}
+
+/*!
+  Returns the option specified by \aname as integer.
+  If option not exist then 0 returned.
+*/
+int QDS_Datum::optionInteger( const QString& name ) const
+{
+  int res = 0;
+  QVariant opt = option( name );
+  if ( opt.isValid() && opt.canCast( QVariant::Int ) )
+    res = opt.toInt();
+  return res;
+}
+
+/*!
+  Returns the datum value as variant (QVariant object).
+*/
 QVariant QDS_Datum::value() const
 {
   QVariant val;
@@ -309,6 +447,9 @@ QVariant QDS_Datum::value() const
   return val;
 }
 
+/*!
+  Returns the datum value as string (QString object).
+*/
 QString QDS_Datum::stringValue() const
 {
   initDatum();
@@ -319,6 +460,10 @@ QString QDS_Datum::stringValue() const
     return getString();
 }
 
+/*!
+  Returns the datum value as double. This value converted from units of measure in active unit system
+  to units of measure in unit system "SI".
+*/
 double QDS_Datum::doubleValue() const
 {
   initDatum();
@@ -336,6 +481,10 @@ double QDS_Datum::doubleValue() const
   return res;
 }
 
+/*!
+  Returns the datum value as integer. This value converted from units of measure in active unit system
+  to units of measure in unit system "SI".
+*/
 int QDS_Datum::integerValue() const
 {
   initDatum();
@@ -353,6 +502,9 @@ int QDS_Datum::integerValue() const
   return res;
 }
 
+/*!
+  Returns the text from datum. Text consist of label, string value and units.
+*/
 QString QDS_Datum::text() const
 {
   initDatum();
@@ -372,11 +524,17 @@ QString QDS_Datum::text() const
   return res;
 }
 
+/*!
+  Returns false if datum control has inputted value.
+*/
 bool QDS_Datum::isEmpty() const
 {
   return stringValue().isEmpty();
 }
 
+/*!
+  Reset datum state and set default value as current.
+*/
 void QDS_Datum::reset()
 {
   initDatum();
@@ -391,6 +549,9 @@ void QDS_Datum::reset()
   emit paramChanged( str );
 }
 
+/*!
+  Clear the control.
+*/
 void QDS_Datum::clear()
 {
   initDatum();
@@ -408,6 +569,9 @@ void QDS_Datum::clear()
   }
 }
 
+/*!
+  Set varian value (QVariant object) into datum.
+*/
 void QDS_Datum::setValue( const QVariant& val )
 {
   if ( val.isValid() && val.canCast( QVariant::String ) )
@@ -416,6 +580,9 @@ void QDS_Datum::setValue( const QVariant& val )
     clear();
 }
 
+/*!
+  Set string value (QString object) into datum.
+*/
 void QDS_Datum::setStringValue( const QString& txt )
 {
   initDatum();
@@ -431,6 +598,10 @@ void QDS_Datum::setStringValue( const QString& txt )
   emit paramChanged( str );
 }
 
+/*!
+  Set double value into datum. This value converted from units of measure in unit system "SI"
+  to units of measure in active unit system. Format the value using datum format if it required.
+*/
 void QDS_Datum::setDoubleValue( const double num )
 {
   initDatum();
@@ -450,6 +621,10 @@ void QDS_Datum::setDoubleValue( const double num )
   emit paramChanged( str );
 }
 
+/*!
+  Set integer value into datum. This value converted from units of measure in unit system "SI"
+  to units of measure in active unit system. Format the value using datum format if it required.
+*/
 void QDS_Datum::setIntegerValue( const int num )
 {
   initDatum();
@@ -470,7 +645,7 @@ void QDS_Datum::setIntegerValue( const int num )
 }
 
 /*!
-  Returns true if all subwidgets specified by 'element' enabled.
+  Returns true if all subwidgets specified by \aelement enabled.
 */
 bool QDS_Datum::isEnabled( const int element ) const
 {
@@ -487,8 +662,8 @@ bool QDS_Datum::isEnabled( const int element ) const
 }
 
 /*!
-  Enable/Disable subwidgets specified by 'element'.
-  Values: Label, Control, Units or their combinations.
+  Enable/Disable subwidgets specified by \aelement.
+  Possible values of \aelement: Label, Control, Units or their combinations.
 */
 void QDS_Datum::setEnabled( const bool on, const int element )
 {
@@ -510,49 +685,44 @@ void QDS_Datum::setEnabled( bool on )
   setEnabled( on, Control );
 }
 
+/*!
+  Show/hide subwidgets specified by \aelement.
+  Possible values of \aelement: Label, Control, Units or their combinations.
+*/
 void QDS_Datum::setShown( const bool visible, const int flags )
 {
-  if ( visible )
-    show( flags );
-  else
-    hide( flags );
+  initDatum();
+
+  uint flag = Units;
+  while ( flag )
+  {
+    if ( flags & flag && widget( flag ) )
+      widget( flag )->setShown( visible );
+    flag = flag >> 1;
+  }
 }
 
 /*!
-  Show subwidgets specified by 'element'.
-  Values: Label, Control, Units or their combinations.
+  Show subwidgets specified by \aelement.
+  Possible values of \aelement: Label, Control, Units or their combinations.
 */
 void QDS_Datum::show( const int element )
 {
-  initDatum();
-
-  if ( ( element & Label ) && labelWidget() )
-    labelWidget()->show();
-  if ( ( element & Units ) && unitsWidget() )
-    unitsWidget()->show();
-  if ( ( element & Control ) && controlWidget() )
-    controlWidget()->show();
+  setShown( true, element );
 }
 
 /*!
-  Hide subwidgets specified by 'element'.
-  Values: Label, Control, Units or their combinations.
+  Hide subwidgets specified by \aelement.
+  Possible values of \aelement: Label, Control, Units or their combinations.
 */
 void QDS_Datum::hide( const int element )
 {
-  initDatum();
-
-  if ( ( element & Label ) && labelWidget() )
-    labelWidget()->hide();
-  if ( ( element & Units ) && unitsWidget() )
-    unitsWidget()->hide();
-  if ( ( element & Control ) && controlWidget() )
-    controlWidget()->hide();
+  setShown( false, element );
 }
 
 /*!
-  Returns subwidget specified by 'element'.
-  Possible values: Label, Control, Units.
+  Returns subwidget specified by \aelement.
+  Possible values of \aelement: Label, Control, Units.
 */
 QWidget* QDS_Datum::widget( const int element ) const
 {
@@ -573,7 +743,7 @@ void QDS_Datum::setFocus()
 
 /*!
   Returns true if control contains valid value otherwise returns false
-  and display warning message box if parameter msgBox is set.
+  and display warning message box if parameter \amsgBox is set.
 */
 bool QDS_Datum::isValid( const bool msgBox, const QString& extMsg, const QString& extLabel ) const
 {
@@ -658,7 +828,7 @@ bool QDS_Datum::isValid( const bool msgBox, const QString& extMsg, const QString
 }
 
 /*!
-  Add widgets to the vertical layout.
+  Add widgets to the vertical box layout.
 */
 void QDS_Datum::addTo( QVBoxLayout* l )
 {
@@ -676,7 +846,7 @@ void QDS_Datum::addTo( QVBoxLayout* l )
 }
 
 /*!
-  Add widgets to the horizaontal layout.
+  Add widgets to the horizaontal box layout.
 */
 void QDS_Datum::addTo( QHBoxLayout* l )
 {
@@ -732,6 +902,9 @@ void QDS_Datum::setAlignment( const int align, const int type )
     unitsWidget()->setAlignment( align );
 }
 
+/*!
+  Perform delayed initialisation. Reimplemented for internal reasons.
+*/
 bool QDS_Datum::eventFilter( QObject* o, QEvent* e )
 {
   if ( o == parent() )
@@ -744,14 +917,14 @@ bool QDS_Datum::eventFilter( QObject* o, QEvent* e )
 }
 
 /*!
-  Notify about parameter changing.
+  Notify about parameter value changing.
 */
 void QDS_Datum::onParamChanged()
 {
 }
 
 /*!
-  Delayed initialization.
+  Perform delayed initialization.
 */
 void QDS_Datum::onInitDatum()
 {
@@ -767,7 +940,7 @@ void QDS_Datum::onDestroyed( QObject* obj )
 }
 
 /*!
-  Returns QLabel instance which contains data dictionary label.
+  Returns QLabel widget which contains dictionary item label.
 */
 QLabel* QDS_Datum::labelWidget() const
 {
@@ -776,7 +949,7 @@ QLabel* QDS_Datum::labelWidget() const
 }
 
 /*!
-  Returns QLabel instance which contains data dictionary units.
+  Returns QLabel widget which contains dictionary item units.
 */
 QLabel* QDS_Datum::unitsWidget() const
 {
@@ -810,7 +983,7 @@ void QDS_Datum::setDicItem( const Handle(DDS_DicItem)& item )
 }
 
 /*!
-  Creates QLabel widget for data label.
+  Creates QLabel widget for dictionary item label.
 */
 QLabel* QDS_Datum::createLabel( QWidget* parent )
 {
@@ -818,7 +991,7 @@ QLabel* QDS_Datum::createLabel( QWidget* parent )
 }
 
 /*!
-  Creates QLabel widget for data units.
+  Creates QLabel widget for dictionary item units.
 */
 QLabel* QDS_Datum::createUnits( QWidget* parent )
 {
@@ -826,7 +999,7 @@ QLabel* QDS_Datum::createUnits( QWidget* parent )
 }
 
 /*!
-  Returns validator accordance to data type.
+  Creates and returns validator accordance to datum type of value.
 */
 QValidator* QDS_Datum::validator( const bool limits ) const
 {
@@ -913,7 +1086,7 @@ bool QDS_Datum::validate( const QString& txt ) const
 }
 
 /*!
-  Retrieves information from data dictionary and create subwidgets using virtual mechanism.
+  Retrieves information from dictionary and create subwidgets using virtual mechanism.
   Virtual mechanism doesn't work in constructor and destructor, therefore this method should
   be called outside the constructor.
 */
@@ -954,6 +1127,9 @@ void QDS_Datum::initialize()
     labelWidget()->setBuddy( ctrl );
 }
 
+/*!
+  Notification about active unit system changing. Update label and units texts.
+*/
 void QDS_Datum::unitSystemChanged( const QString& unitSystem )
 {
   QString labText = label();
@@ -1011,7 +1187,7 @@ QString QDS_Datum::textToUnits( const QString& txt )
 }
 
 /*!
-  Format the specified integer as data dictionary value.
+  Format the specified integer as dictionary item value.
 */
 QString QDS_Datum::format( const int num, const QString& id, const bool convert )
 {
@@ -1038,7 +1214,7 @@ QString QDS_Datum::format( const int num, const QString& id, const bool convert
 }
 
 /*!
-  Format the specified double as data dictionary value.
+  Format the specified double as dictionary item value.
 */
 QString QDS_Datum::format( const double num, const QString& id, const bool convert )
 {
@@ -1065,7 +1241,7 @@ QString QDS_Datum::format( const double num, const QString& id, const bool conve
 }
 
 /*!
-  Format the specified string as data dictionary value.
+  Format the specified string as dictionary item value.
 */
 QString QDS_Datum::format( const QString& str, const QString& id, const bool convert )
 {
@@ -1092,7 +1268,7 @@ QString QDS_Datum::format( const QString& str, const QString& id, const bool con
 }
 
 /*!
-  Format the given string accordance to data format.
+  Format the given string accordance to dictionary item format.
 */
 QString QDS_Datum::format( const QString& aFormat, const int aType, const int aValue )
 {
@@ -1123,7 +1299,7 @@ QString QDS_Datum::format( const QString& aFormat, const int aType, const int aV
 }
 
 /*!
-  Format the given string accordance to data format.
+  Format the given string accordance to dictionary item format.
 */
 QString QDS_Datum::format( const QString& aFormat, const int aType, const double aValue )
 {
@@ -1154,7 +1330,7 @@ QString QDS_Datum::format( const QString& aFormat, const int aType, const double
 }
 
 /*!
-  Format the given string accordance to data format.
+  Format the given string accordance to dictionary item format.
 */
 QString QDS_Datum::format( const QString& aFormat, const int aType, const QString& aValue )
 {
@@ -1271,7 +1447,7 @@ QString QDS_Datum::canonicalFormat( const QString& fmt, QString& flags )
 }
 
 /*!
-  Returns displayable units string for given DD ID
+  Returns displayable units string for given dictionary item id
 */
 QString QDS_Datum::units( const QString& id )
 {
@@ -1350,6 +1526,9 @@ void QDS_Datum::invalidateCache()
   myTargetValue = QString::null;
 }
 
+/*!
+  Remove the acceleartor tags '&' from specified label string \asrc.
+*/
 QString QDS_Datum::removeAccel( const QString& src )
 {
   QString trg = src;
@@ -1366,6 +1545,9 @@ QString QDS_Datum::removeAccel( const QString& src )
   return trg;
 }
 
+/*!
+  Returns true if given format string \atheFormat has specificator for double values.
+*/
 bool QDS_Datum::isDoubleFormat( const QString& theFormat )
 {
   if ( theFormat.length() > 0 )
@@ -1377,11 +1559,17 @@ bool QDS_Datum::isDoubleFormat( const QString& theFormat )
     return false;
 }
 
+/*!
+  Returns datum flags.
+*/
 int QDS_Datum::flags() const
 {
   return myFlags;
 }
 
+/*!
+  Perform intialization if it needed. [internal]
+*/
 void QDS_Datum::initDatum() const
 {
   if ( myInitialised )
@@ -1395,6 +1583,9 @@ void QDS_Datum::initDatum() const
     parent()->removeEventFilter( this );
 }
 
+/*!
+  Return wrapper for specified subwidget. [internal]
+*/
 QDS_Datum::Wrapper* QDS_Datum::wrapper( QWidget* wid ) const
 {
   if ( !wid )
@@ -1409,6 +1600,9 @@ QDS_Datum::Wrapper* QDS_Datum::wrapper( QWidget* wid ) const
   return wrap;
 }
 
+/*!
+  Return wrapper for specified subwidget name. [internal]
+*/
 QDS_Datum::Wrapper* QDS_Datum::wrapper( const int id ) const
 {
   Wrapper* wrap = 0;
@@ -1417,6 +1611,9 @@ QDS_Datum::Wrapper* QDS_Datum::wrapper( const int id ) const
   return wrap;
 }
 
+/*!
+  Return subwidget name for specified wrapper. [internal]
+*/
 int QDS_Datum::wrapperType( QDS_Datum::Wrapper* wrap ) const
 {
   int id = -1;
index 5e65fe424136250f7ce4fbed598d8fdcd2db5b14..9ff431f66ad35eabed35f827b395458670c83bb0 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "QDS.h"
 
-#include <qobject.h>
+#include <qwidget.h>
 #include <qstring.h>
 #include <qvariant.h>
 #include <qguardedptr.h>
@@ -60,6 +60,12 @@ public:
   QString                   minimumValue() const;
   QString                   maximumValue() const;
 
+  QStringList               options() const;
+  QVariant                  option( const QString& ) const;
+  QString                   optionString( const QString& ) const;
+  double                    optionDouble( const QString& ) const;
+  int                       optionInteger( const QString& ) const;
+
   virtual QVariant          value() const;
 
   virtual QString           stringValue() const;
@@ -82,9 +88,9 @@ public:
   virtual bool              isEnabled( const int = Control ) const;
   virtual void              setEnabled( const bool, const int );
 
-  void                      show( const int = -1 );
-  void                      hide( const int = -1 );
-  void                      setShown( const bool, const int = -1 );
+  void                      show( const int = All );
+  void                      hide( const int = All );
+  virtual void              setShown( const bool, const int = All );
 
   QWidget*                  widget( const int ) const;
   void                      setFocus();
index a4b879cd36a8141f9194dcdb89d078cb0675ba5a..cb5ddf1486690e53029822e4b2e4883f4d57bb04 100644 (file)
@@ -22,8 +22,8 @@
 #include <qvalidator.h>
 
 /*
-  Class: QDS_LineEdit::Editor
-  Descr: Internal class inherited from line edit
+  class: QDS_LineEdit::Editor
+  descr: Internal class inherited from line edit
 */
 
 class QDS_LineEdit::Editor : public QLineEdit
@@ -50,12 +50,18 @@ private:
 };
 
 /*
-  Class: QDS_LineEdit
-  Descr: Data control corresponding to line edit
+  \class QDS_LineEdit
+  
+  Datum with control corresponding to line edit. User can enter parameter value in single line editor.
+  User inputted values will be checked by validator according to type if value and parameter properties
+  (minimum, maximum, filter, precision, etc). If user input not valid value then this value will be
+  displayed in red color.
 */
 
 /*!
-  Constructor.
+  Constructor. Create line edit datum object with datum identifier \aid under widget \aparent. Parameter \aflags
+  define behaviour of datum and set of created subwidgets. Default value of this parameter is QDS::All.
+  Parameter \acomp specify the component name which will be used during search of dictionary item.
 */
 QDS_LineEdit::QDS_LineEdit( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -69,6 +75,10 @@ QDS_LineEdit::~QDS_LineEdit()
 {
 }
 
+/*!
+  Notification about active unit system changing. Reimplemented from QDS_Datum.
+  Update validator settings for line edit.
+*/
 void QDS_LineEdit::unitSystemChanged( const QString& system )
 {
   QDS_Datum::unitSystemChanged( system );
@@ -107,7 +117,44 @@ void QDS_LineEdit::unitSystemChanged( const QString& system )
 }
 
 /*!
-  Set the aligment of line edit.
+  Select all text in the editor.
+*/
+void QDS_LineEdit::selectAll()
+{
+  if ( lineEdit() )
+    lineEdit()->selectAll();
+}
+
+/*!
+  Deselect all text in the editor.
+*/
+void QDS_LineEdit::deselect()
+{
+  if ( lineEdit() )
+    lineEdit()->deselect();
+}
+
+/*!
+  Select or deselect all text in the editor.
+*/
+void QDS_LineEdit::setSelection( const bool on )
+{
+  if ( on )
+    selectAll();
+  else
+    deselect();
+}
+
+/*!
+  Returns true if the editor has selected text.
+*/
+bool QDS_LineEdit::hasSelection() const
+{
+  return lineEdit() ? lineEdit()->hasSelectedText() : false;
+}
+
+/*!
+  Set the aligment of line edit. Reimplemented from QDS_Datum.
 */
 void QDS_LineEdit::setAlignment( const int align, const int type )
 {
@@ -118,7 +165,7 @@ void QDS_LineEdit::setAlignment( const int align, const int type )
 }
 
 /*!
-  Returns string from QLineEdit widget.
+  Returns string value from QLineEdit widget. Reimplemented from QDS_Datum.
 */
 QString QDS_LineEdit::getString() const
 {
@@ -129,7 +176,7 @@ QString QDS_LineEdit::getString() const
 }
 
 /*!
-  Sets the string into QLineEdit widget.
+  Sets the string value into QLineEdit widget. Reimplemented from QDS_Datum.
 */
 void QDS_LineEdit::setString( const QString& txt )
 {
@@ -146,7 +193,7 @@ QLineEdit* QDS_LineEdit::lineEdit() const
 }
 
 /*!
-  Create QLineEdit widget as control subwidget.
+  Create QLineEdit widget as control subwidget. Reimplemented from QDS_Datum.
 */
 QWidget* QDS_LineEdit::createControl( QWidget* parent )
 {
@@ -170,7 +217,7 @@ void QDS_LineEdit::onTextChanged( const QString& )
 }
 
 /*!
-  Checks the current parameter value on validity.
+  Checks the current parameter value on validity. If value is not valid then set text color as red.
 */
 void QDS_LineEdit::onParamChanged()
 {
index 3362e74378885c4ce20ec028faa2b5034e5fd684..293e57eedf58b73cb0c52fac55d3b361c0f73423 100644 (file)
@@ -27,6 +27,8 @@ class QDS_EXPORT QDS_LineEdit : public QDS_Datum
 {
   Q_OBJECT
 
+  Q_PROPERTY( bool Selection READ hasSelection WRITE setSelection )
+
 protected:
   class Editor;
 
@@ -34,8 +36,13 @@ public:
   QDS_LineEdit( const QString&, QWidget* = 0, const int = All, const QString& = QString::null );
   virtual ~QDS_LineEdit();
 
+  virtual void         deselect();
+  virtual void         selectAll();
   virtual void         setAlignment( const int, const int = Label );
 
+  bool                 hasSelection() const;
+  void                 setSelection( const bool );
+
 signals:
   void                 returnPressed();
 
index f07b190bdb35894ca2c7c6eba7dbdbf29629ce8d..44771f0fc1c5b47560ed30bb4862d17ae34f95ba 100644 (file)
 #include <qbuttongroup.h>
 #include <qradiobutton.h>
 
+/*
+  \class QDS_RadioBox
+  
+  Datum with control corresponding to button group with set of exclusive radio buttons.
+  This control used for datum with enumerable values. It can be used for datum which has
+  type of value 'List'. Each radio button of combobox defined two properties:
+  integer identifier and string name. All operations on radio buttons performed via identifier.
+
+  If datum label text is specified then it displayed in group box title.
+*/
+
 /*!
-  Constructor.
+  Constructor. Create radio button box datum object with datum identifier \aid under widget \aparent.
+  Parameter \aflags define behaviour of datum and set of created subwidgets. Default value of this
+  parameter is QDS::Control. Parameter \acomp specify the component name which will be used during
+  search of dictionary item.
 */
 QDS_RadioBox::QDS_RadioBox( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags & ~( Label | Units ), comp )
@@ -44,8 +58,8 @@ QDS_RadioBox::~QDS_RadioBox()
 }
 
 /*!
-  Returns number of items in ComboBox. If total is 'false' then only
-  visible items are taken into account otherwise all items.
+  Returns number of buttons in radio box. If total is 'false' then only
+  visible buttons are taken into account otherwise all buttons.
 */
 int QDS_RadioBox::count( bool total ) const
 {
@@ -60,8 +74,8 @@ int QDS_RadioBox::count( bool total ) const
 }
 
 /*!
-  Returns list of ids. If total is 'false' then only visible items
-  are taken into account otherwise all items.
+  Returns list of button identifiers \aids. If \atotal is 'false' then only visible
+  buttons are taken into account otherwise all buttons.
 */
 void QDS_RadioBox::values( QValueList<int>& ids, bool total ) const
 {
@@ -72,7 +86,7 @@ void QDS_RadioBox::values( QValueList<int>& ids, bool total ) const
 }
 
 /*!
-  Returns visible state of identificator.
+  Returns visible state of button specified by \aid.
 */
 bool QDS_RadioBox::state( const int id ) const
 {
@@ -83,8 +97,9 @@ bool QDS_RadioBox::state( const int id ) const
 }
 
 /*!
-  Sets the visible state of identificator. If 'id' is -1 then specified
-  state will be set to all ids.
+  Sets the visible state of button specified by \aid. If \aid is -1 then specified
+  state will be set to all buttons. If \aappend is set then keep status for other
+  buttons otherwise status of other buttons will be cleared.
 */
 void QDS_RadioBox::setState( const bool on, const int id, const bool append )
 {
@@ -101,7 +116,9 @@ void QDS_RadioBox::setState( const bool on, const int id, const bool append )
 }
 
 /*!
-  Sets the visible state of identificator from the specified list.
+  Sets the visible state of buttons specified by list of identifiers \aids.
+  If \aappend is set then keep status for other buttons otherwise status of other
+  buttons will be cleared.
 */
 void QDS_RadioBox::setState( const bool on, const QValueList<int>& ids, const bool append )
 {
@@ -135,7 +152,9 @@ void QDS_RadioBox::setState( const bool on, const QValueList<int>& ids, const bo
 }
 
 /*!
-  Sets the user items into the combo box.
+  Sets the custom user buttons into the radio box. User buttons like standard dictionary
+  button from list will be added into the radio box. This functionality allow to user override
+  buttons.
 */
 void QDS_RadioBox::setValues( const QValueList<int>& ids, const QStringList& names )
 {
@@ -160,7 +179,8 @@ void QDS_RadioBox::setValues( const QStringList& names )
 }
 
 /*!
-  Returns string from control.
+  Returns string from radio box. Reimplemented. String which contains identifier of
+  currently selected button returned.
 */
 QString QDS_RadioBox::getString() const
 {
@@ -176,7 +196,8 @@ QString QDS_RadioBox::getString() const
 }
 
 /*!
-  Sets the string into control.
+  Sets the string into radio box. Reimplemented. Button with identifier from specified
+  string \atxt became selected in radio box.
 */
 void QDS_RadioBox::setString( const QString& txt )
 {
@@ -227,7 +248,7 @@ QButtonGroup* QDS_RadioBox::buttonGroup() const
 }
 
 /*!
-  Create QComboBox widget as control subwidget.
+  Create QButtonGroup widget as control subwidget.
 */
 QWidget* QDS_RadioBox::createControl( QWidget* parent )
 {
@@ -237,6 +258,10 @@ QWidget* QDS_RadioBox::createControl( QWidget* parent )
   return bg;
 }
 
+/*!
+  Notification about active unit system changing. Reimplemented from QDS_Datum.
+  Update radio box content.
+*/
 void QDS_RadioBox::unitSystemChanged( const QString& system )
 {
   QDS_Datum::unitSystemChanged( system );
@@ -308,7 +333,7 @@ void QDS_RadioBox::unitSystemChanged( const QString& system )
 }
 
 /*!
-  Notify about state changed in line edit of RadioBox.
+  Notify about activation radio button.
 */
 void QDS_RadioBox::onToggled( bool on )
 {
@@ -322,7 +347,7 @@ void QDS_RadioBox::onToggled( bool on )
 }
 
 /*!
-  Updates RadioBox after have change of visible state or items have been inserted / removed.
+  Updates RadioBox after have change of visible state or buttons have been inserted/removed.
 */
 void QDS_RadioBox::updateRadioBox()
 {
@@ -374,6 +399,9 @@ void QDS_RadioBox::updateRadioBox()
   }
 }
 
+/*!
+  Returns the list of the radio buttons from the button group.
+*/
 void QDS_RadioBox::buttons( QPtrList<QRadioButton>& lst ) const
 {
   lst.setAutoDelete( false );
index e7cf86618ae9cd29552228682c66935150ec083f..862b6ab4f617d71ea4f9a055bb62c25cba88c6ac 100644 (file)
@@ -39,7 +39,7 @@ class QDS_EXPORT QDS_RadioBox : public QDS_Datum
   Q_OBJECT
 
 public:
-  QDS_RadioBox( const QString&, QWidget* = 0, const int = All, const QString& = QString::null );
+  QDS_RadioBox( const QString&, QWidget* = 0, const int = Control, const QString& = QString::null );
   virtual ~QDS_RadioBox();
 
   int                        count( bool = false ) const;
index 430d7fd5ad6c394d8e11bd13bf9adec8aa25b810..71864cb51e5ad06014b1fe141a8f8a517a46535b 100644 (file)
 
 #include <qvalidator.h>
 
+/*
+  \class QDS_SpinBox
+  
+  Datum with control corresponding to spin box. This control used for integer numbers.
+  User can input data directly in spin box or can modify current value with given
+  increment.
+*/
+
 /*!
-  Constructor.
+  Constructor. Create spin box datum object with datum identifier \aid under widget \aparent. Parameter \aflags
+  define behaviour of datum and set of created subwidgets. Default value of this parameter is QDS::All.
+  Parameter \acomp specify the component name which will be used during search of dictionary item.
 */
 QDS_SpinBox::QDS_SpinBox( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -38,7 +48,7 @@ QDS_SpinBox::~QDS_SpinBox()
 }
 
 /*!
-  Returns string from QSpinBox widget.
+  Returns string from QSpinBox widget. Reimplemented.
 */
 QString QDS_SpinBox::getString() const
 {
@@ -56,7 +66,7 @@ QString QDS_SpinBox::getString() const
 }
 
 /*!
-  Sets the string into QSpinBox widget.
+  Sets the string into QSpinBox widget. Reimplemented.
 */
 void QDS_SpinBox::setString( const QString& txt )
 {
@@ -77,7 +87,7 @@ QtxIntSpinBox* QDS_SpinBox::spinBox() const
 }
 
 /*!
-  Create QSpinBox widget as control subwidget.
+  Create QSpinBox widget as control subwidget. Reimplemented.
 */
 QWidget* QDS_SpinBox::createControl( QWidget* parent )
 {
@@ -88,7 +98,7 @@ QWidget* QDS_SpinBox::createControl( QWidget* parent )
 }
 
 /*!
-  Notify about text changing in spin box.
+  Notify about value changing in spin box.
 */
 void QDS_SpinBox::onValueChanged( int val )
 {
@@ -119,7 +129,8 @@ int QDS_SpinBox::step() const
 }
 
 /*!
-  This method is redefined from ancestor class to perform own initialization ( suffix, prefix, etc ).
+  Notification about active unit system changing. Reimplemented from QDS_Datum.
+  Update validator and spin box parameters: suffix, prefix, minimum, maximum.
 */
 void QDS_SpinBox::unitSystemChanged( const QString& system )
 {
index ac99303e87717f739082610f699213b5459116ca..0bd7bcf264a95da6d3850a08674c718e865e3458 100644 (file)
 
 #include <QtxDblSpinBox.h>
 
+/*
+  \class QDS_SpinBoxDbl
+  
+  Datum with control corresponding to spin box. This control used for double numbers.
+  User can input data directly in spin box or can modify current value with given
+  increment.
+*/
+
 /*!
-  Constructor.
+  Constructor. Create spin box datum object with datum identifier \aid under widget \aparent. Parameter \aflags
+  define behaviour of datum and set of created subwidgets. Default value of this parameter is QDS::All.
+  Parameter \acomp specify the component name which will be used during search of dictionary item.
 */
 QDS_SpinBoxDbl::QDS_SpinBoxDbl( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -40,7 +50,7 @@ QDS_SpinBoxDbl::~QDS_SpinBoxDbl()
 }
 
 /*!
-  Returns string from QSpinBox widget.
+  Returns string from QSpinBox widget. Reimplemented.
 */
 QString QDS_SpinBoxDbl::getString() const
 {
@@ -66,7 +76,7 @@ QString QDS_SpinBoxDbl::getString() const
 }
 
 /*!
-  Sets the string into QSpinBox widget.
+  Sets the string into QSpinBox widget. Reimplemented.
 */
 void QDS_SpinBoxDbl::setString( const QString& txt )
 {
@@ -87,7 +97,7 @@ QtxDblSpinBox* QDS_SpinBoxDbl::spinBox() const
 }
 
 /*!
-  Create QSpinBox widget as control subwidget.
+  Create QSpinBox widget as control subwidget. Reimplemented.
 */
 QWidget* QDS_SpinBoxDbl::createControl( QWidget* parent )
 {
@@ -98,7 +108,7 @@ QWidget* QDS_SpinBoxDbl::createControl( QWidget* parent )
 }
 
 /*!
-  Notify about text changing in spin box.
+  Notify about value changing in spin box.
 */
 void QDS_SpinBoxDbl::onValueChanged( double )
 {
@@ -129,6 +139,10 @@ void QDS_SpinBoxDbl::setStep( const double step )
     spinBox()->setLineStep( step );
 }
 
+/*!
+  Notification about active unit system changing. Reimplemented from QDS_Datum.
+  Update validator and spin box parameters: suffix, prefix, minimum, maximum.
+*/
 void QDS_SpinBoxDbl::unitSystemChanged( const QString& system )
 {
   QDS_Datum::unitSystemChanged( system );
diff --git a/src/QDS/QDS_Table.cxx b/src/QDS/QDS_Table.cxx
new file mode 100644 (file)
index 0000000..b14e80c
--- /dev/null
@@ -0,0 +1,348 @@
+// 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_Table.h"
+
+#include "QDS_LineEdit.h"
+
+class QDS_Table::DeleteFilter : public QObject
+{
+public:
+  DeleteFilter( QObject* = 0 );
+  virtual ~DeleteFilter();
+
+  virtual bool eventFilter( QObject*, QEvent* );
+};
+
+QDS_Table::DeleteFilter::DeleteFilter( QObject* parent )
+: QObject( parent )
+{
+}
+
+QDS_Table::DeleteFilter::~DeleteFilter()
+{
+}
+
+bool QDS_Table::DeleteFilter::eventFilter( QObject* o, QEvent* e )
+{
+  if ( e->type() == QEvent::DeferredDelete )
+    return true;
+  else
+    return false;
+}
+
+QDS_Table::QDS_Table( QWidget* parent, const char* name )
+: QtxTable( parent, name ),
+myHorEdit( 0 ),
+myVerEdit( 0 ),
+myTableEdit( 0 ),
+myKeepEdits( false )
+{
+}
+
+QDS_Table::QDS_Table( int r, int c, QWidget* parent, const char* name )
+: QtxTable( r, c, parent, name ),
+myHorEdit( 0 ),
+myVerEdit( 0 ),
+myTableEdit( 0 ),
+myKeepEdits( false )
+{
+  myRowEdit.resize( r );
+  myColEdit.resize( c );
+}
+
+QDS_Table::~QDS_Table()
+{
+}
+
+QDS_Datum* QDS_Table::horizontalHeaderEditor() const
+{
+  return myHorEdit;
+}
+
+QDS_Datum* QDS_Table::verticalHeaderEditor() const
+{
+  return myVerEdit;
+}
+
+QDS_Datum* QDS_Table::headerEditor( const Orientation o ) const
+{
+  return o == Horizontal ? myHorEdit : myVerEdit;
+}
+
+void QDS_Table::setVerticalHeaderEditor( QDS_Datum* dat )
+{
+  setHeaderEditor( Vertical, dat );
+}
+
+void QDS_Table::setHorizontalHeaderEditor( QDS_Datum* dat )
+{
+  setHeaderEditor( Horizontal, dat );
+}
+
+void QDS_Table::setHeaderEditor( QDS_Datum* dat )
+{
+  setHeaderEditor( Vertical, dat );
+  setHeaderEditor( Horizontal, dat );
+}
+
+void QDS_Table::setHeaderEditor( const Orientation o, QDS_Datum* dat )
+{
+  if ( headerEditor( o ) == dat )
+    return;
+
+  if ( isHeaderEditing() )
+    endEditHeader();
+
+  if ( o == Horizontal )
+    myHorEdit = dat;
+  else
+    myVerEdit = dat;
+
+  initEditor( dat );
+}
+
+QDS_Datum* QDS_Table::tableEditor() const
+{
+  return myTableEdit;
+}
+
+QDS_Datum* QDS_Table::rowEditor( const int row ) const
+{
+  if ( row < 0 || row >= (int)myRowEdit.size() )
+    return 0;
+
+  return myRowEdit.at( row );
+}
+
+QDS_Datum* QDS_Table::columnEditor( const int col ) const
+{
+  if ( col < 0 || col >= (int)myColEdit.size() )
+    return 0;
+
+  return myColEdit.at( col );
+}
+
+QDS_Datum* QDS_Table::cellEditor( const int row, const int col ) const
+{
+  if ( !myCellEdit.contains( row ) )
+    return 0;
+
+  const DatumMap& map = myCellEdit[row];
+  return map.contains( col ) ? map[col] : 0;
+}
+
+void QDS_Table::setTableEditor( QDS_Datum* dat )
+{
+  if ( tableEditor() == dat )
+    return;
+
+  if ( isEditing() && !cellEditor( currEditRow(), currEditCol() ) &&
+       !columnEditor( currEditCol() ) && !rowEditor( currEditRow() ) )
+    endEdit( currEditRow(), currEditCol(), false, false );
+
+  myTableEdit = dat;
+  initEditor( dat );
+}
+
+void QDS_Table::setRowEditor( const int row, QDS_Datum* dat )
+{
+  if ( row < 0 || row >= (int)myRowEdit.size() || rowEditor( row ) == dat )
+    return;
+
+  if ( isEditing() && row == currEditRow()&&
+       !cellEditor( currEditRow(), currEditCol() ) )
+    endEdit( currEditRow(), currEditCol(), false, false );
+
+  myRowEdit.insert( row, dat );
+  initEditor( dat );
+}
+
+void QDS_Table::setColumnEditor( const int col, QDS_Datum* dat )
+{
+  if ( col < 0 || col >= (int)myColEdit.size() || columnEditor( col ) == dat )
+    return;
+
+  if ( isEditing() && col == currEditCol()&&
+       !cellEditor( currEditRow(), currEditCol() ) )
+    endEdit( currEditRow(), currEditCol(), false, false );
+
+  myColEdit.insert( col, dat );
+  initEditor( dat );
+}
+
+void QDS_Table::setCellEditor( const int row, const int col, QDS_Datum* dat )
+{
+  if ( row < 0 || row >= numRows() || col < 0 || col >= numCols() || cellEditor( row, col ) == dat )
+    return;
+
+  if ( isEditing() && currEditRow() == row && currEditCol() == col && actualCellEditor( row, col ) != dat )
+    endEdit( currEditRow(), currEditCol(), false, false );
+
+  if ( !myCellEdit.contains( row ) )
+    myCellEdit.insert( row, DatumMap() );
+
+  myCellEdit[row].insert( col, dat );
+  initEditor( dat );
+}
+
+QDS_Datum* QDS_Table::actualCellEditor( const int row, const int col ) const
+{
+  QDS_Datum* dat = cellEditor( row, col );
+  if ( !dat )
+    dat = columnEditor( col );
+  if ( !dat )
+    dat = rowEditor( row );
+  if ( !dat )
+    dat = tableEditor();
+  return dat;
+}
+
+void QDS_Table::setNumRows( int r )
+{
+  int old = numRows();
+  QtxTable::setNumRows( r );
+
+  if ( isKeepEditors() )
+    myRowEdit.resize( QMAX( (int)myRowEdit.size(), r ) );
+  else
+  {
+    myRowEdit.resize( r );
+    for ( int i = r + 1; i <= old; i++ )
+      myCellEdit.remove( i );
+  }
+}
+
+void QDS_Table::setNumCols( int c )
+{
+  int old = numCols();
+  QtxTable::setNumCols( c );
+
+  if ( isKeepEditors() )
+    myColEdit.resize( QMAX( (int)myColEdit.size(), c ) );
+  else
+  {
+    myColEdit.resize( c );
+    for ( CellMap::Iterator it = myCellEdit.begin(); it != myCellEdit.end(); ++it )
+    {
+      DatumMap& map = it.data();
+      for ( int i = c + 1; i <= old; i++ )
+        map.remove( i );
+    }
+  }
+}
+
+void QDS_Table::clearCellWidget( int row, int col )
+{
+  QDS_Datum* dat = actualCellEditor( row, col );
+  if ( dat )
+    dat->hide();
+
+  QtxTable::clearCellWidget( row, col );
+}
+
+bool QDS_Table::isKeepEditors() const
+{
+  return myKeepEdits;
+}
+
+void QDS_Table::setKeepEditors( const bool on )
+{
+  myKeepEdits = on;
+}
+
+QWidget* QDS_Table::createHeaderEditor( QHeader* header, const int sect, const bool init )
+{
+  if ( !header )
+    return 0;
+
+  QDS_Datum* dat = headerEditor( header->orientation() );
+  QWidget* wid = dat ? dat->widget( QDS::Control ) : 0;
+  if ( wid )
+  {
+    if ( init )
+      dat->setStringValue( header->label( sect ) );
+    else
+      dat->clear();
+    dat->setProperty( "Selection", true );
+  }
+  else
+    wid = QtxTable::createHeaderEditor( header, sect, init );
+
+  return wid;
+}
+
+QWidget* QDS_Table::createEditor( int row, int col, bool init ) const
+{
+  QDS_Datum* dat = actualCellEditor( row, col );
+  QWidget* wid = dat ? dat->widget( QDS::Control ) : 0;
+  if ( wid )
+  {
+    if ( init )
+      dat->setStringValue( text( row, col ) );
+    else
+      dat->clear();
+    dat->setProperty( "Selection", true );
+  }
+  else
+    wid = QtxTable::createEditor( row, col, init );
+
+  return wid;
+}
+
+void QDS_Table::endEdit( int row, int col, bool accept, bool )
+{
+  QtxTable::endEdit( row, col, accept, true );
+}
+
+void QDS_Table::setCellContentFromEditor( int row, int col )
+{
+  QDS_Datum* dat = actualCellEditor( row, col );
+  if ( dat )
+    setText( row, col, dat->stringValue() );
+  else
+    QtxTable::setCellContentFromEditor( row, col );
+}
+
+void QDS_Table::setHeaderContentFromEditor( QHeader* header, const int sect, QWidget* editor )
+{
+  if ( !header )
+    return;
+
+  QDS_Datum* dat = headerEditor( header->orientation() );
+  if ( dat )
+    header->setLabel( sect, dat->stringValue() );
+  else
+    QtxTable::setHeaderContentFromEditor( header, sect, editor );
+}
+
+void QDS_Table::initEditor( QDS_Datum* dat )
+{
+  if ( !dat )
+    return;
+
+  dat->hide();
+
+  static QGuardedPtr<DeleteFilter> _filter = 0;
+  if ( !_filter )
+    _filter = new DeleteFilter( 0 );
+
+  if ( dat->widget( QDS::Control ) )
+    dat->widget( QDS::Control )->installEventFilter( _filter );
+}
diff --git a/src/QDS/QDS_Table.h b/src/QDS/QDS_Table.h
new file mode 100644 (file)
index 0000000..c7d33ab
--- /dev/null
@@ -0,0 +1,99 @@
+// 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_TABLE_H
+#define QDS_TABLE_H
+
+#include "QDS_Datum.h"
+
+#include <QtxTable.h>
+
+#include <qmap.h>
+#include <qptrvector.h>
+
+class QDS_EXPORT QDS_Table : public QtxTable
+{
+  class DeleteFilter;
+
+  Q_OBJECT
+
+  Q_PROPERTY( bool KeepEditors READ isKeepEditors WRITE setKeepEditors )
+
+public:
+  QDS_Table( QWidget* = 0, const char* = 0 );
+  QDS_Table( int, int, QWidget* = 0, const char* = 0 );
+  virtual ~QDS_Table();
+
+  QDS_Datum*       verticalHeaderEditor() const;
+  QDS_Datum*       horizontalHeaderEditor() const;
+  QDS_Datum*       headerEditor( const Orientation ) const;
+
+  void             setVerticalHeaderEditor( QDS_Datum* );
+  void             setHorizontalHeaderEditor( QDS_Datum* );
+
+  void             setHeaderEditor( QDS_Datum* );
+  virtual void     setHeaderEditor( const Orientation, QDS_Datum* );
+
+  QDS_Datum*       tableEditor() const;
+  virtual void     setTableEditor( QDS_Datum* );
+
+  QDS_Datum*       rowEditor( const int ) const;
+  QDS_Datum*       columnEditor( const int ) const;
+
+  virtual void     setRowEditor( const int, QDS_Datum* );
+  virtual void     setColumnEditor( const int, QDS_Datum* );
+
+  QDS_Datum*       cellEditor( const int, const int ) const;
+  virtual void     setCellEditor( const int, const int, QDS_Datum* );
+
+  QDS_Datum*       actualCellEditor( const int, const int ) const;
+
+  virtual void     setNumRows( int );
+  virtual void     setNumCols( int );
+  virtual void     clearCellWidget( int, int );
+
+  bool             isKeepEditors() const;
+  void             setKeepEditors( const bool );
+
+protected:
+  virtual QWidget* createHeaderEditor( QHeader*, const int, const bool = true );
+  virtual QWidget* createEditor( int, int, bool ) const;
+  virtual void     endEdit( int, int, bool, bool );
+  virtual void     setCellContentFromEditor( int, int );
+  virtual void     setHeaderContentFromEditor( QHeader*, const int, QWidget* );
+
+private:
+  void             initEditor( QDS_Datum* );
+  QDS_Datum*       datum( const QWidget* ) const;
+
+private:
+  typedef QPtrVector<QDS_Datum>       DatumVector;
+  typedef QMap<int, QDS_Datum*>       DatumMap;
+  typedef QMap<int, DatumMap>         CellMap;
+
+private:
+  QDS_Datum*       myHorEdit;
+  QDS_Datum*       myVerEdit;
+  DatumVector      myRowEdit;
+  DatumVector      myColEdit;
+  CellMap          myCellEdit;
+  QDS_Datum*       myTableEdit;
+  bool             myKeepEdits;
+};
+
+#endif 
index 17de76418528cd4bf3cc45a42292a6453eb156c0..1eb66dad9bf626390494f1b9362cb3bbd0fdaeda 100644 (file)
 
 #include <qtextedit.h>
 
+/*
+  \class QDS_TextEdit
+
+  Datum with control corresponding to text edit. User can enter parameter value in multiple line editor.
+*/
+
 /*!
-  Constructor.
+  Constructor. Create text edit datum object with datum identifier \aid under widget \aparent.
+  Parameter \aflags define behaviour of datum and set of created subwidgets. Default value of this
+  parameter is QDS::All. Parameter \acomp specify the component name which will be used during search
+  of dictionary item.
 */
 QDS_TextEdit::QDS_TextEdit( const QString& id, QWidget* parent, const int flags, const QString& comp )
 : QDS_Datum( id, parent, flags, comp )
@@ -36,7 +45,7 @@ QDS_TextEdit::~QDS_TextEdit()
 }
 
 /*!
-  Returns string from QTextEdit widget.
+  Returns string from QTextEdit widget. Reimplemented from QDS_Datum.
 */
 QString QDS_TextEdit::getString() const
 {
@@ -47,7 +56,7 @@ QString QDS_TextEdit::getString() const
 }
 
 /*!
-  Sets the string into QTextEdit widget.
+  Sets the string into QTextEdit widget. Reimplemented from QDS_Datum.
 */
 void QDS_TextEdit::setString( const QString& txt )
 {
@@ -74,7 +83,7 @@ QWidget* QDS_TextEdit::createControl( QWidget* parent )
 }
 
 /*!
-  Notify about text changing in line edit.
+  Notify about text changing in text edit.
 */
 void QDS_TextEdit::onTextChanged()
 {
index 02916c0cb090e027c536a04aad14c70156098743..37b2ea658d1c506bc27308a710b227838323ab98 100644 (file)
 #include "QDS_Validator.h"
 
 /*!
-    Class: QDS_IntegerValidator
+  \class QDS_IntegerValidator
+
+  This class to provide validation of user inputted string for datum with 'Integer'
+  value type according to datum properties: minimum value, maximum value, filter.
+
+  Inherits from QIntValidator.
 */
 
+/*!
+  Constructor. Create empty validator object.
+*/
 QDS_IntegerValidator::QDS_IntegerValidator( QObject* p )
 : QIntValidator( p )
 {
 }
 
+/*!
+  Constructor. Create validator object with filter string \af.
+*/
 QDS_IntegerValidator::QDS_IntegerValidator( const QString& f, QObject* p )
 : QIntValidator( p ),
 myFilter( f )
 {
 }
 
+/*!
+  Destructor.
+*/
 QDS_IntegerValidator::~QDS_IntegerValidator()
 {
 }
 
+/*!
+  Validate the inputed string \ainput. Reimplemented from QIntValidator. Perform
+  standard check by QIntValidator::validate(). If returned state is not Invalid and
+  filter specified then perform validation with filter by QRegExpValidator.
+
+  Returns Invalid if input is invalid according to this validator's rules,
+  Intermediate if it is likely that a little more editing will make the input acceptable
+  and Acceptable if the input is valid.
+*/
 QValidator::State QDS_IntegerValidator::validate( QString& input, int& pos ) const
 {
   State rgState = Acceptable;
@@ -50,24 +73,47 @@ QValidator::State QDS_IntegerValidator::validate( QString& input, int& pos ) con
 }
 
 /*!
-    Class: QDS_DoubleValidator
+  \class QDS_DoubleValidator
+
+  This class to provide validation of user inputted string for datum with 'Float'
+  value type according to datum properties: minimum value, maximum value, precision, filter.
+
+  Inherits from QDoubleValidator.
 */
 
+/*!
+  Constructor. Create empty validator object.
+*/
 QDS_DoubleValidator::QDS_DoubleValidator( QObject* p )
 : QDoubleValidator( p )
 {
 }
 
+/*!
+  Constructor. Create validator object with filter string \af.
+*/
 QDS_DoubleValidator::QDS_DoubleValidator( const QString& f, QObject* p )
 : QDoubleValidator( p ),
 myFilter( f )
 {
 }
 
+/*!
+  Destructor.
+*/
 QDS_DoubleValidator::~QDS_DoubleValidator()
 {
 }
 
+/*!
+  Validate the inputed string \ainput. Reimplemented from QDoubleValidator. Perform
+  standard check by QDoubleValidator::validate(). If returned state is not Invalid and
+  filter specified then perform validation with filter by QRegExpValidator.
+
+  Returns Invalid if input is invalid according to this validator's rules,
+  Intermediate if it is likely that a little more editing will make the input acceptable
+  and Acceptable if the input is valid.
+*/
 QValidator::State QDS_DoubleValidator::validate( QString& input, int& pos ) const
 {
   State rgState = Acceptable;
@@ -81,15 +127,26 @@ QValidator::State QDS_DoubleValidator::validate( QString& input, int& pos ) cons
 }
 
 /*!
-    Class: QDS_StringValidator
+  \class QDS_StringValidator
+
+  This class to provide validation of user inputted string for datum with 'String'
+  value type according to datum properties: format, filter.
+
+  Inherits from QDoubleValidator.
 */
 
+/*!
+  Constructor. Create empty validator object.
+*/
 QDS_StringValidator::QDS_StringValidator( QObject* p ) 
 : QValidator( p ), 
 myLen( -1 ) 
 {
 }
 
+/*!
+  Constructor. Create validator object with filter string \af.
+*/
 QDS_StringValidator::QDS_StringValidator( const QString& f, QObject* p ) 
 : QValidator( p ), 
 myFlags( f ), 
@@ -97,6 +154,9 @@ myLen( -1 )
 {
 }
 
+/*!
+  Constructor. Create validator object with filter string \aft and format flags \afg.
+*/
 QDS_StringValidator::QDS_StringValidator( const QString& ft, const QString& fg, QObject* p ) 
 : QValidator( p ), 
 myLen( -1 ), 
@@ -105,20 +165,40 @@ myFlags( fg )
 {
 }
 
+/*!
+  Destructor.
+*/
 QDS_StringValidator::~QDS_StringValidator() 
 {
 }
 
+/*!
+  Returns valid string length. If length not specified -1 returned.
+*/
 int QDS_StringValidator::length() const 
 { 
   return myLen; 
 }
 
-void QDS_StringValidator::setLength( const int l ) 
-{ 
-  myLen = l; 
+/*!
+  Sets the valid string length \al. If value less than zero valid string
+  length not specified.
+*/
+void QDS_StringValidator::setLength( const int l )
+{
+  myLen = l;
 }
 
+/*!
+  Validate the inputed string \ainput. Reimplemented from QValidator. Convert specified
+  string to upper/lower case if the format flags contains specificator 'u'/'l'.
+  If valid string lenght is specified then check given string length. If
+  filter specified then perform validation with filter by QRegExpValidator.
+
+  Returns Invalid if input is invalid according to this validator's rules,
+  Intermediate if it is likely that a little more editing will make the input acceptable
+  and Acceptable if the input is valid.
+*/
 QValidator::State QDS_StringValidator::validate( QString& input, int& pos ) const
 {
   if ( input.isEmpty() )
index 537d511a27945a30706ce07cf6ece694d33ad7dc..e7fed65aa7dced6d637ecf2fea1600082bc2be17 100644 (file)
@@ -24,9 +24,8 @@
 #include <qvalidator.h>
 
 /*!
-    Class: QDS_IntegerValidator
+  class QDS_IntegerValidator
 */
-
 class QDS_EXPORT QDS_IntegerValidator : public QIntValidator
 {
 public:
@@ -41,9 +40,8 @@ private:
 };
 
 /*!
-    Class: QDS_DoubleValidator
+  class QDS_DoubleValidator
 */
-
 class QDS_DoubleValidator : public QDoubleValidator
 {
 public:
@@ -58,13 +56,11 @@ private:
 };
 
 /*!
-    Class: QDS_StringValidator
+  class QDS_StringValidator
 */
-
 class QDS_EXPORT QDS_StringValidator : public QValidator
 {
 public:
-
   QDS_StringValidator( QObject* p = 0 );
   QDS_StringValidator( const QString& f, QObject* p = 0 );
   QDS_StringValidator( const QString& ft, const QString& fg, QObject* p = 0 );
diff --git a/src/Qtx/Makefile.am b/src/Qtx/Makefile.am
new file mode 100755 (executable)
index 0000000..b71936b
--- /dev/null
@@ -0,0 +1,150 @@
+#  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$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# header files
+
+salomeinclude_HEADERS= Qtx.h \
+       QtxAction.h \
+       QtxColorScale.h \
+       QtxComboBox.h \
+       QtxDblSpinBox.h \
+       QtxDialog.h \
+       QtxDockAction.h \
+       QtxDockWindow.h \
+       QtxGroupBox.h \
+       QtxIntSpinBox.h \
+       QtxListAction.h \
+       QtxListBox.h \
+       QtxListOfOperations.h \
+       QtxLogoMgr.h \
+       QtxMenuButton.h \
+       QtxMRUAction.h \
+       QtxOperations.h \
+       QtxPathDialog.h \
+       QtxPopupMgr.h \
+       QtxResourceMgr.h \
+       QtxStdOperations.h \
+       QtxTable.h \
+       QtxToolBar.h \
+       QtxToolTip.h \
+       QtxParser.h \
+       QtxPopupMenu.h \
+       QtxActionMgr.h \
+       QtxActionMenuMgr.h \
+       QtxActionToolMgr.h \
+       QtxMainWindow.h \
+       QtxWorkspaceAction.h \
+       QtxWorkstackAction.h \
+       QtxListResourceEdit.h \
+       QtxWorkstack.h \
+       QtxResourceEdit.h \
+       QtxListView.h \
+       QtxDirListEditor.h \
+       QtxDblValidator.h \
+       QtxSplash.h
+
+# Libraries targets
+
+lib_LTLIBRARIES= libqtx.la
+
+dist_libqtx_la_SOURCES= \
+       Qtx.cxx \
+       QtxAction.cxx \
+       QtxColorScale.cxx \
+       QtxComboBox.cxx \
+       QtxDblSpinBox.cxx \
+       QtxDialog.cxx \
+       QtxDockAction.cxx \
+       QtxDockWindow.cxx \
+       QtxGroupBox.cxx \
+       QtxIntSpinBox.cxx \
+       QtxListAction.cxx \
+       QtxListBox.cxx \
+       QtxListOfOperations.cxx \
+       QtxLogoMgr.cxx \
+       QtxMenuButton.cxx \
+       QtxMRUAction.cxx \
+       QtxPathDialog.cxx \
+       QtxPopupMgr.cxx \
+       QtxResourceMgr.cxx \
+       QtxStdOperations.cxx \
+       QtxTable.cxx \
+       QtxToolBar.cxx \
+       QtxToolTip.cxx \
+       QtxOperations.cxx \
+       QtxParser.cxx \
+       QtxPopupMenu.cxx \
+       QtxActionMgr.cxx \
+       QtxActionMenuMgr.cxx \
+       QtxActionToolMgr.cxx \
+       QtxMainWindow.cxx \
+       QtxWorkspaceAction.cxx \
+       QtxWorkstackAction.cxx \
+       QtxListResourceEdit.cxx \
+       QtxResourceEdit.cxx \
+       QtxWorkstack.cxx \
+       QtxListView.cxx \
+       QtxDirListEditor.cxx \
+       QtxDblValidator.cxx \
+       QtxSplash.cxx
+
+MOC_FILES= \
+       QtxAction_moc.cxx \
+       QtxColorScale_moc.cxx \
+       QtxComboBox_moc.cxx \
+       QtxDblSpinBox_moc.cxx \
+       QtxDialog_moc.cxx \
+       QtxDockAction_moc.cxx \
+       QtxDockWindow_moc.cxx \
+       QtxGroupBox_moc.cxx \
+       QtxIntSpinBox_moc.cxx \
+       QtxListAction_moc.cxx \
+       QtxListBox_moc.cxx \
+       QtxLogoMgr_moc.cxx \
+       QtxMenuButton_moc.cxx \
+       QtxMRUAction_moc.cxx \
+       QtxPathDialog_moc.cxx \
+       QtxPopupMgr_moc.cxx \
+       QtxPopupMenu_moc.cxx \
+       QtxTable_moc.cxx \
+       QtxToolBar_moc.cxx \
+       QtxToolTip_moc.cxx \
+       QtxActionMgr_moc.cxx \
+       QtxActionMenuMgr_moc.cxx \
+       QtxActionToolMgr_moc.cxx \
+       QtxMainWindow_moc.cxx \
+       QtxWorkspaceAction_moc.cxx \
+       QtxWorkstackAction_moc.cxx \
+       QtxWorkstack_moc.cxx \
+       QtxListView_moc.cxx \
+       QtxListResourceEdit_moc.cxx \
+       QtxDirListEditor_moc.cxx \
+       QtxDblValidator_moc.cxx \
+       QtxSplash_moc.cxx
+nodist_libqtx_la_SOURCES= $(MOC_FILES)
+
+libqtx_la_CPPFLAGS=$(QT_INCLUDES)
+
+libqtx_la_LDFLAGS=$(QT_MT_LIBS)
diff --git a/src/Qtx/Makefile.in b/src/Qtx/Makefile.in
deleted file mode 100755 (executable)
index ea5bccb..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-#  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$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-
-VPATH=.:@srcdir@:@srcdir@/resources
-
-@COMMENCE@
-
-# header files 
-
-EXPORT_HEADERS= Qtx.h \
-               QtxAction.h \
-               QtxColorScale.h \
-               QtxComboBox.h \
-               QtxDblSpinBox.h \
-               QtxDialog.h \
-               QtxDockAction.h \
-                QtxDockWindow.h \
-                QtxGroupBox.h \
-               QtxIntSpinBox.h \
-               QtxListAction.h \
-               QtxListBox.h \
-                QtxListOfOperations.h \
-                QtxLogoMgr.h \
-               QtxMenuButton.h \
-               QtxMRUAction.h \
-               QtxOperations.h \
-               QtxPathDialog.h \
-                QtxPopupMgr.h \
-               QtxResourceMgr.h \
-                QtxStdOperations.h \
-                QtxTable.h \
-               QtxToolBar.h \
-               QtxToolTip.h \
-               QtxParser.h \
-                QtxPopupMenu.h \
-               QtxActionMgr.h \
-               QtxActionMenuMgr.h \
-               QtxActionToolMgr.h \
-                QtxMainWindow.h \
-               QtxWorkspaceAction.h \
-               QtxWorkstackAction.h \
-               QtxListResourceEdit.h \
-               QtxWorkstack.h \
-               QtxResourceEdit.h \
-               QtxListView.h \
-               QtxDirListEditor.h \
-               QtxDblValidator.h \
-               QtxSplash.h
-
-# .po files to transform in .qm
-
-PO_FILES = \
-
-# Libraries targets
-
-LIB = libqtx.la
-
-LIB_SRC= \
-        Qtx.cxx \
-       QtxAction.cxx \
-       QtxColorScale.cxx \
-       QtxComboBox.cxx \
-       QtxDblSpinBox.cxx \
-       QtxDialog.cxx \
-       QtxDockAction.cxx \
-        QtxDockWindow.cxx \
-        QtxGroupBox.cxx \
-       QtxIntSpinBox.cxx \
-       QtxListAction.cxx \
-       QtxListBox.cxx \
-        QtxListOfOperations.cxx \
-        QtxLogoMgr.cxx \
-       QtxMenuButton.cxx \
-       QtxMRUAction.cxx \
-       QtxPathDialog.cxx \
-        QtxPopupMgr.cxx \
-       QtxResourceMgr.cxx \
-        QtxStdOperations.cxx \
-        QtxTable.cxx \
-       QtxToolBar.cxx \
-       QtxToolTip.cxx \
-       QtxOperations.cxx \
-       QtxParser.cxx \
-        QtxPopupMenu.cxx \
-       QtxActionMgr.cxx \
-       QtxActionMenuMgr.cxx \
-       QtxActionToolMgr.cxx \
-        QtxMainWindow.cxx \
-       QtxWorkspaceAction.cxx \
-       QtxWorkstackAction.cxx \
-        QtxListResourceEdit.cxx \
-       QtxResourceEdit.cxx \
-       QtxWorkstack.cxx \
-       QtxListView.cxx \
-       QtxDirListEditor.cxx \
-       QtxDblValidator.cxx \
-       QtxSplash.cxx
-
-LIB_MOC = \
-       QtxAction.h \
-        QtxColorScale.h \
-        QtxComboBox.h \
-        QtxDblSpinBox.h \
-        QtxDialog.h \
-        QtxDockAction.h \
-        QtxDockWindow.h \
-        QtxGroupBox.h \
-        QtxIntSpinBox.h \
-        QtxListAction.h \
-        QtxListBox.h \
-        QtxLogoMgr.h \
-        QtxMenuButton.h \
-        QtxMRUAction.h \
-        QtxPathDialog.h \
-        QtxPopupMgr.h \
-        QtxPopupMenu.h \
-        QtxTable.h \
-       QtxToolBar.h \
-        QtxToolTip.h \
-       QtxActionMgr.h \
-       QtxActionMenuMgr.h \
-       QtxActionToolMgr.h \
-        QtxMainWindow.h \
-       QtxWorkspaceAction.h \
-       QtxWorkstackAction.h \
-       QtxWorkstack.h \
-       QtxListView.h \
-       QtxListResourceEdit.h \
-       QtxDirListEditor.h \
-       QtxDblValidator.h \
-       QtxSplash.h
-
-RESOURCES_FILES = \
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS)
-
-@CONCLUDE@
-
-
index 14704e5502097eb77e05c30fb77e831c9f1ee608..6e2a31648aecf3e0ef337076bc916b49181ebb29 100755 (executable)
 #include "Qtx.h"
 
 #include <qdir.h>
+#include <qbitmap.h>
 #include <qstring.h>
 #include <qwidget.h>
 #include <qlayout.h>
+#include <qpainter.h>
 #include <qtoolbar.h>
 #include <qgroupbox.h>
 #include <qfileinfo.h>
@@ -556,3 +558,144 @@ void Qtx::scaleColors( const int num, QValueList<QColor>& lst )
   for ( int i = 0; i < num; i++ )
     lst.append( scaleColor( i, 0, num - 1 ) );
 }
+
+/*!
+       Name: grayscale [static public]
+       Desc: Convert color image to grayscale image.
+*/
+QImage Qtx::grayscale( const QImage& img )
+{
+  QImage res = img;
+
+  int colNum = res.numColors();
+  if ( colNum )
+  {
+    for ( int i = 0; i < colNum; i++ )
+      res.setColor( i, qGray( res.color( i ) ) );
+  }
+  else
+  {
+    for ( int y = 0; y < res.height(); y++ )
+    {
+      for ( int x = 0; x < res.width(); x++ )
+      {
+        QRgb pix = res.pixel( x, y );
+        res.setPixel( x, y, qRgba( qGray( pix ), qGray( pix ), qGray( pix ), qAlpha( pix ) ) );
+      }
+    }
+  }
+
+  return res;
+}
+
+/*!
+       Name: grayscale [static public]
+       Desc: Convert color pixmap to grayscale pixmap.
+*/
+QPixmap Qtx::grayscale( const QPixmap& pix )
+{
+  QPixmap res;
+  res.convertFromImage( grayscale( pix.convertToImage() ) );
+  return res;
+}
+
+/*!
+       Name: transparentImage [static public]
+       Desc: Create transparent image with specified width \aw, height \ah and color depth \ad.
+*/
+QImage Qtx::transparentImage( const int w, const int h, const int d )
+{
+  QImage img;
+  if ( img.create( w, h, d < 0 ? QPixmap::defaultDepth() : d ) )
+  {
+    img.setAlphaBuffer( true );
+    for ( int i = 0; i < img.height(); i++ )
+      for ( int j = 0; j < img.width(); j++ )
+        img.setPixel( j, i, qRgba( 0, 0, 0, 0 ) );
+  }
+  return img;
+}
+
+/*!
+       Name: transparentPixmap [static public]
+       Desc: Create transparent pixmap with specified width \aw, height \ah and color depth \ad.
+*/
+QPixmap Qtx::transparentPixmap( const int w, const int h, const int d )
+{
+  QPixmap pix;
+  QImage img = transparentImage( w, h, d );
+  if ( !img.isNull() )
+    pix.convertFromImage( img );
+  return pix;
+}
+
+/*!
+       Name: composite [static public]
+       Desc: Create composite pixmap. Pixmap 'pix' draws over pixmap 'dest' with coordinates
+        specified relative upper left corner of 'dest'. If 'dest' not given then new empty
+        pixmap with appropriate size created.
+*/
+QPixmap Qtx::composite( const QPixmap& pix, const int x, const int y, const QPixmap& dest )
+{
+  if ( pix.isNull() )
+    return dest;
+
+  int width = QMAX( pix.width() + x, dest.width() );
+  int height = QMAX( pix.height() + y, dest.height() );
+
+  QPixmap res( width, height );
+  QImage img = transparentImage( width, height, 32 );
+
+  QPainter p;
+  p.begin( &res );
+  p.fillRect( 0, 0, width, height, QBrush( white ) );
+
+  if ( !dest.isNull() )
+  {
+    p.drawPixmap( 0, 0, dest );
+    QImage temp = dest.convertToImage();
+    for ( int i = 0; i < temp.width() && i < img.width(); i++ )
+    {
+      for ( int j = 0; j < temp.height() && j < img.height(); j++ )
+      {
+        if ( temp.hasAlphaBuffer() )
+          img.setPixel( i, j, temp.pixel( i, j ) );
+        else
+        {
+          QRgb p = temp.pixel( i, j );
+          img.setPixel( i, j, qRgba( qRed( p ), qGreen( p ), qBlue( p ), 255 ) );
+        }
+      }
+    }
+  }
+
+  p.drawPixmap( x, y, pix );
+  QImage temp = pix.convertToImage();
+  for ( int c = x; c < temp.width() + x && c < img.width(); c++ )
+  {
+    for ( int r = y; r < temp.height() + y && r < img.height(); r++ )
+    {
+      if ( qAlpha( temp.pixel( c - x, r - y ) ) > 0 )
+        img.setPixel( c, r, temp.pixel( c - x, r - y ) );
+    }
+  }
+
+  p.end();
+
+  for ( int ai = 0; ai < img.width(); ai++ )
+  {
+    for ( int aj = 0; aj < img.height(); aj++ )
+    {
+      if ( qAlpha( img.pixel( ai, aj ) ) < 1 )
+        img.setPixel( ai, aj, qRgba( 255, 255, 255, 255 ) );
+      else
+        img.setPixel( ai, aj, qRgba( 0, 0, 0, 0 ) );
+    }
+  }
+
+  QBitmap bmp( width, height );
+  bmp.convertFromImage( img, Qt::ColorMode_Mask | Qt::ThresholdDither );
+  res.setMask( bmp );
+
+  return res;
+}
index 1fef63f044153889677bc3124dc895f466728600..0d5cb3a40e7a1b60e1fd1a3e3c7899551f29d897 100755 (executable)
@@ -68,6 +68,9 @@
 #endif
 #endif
 
+#include <qimage.h>
+#include <qpixmap.h>
+
 class QObject;
 class QString;
 class QWidget;
@@ -131,6 +134,12 @@ public:
 
   static QColor  scaleColor( const int, const int, const int );
   static void    scaleColors( const int, QValueList<QColor>& );
+
+  static QImage  grayscale( const QImage& );
+  static QPixmap grayscale( const QPixmap& );
+  static QImage  transparentImage( const int, const int, const int = -1 );
+  static QPixmap transparentPixmap( const int, const int, const int = -1 );
+  static QPixmap composite( const QPixmap&, const int, const int, const QPixmap& = QPixmap() );
 };
 
 #endif
index e2a3ad8786c60ead56d9c3d6174a1e7f607cfff2..dbae4819fd35b499bcd742742272fd2076f51307 100755 (executable)
@@ -112,7 +112,7 @@ bool QtxAction::addTo( QWidget* w )
                  successfully and false otherwise.
 */
 
-bool QtxAction::addTo( QWidget* w, int index )
+bool QtxAction::addTo( QWidget* w, const int index )
 {
   if ( !addTo( w ) )
     return false;
@@ -238,14 +238,17 @@ void QtxAction::setPopup( QWidget* w, const int id, QPopupMenu* subPopup ) const
   if ( !w )
     return;
 
-  if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) )
-    return;  // unsupported widget type
+  QMenuData* pmd = 0;
+
+  if ( w->inherits( "QPopupMenu" ) )
+    pmd = ::qt_cast<QPopupMenu*>( w );
+  else if ( w->inherits( "QMenuBar" ) )
+    pmd = ::qt_cast<QMenuBar*>( w );
 
-  QMenuData* md = 0;
-  QMenuData* pmd = dynamic_cast<QMenuData*>( w );
   if ( !pmd )
     return;  // bad widget
-  
+
+  QMenuData* md = 0;
   QMenuItem* item = pmd->findItem( id, &md );
   if ( !item || md != pmd )
     return;  // item is not found
index 2b17df6d8a85fcd5744da4011eb1621b8f1c1364..af0473f3ff2c89c9968946bbe024106af3118f18 100755 (executable)
 #include <qaction.h>
 #include <qmap.h>
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 class QTX_EXPORT QtxAction : public QAction
 {
     Q_OBJECT
@@ -38,7 +42,7 @@ public:
     virtual ~QtxAction();
 
     virtual bool addTo( QWidget* );
-    virtual bool addTo( QWidget*, int );
+    virtual bool addTo( QWidget*, const int );
     virtual bool removeFrom( QWidget* );
 
 protected:
@@ -48,4 +52,8 @@ private:
     QMap<QWidget*,int> myMenuIds;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index b87289a33300a8e75e9846ca95171b30555d4990..94f7050a0e2ef678e7bd1175f3ce84d659f52737 100644 (file)
@@ -48,12 +48,12 @@ namespace {
     QValueList<int> l;
     const QMenuData* md = 0;
     if ( w->inherits( "QMenuBar" ) )
-      md = dynamic_cast<const QMenuData*>( w );
+      md = ::qt_cast<QMenuBar*>( w );
     else if ( w->inherits( "QPopupMenu" ) )
-      md = dynamic_cast<const QMenuData*>( w );
+      md = ::qt_cast<QPopupMenu*>( w );
     if ( md ) {
-      for ( int i=0; i < md->count(); i++ )
-       l.append( md->idAt( i ) );
+      for ( uint i = 0; i < md->count(); i++ )
+             l.append( md->idAt( i ) );
     }
     return l;
   }
@@ -62,25 +62,38 @@ namespace {
   {
     const QMenuData* md = 0;
     if ( w->inherits( "QMenuBar" ) )
-      md = dynamic_cast<const QMenuData*>( w );
+      md = ::qt_cast<QMenuBar*>( 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;
+      md = ::qt_cast<QPopupMenu*>( w );
+    if ( md )
+    {
+      for ( uint 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" );
+    if ( !w )
+      return;
+
+    QMenuData* md = 0;
+    if ( w->inherits( "QMenuBar" ) )
+      md = ::qt_cast<QMenuBar*>( w );
+    else if ( w->inherits( "QPopupMenu" ) )
+      md = ::qt_cast<QPopupMenu*>( w );
+
+    if ( !md )
+      return;
+
+    printf( ">>> start dump menu (%s) >>>\n", before ? "before" : "after" );
+    for ( uint 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" );
   }
 };
 
@@ -914,7 +927,7 @@ void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bo
   {
     NodeList& lst = idMap[it2.current()->group];
     int idx = it2.current()->idx;
-    if ( idx < 0 || idx >= lst.count() )
+    if ( idx < 0 || idx >= (int)lst.count() )
       lst.append( it2.current() );
     else
       lst.insert( idx, it2.current() );
index 8984bb28ffdc7b43d2683f6ed47a10872f7e2270..a5b389fd1e2bb156ceae1405587d7aefeda792a0 100644 (file)
 #ifndef QTX_DOUBLE_VALIDATOR
 #define QTX_DOUBLE_VALIDATOR
 
+#include "Qtx.h"
+
 #include <qvalidator.h>
 
-class QtxDblValidator : public QDoubleValidator
+class QTX_EXPORT QtxDblValidator : public QDoubleValidator
 {
   Q_OBJECT
 
index 2554511a4675b36b29e336fbaf9da052f0fcf5fc..c52cb85fe5c4fce9f1aee386ca3c129c2ae86766 100755 (executable)
@@ -416,12 +416,13 @@ QSize QtxDialog::Border::minimumSizeHint() const
 QtxDialog::QtxDialog( QWidget* parent, const char* name,
                                          bool modal, bool allowResize, const int f, WFlags wf )
 : QDialog( parent, name, modal,
-#ifdef WIN32
            wf | WStyle_Customize | WStyle_Title | WStyle_SysMenu |
-           ( allowResize ? WStyle_NormalBorder : WStyle_NoBorderEx ) ),
+#ifdef WIN32
+           ( allowResize ? WStyle_NormalBorder : WStyle_NoBorderEx ) |
 #else
-           wf | WStyle_NormalBorder | WStyle_Customize | WStyle_Title | WStyle_SysMenu ),
+           WStyle_NormalBorder |
 #endif
+           ( allowResize ? WStyle_Maximize : 0 ) ),
 mySender( 0 ),
 myAlignment( 0 ),
 myInited( false ),
index 1a9f5d07dd84e3fd540ae15cc860f9617a13bf6c..da6f5cc55ad210853e1a3b850743888a92871349 100644 (file)
@@ -285,7 +285,16 @@ QtxDockWindow::~QtxDockWindow()
 void QtxDockWindow::setWidget( QWidget* wid )
 {
   if ( wid )
-    wid->reparent( this, QPoint( 0, 0 ), wid->isVisibleTo( wid->parentWidget() ) );
+  {
+    if ( wid->parentWidget() != this )
+      wid->reparent( this, QPoint( 0, 0 ), wid->isVisibleTo( wid->parentWidget() ) );
+    if ( myWatcher )
+    {
+      setCaption( wid->caption() );
+      if ( wid->icon() )
+        setIcon( *wid->icon() );
+    }
+  }
 
   QDockWindow::setWidget( wid );
 }
index e3c4a848445a370fa73ffc9d8f22d3035a6d1b5a..52f09303943cb6377d2a74e29a5f803634b1f108 100755 (executable)
@@ -144,8 +144,11 @@ myRaise( false )
 
 QtxListAction::~QtxListAction()
 {
-  if ( myFrame )
+  if ( myFrame ) {
     myFrame->myAction = 0;
+    delete myFrame;
+    myFrame = 0;
+  }
 }
 
 /*!
index 3b93b846f9f13eb2ce12467b65254cc9fbae2777..2a7678df4d49b2e0053f5277c3b5b7d55f2e94cd 100644 (file)
@@ -686,8 +686,8 @@ QtxListResourceEdit::SelectItem::~SelectItem()
 void QtxListResourceEdit::SelectItem::store()
 {
   int idx = myList->currentItem();
-  if ( myIndex.contains( idx ) )
-    setInteger( myIndex[idx] );
+  if ( idx >= 0 )
+    setInteger( myIndex.contains( idx ) ? myIndex[idx] : idx );
 }
 
 /*!
@@ -697,14 +697,15 @@ void QtxListResourceEdit::SelectItem::retrieve()
 {
   int id = getInteger( -1 );
 
-  int idx = -1;
-  for ( QMap<int, int>::ConstIterator it = myIndex.begin(); it != myIndex.end() && idx == -1; ++it )
+  for ( QMap<int, int>::ConstIterator it = myIndex.begin(); it != myIndex.end(); ++it )
   {
-    if ( it.data() == id )
-      idx = it.key();
+    if ( it.data() == id ) {
+      myList->setCurrentItem( it.key() );
+      return;
+    }
   }
-
-  myList->setCurrentItem( idx );
+  if ( id >= 0 )
+    myList->setCurrentItem( id );
 }
 
 /*!
@@ -1182,7 +1183,7 @@ QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit*
   mySizes->setInsertionPolicy( QComboBox::NoInsertion );
   myBold = new QCheckBox( tr( "Bold" ), this );
   myItalic = new QCheckBox( tr( "Italic" ), this );
-  myUnderline = new QCheckBox( tr( "Underline" ), this );
+  myUnderline = new QCheckBox( tr( "Shadow" ), this );
   myPreview = new QToolButton( this );
   myPreview->setText( "..." );
 
@@ -1689,7 +1690,8 @@ void QtxListResourceEdit::FileItem::onOpenFile()
 
   if( myFileDlg->exec()==QDialog::Accepted )
   {
-    myFile->setText( myFileDlg->selectedFile() ); 
+               QString selFile = QDir::convertSeparators( myFileDlg->selectedFile() );
+    myFile->setText( selFile ); 
   }
 }
 
index fc816fe3b7b7e587e7aa3dd9263b1f2cf228d7b0..d6da330ac8fee1ed4745041d392c48a6a6098b17 100644 (file)
@@ -135,7 +135,7 @@ public:
 
   virtual void         update();
 
-  QVariant             property( const QString& ) const;
+  virtual QVariant     property( const QString& ) const;
   virtual void         setProperty( const QString&, const QVariant& );
 
   virtual void         store() = 0;
index f53df0c5583e49edd01a0ce3e5f238b82da4892b..02b3a1c656fb589da663b666a31e1df226875f74 100644 (file)
@@ -858,7 +858,7 @@ QtxResourceMgr::QtxResourceMgr( const QString& appName, const QString& resVarTem
   QString dirs;
   if ( ::getenv( envVar ) )
     dirs = ::getenv( envVar );
-#ifdef WNT
+#ifdef WIN32
   QString dirsep = ";";      // for Windows: ";" is used as directories separator
 #else
   QString dirsep = "[:|;]";  // for Linux: both ":" and ";" can be used
@@ -879,6 +879,11 @@ QtxResourceMgr::~QtxResourceMgr()
   QStringList prefList = myTranslator.keys();
   for ( QStringList::const_iterator it = prefList.begin(); it != prefList.end(); ++it )
     removeTranslators( *it );
+  for ( ResListIterator resIt( myResources ); resIt.current(); ++resIt )
+    delete resIt.current();
+  myResources.clear();
+  for ( FormatListIterator formIt( myFormats ); formIt.current(); ++formIt )
+    delete formIt.current();
 }
 
 /*!
index 0bf57831ca33874d883bdc47be511db4a96f6dc8..ff72dd3c2ba1a3a4dd0763f748566a3bd1e24342 100644 (file)
@@ -175,6 +175,8 @@ private:
   bool            myIsPixmapCached;
 
   bool            myIsIgnoreUserValues;
+
+  friend class QtxResourceMgr::Format;
 };
 
 /*!
@@ -185,7 +187,7 @@ class QTX_EXPORT QtxResourceMgr::Format
 {
 public:
   Format( const QString& );
-  ~Format();
+  virtual ~Format();
 
   QString                format() const;
 
index d3244efc999968986216305ac89e8526d58f8d7b..ff48080765945cb683b5e177b16aed42a222542e 100644 (file)
@@ -66,6 +66,7 @@ QtxSplash::QtxSplash( const QPixmap& pixmap )
   myGradientType = Vertical;
   myError        = 0;
   myStartColor   = red;
+  myMargin       = 5;
 
   setPixmap( pixmap );
 }
@@ -256,6 +257,30 @@ int QtxSplash::textAlignment() const
   return myAlignment;
 }
 
+/*!
+  \brief Set margin.
+
+  Margin is used when drawing progress bar and status messages.
+  
+  \param m new margin
+  \sa margin()
+*/
+void QtxSplash::setMargin( const int m )
+{
+  myMargin = m;
+  repaint();
+}
+
+/*!
+  \brief Get margin.
+  \return current margin.
+  \sa setMargin()
+*/
+int QtxSplash::margin() const
+{
+  return myMargin;
+}
+
 /*!
   Sets message text color to \a color.
   Default is white.
@@ -382,29 +407,11 @@ void QtxSplash::clear()
 void QtxSplash::drawContents( QPainter* painter )
 {
   QRect r = rect();
+  int m = margin();
   if ( myTotal > 0 ) {
-    // draw progress bar outline rectangle
-    painter->setPen( palette().active().dark() );
-    painter->drawLine( r.x()+5, 
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.width()-5,
-                      r.height()-5-_PROGRESS_WIDTH );
-    painter->drawLine( r.x()+5,
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.x()+5,
-                      r.height()-5 );
-    painter->setPen( palette().active().light() );
-    painter->drawLine( r.x()+5,
-                      r.height()-5,
-                      r.width()-5,
-                      r.height()-5 );
-    painter->drawLine( r.width()-5,
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.width()-5,
-                      r.height()-5 );
     // draw progress bar
     if ( myGradientType == Horizontal ) {
-      int tng = r.width() - r.x() - 11;
+      int tng = r.width() - r.x() - m*2;
       int ng = (int) ( 1.0 * tng * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
       int h1, h2, s1, s2, v1, v2;
       myStartColor.hsv( &h1, &s1, &v1 );
@@ -415,29 +422,48 @@ void QtxSplash::drawContents( QPainter* painter )
                                 s1 + ((s2-s1)*i)/(tng-1),
                                 v1 + ((v2-v1)*i)/(tng-1), 
                                 QColor::Hsv ) );
-       painter->drawLine( r.x()+6+i,
-                          r.height()-5-_PROGRESS_WIDTH+1,
-                          r.x()+6+i,
-                          r.height()-6 );
+       painter->drawLine( r.x()+m+i,
+                          r.height()-m-_PROGRESS_WIDTH,
+                          r.x()+m+i,
+                          r.height()-m );
       }
     }
     else {
-      int ng = (int) ( 1.0 * (r.width() - r.x() - 11) * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
+      int ng = (int) ( 1.0 * (r.width() - r.x() - m*2 - 1) * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
       int h1, h2, s1, s2, v1, v2;
       myStartColor.hsv( &h1, &s1, &v1 );
       myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) :
                             myStartColor.hsv( &h2, &s2, &v2 );
-      for ( int i = 0; i < _PROGRESS_WIDTH-1; i++ ) {
-       painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-2),
-                                s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-2),
-                                v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-2), 
+      for ( int i = 0; i < _PROGRESS_WIDTH; i++ ) {
+       painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-1),
+                                s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-1),
+                                v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-1), 
                                 QColor::Hsv ) );
-       painter->drawLine( r.x()+6,
-                          r.height()-5-_PROGRESS_WIDTH+1+i,
-                          r.x()+6+ng-1,
-                          r.height()-5-_PROGRESS_WIDTH+1+i );
+       painter->drawLine( r.x()+m,
+                          r.height()-m-_PROGRESS_WIDTH+i,
+                          r.x()+m+ng,
+                          r.height()-m-_PROGRESS_WIDTH+i );
       }
     }
+    // draw progress bar outline rectangle
+    painter->setPen( palette().active().dark() );
+    painter->drawLine( r.x()+m, 
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.width()-m,
+                      r.height()-m-_PROGRESS_WIDTH );
+    painter->drawLine( r.x()+m,
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.x()+m,
+                      r.height()-m );
+    painter->setPen( palette().active().light() );
+    painter->drawLine( r.x()+m,
+                      r.height()-m,
+                      r.width()-m,
+                      r.height()-m );
+    painter->drawLine( r.width()-m,
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.width()-m,
+                      r.height()-m );
   }
   // draw status
   if ( !myMessage.isEmpty() ) {
@@ -447,7 +473,7 @@ void QtxSplash::drawContents( QPainter* painter )
     int i = myMessage.length() - 1;
     while( i >= 0 && myMessage[ i-- ] == '\n' )
       shift += spacing;
-    QRect r1( r.x() + 5, r.y() + 5, r.width() - 10, r.height() - 10 - shift );
+    QRect r1( r.x() + m, r.y() + m, r.width() - m*2, r.height() - m*2 - shift );
     QRect r2 = r1;
     if ( myAlignment & Qt::AlignLeft   ) r2.setLeft  ( r2.left()   + 1 );
     if ( myAlignment & Qt::AlignTop    ) r2.setTop   ( r2.top()    + 1 );
index b6ade167c8a005ac40742da5568da6a4aaaab59e..05b7088a1f9d1c2be12c5b694b72a56a67f2bcb6 100644 (file)
@@ -66,6 +66,9 @@ public:
     void              setTextAlignment( const int );
     int               textAlignment() const;
 
+    void              setMargin( const int );
+    int               margin() const;
+
     void              setTextColor( const QColor& );
     QColor            textColor() const;
     void              setTextColors( const QColor&, const QColor& = QColor() );
@@ -109,6 +112,7 @@ private:
     QColor            myEndColor;
     int               myGradientType;
     int               myError;
+    int               myMargin;
 };
 
 #endif
index 63fd6de55cd35ee065ceb4db99c9ade5164ef2df..3cf22f41384375b6e1237c40fd8c6f83745555cd 100644 (file)
@@ -919,7 +919,7 @@ void QtxWorkstack::onDeactivated( QtxWorkstackArea* area )
 */
 void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p )
 {
-  QtxWorkstackArea* anArea = dynamic_cast<QtxWorkstackArea*>( (QObject*)sender()  );
+  QtxWorkstackArea* anArea = ::qt_cast<QtxWorkstackArea*>( (QObject*)sender() );
   if ( !anArea )
     anArea = activeArea();
 
@@ -948,6 +948,8 @@ void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p )
     myActionsMap[Rename]->addTo( pm );
   }
 
+  Qtx::simplifySeparators( pm );
+
   if ( pm->count() )
     pm->exec( p );
 
@@ -1294,7 +1296,9 @@ void QtxWorkstack::splitterInfo( QSplitter* split, QString& info ) const
 //Cuts starting '(' symbol and ending '(' symbol
 void cutBrackets( QString& parameters )
 {
-  if ( !parameters.isEmpty() && parameters[0] == '(' && parameters[parameters.length()-1] == ')' )
+  QChar c1 = parameters[0];
+  QChar c2 = parameters[int(parameters.length()-1)];
+  if ( !parameters.isEmpty() && c1 == '(' && c2 == ')' )
     parameters = parameters.mid( 1, parameters.length()-2 );
 }
 
@@ -1324,7 +1328,9 @@ bool checkFormat( const QString& parameters )
 {
   QString params( parameters );
   // 1. begins and ends with brackets
-  bool ok = ( params[0] == '(' && params[params.length()-1] == ')' );
+  QChar c1 = params[0];
+  QChar c2 = params[int(params.length()-1)];
+  bool ok = ( c1 == '(' && c2 == ')' );
   if ( !ok ) return ok;
   ::cutBrackets( params );
   // 2. has splitter word
@@ -1358,13 +1364,16 @@ QStringList getChildren( const QString& str )
   int i = 1,
   nOpen = 1, // count brackets: '(' increments nOpen, ')' decrements
   start = 0;
-  while ( i < str.length() ) {
-    if ( str[i] == '(' ) {
+  while ( i < (int)str.length() )
+  {
+    if ( str[i] == '(' )
+    {
       nOpen++;
       if ( nOpen == 1 )
        start = i;
     }
-    else if ( str[i] == ')' ) {
+    else if ( str[i] == ')' )
+    {
       nOpen--;
       if ( nOpen == 0 ) 
        lst.append( str.mid( start, i-start+1 ) );
@@ -1399,7 +1408,7 @@ 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() );
+    view = ::qt_cast<QWidget*>( l->first() );
   delete l;
   return view;
 }
@@ -1420,7 +1429,8 @@ void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters,
   // 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 )
+  QStringList::Iterator it;
+  for ( it = sizesLst.begin(); it != sizesLst.end(); ++it )
     sizes.append( (*it).toInt() );
   sMap[ splitter ] = sizes;
 
@@ -1495,8 +1505,8 @@ QtxWorkstack& QtxWorkstack::operator<<( const QString& parameters )
   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() );
+  for ( QMap< QSplitter*, QValueList<int> >::Iterator itm = sMap.begin(); itm != sMap.end(); ++itm )
+    itm.key()->setSizes( itm.data() );
 
   return (*this);
 }
@@ -2337,16 +2347,16 @@ void QtxWorkstackTabBar::setActive( const bool on )
 {
   QFont aFont = font();
   aFont.setUnderline( on );
-  QColorGroup* aColGrp = new QColorGroup();
+  QColorGroup aColGrp;
   QPalette aPal = palette();
   if ( !on ) {
-    aPal.setColor( QColorGroup::HighlightedText, aColGrp->foreground() );
+    aPal.setColor( QColorGroup::HighlightedText, aColGrp.foreground() );
     aPal.setColor( QColorGroup::Highlight, colorGroup().dark().light( DARK_COLOR_LIGHT ) );
     setPalette( aPal );
   }
   else {
-    aPal.setColor( QColorGroup::HighlightedText, aColGrp->highlightedText() );
-    aPal.setColor( QColorGroup::Highlight, aColGrp->highlight() );
+    aPal.setColor( QColorGroup::HighlightedText, aColGrp.highlightedText() );
+    aPal.setColor( QColorGroup::Highlight, aColGrp.highlight() );
     unsetPalette();
   }
   setFont( aFont );
diff --git a/src/QxGraph/Makefile.am b/src/QxGraph/Makefile.am
new file mode 100755 (executable)
index 0000000..b6e64e2
--- /dev/null
@@ -0,0 +1,66 @@
+#  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 $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libQxGraph.la
+
+salomeinclude_HEADERS= \
+       QxGraph_ActiveItem.h \
+       QxGraph_Prs.h \
+       QxGraph_Canvas.h \
+       QxGraph_CanvasView.h \
+       QxGraph_ViewWindow.h \
+       QxGraph_ViewManager.h \
+       QxGraph_ViewModel.h \
+       QxGraph_Def.h \
+       QxGraph.h
+
+dist_libQxGraph_la_SOURCES= \
+       QxGraph_Prs.cxx \
+       QxGraph_Canvas.cxx \
+       QxGraph_CanvasView.cxx \
+       QxGraph_ViewWindow.cxx \
+       QxGraph_ViewManager.cxx \
+       QxGraph_ViewModel.cxx
+
+MOC_FILES= \
+       QxGraph_Canvas_moc.cxx \
+       QxGraph_CanvasView_moc.cxx \
+       QxGraph_ViewWindow_moc.cxx \
+       QxGraph_ViewManager_moc.cxx \
+       QxGraph_ViewModel_moc.cxx
+
+nodist_libQxGraph_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA= \
+       resources/view_fitall.png \
+       resources/view_fitarea.png \
+       resources/view_glpan.png \
+       resources/view_pan.png \
+       resources/view_reset.png \
+       resources/view_zoom.png
+
+nodist_salomeres_DATA= \
+       QxGraph_images.qm \
+       QxGraph_msg_en.qm  
+
+libQxGraph_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
+libQxGraph_la_LDFLAGS=$(QT_MT_LIBS) ../SUIT/libsuit.la
diff --git a/src/QxGraph/QxGraph.h b/src/QxGraph/QxGraph.h
new file mode 100644 (file)
index 0000000..e11d0f0
--- /dev/null
@@ -0,0 +1,35 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifdef WNT
+#ifdef QXGRAPH_EXPORTS
+#define QXGRAPH_EXPORT __declspec(dllexport)
+#else
+#define QXGRAPH_EXPORT __declspec(dllimport)
+#endif
+#else
+#define QXGRAPH_EXPORT
+#endif
+
+#ifdef WNT
+#pragma warning ( disable:4251 )
+#endif
diff --git a/src/QxGraph/QxGraph_ActiveItem.h b/src/QxGraph/QxGraph_ActiveItem.h
new file mode 100644 (file)
index 0000000..fc9f008
--- /dev/null
@@ -0,0 +1,59 @@
+// 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
+//
+#ifndef QXGRAPH_ACTIVEITEM_H
+#define QXGRAPH_ACTIVEITEM_H
+
+#include "QxGraph.h"
+
+#include <qpoint.h>
+#include <qwmatrix.h>
+#include <qevent.h>
+
+class QXGRAPH_EXPORT QxGraph_ActiveItem
+{
+ public:
+  QxGraph_ActiveItem() {}
+  ~QxGraph_ActiveItem() {}
+
+  virtual bool isMoveable() = 0;
+  virtual void beforeMoving() = 0;
+  virtual void afterMoving() = 0;
+
+  virtual bool isResizable(QPoint thePoint, int& theCursorType) { return false; }
+  virtual bool isResizing() { return false; }
+  virtual void beforeResizing(int theCursorType) {}
+  virtual void resize(QPoint thePoint) {}
+  virtual void afterResizing() {}
+
+  virtual void hilight(const QPoint& theMousePos, const bool toHilight = true) = 0;
+  virtual void select(const QPoint& theMousePos, const bool toSelect = true) = 0;
+  virtual void showPopup(QWidget* theParent, QMouseEvent* theEvent, const QPoint& theMousePos = QPoint()) = 0;
+
+  virtual QString getToolTipText(const QPoint& theMousePos, QRect& theRect) const = 0;
+
+  virtual bool arePartsOfOtherItem(QxGraph_ActiveItem* theSecondItem) { return false; }
+
+  void setTMatrix(QWMatrix theMatrix) { myTMatrix = theMatrix; }
+  QWMatrix getTMatrix() const { return myTMatrix; }
+
+ private:
+  QWMatrix myTMatrix; // canvas view's current transformation matrix
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_Canvas.cxx b/src/QxGraph/QxGraph_Canvas.cxx
new file mode 100644 (file)
index 0000000..f39c5f6
--- /dev/null
@@ -0,0 +1,109 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "QxGraph_Canvas.h"
+#include "QxGraph_Def.h"
+#include "QxGraph_Prs.h"
+
+#include <SUIT_ResourceMgr.h>
+
+#include <qobjectlist.h>
+#include <QxGraph_CanvasView.h>
+
+/*!
+  Constructor
+*/
+QxGraph_Canvas::QxGraph_Canvas(SUIT_ResourceMgr* theMgr) :
+  QCanvas()
+{
+  printf("Construct QxGraph_Canvas\n");
+
+  resize(GRAPH_WIDTH, GRAPH_HEIGHT);
+  setDoubleBuffering(true);
+
+  QColor aColor = theMgr->colorValue( "QxGraph", "Background", DEF_BACK_COLOR );
+  setBackgroundColor(aColor);
+}
+
+/*!
+  Destructor
+*/
+QxGraph_Canvas::~QxGraph_Canvas()
+{
+  /*QObjectList* aNodeList = queryList("QObject");
+  QObjectListIt aIt(*aNodeList);
+  QObject* anObj;
+  while ( (anObj = aIt.current()) != 0 ) {
+    ++aIt;
+    aNodeList->removeRef(anObj);
+    delete anObj;
+  }
+  delete aNodeList;*/
+
+  myPrsList.setAutoDelete(true);
+  myPrsList.clear();
+}
+
+/*!
+  Add view
+*/
+void QxGraph_Canvas::addView(QCanvasView* theView)
+{
+  myViews.append( theView );
+  QCanvas::addView(theView);
+  theView->setPaletteBackgroundColor(backgroundColor().light(120)); 
+}
+
+/*!
+  Remove view
+*/
+void QxGraph_Canvas::removeView( QCanvasView* theView )
+{
+  myViews.remove( theView );
+}
+
+/*!
+  Remove item
+*/
+void QxGraph_Canvas::removeItem( QCanvasItem* theItem )
+{
+  QValueList< QCanvasView* >::iterator anIter;
+  for ( anIter = myViews.begin(); anIter != myViews.end(); ++anIter )
+  {
+    QxGraph_CanvasView* aView = dynamic_cast<QxGraph_CanvasView*>( *anIter );
+    if ( aView )
+      aView->itemRemoved( theItem );
+  }
+
+  QCanvas::removeItem( theItem );
+}
+
+/*!
+  Get Prs object with index theIndex
+*/
+QxGraph_Prs* QxGraph_Canvas::getPrs(int theIndex)
+{
+  QxGraph_Prs* aRetPrs = 0;
+  if ( theIndex >= 0 && theIndex < myPrsList.count() )
+    aRetPrs = myPrsList.at(theIndex);
+  return aRetPrs;
+}
diff --git a/src/QxGraph/QxGraph_Canvas.h b/src/QxGraph/QxGraph_Canvas.h
new file mode 100644 (file)
index 0000000..9dd6e2c
--- /dev/null
@@ -0,0 +1,57 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef QXGRAPH_CANVAS_H
+#define QXGRAPH_CANVAS_H
+
+#include "QxGraph.h"
+
+#include <qcanvas.h>
+#include <qptrlist.h>
+
+class SUIT_ResourceMgr;
+class QxGraph_Prs;
+
+class QXGRAPH_EXPORT QxGraph_Canvas : public QCanvas {
+  Q_OBJECT
+
+ public:
+  QxGraph_Canvas(SUIT_ResourceMgr*);
+  virtual ~QxGraph_Canvas();
+
+  virtual void addView(QCanvasView* theView);
+  virtual void removeView(QCanvasView*);
+
+  QPtrList<QxGraph_Prs> getPrsList() const { return myPrsList; }
+  QxGraph_Prs*          getPrs(int theIndex = 0);
+  void                  addPrs(QxGraph_Prs* thePrs) { myPrsList.append(thePrs); }
+
+  virtual void removeItem( QCanvasItem* );
+
+private:
+
+  QValueList< QCanvasView* > myViews;
+  QPtrList<QxGraph_Prs> myPrsList;
+
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_CanvasView.cxx b/src/QxGraph/QxGraph_CanvasView.cxx
new file mode 100644 (file)
index 0000000..e7f726b
--- /dev/null
@@ -0,0 +1,761 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "QxGraph_CanvasView.h"
+#include "QxGraph_Canvas.h"
+#include "QxGraph_ViewWindow.h"
+#include "QxGraph_ActiveItem.h"
+#include "QxGraph_Def.h"
+
+#include <qwmatrix.h>
+#include <math.h>
+
+const char* imageZoomCursor[] = { 
+"32 32 3 1",
+". c None",
+"a c #000000",
+"# c #ffffff",
+"................................",
+"................................",
+".#######........................",
+"..aaaaaaa.......................",
+"................................",
+".............#####..............",
+"...........##.aaaa##............",
+"..........#.aa.....a#...........",
+".........#.a.........#..........",
+".........#a..........#a.........",
+"........#.a...........#.........",
+"........#a............#a........",
+"........#a............#a........",
+"........#a............#a........",
+"........#a............#a........",
+".........#...........#.a........",
+".........#a..........#a.........",
+".........##.........#.a.........",
+"........#####.....##.a..........",
+".......###aaa#####.aa...........",
+"......###aa...aaaaa.......#.....",
+".....###aa................#a....",
+"....###aa.................#a....",
+"...###aa...............#######..",
+"....#aa.................aa#aaaa.",
+".....a....................#a....",
+"..........................#a....",
+"...........................a....",
+"................................",
+"................................",
+"................................",
+"................................"};
+
+const char* imageCrossCursor[] = { 
+  "32 32 3 1",
+  ". c None",
+  "a c #000000",
+  "# c #ffffff",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "...............#................",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  ".......#################........",
+  "........aaaaaaa#aaaaaaaaa.......",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "...............#a...............",
+  "................a...............",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................",
+  "................................"};
+
+/*!
+  Constructor
+*/
+QxGraph_CanvasView::QxGraph_CanvasView(QxGraph_Canvas* theCanvas, QxGraph_ViewWindow* theViewWindow) :
+  QCanvasView(theCanvas, theViewWindow, 0, Qt::WRepaintNoErase),
+  myCurrentItem(0),
+  myHilightedItem(0),
+  mySelectedItem(0),
+  myMovingDone(false),
+  myCenter(0,0)
+{
+  printf("Construct QxGraph_CanvasView\n");
+  setName("QxGraph_CanvasView");
+
+  myOperation = NOTHING;
+  myCursor = cursor();
+  mySelectedRect = 0;
+
+  myTimer = new QTimer(this);
+  connect(myTimer, SIGNAL(timeout()), this, SLOT(onTimeout()));
+
+  viewport()->setMouseTracking(true);
+}
+
+/*!
+  Destructor
+*/
+QxGraph_CanvasView::~QxGraph_CanvasView()
+{
+}
+
+void QxGraph_CanvasView::contentsMousePressEvent(QMouseEvent* theEvent)
+{
+  myPoint = inverseWorldMatrix().map(theEvent->pos());
+  myGlobalPoint = theEvent->globalPos();
+  myCurrentItem = 0;
+
+  if ( theEvent->button() == Qt::MidButton && theEvent->state() == Qt::ControlButton
+       || 
+       myOperation == PANVIEW )
+  { // Panning
+    if ( myOperation != PANVIEW ) {
+      myOperation = PANVIEW;
+      myCursor = cursor(); // save old cursor
+      QCursor panCursor (Qt::SizeAllCursor);
+      setCursor(panCursor);
+    }
+    return;
+  }
+
+  if ( myOperation == PANGLOBAL )
+  { // Global panning
+    return;
+  }
+
+  if ( myOperation == WINDOWFIT )
+  { // Fit area
+    return;
+  }
+
+  if ( theEvent->button() == Qt::LeftButton && theEvent->state() == Qt::ControlButton
+       || 
+       myOperation == ZOOMVIEW )
+  { // Zoom
+    if ( myOperation != ZOOMVIEW ) {
+      myOperation = ZOOMVIEW;
+      myCursor = cursor(); // save old cursor
+      QPixmap zoomPixmap (imageZoomCursor);
+      QCursor zoomCursor (zoomPixmap);
+      setCursor(zoomCursor);
+
+      // the center of the view before zooming
+      int aXVCenter = viewport()->width()/2;
+      int aYVCenter = viewport()->height()/2;
+      myCenter = viewportToContents(QPoint(aXVCenter,aYVCenter));
+    }
+    return;
+  }
+
+  if ( theEvent->button() == Qt::LeftButton )
+  {
+    QCanvasItemList aList = canvas()->collisions(myPoint);
+    // to move items on canvas view
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      int aCursorType;
+      if ( anActItem && anActItem->isResizable(myPoint,aCursorType) )
+      { // resize itself only active items if it is resizable
+       anActItem->beforeResizing(aCursorType);
+       myCurrentItem = *it;
+       return;
+      }
+      else if ( anActItem && anActItem->isMoveable() )
+      { // move itself only active items if it is moveable
+       anActItem->beforeMoving();
+       myCurrentItem = *it;
+       return;
+      }
+    }
+  }
+}
+
+void QxGraph_CanvasView::contentsMouseMoveEvent(QMouseEvent* theEvent)
+{
+  QPoint aPoint = inverseWorldMatrix().map(theEvent->pos());
+  QPoint aGlobalPoint = theEvent->globalPos();
+
+  if (myTimer->isActive()) myTimer->stop();
+
+  if ( myOperation == PANVIEW )
+  { // Panning
+    scrollBy(myGlobalPoint.x() - aGlobalPoint.x(),
+            myGlobalPoint.y() - aGlobalPoint.y());
+    myGlobalPoint = aGlobalPoint;
+    myMovingDone = true;
+    return;
+  }
+
+  if ( myOperation == WINDOWFIT )
+  { // Fit within rectangle
+    int aLX, aTY; //left x and top y
+    if (myPoint.x() < aPoint.x()) aLX = myPoint.x();
+    else aLX = aPoint.x();
+    if (myPoint.y() < aPoint.y()) aTY = myPoint.y();
+    else aTY = aPoint.y();
+    QRect aRect(aLX, aTY, abs(myPoint.x()-aPoint.x()), abs(myPoint.y()-aPoint.y()));
+    QCanvasRectangle* aRect1 = new QCanvasRectangle(aRect, canvas());
+
+    //hide old selected rectangle
+    if (mySelectedRect)
+      mySelectedRect->hide();
+    //draw new selected rectangle
+    QPen pen(Qt::black,1,Qt::SolidLine);
+    aRect1->setPen(pen);
+    aRect1->setZ(1E+6);
+    aRect1->show();
+
+    mySelectedRect = aRect1;
+    canvas()->update();
+
+    return;
+  }
+
+  if ( myOperation == ZOOMVIEW )
+  { // Zoom
+    QCanvasItemList aList = canvas()->allItems();
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it)
+      (*it)->hide();
+
+    int aXContCenter = myCenter.x();
+    int aYContCenter = myCenter.y();
+    
+    QWMatrix m = worldMatrix();
+
+    double dx = aGlobalPoint.x() - myGlobalPoint.x();
+    double s = 1. + fabs(dx)*( (m.m11() < 1) ? m.m11() : 1. )/70.;
+    if (dx < 0) s = 1./s;
+    
+    int aXContCenterScaled = aXContCenter*s;
+    int aYContCenterScaled = aYContCenter*s;
+    
+    m.scale(s, s);
+    setWorldMatrix(m);
+
+    center(aXContCenterScaled,aYContCenterScaled);
+
+    myCenter.setX(aXContCenterScaled);
+    myCenter.setY(aYContCenterScaled);
+
+    // remember the canvas view's current transformation matrix in all canvas items
+    aList = canvas()->allItems();
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      if ( anActItem ) anActItem->setTMatrix(m);
+      (*it)->show();
+    }
+       
+    myGlobalPoint = aGlobalPoint;
+    myMovingDone = true;
+
+    return;
+  }
+
+  if ( myCurrentItem )
+  {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( myCurrentItem );
+    if ( anActItem && anActItem->isResizing() )
+    { // to resize items on canvas view
+      anActItem->resize(aPoint);
+      myMovingDone = true;
+      return;
+    }
+
+    // to move items on canvas view
+    if ( myCurrentItem->x() && myCurrentItem->y() ) {
+      double cx = myCurrentItem->x() - myPoint.x();
+      double cy = myCurrentItem->y() - myPoint.y();
+       
+      if (aPoint.x()+cx < 0) aPoint.setX(-(int)cx);
+      if (aPoint.y()+cy < 0) aPoint.setY(-(int)cy);
+    }
+    myCurrentItem->moveBy(aPoint.x() - myPoint.x(), 
+                         aPoint.y() - myPoint.y());
+    myMovingDone = true;
+    myPoint = aPoint;
+    canvas()->update();
+
+    // scroll contents if mouse is outside
+    QRect r(contentsX(), contentsY(), visibleWidth(), visibleHeight());
+    if (!r.contains(theEvent->pos())) {
+      int dx = 0, dy = 0;
+      if (theEvent->pos().x() < r.left()) dx = theEvent->pos().x() - r.left();
+      if (theEvent->pos().x() > r.right()) dx = theEvent->pos().x() - r.right();
+      if (theEvent->pos().y() < r.top()) dy = theEvent->pos().y() - r.top();
+      if (theEvent->pos().y() > r.bottom()) dy = theEvent->pos().y() - r.bottom();
+      scrollBy(dx, dy);
+      // start timer to scroll in silent mode
+      myDX = dx; myDY = dy;
+      myTimer->start(100);
+    }
+    
+    return;
+  }
+  else
+  {
+    QCanvasItemList aList = canvas()->collisions(aPoint);
+    // perform actions for active items
+    bool isHilightPerformed = false;
+
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    
+      if (!isHilightPerformed && anActItem) {
+       // hilight
+       anActItem->hilight(aPoint);
+       if (anActItem != myHilightedItem) {
+         if (myHilightedItem)
+           myHilightedItem->hilight(aPoint, false);
+         myHilightedItem = anActItem;
+       }
+       isHilightPerformed = true;
+       
+       // show tooltip
+       QxGraph_ToolTip* aToolTip = new QxGraph_ToolTip(this);
+       aToolTip->maybeTip(aPoint);
+      }
+      
+      int aCursorType;
+      if ( anActItem && anActItem->isResizable(aPoint,aCursorType) ) {
+       // set resize cursor
+       QCursor resizeCursor;
+       switch (aCursorType)
+         {
+         case 1: //left
+         case 3: //right
+           resizeCursor = QCursor(Qt::SizeHorCursor);
+           break;
+         case 2: //top
+         case 4: //bottom
+           resizeCursor = QCursor(Qt::SizeVerCursor); 
+           break;
+         case 5: //left-top
+         case 7: //right-bottom
+           resizeCursor = QCursor(Qt::SizeFDiagCursor);
+           break;
+         case 6: //right-top
+         case 8: //left-bottom
+           resizeCursor = QCursor(Qt::SizeBDiagCursor); 
+           break;
+         default : 
+           resizeCursor = QCursor(Qt::ArrowCursor);
+           break;
+         }
+       setCursor(resizeCursor);
+       return;
+      }
+      else {
+       // reset old cursor
+       setCursor(QCursor(Qt::ArrowCursor));
+       return;
+      }
+    }
+    
+    if (!isHilightPerformed && myHilightedItem) {
+      myHilightedItem->hilight(aPoint, false);
+      myHilightedItem = 0;
+      QToolTip::hide(); //@ temporary solution
+    }
+
+    if ( cursor().shape() == Qt::SizeVerCursor || cursor().shape() == Qt::SizeHorCursor
+        || cursor().shape() == Qt::SizeBDiagCursor || cursor().shape() == Qt::SizeFDiagCursor)
+      setCursor(QCursor(Qt::ArrowCursor));
+  }
+}
+
+/*!
+  This method is called by QxGraph_Canvas when item is removed. 
+  QxGraph_CanvasView updates its own data accordingly
+*/
+void QxGraph_CanvasView::itemRemoved( QCanvasItem* theItem )
+{
+  if ( myCurrentItem == theItem )
+    myCurrentItem = 0;
+
+  QxGraph_ActiveItem* anActiveItem = dynamic_cast<QxGraph_ActiveItem*>( theItem );
+  if ( anActiveItem )
+  {
+    if ( myHilightedItem == anActiveItem )
+      myHilightedItem = 0;
+    if ( mySelectedItem == anActiveItem )
+      mySelectedItem = 0;
+  }
+}
+
+void QxGraph_CanvasView::setSelectedItem( QxGraph_ActiveItem* theItem )
+{
+  mySelectedItem = theItem;
+}
+
+QxGraph_ActiveItem* QxGraph_CanvasView::getSelectedItem() const
+{
+  return mySelectedItem;
+}
+
+void QxGraph_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent)
+{
+  QPoint aPoint = inverseWorldMatrix().map(theEvent->pos());
+
+  if (myTimer->isActive()) myTimer->stop();
+
+  if (myCurrentItem)
+  { // to move items on canvas view    
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( myCurrentItem );
+    if ( anActItem && anActItem->isResizing() )
+    {
+      anActItem->afterResizing();
+      // reset old cursor
+      setCursor(QCursor(Qt::ArrowCursor));
+    }
+    else if ( anActItem && anActItem->isMoveable() )
+      anActItem->afterMoving();
+  }
+  myCurrentItem = 0;
+
+  if ( myOperation == PANVIEW )
+  { // Panning
+    myOperation = NOTHING;
+    viewport()->setMouseTracking(true);
+    setCursor(myCursor);
+
+    emit viewOperationDone();
+  }
+
+  if ( myOperation == PANGLOBAL )
+  { // Global panning
+    myOperation = NOTHING;
+    center( theEvent->x(), theEvent->y() );
+    setCursor(myCursor);
+
+    emit viewOperationDone();
+  }
+
+  if ( myOperation == WINDOWFIT )
+  { // Fit within rectangle
+    myOperation = NOTHING;
+    
+    if (mySelectedRect) {
+      mySelectedRect->hide();
+      mySelectedRect = 0;
+      //canvas()->update();
+    }
+
+    //myPoint is the start point for selecting rectangle now
+    int aLX, aTY; //left x and top y
+    if (myPoint.x() < aPoint.x()) aLX = myPoint.x();
+    else aLX = aPoint.x();
+    if (myPoint.y() < aPoint.y()) aTY = myPoint.y();
+    else aTY = aPoint.y();
+
+    //calculate width and height for new view and new zoom factor
+    double aXzoom = ((double)visibleWidth())/((double)(abs(myPoint.x()-aPoint.x())));
+    double aYzoom = ((double)visibleHeight())/((double)(abs(myPoint.y()-aPoint.y())));
+    if (aXzoom > aYzoom) aXzoom = aYzoom;
+    
+    QWMatrix m;
+    m.scale(aXzoom, aXzoom);
+    setWorldMatrix(m);
+
+    // remember the canvas view's current transformation matrix in all canvas items
+    QCanvasItemList aList = canvas()->allItems();
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      if ( anActItem ) anActItem->setTMatrix(m);
+    }
+
+    setContentsPos((int)(aLX*aXzoom), (int)(aTY*aYzoom));
+
+    canvas()->update();
+    
+    viewport()->setMouseTracking(true);
+    setCursor(myCursor);
+
+    emit viewOperationDone();
+  }
+
+  if ( myOperation == ZOOMVIEW )
+  { // Zoom
+    myOperation = NOTHING;
+    viewport()->setMouseTracking(true);
+    setCursor(myCursor);
+
+    emit viewOperationDone();
+  }
+
+  if ( theEvent->button() == RightButton )
+  { 
+    // Selection mechanism
+    QCanvasItemList aList = canvas()->collisions(aPoint);
+    bool isSelectionPerformed = false;
+
+    for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+      QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+      if (!isSelectionPerformed && anActItem) 
+      {
+       anActItem->select(aPoint);
+       if (anActItem != mySelectedItem) 
+       {
+         if (mySelectedItem && isSelectedItemInCanvas() &&
+             !mySelectedItem->arePartsOfOtherItem(anActItem)) mySelectedItem->select(aPoint, false);
+         mySelectedItem = anActItem;
+
+         // unhilight hilighted item if selection was performed
+         if (myHilightedItem) {
+           myHilightedItem->hilight(aPoint, false);
+           myHilightedItem = 0;
+         }
+       }
+       isSelectionPerformed = true;
+      }
+    }
+
+    if (!isSelectionPerformed)
+    { 
+      if ( mySelectedItem )
+      {
+       if ( isSelectedItemInCanvas() ) mySelectedItem->select(aPoint, false);
+       mySelectedItem = 0;
+      }
+      
+      // Background popup
+      printf("Background popup\n");
+      QContextMenuEvent aEvent( QContextMenuEvent::Mouse,
+                               theEvent->pos(), theEvent->globalPos(),
+                               theEvent->state() );
+      if ( getViewWindow() )
+       getViewWindow()->contextPopupEvent(&aEvent); // => emit contextMenuRequested( &aEvent );
+    }
+    else
+    { // show context popup for the selected item
+      mySelectedItem->showPopup(viewport(), theEvent, aPoint);
+    }
+  }
+
+  if ( theEvent->button() == LeftButton && !myMovingDone )
+  {
+    // Selection mechanism
+    QCanvasItemList aList = canvas()->collisions(aPoint);
+
+    if ( aList.empty() && mySelectedItem )
+    {
+      if ( isSelectedItemInCanvas() ) mySelectedItem->select(aPoint, false);
+      mySelectedItem = 0;
+    }
+    else
+    {
+      for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+       QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+       if (anActItem) 
+       {
+         anActItem->select(aPoint);
+         if (anActItem != mySelectedItem) 
+         {
+           if (mySelectedItem && isSelectedItemInCanvas() &&
+               !mySelectedItem->arePartsOfOtherItem(anActItem)) mySelectedItem->select(aPoint, false);
+           mySelectedItem = anActItem;
+         }
+         break;
+       }
+      }
+    }
+  }
+
+  myMovingDone = false;
+}
+
+void QxGraph_CanvasView::contentsMouseDoubleClickEvent(QMouseEvent* theEvent)
+{
+  
+}
+
+bool QxGraph_CanvasView::isSelectedItemInCanvas()
+{
+  // check if mySelectedItem is included into the canvas:
+  // if yes => unselect it
+  // if no => do nothing
+  bool anIsInCanvas = false;
+  QCanvasItemList aListC = canvas()->allItems();
+  for (QCanvasItemList::Iterator itC = aListC.begin(); itC != aListC.end(); ++itC) {
+    QxGraph_ActiveItem* anActItemC = dynamic_cast<QxGraph_ActiveItem*>( *itC );
+    if ( anActItemC && anActItemC == mySelectedItem ) {
+      anIsInCanvas = true;
+      break;
+    }
+  }
+  return anIsInCanvas;
+}
+
+void QxGraph_CanvasView::activateFitAll()
+{
+  //myOperation = FITALL;
+  int w = 0, h = 0;
+  QCanvasItemList l = canvas()->allItems();
+  for (QCanvasItemList::Iterator it = l.begin(); it != l.end(); ++it) {
+    QRect r = (*it)->boundingRect();
+    if (w < r.right()) w = r.right();
+    if (h < r.bottom()) h = r.bottom();
+  }
+  w += GRAPH_MARGIN; h += GRAPH_MARGIN;
+  double s = ((double)visibleWidth())/((double)w);
+  double s1 = ((double)visibleHeight())/((double)h);
+  if (s > s1) s = s1;
+
+  setContentsPos(0,0);
+  QWMatrix m;
+  m.scale(s, s);
+  setWorldMatrix(m);
+
+  // remember the canvas view's current transformation matrix in all canvas items
+  QCanvasItemList aList = canvas()->allItems();
+  for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    if ( anActItem ) anActItem->setTMatrix(m);
+  }
+  
+  canvas()->update();
+  //myOperation = NOTHING;
+
+  emit viewOperationDone();
+}
+
+void QxGraph_CanvasView::activateFitRect()
+{
+  myOperation = WINDOWFIT;
+  viewport()->setMouseTracking(false);
+  myCursor = cursor(); // save old cursor
+  QCursor handCursor (Qt::PointingHandCursor);
+  setCursor(handCursor);
+}
+
+void QxGraph_CanvasView::activateZoom()
+{
+  myOperation = ZOOMVIEW;
+  viewport()->setMouseTracking(false);
+  myCursor = cursor(); // save old cursor
+  QPixmap zoomPixmap (imageZoomCursor);
+  QCursor zoomCursor (zoomPixmap);
+  setCursor(zoomCursor);
+}
+
+void QxGraph_CanvasView::activatePanning()
+{
+  myOperation = PANVIEW;
+  viewport()->setMouseTracking(false);
+  myCursor = cursor(); // save old cursor
+  QCursor panCursor (Qt::SizeAllCursor);
+  setCursor(panCursor);
+}
+
+void QxGraph_CanvasView::activateGlobalPanning()
+{
+  myOperation = PANGLOBAL;
+  myCursor = cursor(); // save old cursor
+  QPixmap globalPanPixmap (imageCrossCursor);
+  QCursor glPanCursor (globalPanPixmap);
+  setCursor(glPanCursor);
+}
+
+void QxGraph_CanvasView::activateReset()
+{
+  //myOperation = RESETVIEW;
+  setContentsPos(0,0);
+  QWMatrix m;
+  setWorldMatrix(m);
+  
+  // remember the canvas view's current transformation matrix in all canvas items
+  QCanvasItemList aList = canvas()->allItems();
+  for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    if ( anActItem ) anActItem->setTMatrix(m);
+  }
+
+  //myOperation = NOTHING;
+
+  emit viewOperationDone();
+}
+
+void QxGraph_CanvasView::onTimeout() 
+{
+  if (myCurrentItem) {
+    scrollBy(myDX, myDY);
+
+    double cx, cy;
+    inverseWorldMatrix().map((double)myDX, (double)myDY, &cx, &cy);
+    if (myCurrentItem->x()+cx < 0) cx = -myCurrentItem->x();
+    if (myCurrentItem->y()+cy < 0) cy = -myCurrentItem->y();
+    myCurrentItem->moveBy(cx, cy);
+    myPoint.setX(myPoint.x()+(int)cx);
+    myPoint.setY(myPoint.y()+(int)cy);
+    canvas()->update();
+  }
+}
+
+QxGraph_ViewWindow* QxGraph_CanvasView::getViewWindow() const
+{
+  return dynamic_cast<QxGraph_ViewWindow*>( parent() );
+}
+
+/*!
+  Shows tooltip if necessary
+*/
+void QxGraph_ToolTip::maybeTip(const QPoint& theMousePos) {
+  QCanvasItemList aList = ((QCanvasView*)parentWidget())->canvas()->collisions(theMousePos);
+  
+  for (QCanvasItemList::Iterator it = aList.begin(); it != aList.end(); ++it) {
+    QxGraph_ActiveItem* anActItem = dynamic_cast<QxGraph_ActiveItem*>( *it );
+    if (anActItem)
+      {
+       QRect aRect;
+       QString aText = anActItem->getToolTipText(theMousePos, aRect);
+       int avX, avY;
+       QWMatrix aWM = ((QCanvasView*)parentWidget())->worldMatrix();
+       ((QCanvasView*)parentWidget())->contentsToViewport((int)(aRect.left()*aWM.m11()), 
+                                                          (int)(aRect.top()*aWM.m22()), 
+                                                          avX, avY);
+       QRect aTipRect(avX, avY, (int)(aRect.width()*aWM.m11()), (int)(aRect.height()*aWM.m22()));
+       if (!aText.isEmpty())
+         tip(aTipRect, aText);
+       return;
+      }
+  }
+}
+
+
+
diff --git a/src/QxGraph/QxGraph_CanvasView.h b/src/QxGraph/QxGraph_CanvasView.h
new file mode 100644 (file)
index 0000000..6aa5c3b
--- /dev/null
@@ -0,0 +1,112 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef QXGRAPH_CANVASVIEW_H
+#define QXGRAPH_CANVASVIEW_H
+
+#include "QxGraph.h"
+
+#include <qcanvas.h>
+#include <qcursor.h>
+#include <qtimer.h>
+#include <qtooltip.h>
+
+class QxGraph_Canvas;
+class QxGraph_ViewWindow;
+class QxGraph_ActiveItem;
+
+class QXGRAPH_EXPORT QxGraph_CanvasView : public QCanvasView {
+  Q_OBJECT
+
+ public:
+  enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, PANGLOBAL, 
+                     WINDOWFIT, FITALLVIEW, RESETVIEW };
+  
+  QxGraph_CanvasView(QxGraph_Canvas* theCanvas, QxGraph_ViewWindow* theViewWindow);
+  virtual ~QxGraph_CanvasView();
+
+  QxGraph_ViewWindow* getViewWindow() const;
+
+  void activateFitAll();
+  void activateFitRect();
+  void activateZoom();
+  void activatePanning();
+  void activateGlobalPanning();
+  void activateReset();
+
+  void itemRemoved( QCanvasItem* );
+
+  void setSelectedItem( QxGraph_ActiveItem* theItem );
+  QxGraph_ActiveItem* getSelectedItem() const;
+
+ signals:
+  void viewOperationDone();
+
+ public slots:
+  void onTimeout();
+   //void changeBackground();
+
+ protected:
+  void contentsMousePressEvent(QMouseEvent* theEvent); 
+  void contentsMouseMoveEvent(QMouseEvent* theEvent);
+  void contentsMouseReleaseEvent(QMouseEvent* theEvent); 
+  void contentsMouseDoubleClickEvent(QMouseEvent* theEvent);
+
+  bool isSelectedItemInCanvas();
+
+ private:
+  // for moving items
+  QCanvasItem*      myCurrentItem;
+  QPoint            myPoint;
+  QPoint            myGlobalPoint;
+  bool              myMovingDone;
+  QPoint            myCenter;
+  
+  // for control toolbar actions
+  OperationType     myOperation;
+  QCursor           myCursor;
+  QCanvasRectangle* mySelectedRect;
+
+  // for automatic content scrolling if mouse is outside
+  QTimer*           myTimer;
+  int               myDX;
+  int               myDY;
+
+  // for hilight
+  QxGraph_ActiveItem* myHilightedItem;
+
+  // for selection
+  QxGraph_ActiveItem* mySelectedItem;
+};
+
+
+class QxGraph_ToolTip: public QToolTip {
+  
+ public:
+  QxGraph_ToolTip(QWidget* theWidget, QToolTipGroup* theGroup = 0):
+    QToolTip(theWidget, theGroup) {}
+  ~QxGraph_ToolTip() { remove(parentWidget()); }
+    
+  virtual void maybeTip(const QPoint& theMousePos);
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_Def.h b/src/QxGraph/QxGraph_Def.h
new file mode 100644 (file)
index 0000000..88937e3
--- /dev/null
@@ -0,0 +1,34 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef QXGRAPH_DEF_H
+#define QXGRAPH_DEF_H
+
+#define DEF_BACK_COLOR QColor(144, 208, 211)
+#define RECTANGLE_BODY QColor(255,249,147)
+
+#define GRAPH_WIDTH  1250
+#define GRAPH_HEIGHT 950
+
+#define GRAPH_MARGIN 50
+
+#endif
diff --git a/src/QxGraph/QxGraph_Prs.cxx b/src/QxGraph/QxGraph_Prs.cxx
new file mode 100644 (file)
index 0000000..c9c6b21
--- /dev/null
@@ -0,0 +1,251 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "QxGraph_Prs.h"
+
+#include "QxGraph_Canvas.h"
+#include "QxGraph_Def.h" // for debug only
+
+#include "SUIT_Session.h" // for debug only
+
+/*!
+  Constructor
+*/
+QxGraph_Prs::QxGraph_Prs(QxGraph_Canvas* theCanvas):
+  myCanvas(theCanvas),
+  myDMode(0),
+  needUpdate(true)
+{
+  myCanvas->addPrs(this);
+}
+
+/*!
+  Destructor
+*/
+QxGraph_Prs::~QxGraph_Prs()
+{
+  for ( DMode2ItemList::iterator it1 = myDisplayMap.begin();
+       it1 != myDisplayMap.end();
+       it1++ )
+  {
+    for ( std::list<QCanvasItem*>::iterator it2 = (*it1).second.begin();
+         it2 != (*it1).second.end();
+         it2++ )
+    {
+      QCanvasItem* anItem = *it2;
+      if ( anItem ) delete anItem;
+    }
+  }
+      
+  myDisplayMap.clear();
+}
+
+/*!
+  Add item to display in the view with index theDMode
+*/
+void QxGraph_Prs::addItem(QCanvasItem* theItem, int theDMode)
+{
+  if ( theDMode == -1 ) // add item for the current display mode
+    myDisplayMap[myDMode].push_back(theItem);
+  else
+    myDisplayMap[theDMode].push_back(theItem);
+}
+
+/*!
+  Remove item from the view with index theDMode
+*/
+void QxGraph_Prs::removeItem(QCanvasItem* theItem, int theDMode)
+{
+  if ( theDMode == -1 ) // remove item from the current display mode
+    myDisplayMap[myDMode].remove(theItem);
+  else
+    myDisplayMap[theDMode].remove(theItem);
+}
+
+/*! Adds all the items of this presentation for the current display mode
+ *  to the canvas.
+ */
+void QxGraph_Prs::show()
+{
+  if ( isToUpdate() ) 
+    update();
+
+  for ( std::list<QCanvasItem*>::iterator it = myDisplayMap[myDMode].begin();
+       it != myDisplayMap[myDMode].end();
+       it++ )
+  {
+    QCanvasItem* anItem = *it;
+    if ( anItem )
+    {
+      anItem->setCanvas( myCanvas );
+      anItem->show();
+    }
+  }
+}
+
+/*! Removes all the items belonging to this presentation from the canvas.
+ */
+void QxGraph_Prs::hide()
+{
+  for ( DMode2ItemList::iterator it1 = myDisplayMap.begin();
+       it1 != myDisplayMap.end();
+       it1++ )
+  {
+    for ( std::list<QCanvasItem*>::iterator it2 = (*it1).second.begin();
+         it2 != (*it1).second.end();
+         it2++ )
+    {
+      QCanvasItem* anItem = *it2;
+      if ( anItem )
+      {
+       anItem->setCanvas( 0 );
+      }
+    }
+  }
+}
+
+/*! Prepare for full recomputation of the presentation
+ */
+void QxGraph_Prs::setToUpdate( const bool theFlag )
+{
+  needUpdate = theFlag;
+}
+
+/*! Re-fills the presentation with items.
+ *  Base implementation just resets <needUpdate> flag.
+ *  It should be called at the end by re-implementations.
+ */
+void QxGraph_Prs::update()
+{
+  setToUpdate( false );
+}
+
+/*!
+  Add a QCanvasRectangle item for display mode DMode
+*/
+QCanvasItem* QxGraph_Prs::addRectangleItem(QRect theRect, int theDMode)
+{
+  QCanvasRectangle* aRectItem;
+  if ( myCanvas )
+  {
+    QCanvasRectangle* aRectItem = new QCanvasRectangle(theRect, myCanvas);
+    aRectItem->setZ(0);
+    aRectItem->show();
+    myCanvas->update();
+    
+    // test drawing features: brush, pen ...
+    QBrush aBr(SUIT_Session::session()->resourceMgr()->colorValue( "QxGraph", "NodeBody", RECTANGLE_BODY ));
+    aRectItem->setBrush(aBr);
+  }
+  addItem(aRectItem);
+  return aRectItem;
+}
+
+/*!
+  Add a QCanvasPolygon item for display mode DMode
+*/
+QCanvasItem* QxGraph_Prs::addPolygonItem(QPointArray thePA, int theDMode)
+{
+  QCanvasPolygon* aPolyItem;
+  if ( myCanvas )
+  {
+    aPolyItem = new QCanvasPolygon(myCanvas);
+    aPolyItem->setZ(0);
+    aPolyItem->setPoints(thePA);
+    aPolyItem->show();
+    myCanvas->update();
+    
+    // test drawing features: brush, pen ...
+    QBrush aBr(SUIT_Session::session()->resourceMgr()->colorValue( "QxGraph", "NodeBody", RECTANGLE_BODY ));
+    aPolyItem->setBrush(aBr);
+    QPen aPen(Qt::black,2);
+    aPolyItem->setPen(aPen);
+  }
+  addItem(aPolyItem);
+  return aPolyItem;
+}
+
+/*!
+  Add a QCanvasLine item for display mode DMode
+*/
+QCanvasItem* QxGraph_Prs::addLineItem(QPoint theStart, QPoint theEnd, int theDMode)
+{
+  QCanvasLine* aLineItem;
+  if ( myCanvas )
+  {
+    aLineItem = new QCanvasLine(myCanvas);
+    aLineItem->setZ(0);
+    aLineItem->setPoints(theStart.x(), theStart.y(), theEnd.x(), theEnd.y());
+    aLineItem->show();
+    myCanvas->update();
+  
+    // test drawing features: brush, pen ...
+    QPen aPen(Qt::black,2);
+    aLineItem->setPen(aPen);
+  }
+  addItem(aLineItem);
+  return aLineItem;
+}
+
+/*!
+  Add a QCanvasEllipse item for display mode DMode
+*/
+QCanvasItem* QxGraph_Prs::addEllipseItem(int theW, int theH, int theStartAngle, int theAngle, int theDMode)
+{
+  QCanvasEllipse* aEllipseItem;
+  if ( myCanvas )
+  {
+    aEllipseItem = new QCanvasEllipse(theW, theH, theStartAngle, theAngle, myCanvas);
+    aEllipseItem->setZ(0);
+    aEllipseItem->show();
+    myCanvas->update();
+    
+    // test drawing features: brush, pen ...
+    QBrush aBr(SUIT_Session::session()->resourceMgr()->colorValue( "QxGraph", "NodeBody", RECTANGLE_BODY ));
+    aEllipseItem->setBrush(aBr);
+    QPen aPen(Qt::black,2);
+    aEllipseItem->setPen(aPen);
+  }
+  addItem(aEllipseItem);
+  return aEllipseItem;
+}
+
+/*!
+  Add a QCanvasText item for display mode DMode
+*/
+QCanvasItem* QxGraph_Prs::addTextItem(QString theText, int theDMode)
+{
+  QCanvasText* aTextItem;
+  if ( myCanvas )
+  {
+    aTextItem = new QCanvasText(theText, myCanvas);
+    aTextItem->setZ(0);
+    aTextItem->show();
+    myCanvas->update();
+    
+    // test drawing features: font, color, text flags ...
+    aTextItem->setColor(Qt::darkBlue);
+    //aTextItem->setFont(QFont("Times"/*"Helvetica"*/, 14, QFont::Normal, true));
+  }
+  addItem(aTextItem);
+  return aTextItem;
+}
diff --git a/src/QxGraph/QxGraph_Prs.h b/src/QxGraph/QxGraph_Prs.h
new file mode 100644 (file)
index 0000000..1616103
--- /dev/null
@@ -0,0 +1,73 @@
+// 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
+//
+#ifndef QXGRAPH_PRS_H
+#define QXGRAPH_PRS_H
+
+#include <QxGraph.h>
+
+#include <qcanvas.h>
+#include <map>
+#include <list>
+
+class QxGraph_Canvas;
+
+class QXGRAPH_EXPORT QxGraph_Prs
+{
+ public:
+  QxGraph_Prs(QxGraph_Canvas*);
+  virtual ~QxGraph_Prs();
+
+  QxGraph_Canvas* getCanvas() const { return myCanvas; }
+
+  void addItem(QCanvasItem* theItem, int theDMode = -1);
+  void removeItem(QCanvasItem* theItem, int theDMode = -1);
+  
+  /* add items for display mode theDMode
+     if theDMode is equal to -1 add item for the current (active) display mode */
+  QCanvasItem*   addRectangleItem(QRect theRect, int theDMode = -1);
+  QCanvasItem*   addPolygonItem(QPointArray thePA, int theDMode = -1);
+  QCanvasItem*   addLineItem(QPoint theStart, QPoint theEnd, int theDMode = -1);
+  QCanvasItem*   addEllipseItem(int theW, int theH, int theStartAngle, int theAngle, int theDMode = -1);
+  QCanvasItem*   addTextItem(QString theText, int theDMode = -1);
+
+  typedef std::map< int, std::list<QCanvasItem*> > DMode2ItemList;
+
+  const DMode2ItemList& getDisplayMap() const { return myDisplayMap; }
+  const std::list<QCanvasItem*>& getItems(int theDMode) { return myDisplayMap[theDMode]; }
+  
+  void setDMode(int theDMode) { myDMode = theDMode; }
+  int  getDMode() const { return myDMode; }
+
+  virtual void    show();
+  virtual void    hide();
+  virtual void    setToUpdate( const bool );
+  bool            isToUpdate() { return needUpdate; }
+
+protected:
+  virtual void    update();
+
+private:
+  QxGraph_Canvas* myCanvas;
+  DMode2ItemList  myDisplayMap;
+
+  int             myDMode;
+  bool            needUpdate;
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_ViewManager.cxx b/src/QxGraph/QxGraph_ViewManager.cxx
new file mode 100644 (file)
index 0000000..3709afc
--- /dev/null
@@ -0,0 +1,56 @@
+// 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
+//
+#include "QxGraph_ViewManager.h"
+
+/*!
+  Constructor
+*/
+QxGraph_ViewManager::QxGraph_ViewManager( SUIT_Study* theStudy, 
+                                         SUIT_Desktop* theDesktop, 
+                                         SUIT_ViewModel* theViewModel )
+  : SUIT_ViewManager( theStudy, theDesktop, theViewModel )
+{
+}
+
+/*!
+  Destructor
+*/
+QxGraph_ViewManager::~QxGraph_ViewManager()
+{
+}
+
+/*!
+  Sets view name
+  \param theView - view to assign name
+*/
+void QxGraph_ViewManager::setViewName(SUIT_ViewWindow* theView)
+{
+  int aPos = myViews.find(theView);
+  theView->setCaption( QString( "QxGraph  scene:%1 - viewer:%2" ).arg( myId ).arg(aPos+1));
+}
+
+/*!
+  Fills popup menu with custom actions
+ \param popup - popup menu to be filled with
+*/
+void QxGraph_ViewManager::contextMenuPopup( QPopupMenu* thePopup)
+{
+  SUIT_ViewManager::contextMenuPopup( thePopup );
+  // to be implemented
+}
diff --git a/src/QxGraph/QxGraph_ViewManager.h b/src/QxGraph/QxGraph_ViewManager.h
new file mode 100644 (file)
index 0000000..2e45cc3
--- /dev/null
@@ -0,0 +1,44 @@
+// 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
+//
+#ifndef QXGRAPH_VIEWMANAGER_H
+#define QXGRAPH_VIEWMANAGER_H
+
+#include "QxGraph.h"
+
+#include "QxGraph_ViewModel.h"
+#include "SUIT_ViewManager.h"
+
+class SUIT_Desktop;
+
+class QXGRAPH_EXPORT QxGraph_ViewManager : public SUIT_ViewManager
+{
+  Q_OBJECT
+
+public:
+  QxGraph_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop, SUIT_ViewModel* theViewModel = 0 );
+  ~QxGraph_ViewManager();
+
+  virtual void      contextMenuPopup( QPopupMenu* thePopup );
+
+protected:
+  void              setViewName(SUIT_ViewWindow* theView);
+
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_ViewModel.cxx b/src/QxGraph/QxGraph_ViewModel.cxx
new file mode 100644 (file)
index 0000000..df49f08
--- /dev/null
@@ -0,0 +1,157 @@
+// 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
+//
+#include "QxGraph_ViewModel.h"
+#include "QxGraph_ViewWindow.h"
+#include "QxGraph_Canvas.h"
+#include "QxGraph_CanvasView.h"
+#include "QxGraph_Def.h"
+#include "QxGraph_Prs.h"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_ViewWindow.h"
+#include "SUIT_Session.h"
+
+#include <qcolordialog.h>
+#include <qpopupmenu.h>
+#include <qcanvas.h> // for addRectangleItem(...) method (can be removed in the future)
+
+/*!
+  Constructor
+*/
+QxGraph_Viewer::QxGraph_Viewer()
+  :SUIT_ViewModel(),
+   myCanvas(0),
+   myCurrentView(0)
+{
+  printf("Construct QxGraph_Viewer\n");
+  //myCanvases.setAutoDelete(true);
+  //myCanvasViews.setAutoDelete(true);
+}
+
+/*!
+  Destructor
+*/
+QxGraph_Viewer::~QxGraph_Viewer() 
+{
+  if ( myCanvas ) delete myCanvas;
+  //if ( !myCanvases.isEmpty() ) myCanvases.clear();
+  if ( !myCanvasViews.isEmpty() ) myCanvasViews.clear();
+  myCurrentView = 0;
+}
+
+/*!
+  Start initialization of view window
+  \param view - view window to be initialized
+*/
+void QxGraph_Viewer::initView( QxGraph_ViewWindow* view )
+{
+  if ( view )
+  {
+    view->initLayout();
+    
+    /*
+    // test add items into the current canvas view
+    QRect aRect(100,200,200,100);
+    QCanvasItem* aRectItem = aPrs->addRectangleItem(aRect);
+    //delete aRectItem;
+
+    QPointArray aPA(6);
+    aPA.putPoints(0, 6, 400,100, 500,70, 600,100, 600,200, 500,230, 400,200);
+    QCanvasItem* aPolyItem = aPrs->addPolygonItem(aPA);
+    //delete aPolyItem;
+
+    QPoint aStart(500,300), aEnd(700,250);
+    QCanvasItem* aLineItem = aPrs->addLineItem(aStart, aEnd);
+    //delete aLineItem;
+
+    QCanvasItem* aEllipseItem = aPrs->addEllipseItem(200, 100, 30*16, 120*16);
+    aEllipseItem->setX(400);
+    aEllipseItem->setY(400);
+    //delete aEllipseItem;
+
+    QCanvasItem* aTextItem = aPrs->addTextItem("This is a QCanvasText item");
+    aTextItem->setX(100);
+    aTextItem->setY(500);
+    //delete aTextItem;
+    */
+  }
+}
+
+/*!
+  Creates new view window
+  \param theDesktop - main window of application
+*/
+SUIT_ViewWindow* QxGraph_Viewer::createView(SUIT_Desktop* theDesktop)
+{
+  QxGraph_ViewWindow* aRes = new QxGraph_ViewWindow( theDesktop, this );
+  initView( aRes );
+  return aRes;
+}
+
+/*!
+  Set view with index theIndex from myCanvasViews as current view
+  \param theIndex - the index of the view in the list
+*/
+void QxGraph_Viewer::setCurrentView(int theIndex)
+{
+  if ( theIndex >= 0 && theIndex < myCanvasViews.count() )
+  {
+    myCurrentView = myCanvasViews.at(theIndex);
+    myViewManager->getActiveView()->setCentralWidget(myCurrentView);
+  }
+}
+
+/*!
+  Builds popup for QxGraph viewer
+*/
+void QxGraph_Viewer::contextMenuPopup(QPopupMenu* thePopup)
+{
+  printf("QxGraph_Viewer::contextMenuPopup\n");
+  thePopup->insertItem( tr( "MEN_CHANGE_BACKGROUND" ), this, SLOT( onChangeBgColor() ) );
+
+  thePopup->insertSeparator();
+
+  QxGraph_ViewWindow* aView = (QxGraph_ViewWindow*)(myViewManager->getActiveView());
+  if ( aView && !aView->getToolBar()->isVisible() )
+    thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
+}
+
+/*!
+  SLOT: called if background color is to be changed changed, passes new color to current canvas view
+*/
+void QxGraph_Viewer::onChangeBgColor()
+{
+  QxGraph_ViewWindow* aView = (QxGraph_ViewWindow*)(myViewManager->getActiveView());
+  if( !aView )
+    return;
+  QColor aColorActive = aView->backgroundColor();
+
+  QColor selColor = QColorDialog::getColor( aColorActive, aView);
+  if ( selColor.isValid() )
+    aView->setBackgroundColor(selColor);
+}
+
+/*!
+  SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window
+*/
+void QxGraph_Viewer::onShowToolbar() {
+  QxGraph_ViewWindow* aView = (QxGraph_ViewWindow*)(myViewManager->getActiveView());
+  if ( aView )
+    aView->getToolBar()->show();    
+}
diff --git a/src/QxGraph/QxGraph_ViewModel.h b/src/QxGraph/QxGraph_ViewModel.h
new file mode 100644 (file)
index 0000000..e04fcb3
--- /dev/null
@@ -0,0 +1,82 @@
+// 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
+//
+#ifndef QXGRAPH_VIEWMODEL_H
+#define QXGRAPH_VIEWMODEL_H
+
+#include "QxGraph.h"
+
+#include "SUIT_ViewModel.h"
+
+class QCanvasItem; // for addRectangleItem(...) method (can be removed in the future)
+
+class QxGraph_Canvas;
+class QxGraph_CanvasView;
+class QxGraph_ViewWindow;
+class QxGraph_Prs;
+
+class QXGRAPH_EXPORT QxGraph_Viewer: public SUIT_ViewModel
+{
+  Q_OBJECT
+
+ public:
+  static QString Type() { return "QxGraphViewer"; }
+
+  QxGraph_Viewer();
+  virtual ~QxGraph_Viewer();
+
+  virtual SUIT_ViewWindow* createView(SUIT_Desktop* theDesktop);
+  virtual QString          getType() const { return Type(); }
+
+  virtual void             contextMenuPopup(QPopupMenu*);
+
+  QxGraph_Canvas*          getCanvas() const { return myCanvas; }
+  void                     setCanvas(QxGraph_Canvas* theCanvas) { myCanvas = theCanvas; }
+  //QPtrList<QxGraph_Canvas> getCanvases() { return myCanvases; }
+  //void                     setCanvases(QPtrList<QxGraph_Canvas> theCanvases) { myCanvases = theCanvases; }
+
+  //void addCanvas(QxGraph_Canvas* theCanvas) { myCanvases.append(theCanvas); }
+  //void removeCanvas(QxGraph_Canvas* theCanvas) { myCanvases.remove(theCanvas); }
+
+  QPtrList<QxGraph_CanvasView> getCanvasViews() { return myCanvasViews; }
+  void                         setCanvasViews(QPtrList<QxGraph_CanvasView> theViews) { myCanvasViews = theViews; }
+
+  void addView(QxGraph_CanvasView* theView) { myCanvasViews.append(theView); }
+  void removeView(QxGraph_CanvasView* theView) { myCanvasViews.remove(theView); }
+  
+  QxGraph_CanvasView* getCurrentView() const { return myCurrentView; }
+  void                setCurrentView(QxGraph_CanvasView* theView) { myCurrentView = theView; }
+  void                setCurrentView(int theIndex);
+
+ protected:
+  void initView(QxGraph_ViewWindow* view);
+
+ protected slots:
+  void onShowToolbar();
+  void onChangeBgColor();
+
+ private:
+  QxGraph_Canvas*              myCanvas;
+  //QPtrList<QxGraph_Canvas>     myCanvases;
+  QPtrList<QxGraph_CanvasView> myCanvasViews;
+
+  QxGraph_CanvasView*          myCurrentView;
+};
+
+#endif
diff --git a/src/QxGraph/QxGraph_ViewWindow.cxx b/src/QxGraph/QxGraph_ViewWindow.cxx
new file mode 100644 (file)
index 0000000..1e64a8b
--- /dev/null
@@ -0,0 +1,288 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "QxGraph_ViewWindow.h"
+#include "QxGraph_Def.h"
+#include "QxGraph_Canvas.h"
+#include "QxGraph_CanvasView.h"
+
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_ToolButton.h>
+
+//QT Include
+#include <qlayout.h>
+#include <qcolor.h>
+//#include <qcolordialog.h>
+
+using namespace std;
+
+/*!
+    Constructor
+*/
+QxGraph_ViewWindow::QxGraph_ViewWindow( SUIT_Desktop* theDesktop, QxGraph_Viewer* theModel)
+  : SUIT_ViewWindow( theDesktop )
+{
+  printf("Construct QxGraph_ViewWindow\n");
+  myViewModel = theModel;
+}
+
+/*!
+  Initialization
+*/
+void QxGraph_ViewWindow::initLayout()
+{
+  initCanvas();
+  initCanvasViews();
+
+  myToolBar = new QToolBar(this);
+  myToolBar->setCloseMode(QDockWindow::Undocked);
+  myToolBar->setLabel(tr("LBL_TOOLBAR_LABEL"));
+  createActions();
+  createToolBar();
+}
+
+/*!
+  Canvas initialization
+*/
+void QxGraph_ViewWindow::initCanvas()
+{
+  if ( myViewModel )
+    myViewModel->setCanvas( new QxGraph_Canvas(resMgr()) );
+    //myViewModel->addCanvas( new QxGraph_Canvas(resMgr()) );
+}
+
+/*!
+  Canvas views initialization
+*/
+void QxGraph_ViewWindow::initCanvasViews()
+{
+  if ( myViewModel )
+  {
+    for (int i = 0; i < 2; i++)
+    {
+      //QxGraph_Canvas* aCanvas = new QxGraph_Canvas(resMgr());
+      //myViewModel->addCanvas( aCanvas );
+
+      QxGraph_CanvasView* aCanvasView = new QxGraph_CanvasView( myViewModel->getCanvas(), this );
+      //QxGraph_CanvasView* aCanvasView = new QxGraph_CanvasView( aCanvas, this );
+      myViewModel->addView(aCanvasView);
+
+      aCanvasView->hide();
+    }
+      
+    // the first view is shown and is the current
+    myViewModel->getCanvasViews().first()->show();
+    myViewModel->setCurrentView( myViewModel->getCanvasViews().first() );
+    
+    /* test for 1 view -->
+    QxGraph_CanvasView* aCanvasView = new QxGraph_CanvasView( myViewModel->getCanvas(), this );
+    myViewModel->addView(aCanvasView);
+    myViewModel->setCurrentView(aCanvasView);
+    test for 1 view <-- */
+
+    setCentralWidget( myViewModel->getCurrentView() );
+    
+    /*if ( inherits( "QMainWindow" ) ) {
+      printf("== > 1\n");
+      ( ( QMainWindow* )this )->setCentralWidget( myViewModel->getCurrentView() );
+      }
+      else {
+      printf("== > 2\n");
+      QBoxLayout* layout = new QVBoxLayout( this );
+      layout->addWidget( myViewModel->getCurrentView() );
+      }*/
+  }
+}
+
+/*!
+  Creates actions of QxGraph view window
+*/
+void QxGraph_ViewWindow::createActions()
+{
+  if (!myActionsMap.isEmpty()) return;
+  SUIT_ResourceMgr* aResMgr = resMgr();
+  QtxAction* aAction;
+
+  // FitAll
+  aAction = new QtxAction(tr("MNU_FITALL"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_FITALL" ) ),
+                         tr( "MNU_FITALL" ), 0, this);
+  aAction->setStatusTip(tr("DSC_FITALL"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewFitAll()));
+  myActionsMap[ FitAllId ] = aAction;
+
+  // FitRect
+  aAction = new QtxAction(tr("MNU_FITRECT"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_FITAREA" ) ),
+                         tr( "MNU_FITRECT" ), 0, this);
+  aAction->setStatusTip(tr("DSC_FITRECT"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewFitArea()));
+  myActionsMap[ FitRectId ] = aAction;
+
+  // Zoom
+  aAction = new QtxAction(tr("MNU_ZOOM_VIEW"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_ZOOM" ) ),
+                         tr( "MNU_ZOOM_VIEW" ), 0, this);
+  aAction->setStatusTip(tr("DSC_ZOOM_VIEW"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewZoom()));
+  myActionsMap[ ZoomId ] = aAction;
+
+  // Panning
+  aAction = new QtxAction(tr("MNU_PAN_VIEW"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_PAN" ) ),
+                         tr( "MNU_PAN_VIEW" ), 0, this);
+  aAction->setStatusTip(tr("DSC_PAN_VIEW"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewPan()));
+  myActionsMap[ PanId ] = aAction;
+
+  // Global Panning
+  aAction = new QtxAction(tr("MNU_GLOBALPAN_VIEW"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_GLOBALPAN" ) ),
+                         tr( "MNU_GLOBALPAN_VIEW" ), 0, this);
+  aAction->setStatusTip(tr("DSC_GLOBALPAN_VIEW"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewGlobalPan()));
+  myActionsMap[ GlobalPanId ] = aAction;
+
+  // Reset
+  aAction = new QtxAction(tr("MNU_RESET_VIEW"), aResMgr->loadPixmap( "QxGraph", tr( "ICON_QXGRAPH_RESET" ) ),
+                         tr( "MNU_RESET_VIEW" ), 0, this);
+  aAction->setStatusTip(tr("DSC_RESET_VIEW"));
+  connect(aAction, SIGNAL(activated()), this, SLOT(onViewReset()));
+  myActionsMap[ ResetId ] = aAction;
+}
+
+/*!
+  Creates toolbar of QxGraph view window
+*/
+void QxGraph_ViewWindow::createToolBar()
+{
+  SUIT_ToolButton* aScaleBtn = new SUIT_ToolButton(myToolBar, "scale");
+  aScaleBtn->AddAction(myActionsMap[FitAllId]);
+  aScaleBtn->AddAction(myActionsMap[FitRectId]);
+  aScaleBtn->AddAction(myActionsMap[ZoomId]);
+
+  SUIT_ToolButton* aPanningBtn = new SUIT_ToolButton(myToolBar, "pan");
+  aPanningBtn->AddAction(myActionsMap[PanId]);
+  aPanningBtn->AddAction(myActionsMap[GlobalPanId]);
+
+  myActionsMap[ResetId]->addTo(myToolBar);
+}
+
+/*!
+  Destructor
+*/
+QxGraph_ViewWindow::~QxGraph_ViewWindow() {}
+
+/*!
+  Reset the active view
+*/
+void QxGraph_ViewWindow::onViewReset()    
+{
+  printf( "QxGraph_ViewWindow::onViewReset\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activateReset();
+}
+
+/*!
+  Sets a new center of the active view
+*/
+void QxGraph_ViewWindow::onViewGlobalPan()
+{
+  printf( "QxGraph_ViewWindow::onViewGlobalPan\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activateGlobalPanning();
+}
+
+/*!
+  Zooms the active view
+*/
+void QxGraph_ViewWindow::onViewZoom()
+{
+  printf( "QxGraph_ViewWindow::onViewZoom\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activateZoom();
+}
+
+/*!
+  Moves the active view
+*/
+void QxGraph_ViewWindow::onViewPan()
+{
+  printf( "QxGraph_ViewWindow::onViewPan\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activatePanning();
+}
+
+/*!
+  Fits all obejcts within a rectangular area of the active view
+*/
+void QxGraph_ViewWindow::onViewFitArea()
+{
+  printf( "QxGraph_ViewWindow::onViewFitArea\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activateFitRect();
+}
+
+/*!
+  Fits all objects in the active view
+*/
+void QxGraph_ViewWindow::onViewFitAll()
+{
+  printf( "QxGraph_ViewWindow::onViewFitAll\n" );
+  if ( myViewModel && myViewModel->getCurrentView() )
+    myViewModel->getCurrentView()->activateFitAll();
+}
+
+/*!
+    Set background of the viewport
+*/
+void QxGraph_ViewWindow::setBackgroundColor( const QColor& color )
+{
+  if ( myViewModel && myViewModel->getCurrentView()) {
+    myViewModel->getCurrentView()->canvas()->setBackgroundColor(color);
+    myViewModel->getCurrentView()->setPaletteBackgroundColor(color.light(120));
+  }
+}
+
+/*!
+    Returns background of the viewport
+*/
+QColor QxGraph_ViewWindow::backgroundColor() const
+{
+  if ( myViewModel && myViewModel->getCurrentView())
+    return myViewModel->getCurrentView()->canvas()->backgroundColor();
+  return QColor();
+}
+
+/*!
+  Custom resize event handler
+*/
+void QxGraph_ViewWindow::resizeEvent( QResizeEvent* theEvent )
+{
+  //  QMainWindow::resizeEvent( theEvent );
+  //if ( myView ) myView->resizeView( theEvent );
+}
+
+/*!
+  Get resource manager
+*/
+SUIT_ResourceMgr* QxGraph_ViewWindow::resMgr() const
+{ 
+  return SUIT_Session::session()->resourceMgr(); 
+}
+
diff --git a/src/QxGraph/QxGraph_ViewWindow.h b/src/QxGraph/QxGraph_ViewWindow.h
new file mode 100644 (file)
index 0000000..88fe11b
--- /dev/null
@@ -0,0 +1,95 @@
+//  SALOME QxGraph : build Supervisor viewer into desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef QXGRAPH_VIEWWINDOW_H
+#define QXGRAPH_VIEWWINDOW_H
+
+#include "QxGraph.h"
+#include "QxGraph_ViewModel.h"
+
+#include "SUIT_ViewWindow.h"
+
+#include "QtxAction.h"
+
+#include <qaction.h>
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
+class SUIT_ResourceMgr;
+
+class QXGRAPH_EXPORT QxGraph_ViewWindow : public SUIT_ViewWindow {
+  Q_OBJECT
+
+ public:
+  QxGraph_ViewWindow(SUIT_Desktop* theDesktop, QxGraph_Viewer* theModel);
+  virtual ~QxGraph_ViewWindow();
+
+  void              setBackgroundColor( const QColor& );
+  QColor            backgroundColor() const;
+
+  QToolBar*         getToolBar() { return myToolBar; }
+
+  SUIT_ResourceMgr* resMgr() const;
+
+  QxGraph_Viewer*   getViewModel() const { return myViewModel; }
+  void              setViewModel(QxGraph_Viewer* theViewModel) { myViewModel = theViewModel; }
+
+  virtual void      initLayout();
+
+  void              contextPopupEvent(QContextMenuEvent* theEvent) { emit contextMenuRequested( theEvent); }
+  
+ public slots:
+  void              onViewFitAll();
+  void              onViewFitArea();
+  void              onViewZoom();
+  void              onViewPan(); 
+  void              onViewGlobalPan(); 
+  void              onViewReset(); 
+  
+ protected:
+  void              resizeEvent( QResizeEvent* theEvent );
+
+  virtual void      initCanvas();
+  virtual void      initCanvasViews();
+
+ private:
+  void              createActions();
+  void              createToolBar();
+
+  //! Actions ID
+  enum { FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, ResetId };
+  typedef QMap<int, QtxAction*> ActionsMap;
+
+  ActionsMap        myActionsMap;
+  QToolBar*         myToolBar;
+
+  QxGraph_Viewer*   myViewModel;
+  
+};
+
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
+#endif
diff --git a/src/QxGraph/resources/QxGraph_images.po b/src/QxGraph/resources/QxGraph_images.po
new file mode 100644 (file)
index 0000000..3b59f61
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File:      QxGraph_images.po
+// Created:   03/02/2007
+// Author:    Margarita Karpunina
+// Copyright (C) CEA 2007
+
+
+msgid "ICON_QXGRAPH_FITALL"
+msgstr "view_fitall.png"
+
+msgid "ICON_QXGRAPH_FITAREA"
+msgstr "view_fitarea.png"
+
+msgid "ICON_QXGRAPH_ZOOM"
+msgstr "view_zoom.png"
+
+msgid "ICON_QXGRAPH_PAN"
+msgstr "view_pan.png"
+
+msgid "ICON_QXGRAPH_GLOBALPAN"
+msgstr "view_glpan.png"
+
+msgid "ICON_QXGRAPH_RESET"
+msgstr "view_reset.png"
+
diff --git a/src/QxGraph/resources/QxGraph_msg_en.po b/src/QxGraph/resources/QxGraph_msg_en.po
new file mode 100644 (file)
index 0000000..670735b
--- /dev/null
@@ -0,0 +1,40 @@
+// 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:      QxGraph_msg_en.po
+// Created:   03/02/2007
+// Author:    Margarita Karpunina
+// Copyright (C) CEA 2007
+
+msgid "LBL_TOOLBAR_LABEL"
+msgstr "View Operations"
+
+msgid "DSC_RESET_VIEW"
+msgstr "Reset View Point"
+
+msgid "MNU_RESET_VIEW"
+msgstr "Reset"
+
+msgid "DSC_PAN_VIEW"
+msgstr "Panning the view"
+
+msgid "MNU_PAN_VIEW"
+msgstr "Panning"
+
+msgid "MEN_CHANGE_BACKGROUND"
+msgstr "Change background..."
diff --git a/src/QxGraph/resources/view_fitall.png b/src/QxGraph/resources/view_fitall.png
new file mode 100755 (executable)
index 0000000..c09ff94
Binary files /dev/null and b/src/QxGraph/resources/view_fitall.png differ
diff --git a/src/QxGraph/resources/view_fitarea.png b/src/QxGraph/resources/view_fitarea.png
new file mode 100755 (executable)
index 0000000..5b79594
Binary files /dev/null and b/src/QxGraph/resources/view_fitarea.png differ
diff --git a/src/QxGraph/resources/view_glpan.png b/src/QxGraph/resources/view_glpan.png
new file mode 100755 (executable)
index 0000000..c23322a
Binary files /dev/null and b/src/QxGraph/resources/view_glpan.png differ
diff --git a/src/QxGraph/resources/view_pan.png b/src/QxGraph/resources/view_pan.png
new file mode 100644 (file)
index 0000000..038fba1
Binary files /dev/null and b/src/QxGraph/resources/view_pan.png differ
diff --git a/src/QxGraph/resources/view_reset.png b/src/QxGraph/resources/view_reset.png
new file mode 100644 (file)
index 0000000..1285064
Binary files /dev/null and b/src/QxGraph/resources/view_reset.png differ
diff --git a/src/QxGraph/resources/view_zoom.png b/src/QxGraph/resources/view_zoom.png
new file mode 100755 (executable)
index 0000000..b465739
Binary files /dev/null and b/src/QxGraph/resources/view_zoom.png differ
index 715169279e40fbcb5a499f64ee3c1d053c2f7b14..31f6405decb4e51aa9c5e4a0e6bae1413fb6f46e 100755 (executable)
 //  Module : SALOME
 //  $Header$
 
-# ifndef __HELPWINDOW_H__
-# define __HELPWINDOW_H__
+#ifndef __HELPWINDOW_H__
+#define __HELPWINDOW_H__
 
-# include <qapplication.h>
-# include <qmainwindow.h>
+#include <qapplication.h>
+#include <qmainwindow.h>
 
 class QTextView;
 
 class HelpWindow : public QMainWindow
 {
+  Q_OBJECT
+
 public:
   HelpWindow( QWidget* parent = 0, const char* name = 0);
   ~HelpWindow();
@@ -46,6 +48,5 @@ public:
 private:
   QTextView* myTextView;
 };
-# endif         /* __HELPWINDOW_H__ */
-
 
+#endif
index 0ec1fd77adf2345097d210e7bb5ca4408c98fbe7..420ce5a0af14e3826f854a1e186fb37797ed740e 100755 (executable)
@@ -36,6 +36,8 @@ using namespace std;
 
 class IntervalWindow : public QDialog
 {
+  Q_OBJECT
+
 public:
   IntervalWindow( QWidget* parent = 0 );
   ~IntervalWindow();
diff --git a/src/RegistryDisplay/Makefile.am b/src/RegistryDisplay/Makefile.am
new file mode 100755 (executable)
index 0000000..2034b50
--- /dev/null
@@ -0,0 +1,49 @@
+#  SALOME RegistryDisplay : GUI for Registry server implementation
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libRegistryDisplay.la 
+
+salomeinclude_HEADERS= \
+       HelpWindow.hxx \
+       IntervalWindow.hxx \
+       RegWidget.h
+
+dist_libRegistryDisplay_la_SOURCES= \
+       HelpWindow.cxx \
+       RegWidget.cxx \
+       RegWidgetFactory.cxx \
+       IntervalWindow.cxx
+
+MOC_FILES = RegWidget_moc.cxx
+nodist_libRegistryDisplay_la_SOURCES= $(MOC_FILES)
+
+libRegistryDisplay_la_CPPFLAGS=$(QT_INCLUDES) @KERNEL_CXXFLAGS@ @CORBA_CXXFLAGS@ @CORBA_INCLUDES@\
+       -I$(top_builddir)/salome_adm/unix -I$(top_builddir)/idl
+libRegistryDisplay_la_LDFLAGS=$(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil -lSalomeIDLKernel
diff --git a/src/RegistryDisplay/Makefile.in b/src/RegistryDisplay/Makefile.in
deleted file mode 100755 (executable)
index 46b60c2..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#  SALOME RegistryDisplay : GUI for Registry server implementation
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Paul RASCLE, EDF
-#  Module : SALOME
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS =
-
-EXPORT_HEADERS= HelpWindow.hxx \
-               IntervalWindow.hxx \
-               RegWidget.h
-
-# Libraries targets
-
-LIB = libRegistryDisplay.la 
-
-LIB_SRC = HelpWindow.cxx \
-         RegWidget.cxx \
-         RegWidgetFactory.cxx \
-         IntervalWindow.cxx
-
-LIB_MOC = RegWidget.h
-
-LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl
-
-CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS)
-LDFLAGS+=$(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil
-
-
-@CONCLUDE@
index 19d3af36b119bdbd4c1511443d7a61b133171eda..413dca7118e5b7f4c6bce9749ff56776b7ef9de6 100755 (executable)
@@ -764,6 +764,8 @@ QString findFile( QString filename )
       dir = addSlash(dir) ;
       dir = dir + "resources" ;
       dir = addSlash(dir) ;
+      dir = dir + "kernel" ;
+      dir = addSlash(dir) ;
       QFileInfo fileInfo( dir + filename );
       if ( fileInfo.isFile() && fileInfo.exists() )
        return fileInfo.filePath();
index 5b44b550e668b07d6f3bc99065e3a210b4271359..3a1431777f4094cc27a492055660f68d8d4227fe 100755 (executable)
@@ -51,11 +51,10 @@ class InfoWindow;
 
 class RegWidget : public QMainWindow
 {
-  
   Q_OBJECT
 
 public:
-   RegWidget( CORBA::ORB_var &orb , QWidget *parent = 0, const char *name = 0 );
+  RegWidget( CORBA::ORB_var &orb , QWidget *parent = 0, const char *name = 0 );
   ~RegWidget();
   void       SetListe();
   void       SetListeHistory();
@@ -114,13 +113,4 @@ private:
 
 };
 
-# endif         /* # ifndef __REGWIDGET_H__ */
-
-
-
-
-
-
-
-
-
+#endif
diff --git a/src/ResExporter/Makefile.am b/src/ResExporter/Makefile.am
new file mode 100755 (executable)
index 0000000..bc9d55e
--- /dev/null
@@ -0,0 +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
+#
+#  File   : Makefile.in
+#  Author : Vadim SANDLER (OCN)
+#  Module : SalomeApp
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+bin_PROGRAMS= ResourceExporter
+
+dist_ResourceExporter_SOURCES=ResourceExporter.cxx
+
+ResourceExporter_CPPFLAGS= $(QT_INCLUDES) -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
+
+ResourceExporter_LDFLAGS= $(QT_MT_LIBS) 
+ResourceExporter_LDADD= ../SUIT/libsuit.la ../Qtx/libqtx.la
diff --git a/src/ResExporter/Makefile.in b/src/ResExporter/Makefile.in
deleted file mode 100755 (executable)
index e1838e2..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-
-BIN = ResourceExporter
-BIN_SRC =
-
-CPPFLAGS += $(QT_INCLUDES)
-
-LDFLAGS += $(QT_MT_LIBS) 
-LIBS += -lsuit -lqtx
-
-LDFLAGSFORBIN = ${LDFLAGS}
-LIBSFORBIN = $(LIBS)
-@CONCLUDE@
-
-
-
-
-
index 87453934925f2b2343357848b70f69cea63dd1a8..7788f8b7c5ab95fcc4879bbe14f713fd54f40ceb 100644 (file)
@@ -145,7 +145,7 @@ int main( int argc, char** argv )
          QString value = resMgr->stringValue( section, param );
          QStringList valsOld = QStringList::split( separ, value );
          QStringList valsNew = QStringList::split( separ, newValue );
-         for ( int i = 0; i < valsNew.count(); i++ )
+         for ( int i = 0; i < (int)valsNew.count(); i++ )
            if ( !valsOld.contains( valsNew[i] ) )
              valsOld.append( valsNew[i] );
          resMgr->setValue( section, param, valsOld.join( separ ) );
diff --git a/src/SALOME_PY/Makefile.am b/src/SALOME_PY/Makefile.am
new file mode 100755 (executable)
index 0000000..6d94b90
--- /dev/null
@@ -0,0 +1,44 @@
+#  SALOME SALOME_PY : binding of VTK graphics and Python
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES= libSalomePy.la
+dist_libSalomePy_la_SOURCES= SalomePy.cxx
+
+libSalomePy_la_CPPFLAGS=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) \
+       $(OGL_INCLUDES) $(CAS_CXXFLAGS) $(BOOST_CPPFLAGS) @KERNEL_CXXFLAGS@ \
+       -DHAVE_CONFIG_H -I$(srcdir)/../SalomeApp -I$(srcdir)/../LightApp \
+       -I$(srcdir)/../Event -I$(srcdir)/../Session -I$(srcdir)/../SVTK \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../CAM \
+       -I$(srcdir)/../STD -I$(srcdir)/../VTKViewer -I$(srcdir)/../OBJECT \
+       @CAS_CPPFLAGS@ \
+       -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+libSalomePy_la_LDFLAGS=$(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) \
+       ../SalomeApp/libSalomeApp.la \
+       -lvtkCommonPythonD -lvtkGraphicsPythonD -lvtkImagingPythonD
diff --git a/src/SALOME_PY/Makefile.in b/src/SALOME_PY/Makefile.in
deleted file mode 100755 (executable)
index d1eb1c2..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#  SALOME SALOME_PY : binding of VTK graphics and Python
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Paul RASCLE, EDF
-#  Module : SALOME
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# Libraries targets
-
-LIB = libSalomePy.la
-LIB_SRC = SalomePy.cxx
-
-LIB_CLIENT_IDL = SALOMEDS.idl \
-                 SALOMEDS_Attributes.idl \
-                SALOME_Exception.idl \
-                SALOME_GenericObj.idl
-
-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
-
-
-@CONCLUDE@
index eb9a2075693991343da4d77e35d29d9a3254b1af..6b8b62410026810c8b94884a746a2505d07f7d7a 100755 (executable)
 
 using namespace std;
 
+#define PUBLISH_ENUM(i)                              \
+{                                                    \
+  PyObject *w;                                       \
+  int rc;                                            \
+  if ( ( w = PyInt_FromLong( i ) ) == NULL ) return; \
+  rc = PyDict_SetItemString( aModuleDict, #i, w );   \
+  Py_DECREF( w );                                    \
+  if ( rc < 0 ) return;                              \
+}
+
+// enumeration : view type
+enum {
+  ViewFront,     // fron view
+  ViewBack,      // back view
+  ViewTop,       // top view
+  ViewBottom,    // bottom view
+  ViewRight,     // right view
+  ViewLeft       // left view
+};
+
+
 /*!
   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.
+  - showTrihedron()
+  These methods (except showTrihedron() ) open new VTK viewer
+  if there is no one opened.
+  In case of error all methods return None object in Python.
 */
 
 static PyObject* GetPyClass(const char* theClassName){
@@ -74,7 +97,12 @@ static PyObject* GetPyClass(const char* theClassName){
   return aPyClass;
 }
 
-static SVTK_ViewWindow* GetVTKViewWindow() {
+// internal enum: find or create VTK window
+enum { __Find,          // try to find only 
+       __FindOrCreate,  // try to find: if not found - create new 
+       __Create };      // try to find: if not found - create new 
+
+static SVTK_ViewWindow* GetVTKViewWindow( int toCreate = __FindOrCreate ) {
   SVTK_ViewWindow* aVW = NULL;
   if ( SUIT_Session::session() ) {
     // get application
@@ -84,13 +112,27 @@ static SVTK_ViewWindow* GetVTKViewWindow() {
       SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( anApp->activeStudy() );
       if ( aStudy ) {
        // find or create VTK view manager
-       SVTK_ViewManager* aVM = dynamic_cast<SVTK_ViewManager*>( anApp->getViewManager( "VTKViewer", true ) );
-       if ( aVM ) {
-         aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getActiveView() );
-         // VSR : When new view window is created it can be not active yet at this moment,
-         // so the following is a some workaround
-         if ( !aVW && !aVM->getViews().isEmpty() )
-           aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getViews()[ 0 ] );
+       if ( toCreate == __Create ) {
+         SVTK_ViewManager* aVM = dynamic_cast<SVTK_ViewManager*>( anApp->createViewManager( "VTKViewer" ) );
+         if ( aVM ) {
+           aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getActiveView() );
+           if ( !aVW )
+             aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->createViewWindow() );
+           // VSR : When new view window is created it can be not active yet at this moment,
+           // so the following is a some workaround
+           if ( !aVW && !aVM->getViews().isEmpty() )
+             aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getViews()[ 0 ] );
+         }
+       }
+       else {
+         SVTK_ViewManager* aVM = dynamic_cast<SVTK_ViewManager*>( anApp->getViewManager( "VTKViewer", toCreate == __FindOrCreate ) );
+         if ( aVM ) {
+           aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getActiveView() );
+           // VSR : When new view window is created it can be not active yet at this moment,
+           // so the following is a some workaround
+           if ( !aVW && !aVM->getViews().isEmpty() )
+             aVW = dynamic_cast<SVTK_ViewWindow*>( aVM->getViews()[ 0 ] );
+         }
        }
       }
     }
@@ -99,15 +141,19 @@ static SVTK_ViewWindow* GetVTKViewWindow() {
 }
 
 /*!
-  Get VTK renderer (opens new VTK window if there is no one opened)
+  Get VTK renderer.
+  Always opens new VTK window if <toCreate> parameter is non zero.
+  Otherwise opens new VTK window only if there is no one opened.
 */
 class TGetRendererEvent: public SALOME_Event {
 public:
   typedef PyObject* TResult;
   TResult myResult;
-  TGetRendererEvent() : myResult( Py_None ) {}
+  int     myCreate;
+  TGetRendererEvent( bool toCreate )
+    : myResult( Py_None ), myCreate( toCreate )  {}
   virtual void Execute() {
-    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow() ) {
+    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( myCreate ? __Create : __FindOrCreate ) ) {
       PyObject* aPyClass = GetPyClass("vtkRenderer");
       vtkRenderer* aVTKObject = aVTKViewWindow->getRenderer();
       myResult = PyVTKObject_New(aPyClass,aVTKObject);
@@ -116,19 +162,29 @@ public:
 };
 extern "C" PyObject *libSalomePy_getRenderer(PyObject *self, PyObject *args)
 {
-  return ProcessEvent( new TGetRendererEvent() );
+  PyObject* aResult = Py_None;
+  int toCreate = 0;
+  if ( !PyArg_ParseTuple(args, "|i:getRenderer", &toCreate) )
+    PyErr_Print();
+  else
+    aResult = ProcessEvent( new TGetRendererEvent( toCreate ) );
+  return aResult;
 }
 
 /*!
-  Get VTK render window (opens new VTK window if there is no one opened)
+  Get VTK render window.
+  Always opens new VTK window if <toCreate> parameter is non zero.
+  Otherwise opens new VTK window only if there is no one opened.
 */
 class TGetRenderWindowEvent: public SALOME_Event {
 public:
   typedef PyObject* TResult;
   TResult myResult;
-  TGetRenderWindowEvent() : myResult( Py_None ) {}
+  int     myCreate;
+  TGetRenderWindowEvent( bool toCreate )
+    : myResult( Py_None ), myCreate( toCreate )  {}
   virtual void Execute() {
-    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow() ) {
+    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( myCreate ? __Create : __FindOrCreate ) ) {
       PyObject* aPyClass = GetPyClass("vtkRenderWindow");
       vtkRenderWindow* aVTKObject = aVTKViewWindow->getRenderWindow();
       myResult = PyVTKObject_New(aPyClass,aVTKObject);
@@ -137,19 +193,29 @@ public:
 };
 extern "C" PyObject *libSalomePy_getRenderWindow(PyObject *self, PyObject *args)
 {
-  return ProcessEvent( new TGetRenderWindowEvent() );
+  PyObject* aResult = Py_None;
+  int toCreate = 0;
+  if ( !PyArg_ParseTuple(args, "|i:getRenderWindow", &toCreate) )
+    PyErr_Print();
+  else
+    aResult = ProcessEvent( new TGetRenderWindowEvent( toCreate ) );
+  return aResult;
 }
 
 /*!
-  Get VTK render window interactor (opens new VTK window if there is no one opened)
+  Get VTK render window interactor.
+  Always opens new VTK window if <toCreate> parameter is non zero.
+  Otherwise opens new VTK window only if there is no one opened.
 */
 class TGetRenderWindowInteractorEvent: public SALOME_Event {
 public:
   typedef PyObject* TResult;
   TResult myResult;
-  TGetRenderWindowInteractorEvent() : myResult( Py_None ) {}
+  int     myCreate;
+  TGetRenderWindowInteractorEvent( bool toCreate )
+    : myResult( Py_None ), myCreate( toCreate )  {}
   virtual void Execute() {
-    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow() ) {
+    if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( myCreate ? __Create : __FindOrCreate ) ) {
       PyObject* aPyClass = GetPyClass("vtkRenderWindowInteractor");
       vtkRenderWindowInteractor* aVTKObject = aVTKViewWindow->getInteractor();
       myResult = PyVTKObject_New(aPyClass,aVTKObject);
@@ -158,7 +224,122 @@ public:
 };
 extern "C" PyObject *libSalomePy_getRenderWindowInteractor(PyObject *self, PyObject *args)
 {
-  return ProcessEvent( new TGetRenderWindowInteractorEvent() );
+  PyObject* aResult = Py_None;
+  int toCreate = 0;
+  if ( !PyArg_ParseTuple(args, "|i:getRenderWindowInteractor", &toCreate) )
+    PyErr_Print();
+  else
+    aResult = ProcessEvent( new TGetRenderWindowInteractorEvent( toCreate ) );
+  return aResult;
+}
+
+/*!
+  Show/hide trihedron in the current VTK viewer (if there is one)
+*/
+extern "C" PyObject *libSalomePy_showTrihedron(PyObject *self, PyObject *args)
+{
+  class TEvent: public SALOME_Event {
+  public:
+    int myShow;
+    TEvent( int bShow )
+      : myShow( bShow )  {}
+    virtual void Execute() {
+      if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( __Find ) ) {
+       if ( aVTKViewWindow->isTrihedronDisplayed() != myShow )
+         aVTKViewWindow->onViewTrihedron();
+      }
+    }
+  };
+  
+  PyObject* aResult = Py_None;
+  int bShow = 0;
+  if ( !PyArg_ParseTuple(args, "i:showTrihedron", &bShow) )
+    PyErr_Print();
+  else
+    ProcessVoidEvent( new TEvent( bShow ) );
+  return aResult;
+}
+
+/*!
+  Fit all the contents in the current VTK viewer (if there is one)
+*/
+extern "C" PyObject *libSalomePy_fitAll(PyObject *self, PyObject *args)
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( __Find ) ) {
+       aVTKViewWindow->onFitAll();
+      }
+    }
+  };
+  
+  ProcessVoidEvent( new TEvent() );
+  return Py_None;
+}
+
+/*!
+  Set view type fot the current VTK viewer (if there is one)
+*/
+extern "C" PyObject *libSalomePy_setView(PyObject *self, PyObject *args)
+{
+  class TEvent: public SALOME_Event {
+  public:
+    long myType;
+    TEvent( long type ) : myType( type) {}
+    virtual void Execute() {
+      if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( __Find ) ) {
+       switch( myType ) {
+       case ViewFront:
+         aVTKViewWindow->onFrontView();  break;
+       case ViewBack:
+         aVTKViewWindow->onBackView();   break;
+       case ViewTop:
+         aVTKViewWindow->onTopView();    break;
+       case ViewBottom:
+         aVTKViewWindow->onBottomView(); break;
+       case ViewRight:
+         aVTKViewWindow->onRightView();  break;
+       case ViewLeft:
+         aVTKViewWindow->onLeftView();   break;
+       default:
+         PyErr_Format(PyExc_ValueError,"setView%: wrong parameter value; must be between %d and %d", ViewFront, ViewLeft );
+         break;
+       }
+      }
+    }
+  };
+  
+  long type = -1;
+  if ( !PyArg_ParseTuple(args, "l:setView", &type) )
+    PyErr_Print();
+  else {
+    ProcessVoidEvent( new TEvent( type ) );
+    if( PyErr_Occurred() )
+      PyErr_Print();
+  }
+  return Py_None;
+}
+
+/*!
+  Reset contents of the current VTK viewer (if there is one)
+  to the default state
+*/
+extern "C" PyObject *libSalomePy_resetView(PyObject *self, PyObject *args)
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if( SVTK_ViewWindow* aVTKViewWindow = GetVTKViewWindow( __Find ) ) {
+       aVTKViewWindow->onResetView();
+      }
+    }
+  };
+  
+  ProcessVoidEvent( new TEvent() );
+  return Py_None;
 }
 
 /*!
@@ -166,18 +347,34 @@ extern "C" PyObject *libSalomePy_getRenderWindowInteractor(PyObject *self, PyObj
 */
 static PyMethodDef Module_Methods[] = 
 {
-  { "getRenderer",               libSalomePy_getRenderer,     METH_NOARGS },
-  { "getRenderWindow",           libSalomePy_getRenderWindow, METH_NOARGS },
-  { "getRenderWindowInteractor", libSalomePy_getRenderWindow, METH_NOARGS },
+  { "getRenderer",               libSalomePy_getRenderer,               METH_VARARGS },
+  { "getRenderWindow",           libSalomePy_getRenderWindow,           METH_VARARGS },
+  { "getRenderWindowInteractor", libSalomePy_getRenderWindowInteractor, METH_VARARGS },
+  { "showTrihedron",             libSalomePy_showTrihedron,             METH_VARARGS },
+  { "fitAll",                    libSalomePy_fitAll,                    METH_NOARGS  },
+  { "setView",                   libSalomePy_setView,                   METH_VARARGS },
+  { "resetView",                 libSalomePy_resetView,                 METH_NOARGS  },
   { NULL, NULL }
 };
 
 extern "C" void initlibSalomePy()
 {
   static char modulename[] = "libSalomePy";
-  /*PyObject* aModule = */Py_InitModule(modulename, Module_Methods);
-  if(PyErr_Occurred()){
+  // init module
+  PyObject* aModule = Py_InitModule(modulename, Module_Methods);
+  if( PyErr_Occurred() ) {
     PyErr_Print();
     return;
   }
+  // get module's dictionary
+  PyObject *aModuleDict = PyModule_GetDict( aModule );
+  if ( aModuleDict == NULL )
+    return;
+  // add View type enumeration
+  PUBLISH_ENUM( ViewFront );
+  PUBLISH_ENUM( ViewBack );
+  PUBLISH_ENUM( ViewTop );
+  PUBLISH_ENUM( ViewBottom );
+  PUBLISH_ENUM( ViewRight );
+  PUBLISH_ENUM( ViewLeft );
 }
diff --git a/src/SALOME_PYQT/Makefile.am b/src/SALOME_PYQT/Makefile.am
new file mode 100755 (executable)
index 0000000..a96896a
--- /dev/null
@@ -0,0 +1,29 @@
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Patrick GOLDBRONN (CEA)
+#  Module : SALOME
+# $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = SALOME_PYQT_GUI SalomePyQt 
diff --git a/src/SALOME_PYQT/Makefile.in b/src/SALOME_PYQT/Makefile.in
deleted file mode 100755 (executable)
index f3b93ea..0000000
+++ /dev/null
@@ -1,37 +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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Patrick GOLDBRONN (CEA)
-#  Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-SUBDIRS = SALOME_PYQT_GUI SalomePyQt
-
-@MODULE@
diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.am b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.am
new file mode 100644 (file)
index 0000000..cf5e4c9
--- /dev/null
@@ -0,0 +1,79 @@
+# 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
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# Sip flags
+SIP_FLAGS = -t WS_X11 -t $(QT_VERS) $(PYQT_SIPFLAGS) -s ".cc" -c . -I $(PYQT_SIPS)
+
+######################
+
+# Library target
+lib_LTLIBRARIES= libSalomePyQtGUI.la
+
+
+# Sip sources
+if IS_SIP_V4
+SIP_SRC   = sipSalomePyQtGUIcmodule.cc
+SIP_FILES = SALOME_PYQT_GUI.sip
+else !IS_SIP_V4
+SIP_SRC   = SalomePyQtGUIcmodule.cc
+SIP_FILES = SALOME_PYQT_GUI.sip
+endif
+
+EXTRA_DIST+= $(SIP_FILES)
+
+salomeinclude_HEADERS = \
+       SALOME_PYQT_GUI.h \
+       SALOME_PYQT_PyInterp.h \
+       SALOME_PYQT_Module.h
+
+dist_libSalomePyQtGUI_la_SOURCES= \
+       SALOME_PYQT_PyInterp.cxx \
+       SALOME_PYQT_Module.cxx
+
+dist_libSalomePyQtGUI_la_SOURCES: $(SIP_SRC)
+
+# moc pre-processing
+MOC_FILES= SALOME_PYQT_Module_moc.cxx
+nodist_libSalomePyQtGUI_la_SOURCES= $(MOC_FILES) $(SIP_SRC)
+
+libSalomePyQtGUI_la_CPPFLAGS= $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) \
+       $(CAS_CPPFLAGS) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) \
+       -DHAVE_CONFIG_H @KERNEL_CXXFLAGS@ -D__CALL_OLD_METHODS__ \
+       -I$(srcdir)/../../PyInterp -I$(srcdir)/../../SalomeApp \
+       -I$(srcdir)/../../SUIT -I$(srcdir)/../../Qtx -I$(srcdir)/../../LightApp \
+       -I$(srcdir)/../../SalomeApp -I$(srcdir)/../../CAM -I$(srcdir)/../../STD \
+       -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+libSalomePyQtGUI_la_LIBADD= $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) \
+       $(OGL_LIBS) ../../PyInterp/libPyInterp.la ../../SalomeApp/libSalomeApp.la
+
+##################################
+
+# Custom build step: generate C++ wrapping according to $(SIP_FILES)
+
+$(SIP_SRC): $(SIP_FILES)
+       $(SIP) $(SIP_FLAGS) $<
+
+$(dist_libSalomePyQtGUI_la_SOURCES): $(SIP_SRC)
+
+###################################
diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in b/src/SALOME_PYQT/SALOME_PYQT_GUI/Makefile.in
deleted file mode 100644 (file)
index 41276e5..0000000
+++ /dev/null
@@ -1,96 +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/ or email : webmaster.salome@opencascade.com
-#
-#  File   : Makefile.in
-#  Author : Nicolas REJNERI
-#  Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-@COMMENCE@
-
-# small trick for Mandrake-10.1: PyQt 3.13 does not support Qt 3.3.3
-ifeq ($(QT_VERS),Qt_3_3_3)
-QT_VERS = Qt_3_3_0
-endif
-
-ifeq ($(QT_VERS),Qt_3_3_4)
-QT_VERS = Qt_3_3_0
-endif
-
-# Sip flags
-SIP_FLAGS = -t WS_X11 -t $(QT_VERS) $(PYQT_SIPFLAGS) -s ".cc" -c . -I $(PYQT_SIPS)
-
-# Sip sources
-ifeq ($(SIP_VERS),v4_old)
-SIP_SRC   = sipSalomePyQtGUIcmodule.cc
-SIP_FILES = SALOME_PYQT_GUI.sip
-else
-ifeq ($(SIP_VERS),v4_new)
-SIP_SRC   = sipSalomePyQtGUIcmodule.cc
-SIP_FILES = SALOME_PYQT_GUI.sip
-else
-SIP_SRC   = SalomePyQtGUIcmodule.cc
-SIP_FILES = SALOME_PYQT_GUI.sip
-endif
-endif
-
-######################
-
-# headers
-EXPORT_HEADERS = SALOME_PYQT_GUI.h \
-                 SALOME_PYQT_PyInterp.h \
-                 SALOME_PYQT_Module.h
-
-# Library target
-LIB = libSalomePyQtGUI.la
-
-# library sources
-LIB_SRC = SALOME_PYQT_PyInterp.cxx \
-          SALOME_PYQT_Module.cxx \
-         $(SIP_SRC)
-
-# moc pre-processing
-LIB_MOC = SALOME_PYQT_Module.h
-
-LIB_CLIENT_IDL = SALOME_Exception.idl \
-                 SALOME_GenericObj.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 $(KERNEL_CXXFLAGS) -D__CALL_OLD_METHODS__
-
-LIBS     += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
-LDFLAGS  += -lPyInterp -lSalomeApp
-
-##################################
-
-# Custom build step: generate C++ wrapping according to $(SIP_FILES)
-
-$(SIP_SRC): $(SIP_FILES)
-       $(SIP) $(SIP_FLAGS) $<
-
-$(MOC_SRC): $(MOC_H)
-       $(MOC) $< -o $@
-
-###################################
-
-@CONCLUDE@
index 5d11cf06388be06f7bbc0fba62a0b49e18076ea9..d7f8dc59c1d7a1314f3dc8ec3ca809c33b997942 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
+#include "PyInterp_Dispatcher.h"
 #include "SALOME_PYQT_Module.h"
 
-#include "PyInterp_Dispatcher.h"
+
 #include "SUIT_ResourceMgr.h"
 #include "STD_MDIDesktop.h"
 #include "STD_TabDesktop.h"
 #include "SalomeApp_Application.h"
 #include "SalomeApp_Study.h"
+#include "LightApp_Preferences.h"
 
 #include "QtxWorkstack.h"
 #include "QtxActionMenuMgr.h"
 #include <qmenubar.h>
 #include <qpopupmenu.h>
 
+#ifndef WIN32
 #include "SALOME_PYQT_SipDefs.h"
-#if defined(SIP_VERS_v4_old) || defined(SIP_VERS_v4_new)
-#include "sipAPISalomePyQtGUI.h"
-#else
-#include "sipSalomePyQtGUIDeclSalomePyQtGUI.h"
 #endif
+#include "sipAPISalomePyQtGUI.h"
 
-#include <sipqtQWidget.h>
-#include <sipqtQPopupMenu.h>
+#include <sip.h>
+#if SIP_VERSION < 0x040700
+#include "sipqtQWidget.h"
+#include "sipqtQPopupMenu.h"
+#endif
 
 #include <CORBA.h>
 
@@ -167,7 +170,8 @@ SALOME_PYQT_Module* SALOME_PYQT_Module::getInitModule()
 SALOME_PYQT_Module::SALOME_PYQT_Module()
   : SalomeApp_Module( __DEFAULT_NAME__ ),
     myModule( 0 ), 
-    myXmlHandler ( 0 )
+    myXmlHandler ( 0 ),
+    myLastActivateStatus( true )
 {
 }
 
@@ -250,6 +254,9 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   if ( !res )
     return res;
 
+  // reset the activation status to the default value
+  myLastActivateStatus = true;
+
   // ActivateReq: request class for internal activate() operation
   class ActivateReq : public PyInterp_Request
   {
@@ -274,6 +281,9 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   // Posting the request
   PyInterp_Dispatcher::Get()->Exec( new ActivateReq( theStudy, this ) );
 
+  if ( !lastActivationStatus() )
+    return false;
+
   // activate menus, toolbars, etc
   setMenuShown( true );
   setToolShown( true );
@@ -281,6 +291,8 @@ bool SALOME_PYQT_Module::activateModule( SUIT_Study* theStudy )
   if ( menuMgr() )
     connect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ),
             this,      SLOT( onMenuHighlighted( int, int ) ) );
+  connect( getApp(), SIGNAL( preferenceChanged( const QString&, const QString&, const QString& ) ),
+          this,     SLOT(   preferenceChanged( const QString&, const QString&, const QString& ) ) );
 
   // create menus & toolbars from XML file if required
   if ( myXmlHandler )
@@ -324,6 +336,8 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy )
   if ( menuMgr() )
     disconnect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ),
                this,      SLOT( onMenuHighlighted( int, int ) ) );
+  disconnect( getApp(), SIGNAL( preferenceChanged( const QString&, const QString&, const QString& ) ),
+             this,     SLOT(   preferenceChanged( const QString&, const QString&, const QString& ) ) );
 
   // remove menus & toolbars created from XML file if required
   if ( myXmlHandler )
@@ -361,6 +375,58 @@ bool SALOME_PYQT_Module::deactivateModule( SUIT_Study* theStudy )
   return SalomeApp_Module::deactivateModule( theStudy );
 }
 
+/*!
+ * Returns the status of last trying of module activation.
+ * Before fisrt activation - status is false
+*/
+bool SALOME_PYQT_Module::lastActivationStatus() const
+{
+  return myLastActivateStatus;
+}
+
+/*!
+  Preferences changing (application) - called when preference is changed
+*/
+void SALOME_PYQT_Module::preferenceChanged( const QString& module, 
+                                           const QString& section, 
+                                           const QString& setting )
+{
+  MESSAGE( "SALOME_PYQT_Module::preferenceChanged");
+
+  // perform synchronous request to Python event dispatcher
+  class Event : public PyInterp_LockRequest
+  {
+  public:
+    Event( PyInterp_base*      _py_interp,
+          SALOME_PYQT_Module* _obj,
+          const QString&      _section,
+          const QString&      _setting )
+      : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
+        myObj    ( _obj ),
+        mySection( _section ),
+        mySetting( _setting ) {}
+
+  protected:
+    virtual void execute()
+    {
+      myObj->prefChanged( mySection, mySetting );
+    }
+
+  private:
+    SALOME_PYQT_Module* myObj;
+    QString mySection, mySetting;
+  };
+
+  if ( module != moduleName() ) {
+    // Module's preferences are processed by preferencesChanged() method
+    // ...
+    // Posting the request only if dispatcher is not busy!
+    // Executing the request synchronously
+    if ( !PyInterp_Dispatcher::Get()->IsBusy() )
+      PyInterp_Dispatcher::Get()->Exec( new Event( myInterp, this, section, setting ) );
+  }
+}
+
 /*!
  * Called when study desktop is activated.
  * Used for notifying about changing of the active study.
@@ -538,6 +604,38 @@ void SALOME_PYQT_Module::contextMenuPopup( const QString& theContext, QPopupMenu
     PyInterp_Dispatcher::Get()->Exec( new PopupMenuEvent( myInterp, this, theContext, thePopupMenu ) );
 }
 
+/*!
+ * Export preferences for the Python module.
+ * Called only once when the first instance of the module is created.
+ */
+void SALOME_PYQT_Module::createPreferences()
+{
+  MESSAGE( "SALOME_PYQT_Module::createPreferences");
+  // perform synchronous request to Python event dispatcher
+  class Event : public PyInterp_LockRequest
+  {
+  public:
+    Event( PyInterp_base*      _py_interp,
+          SALOME_PYQT_Module* _obj )
+      : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
+        myObj    ( _obj )   {}
+
+  protected:
+    virtual void execute()
+    {
+      myObj->initPreferences();
+    }
+
+  private:
+    SALOME_PYQT_Module* myObj;
+  };
+
+  // Posting the request only if dispatcher is not busy!
+  // Executing the request synchronously
+  if ( !PyInterp_Dispatcher::Get()->IsBusy() )
+    PyInterp_Dispatcher::Get()->Exec( new Event( myInterp, this ) );
+}
+
 /*!
  * Defines the dockable window associated with the module.
  * To fill the list of windows the correspondind Python module's windows()
@@ -566,6 +664,44 @@ void SALOME_PYQT_Module::viewManagers( QStringList& listik ) const
   }
 }
 
+/*!
+  Preferences changing (module) - called when the module's preferences are changed
+*/
+void SALOME_PYQT_Module::preferencesChanged( const QString& section, const QString& setting )
+{
+  MESSAGE( "SALOME_PYQT_Module::preferencesChanged");
+
+  // perform synchronous request to Python event dispatcher
+  class Event : public PyInterp_LockRequest
+  {
+  public:
+    Event( PyInterp_base*      _py_interp,
+          SALOME_PYQT_Module* _obj,
+          const QString&      _section,
+          const QString&      _setting )
+      : PyInterp_LockRequest( _py_interp, 0, true ), // this request should be processed synchronously (sync == true)
+        myObj    ( _obj ),
+        mySection( _section ),
+        mySetting( _setting ) {}
+
+  protected:
+    virtual void execute()
+    {
+      myObj->prefChanged( mySection, mySetting );
+    }
+
+  private:
+    SALOME_PYQT_Module* myObj;
+    QString mySection, mySetting;
+  };
+
+  // Posting the request only if dispatcher is not busy!
+  // Executing the request synchronously
+  if ( !PyInterp_Dispatcher::Get()->IsBusy() )
+    PyInterp_Dispatcher::Get()->Exec( new Event( myInterp, this, section, setting ) );
+}
+
+
 /*!
  * Performs internal initialization
  * - initializes/gets the Python interpreter (one per study)
@@ -618,8 +754,7 @@ void SALOME_PYQT_Module::init( CAM_Application* app )
   // ... first put default values
   myWindowsMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft );
   myWindowsMap.insert( SalomeApp_Application::WT_PyConsole,     Qt::DockBottom );
-  // VSR: LogWindow is not yet implemented
-  // myWindowsMap.insert( SalomeApp_Application::WT_LogWindow,     Qt::DockBottom );
+  myWindowsMap.insert( SalomeApp_Application::WT_LogWindow,     Qt::DockBottom );
 
   if(PyObject_HasAttrString(myModule , "windows")){
     PyObjWrapper res1( PyObject_CallMethod( myModule, "windows", "" ) );
@@ -699,9 +834,15 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy )
 
   // call Python module's activate() method (for the new modules)
   if(PyObject_HasAttrString(myModule , "activate")){
-    PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) );
-    if( !res1 ) {
+    PyObject* res1 = PyObject_CallMethod( myModule, "activate", "" );
+    if ( !res1 || !PyBool_Check( res1 ) ) {
       PyErr_Print();
+      //= true: for support of old modules
+      myLastActivateStatus = true;
+    }
+    else {
+      //detect return status
+      myLastActivateStatus = PyObject_IsTrue( res1 );
     }
   }
 }
@@ -826,6 +967,7 @@ Engines::Component_var SALOME_PYQT_Module::getEngine() const
  */
 QString SALOME_PYQT_Module::engineIOR() const
 {
+  QString anIOR = QString::null;
   if ( !CORBA::is_nil( getEngine() ) )
     return QString( getApp()->orb()->object_to_string( getEngine() ) );
   return QString( "" );
@@ -946,6 +1088,31 @@ void SALOME_PYQT_Module::menuHighlight( const int menu, const int submenu )
   }
 }
 
+/*!
+ *  Initialises preferences for the module
+ *  - calls Python module's createPreferences() method
+ */
+void SALOME_PYQT_Module::initPreferences()
+{
+  // Python interpreter should be initialized and Python module should be
+  // import first
+  if ( !myInterp || !myModule )
+    return;
+
+  // temporary set myInitModule because createPreferences() method
+  // might be called during the module intialization process
+  myInitModule = this;
+
+  if ( PyObject_HasAttrString(myModule , "createPreferences") ) {
+    PyObjWrapper res( PyObject_CallMethod( myModule, "createPreferences", "" ) );
+    if( !res ) {
+      PyErr_Print();
+    }
+  }
+
+  myInitModule = 0;
+}
+
 /*!
  *  Initialises python subinterpreter (one per study)
  */
@@ -1067,6 +1234,29 @@ void SALOME_PYQT_Module::setWorkSpace()
   }                         //__CALL_OLD_METHODS__
 }
 
+/*!
+ *  Preference changing callback function
+ * - calls Python module's preferenceChanged(string,string,string) method
+ */
+void SALOME_PYQT_Module::prefChanged( const QString& section, const QString& setting )
+{
+  // Python interpreter should be initialized and Python module should be
+  // import first
+  if ( !myInterp || !myModule )
+    return;
+
+  if ( PyObject_HasAttrString(myModule , "preferenceChanged") ) {
+    PyObjWrapper res( PyObject_CallMethod( myModule,
+                                          "preferenceChanged", 
+                                          "ss", 
+                                          section.latin1(), 
+                                          setting.latin1() ) );
+    if( !res ) {
+      PyErr_Print();
+    }
+  }
+}
+
 /*!
  * Returns default menu group
  */
@@ -1241,6 +1431,7 @@ QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, co
   }
   return a;
 }
+
 /*! 
  * Load icon from resource file
  */
@@ -1434,6 +1625,47 @@ bool SALOME_PYQT_Module::clearMenu( const int id, const int menu, const bool rem
   return false;
 }
 
+/*!
+ * The next methods call the parent implementation.
+ * This is done to open protected methods from LightApp_Module class.
+ */
+
+int SALOME_PYQT_Module::addGlobalPreference( const QString& label )
+{
+  LightApp_Preferences* pref = preferences();
+  if ( !pref )
+    return -1;
+
+  return pref->addPreference( label, -1 );
+}
+
+int SALOME_PYQT_Module::addPreference( const QString& label )
+{
+  return SalomeApp_Module::addPreference( label );
+}
+                                      
+int SALOME_PYQT_Module::addPreference( const QString& label, 
+                                      const int pId, const int type,
+                                      const QString& section,
+                                      const QString& param )
+{
+  return SalomeApp_Module::addPreference( label, pId, type, section, param );
+}
+
+QVariant SALOME_PYQT_Module::preferenceProperty( const int id, 
+                                                const QString& prop ) const
+{
+  QVariant v = SalomeApp_Module::preferenceProperty( id, prop );
+  return v;
+}
+
+void SALOME_PYQT_Module::setPreferenceProperty( const int id, 
+                                               const QString& prop, 
+                                               const QVariant& var )
+{
+  SalomeApp_Module::setPreferenceProperty( id, prop, var );
+}
+
 // SALOME_PYQT_XmlHandler class implementation
 
 // gets an tag name for the dom element [ static ]
index 7d20a34008e7389ed54bb12f1035a97518643812..65def75f6289f823e55621a67a1bf4259b9b107a 100644 (file)
@@ -74,6 +74,9 @@ private:
   QMap<int, int>                   myWindowsMap;
   /* compatible view managers list */
   QStringList                      myViewMgrList;
+
+  /* status of last trying of module activation*/
+  bool                             myLastActivateStatus;
   
   /******************************
    * Construction/destruction
@@ -109,6 +112,9 @@ public:
   /* context popup menu request */
   void            contextMenuPopup( const QString&, QPopupMenu*, QString& );
 
+  /* create preferences */
+  void            createPreferences();
+
   /* get module engine IOR */
   virtual QString engineIOR() const;
 
@@ -147,16 +153,31 @@ public:
   /* load icon from resource file */
   QIconSet               loadIcon( const QString& fileName );
 
+  /* working with preferences : open protected methods */
+  int                    addGlobalPreference( const QString& );
+  int                    addPreference( const QString& );
+  int                    addPreference( const QString&, const int, const int = -1,
+                                       const QString& = QString::null,
+                                       const QString& = QString::null );
+  QVariant               preferenceProperty( const int, const QString& ) const;
+  void                   setPreferenceProperty( const int, const QString&, const QVariant& );
+
   /* Show/hide menus/toolbars */
   void                   setMenuShown( const bool );
   void                   setToolShown( const bool );
 
+  /* Preferences changing (module) */
+  void                   preferencesChanged( const QString&, const QString& );
+
 public slots:
   /* activation */
   virtual bool    activateModule( SUIT_Study* );
   /* deactivation */
   virtual bool    deactivateModule( SUIT_Study* );
 
+  /* Preferences changing (application) */
+  void            preferenceChanged( const QString&, const QString&, const QString& );
+
   /******************************
    * Internal methods
    ******************************/
@@ -182,6 +203,10 @@ private:
   void            init        ( CAM_Application* );
   /* internal activation */ 
   void            activate    ( SUIT_Study* );
+
+  /* getting status of last module activation */
+  bool            lastActivationStatus() const;
+
   /* internal deactivation */ 
   void            deactivate  ( SUIT_Study* );
   /* customization */ 
@@ -194,6 +219,8 @@ private:
   void            guiEvent( const int );
   /* Menu highlight processing */
   void            menuHighlight( const int, const int );
+  /* Init preferences */
+  void            initPreferences();
 
   /* initialize a Python subinterpreter */
   void            initInterp  ( int );
@@ -202,6 +229,9 @@ private:
   /* set workspace to Python GUI module */
   void            setWorkSpace();
 
+  /* preferences changing */
+  void            prefChanged( const QString&, const QString& );
+
   friend class SALOME_PYQT_XmlHandler;
 };
 
diff --git a/src/SALOME_PYQT/SalomePyQt/Makefile.am b/src/SALOME_PYQT/SalomePyQt/Makefile.am
new file mode 100644 (file)
index 0000000..50ee57d
--- /dev/null
@@ -0,0 +1,127 @@
+# 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
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# Sip flags
+SIP_FLAGS = -t WS_X11 -t $(QT_VERS) $(PYQT_SIPFLAGS) -s ".cc" -c . -I $(PYQT_SIPS)
+
+# Sip common sources
+SIP_SRC = sipSalomePyQtSalomePyQt.cc \
+         sipSalomePyQtSALOME_Selection.cc \
+          sipSalomePyQtQtxAction.cc
+
+# Sip version-specific sources
+if IS_SIP_V4
+SIP_SRC  += sipSalomePyQtcmodule.cc
+else !IS_SIP_V4
+SIP_SRC  += SalomePyQtcmodule.cc
+endif
+
+# Sip/moc sources and Sip definition files
+if IS_SIP_V4
+if IS_SIP_NEW
+MOC_SRC   = 
+MOC_H     = 
+SIP_FILES = SalomePyQt_v4.sip
+else !IS_SIP_NEW
+MOC_SRC   = sipSalomePyQtcmodule_moc.cxx
+MOC_H     = sipSalomePyQtcmodule.h
+SIP_FILES = SalomePyQt_v4.sip
+endif
+else !IS_SIP_V4
+SIP_FILES = SalomePyQt.sip
+if IS_SIP_NEW
+MOC_SRC   = SalomePyQtcmodule_moc.cxx
+MOC_H     = SalomePyQtcmodule.h
+else !IS_SIP_NEW
+MOC_SRC   = sipSalomePyQtProxySalomePyQt_moc.cxx
+MOC_H     = sipSalomePyQtProxySalomePyQt.h
+endif
+endif
+
+EXTRA_DIST+= SalomePyQt.sip SalomePyQt_v4.sip
+
+# Libraries targets
+MOC_FILES= SalomePyQt_moc.cxx
+
+COMMON_CPP_FLAGS=$(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) \
+       $(CAS_CPPFLAGS) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) \
+       -DHAVE_CONFIG_H @KERNEL_CXXFLAGS@ -I$(top_builddir)/salomeadn/unix \
+       -I$(top_builddir)/idl \
+       -I$(srcdir)/../../SUIT -I$(srcdir)/../../CAM -I$(srcdir)/../../STD \
+       -I$(srcdir)/../../Qtx -I$(srcdir)/../../SalomeApp -I$(srcdir)/../../Event \
+       -I$(srcdir)/../../SalomeSession -I$(srcdir)/../../LogWindow \
+       -I$(srcdir)/../../VTKViewer -I$(srcdir)/../../TOOLSGUI \
+       -I$(srcdir)/../SALOME_PYQT_GUI -I$(srcdir)/../../PyInterp \
+       -I$(srcdir)/../../LightApp -I$(srcdir)/../../ObjBrowser \
+       -I$(srcdir)/../../OBJECT \
+       -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+COMMON_LIBS=$(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) \
+       $(OGL_LIBS) ../../SUIT/libsuit.la ../../CAM/libCAM.la ../../STD/libstd.la \
+       ../../Qtx/libqtx.la ../../SalomeApp/libSalomeApp.la ../../Event/libEvent.la \
+       ../../Session/libSalomeSession.la ../../LogWindow/libLogWindow.la \
+       ../../VTKViewer/libVTKViewer.la ../../TOOLSGUI/libToolsGUI.la \
+       ../SALOME_PYQT_GUI/libSalomePyQtGUI.la
+
+if IS_SIP_V4
+
+lib_LTLIBRARIES = libSalomePyQt.la
+dist_libSalomePyQt_la_SOURCES= SalomePyQt.cxx
+nodist_libSalomePyQt_la_SOURCES= $(MOC_FILES) $(SIP_SRC) $(MOC_SRC) 
+libSalomePyQt_la_CPPFLAGS = $(COMMON_CPP_FLAGS)
+libSalomePyQt_la_LIBADD = $(COMMON_LIBS)
+
+else !IS_SIP_V4
+
+lib_LTLIBRARIES = libSalomePyQtcmodule.la
+dist_libSalomePyQtcmodule_la_SOURCES= SalomePyQt.cxx
+nodist_libSalomePyQtcmodule_la_SOURCES= $(MOC_FILES) $(SIP_SRC) $(MOC_SRC)
+libSalomePyQtcmodule_la_CPPFLAGS = $(MY_CPP_FLAGS)
+libSalomePyQtcmodule_la_LIBADD = $(COMMON_LIBS)
+
+endif
+
+if IS_SIP_V4
+else
+nodist_sharedpkgpython_PYTHON= SalomePyQt.py
+endif
+
+# Custom build step: generate C++ wrapping according to $(SIP_FILES)
+$(SIP_SRC): $(SIP_FILES)
+       $(SIP) $(SIP_FLAGS) $<
+
+$(MOC_H): $(SIP_FILES)
+       $(SIP) $(SIP_FLAGS) $<
+
+if IS_SIP_V4
+install-exec-hook: $(libdir)/SalomePyQt.so
+$(libdir)/SalomePyQt.so:
+       (cd $(libdir); ln -s libSalomePyQt.so SalomePyQt.so;)
+else !IS_SIP_V4
+install-exec-hook: $(libdir)/SalomePyQtcmodule.so
+$(libdir)/SalomePyQt.so:
+       (cd $(libdir); ln -sf libSalomePyQtcmodule.so SalomePyQt.so;)
+endif
+
+$(SIP_SRC): $(MOC_SRC)
diff --git a/src/SALOME_PYQT/SalomePyQt/Makefile.in b/src/SALOME_PYQT/SalomePyQt/Makefile.in
deleted file mode 100644 (file)
index 31a8456..0000000
+++ /dev/null
@@ -1,129 +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/ or email : webmaster.salome@opencascade.com
-#
-#  File   : Makefile.in
-#  Author : Nicolas REJNERI
-#  Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# small trick for Mandrake-10.1: PyQt 3.13 does not support Qt 3.3.3
-ifeq ($(QT_VERS),Qt_3_3_3)
-QT_VERS = Qt_3_3_0
-endif
-ifeq ($(QT_VERS),Qt_3_3_4)
-QT_VERS = Qt_3_3_0
-endif
-
-# Sip flags
-SIP_FLAGS = -t WS_X11 -t $(QT_VERS) $(PYQT_SIPFLAGS) -s ".cc" -c . -I $(PYQT_SIPS)
-
-# Sip common sources
-SIP_SRC = sipSalomePyQtSalomePyQt.cc \
-         sipSalomePyQtSALOME_Selection.cc \
-          sipSalomePyQtQtxAction.cc
-
-# Sip version-specific sources
-ifeq ($(SIP_VERS),v4_old)
-SIP_SRC  += sipSalomePyQtcmodule.cc
-else
-ifeq ($(SIP_VERS),v4_new)
-SIP_SRC  += sipSalomePyQtcmodule.cc
-else
-SIP_SRC  += SalomePyQtcmodule.cc
-endif
-endif
-
-# Sip/moc sources
-ifeq ($(SIP_VERS),v4_old)
-MOC_SRC   = sipSalomePyQtcmodule_moc.cxx
-MOC_H     = sipSalomePyQtcmodule.h
-else 
-ifeq ($(SIP_VERS),v3_new)
-MOC_SRC   = SalomePyQtcmodule_moc.cxx
-MOC_H     = SalomePyQtcmodule.h
-else
-ifeq ($(SIP_VERS),v3_old)
-MOC_SRC   = sipSalomePyQtProxySalomePyQt_moc.cxx
-MOC_H     = sipSalomePyQtProxySalomePyQt.h
-endif
-endif
-endif
-
-# Sip definition files
-ifeq ($(SIP_VERS),v4_old)
-SIP_FILES = SalomePyQt_v4.sip
-else
-ifeq ($(SIP_VERS),v4_new)
-SIP_FILES = SalomePyQt_v4.sip
-else
-SIP_FILES = SalomePyQt.sip
-endif 
-endif 
-
-# Libraries targets
-ifeq ($(SIP_VERS),v4_old)
-LIB = SalomePyQt.so
-else
-ifeq ($(SIP_VERS),v4_new)
-LIB = SalomePyQt.so
-else
-LIB = libSalomePyQtcmodule.la
-endif 
-endif 
-
-# Exported python scripts
-ifeq ($(SIP_VERS),v3_old)
-EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
-else
-ifeq ($(SIP_VERS),v3_new)
-EXPORT_SHAREDPYSCRIPTS = SalomePyQt.py
-endif
-endif
-
-# Library sources
-LIB_SRC = SalomePyQt.cxx \
-          $(SIP_SRC)     \
-          $(MOC_SRC) 
-
-# Library moc sources
-LIB_MOC = SalomePyQt.h
-
-# Client IDL
-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 $(KERNEL_CXXFLAGS)
-LIBS     += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
-LDFLAGS  += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI
-
-
-# Custom build step: generate C++ wrapping according to $(SIP_FILES)
-$(SIP_SRC): $(SIP_FILES)
-       $(SIP) $(SIP_FLAGS) $<
-
-$(MOC_SRC): $(MOC_H)
-       $(MOC) $< -o $@
-
-@CONCLUDE@
index d76d0bd1d774ab015cb3ff5a7c83393f3c996bb6..15ee7c264881986af28e8d79d8f2a8f29ec06af6 100644 (file)
@@ -39,6 +39,7 @@
 #include "LightApp_SelectionMgr.h"
 #include "OB_Browser.h"
 #include "QtxAction.h"
+#include "LogWindow.h"
 
 using namespace std;
 
@@ -495,6 +496,35 @@ void SalomePyQt::addDoubleSetting( const QString& name, const double value, bool
   ProcessVoidEvent( new TEvent( name, value, autoValue ) );
 }
 
+/*!
+  SalomePyQt::addBoolSetting
+  Adds an boolean setting to the application preferences
+  <autoValue> parameter is obsolete parameter and currently not used. To be removed lately.
+  This function is obsolete. Use addSetting() instead.
+*/
+void SalomePyQt::addBoolSetting( const QString& name, const bool value, bool autoValue )
+{
+  class TEvent: public SALOME_Event {
+    QString myName;
+    bool    myValue;
+    bool    myAutoValue;
+  public:
+    TEvent( const QString& name, const bool value, bool autoValue ) 
+      : myName( name ), myValue( value ), myAutoValue( autoValue ) {}
+    virtual void Execute() {
+      if ( SUIT_Session::session() ) {
+        SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+       QStringList sl = QStringList::split( ":", myName );
+       QString _sec = sl.count() > 1 ? sl[ 0 ].stripWhiteSpace() : QString( DEFAULT_SECTION );
+       QString _nam = sl.count() > 1 ? sl[ 1 ].stripWhiteSpace() : sl.count() > 0 ? sl[ 0 ].stripWhiteSpace() : QString( "" );
+       if ( !_sec.isEmpty() && !_nam.isEmpty() )
+          resMgr->setValue( _sec, _nam, myValue );
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( name, value, autoValue ) );
+}
+
 /*!
   SalomePyQt::removeSettings
   Removes a setting from the application preferences
@@ -601,6 +631,32 @@ void SalomePyQt::addSetting( const QString& section, const QString& name, const
   ProcessVoidEvent( new TEvent( section, name, value ) );
 }
 
+/*!
+  SalomePyQt::addSetting
+  Adds a boolean setting to the application preferences
+  (note: the last "dumb" parameter is used in order to avoid
+  sip compilation error because of conflicting int and bool types)
+*/
+void SalomePyQt::addSetting( const QString& section, const QString& name, const bool value, const int )
+{
+  class TEvent: public SALOME_Event {
+    QString mySection;
+    QString myName;
+    bool    myValue;
+  public:
+    TEvent( const QString& section, const QString& name, bool value ) 
+      : mySection( section ), myName( name ), myValue( value ) {}
+    virtual void Execute() {
+      if ( SUIT_Session::session() ) {
+        SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+       if ( !mySection.isEmpty() && !myName.isEmpty() )
+          resMgr->setValue( mySection, myName, myValue );
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( section, name, value ) );
+}
+
 /*!
   SalomePyQt::addSetting
   Adds a string setting to the application preferences
@@ -702,7 +758,7 @@ public:
 /*!
   \return an double setting from the application preferences
 */
-double SalomePyQt::doubleSetting( const QString& section, const QString& name, const int def )
+double SalomePyQt::doubleSetting( const QString& section, const QString& name, const double def )
 {
   return ProcessEvent( new TGetDblSettingEvent( section, name, def ) );
 }
@@ -816,6 +872,30 @@ void SalomePyQt::removeSetting( const QString& section, const QString& name )
   ProcessVoidEvent( new TEvent( section, name ) );
 }
 
+/*!
+  SalomePyQt::hasSetting
+  Returns True if the settings exists
+*/
+class THasColorSettingEvent: public SALOME_Event {
+public:
+  typedef bool TResult;
+  TResult myResult;
+  QString mySection;
+  QString myName;
+  THasColorSettingEvent( const QString& section, const QString& name ) 
+    : mySection( section ), myName( name ) {}
+  virtual void Execute() {
+    if ( SUIT_Session::session() ) {
+      SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+      myResult = resMgr->hasValue( mySection, myName );
+    }
+  }
+};
+bool SalomePyQt::hasSetting( const QString& section, const QString& name )
+{
+  return ProcessEvent( new THasColorSettingEvent( section, name ) );
+}
+
 /*!
   SalomePyQt::getFileName
   Displays 'Open/Save file' dialog box and returns a user's choice (file name)
@@ -1364,3 +1444,250 @@ bool SalomePyQt::clearMenu( const int id, const int menu, const bool removeActio
   return ProcessEvent( new TClearMenuEvent( id, menu, removeActions ) );
 }
 
+/*!
+  SalomePyQt::addGlobalPreference
+  Adds global (not module) preferences group 
+ */
+class TAddGlobalPrefEvent: public SALOME_Event {
+public:
+  typedef int TResult;
+  TResult myResult;
+  QString myLabel;
+  TAddGlobalPrefEvent( const QString& label )
+    : myResult( -1 ), myLabel( label ) {}
+  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->addGlobalPreference( myLabel );
+    }
+  }
+};
+int SalomePyQt::addGlobalPreference( const QString& label )
+{
+  return ProcessEvent( new TAddGlobalPrefEvent( label ) );
+}
+
+/*!
+  SalomePyQt::addPreference
+  Adds preference 
+ */
+class TAddPrefEvent: public SALOME_Event {
+public:
+  typedef int TResult;
+  TResult myResult;
+  QString myLabel;
+  TAddPrefEvent( const QString& label )
+    : myResult( -1 ), myLabel( label ) {}
+  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->addPreference( myLabel );
+    }
+  }
+};
+int SalomePyQt::addPreference( const QString& label )
+{
+  return ProcessEvent( new TAddPrefEvent( label ) );
+}
+
+/*!
+  SalomePyQt::addPreference
+  Adds preference 
+ */
+class TAddPrefParamEvent: public SALOME_Event {
+public:
+  typedef int TResult;
+  TResult myResult;
+  QString myLabel;
+  int     myPId;
+  int     myType;
+  QString mySection;
+  QString myParam;
+  TAddPrefParamEvent( const QString& label, 
+                     const int pId, const int type,
+                     const QString& section, 
+                     const QString& param )
+    : myResult( -1 ),
+      myLabel( label ), myPId( pId ), myType( type ), 
+      mySection( section ), myParam ( param ) {}
+  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->addPreference( myLabel, myPId, myType, mySection, myParam );
+    }
+  }
+};
+int SalomePyQt::addPreference( const QString& label, const int pId, const int type,
+                              const QString& section, const QString& param )
+{
+  return ProcessEvent( new TAddPrefParamEvent( label, pId, type, section, param ) );
+}
+
+/*!
+  SalomePyQt::preferenceProperty
+  Gets the property value for the given (by id) preference
+ */
+class TPrefPropEvent: public SALOME_Event {
+public:
+  typedef QVariant TResult;
+  TResult myResult;
+  int     myId;
+  QString myProp;
+  TPrefPropEvent( const int id, const QString& prop )
+    : myId( id ), myProp( prop )
+  { 
+    myResult = QVariant();
+  }
+  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->preferenceProperty( myId, myProp );
+    }
+  }
+};
+QVariant SalomePyQt::preferenceProperty( const int id, const QString& prop )
+{
+  return ProcessEvent( new TPrefPropEvent( id, prop ) );
+}
+
+/*!
+  SalomePyQt::setPreferenceProperty
+  Sets the property value for the given (by id) preference
+ */
+void SalomePyQt::setPreferenceProperty( const int id, 
+                                       const QString& prop,
+                                       const QVariant& var )
+{
+  class TEvent: public SALOME_Event {
+    int      myId;
+    QString  myProp;
+    QVariant myVar;
+  public:
+    TEvent( const int id, const QString& prop, const QVariant& var ) 
+      : myId( id ), myProp( prop ), myVar( var ) {}
+    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 )
+         module->setPreferenceProperty( myId, myProp, myVar );
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( id, prop, var) );
+}
+
+/*!
+  SalomePyQt::addPreferenceProperty
+  Adds the property value to the list of values 
+  for the given (by id) preference
+
+  This method allows creating properties which are QValueList<QVariant>
+  - there is no way to pass such values directly to QVariant parameter
+  from Python
+ */
+void SalomePyQt::addPreferenceProperty( const int id, 
+                                       const QString& prop,
+                                       const int idx, 
+                                       const QVariant& var )
+{
+  class TEvent: public SALOME_Event {
+    int      myId;
+    QString  myProp;
+    int      myIdx;
+    QVariant myVar;
+  public:
+    TEvent( const int id, const QString& prop, const int idx, const QVariant& var ) 
+      : myId( id ), myProp( prop ), myIdx( idx), myVar( var ) {}
+    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 ) {
+         QVariant var =  module->preferenceProperty( myId, myProp );
+         if ( var.isValid() ) {
+           if ( var.type() == QVariant::StringList ) {
+             QStringList sl = var.asStringList();
+             if ( myIdx >= 0 && myIdx < sl.count() ) 
+               sl[myIdx] = myVar.asString();
+             else
+               sl.append( myVar.asString() );
+             module->setPreferenceProperty( myId, myProp, sl );
+           }
+           else if ( var.type() == QVariant::List ) {
+             QValueList<QVariant> vl = var.asList();
+             if ( myIdx >= 0 && myIdx < vl.count() ) 
+               vl[myIdx] = myVar;
+             else
+               vl.append( myVar );
+             module->setPreferenceProperty( myId, myProp, vl );
+           }
+         }
+         else {
+           QValueList<QVariant> vl;
+           vl.append( myVar );
+           module->setPreferenceProperty( myId, myProp, vl );
+         }
+       }
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( id, prop, idx, var) );
+}
+
+/*!
+  SalomePyQt::message
+  Puts the message to the Log output window
+ */
+void SalomePyQt::message( const QString& msg, bool addSeparator )
+{
+  class TEvent: public SALOME_Event {
+    QString  myMsg;
+    bool     myAddSep;
+  public:
+    TEvent( const QString& msg, bool addSeparator ) 
+      : myMsg( msg ), myAddSep( addSeparator ) {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       LogWindow* lw = anApp->logWindow();
+       if ( lw )
+         lw->putMessage( myMsg, myAddSep );
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( msg, addSeparator ) );
+}
+
+/*!
+  SalomePyQt::clearMessages
+  Removes all the messages from the Log output window
+ */
+void SalomePyQt::clearMessages()
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       LogWindow* lw = anApp->logWindow();
+       if ( lw )
+         lw->clear();
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent() );
+}
index b656cd1c0c19267b5e58ccf67e237d559075a36c..d160c193caab818567983583b48dbe3567c252bc 100644 (file)
@@ -25,6 +25,7 @@
 #include <qcolor.h>
 
 #include <LightApp_Application.h>
+#include <LightApp_Preferences.h>
 
 class LightApp_SelectionMgr;
 class SalomeApp_Application;
@@ -73,6 +74,23 @@ enum {
   WT_User          = LightApp_Application::WT_User
 };
 
+enum { 
+  PT_Space    = LightApp_Preferences::Space,
+  PT_Bool     = LightApp_Preferences::Bool, 
+  PT_Color    = LightApp_Preferences::Color,
+  PT_String   = LightApp_Preferences::String, 
+  PT_Selector = LightApp_Preferences::Selector, 
+  PT_DblSpin  = LightApp_Preferences::DblSpin, 
+  PT_IntSpin  = LightApp_Preferences::IntSpin, 
+  PT_Double   = LightApp_Preferences::Double, 
+  PT_Integer  = LightApp_Preferences::Integer, 
+  PT_GroupBox = LightApp_Preferences::GroupBox, 
+  PT_Font     = LightApp_Preferences::Font, 
+  PT_DirList  = LightApp_Preferences::DirList, 
+  PT_File     = LightApp_Preferences::File, 
+  PT_User     = LightApp_Preferences::User
+};
+
 class SalomePyQt
 {
 public:
@@ -129,20 +147,41 @@ public:
 
   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 bool, const int );
   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 double            doubleSetting ( const QString&, const QString&, const double = 0 );
   static bool              boolSetting   ( const QString&, const QString&, const bool = 0 );
   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& );
+  static bool              hasSetting    ( const QString&, const QString& );
   // obsolete
   static void              addStringSetting( const QString&, const QString&, bool = true );
   static void              addIntSetting   ( const QString&, const int,      bool = true );
+  static void              addBoolSetting  ( const QString&, const bool,     bool = true );
   static void              addDoubleSetting( const QString&, const double,   bool = true );
   static void              removeSettings  ( const QString& );
   static QString           getSetting      ( const QString& );
+
+  static int               addGlobalPreference( const QString& );
+  static int               addPreference( const QString& );
+  static int               addPreference( const QString&,
+                                          const int, const int = -1,
+                                          const QString& = QString::null,
+                                         const QString& = QString::null );
+  static QVariant          preferenceProperty( const int, const QString& );
+  static void              setPreferenceProperty( const int, 
+                                                  const QString&,
+                                                  const QVariant& );
+  static void              addPreferenceProperty( const int,
+                                                 const QString&,
+                                                 const int,
+                                                 const QVariant& );
+
+  static void              message( const QString&, bool = true );
+  static void              clearMessages();
 };
 
 #endif // SALOME_PYQT_H
index dcb6501786d0fec147cca9f9aa74aed89d50ccdc..f73f7b0ea0e5db98789cf3b46c528ec5d06b4d24 100644 (file)
@@ -46,6 +46,23 @@ enum WindowType {
   WT_User
 };
 
+enum PrefType { 
+  PT_Space,
+  PT_Bool, 
+  PT_Color,
+  PT_String, 
+  PT_Selector, 
+  PT_DblSpin, 
+  PT_IntSpin, 
+  PT_Double, 
+  PT_Integer, 
+  PT_GroupBox, 
+  PT_Font, 
+  PT_DirList, 
+  PT_File, 
+  PT_User
+};
+
 class QtxAction : QAction
 {
 %TypeHeaderCode
@@ -116,19 +133,39 @@ public:
 
   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 bool, const int );
   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 double            doubleSetting ( const QString&, const QString&, double = 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& );
+  static bool              hasSetting    ( const QString&, const QString& );
 
 // obsolete
   static void              addStringSetting( const QString&, const QString&, bool = true );
   static void              addIntSetting   ( const QString&, const int,      bool = true );
   static void              addDoubleSetting( const QString&, const double,   bool = true );
+  static void              addBoolSetting  ( const QString&, const bool,     bool = true );
   static void              removeSettings  ( const QString& );
   static QString           getSetting      ( const QString& );
+
+  static int               addGlobalPreference( const QString& );
+  static int               addPreference( const QString& );
+  static int               addPreference( const QString&, const int, int = -1,
+                                         const QString& = QString::null,
+                                         const QString& = QString::null );
+  static QVariant          preferenceProperty( const int, const QString& );
+  static void              setPreferenceProperty( const int, 
+                                                  const QString&,
+                                                 const QVariant& );
+  static void              addPreferenceProperty( const int, 
+                                                  const QString&,
+                                                 const int, 
+                                                 const QVariant& );
+
+  static void              message( const QString&, bool = true );
+  static void              clearMessages();
 };
index 3d0196f88ada474ff0e9dfd4d5492fe2023dc745..91419367b8993c6b7fb94f0238d5fe60477f0ebc 100644 (file)
 
 %Import qtmod.sip
 
+%ExportedHeaderCode
+#include <SalomePyQt.h>
+%End
+
 class SALOME_Selection : QObject
 {
 %TypeHeaderCode
@@ -18,9 +22,9 @@ class SALOME_Selection : QObject
 %End
 
 public:
-  void Clear();
-  void ClearIObjects();
-  void ClearFilters();
+  void Clear() /ReleaseGIL/ ;
+  void ClearIObjects() /ReleaseGIL/ ;
+  void ClearFilters() /ReleaseGIL/ ;
 
 private:
   SALOME_Selection( QObject* /TransferThis/ );
@@ -29,6 +33,8 @@ signals:
   void currentSelectionChanged();
 };
 
+//%ExportedHeaderCode
+
 enum MenuName {
   File        = 1,
   View        = 2,
@@ -46,12 +52,30 @@ enum WindowType {
   WT_User
 };
 
+enum PrefType { 
+  PT_Space,
+  PT_Bool, 
+  PT_Color,
+  PT_String, 
+  PT_Selector, 
+  PT_DblSpin, 
+  PT_IntSpin, 
+  PT_Double, 
+  PT_Integer, 
+  PT_GroupBox, 
+  PT_Font, 
+  PT_DirList, 
+  PT_File, 
+  PT_User
+};
+
+//%End
+
 class QtxAction : QAction
 {
 %TypeHeaderCode
 #include <QtxAction.h>
 %End
-
 private:
   QtxAction(const QtxAction &);
 };
@@ -63,71 +87,93 @@ class SalomePyQt
 %End
 
 public:
-  static QWidget*          getDesktop();
-  static QWidget*          getMainFrame();
-  static QMenuBar*         getMainMenuBar();
-  static QPopupMenu*       getPopupMenu( const MenuName );
-  static SALOME_Selection* getSelection() /Factory/;
-  static int               getStudyId();
-  static void              putInfo( const QString&, const int = 0 );
-  static const QString     getActiveComponent();
-  static void              updateObjBrowser( const int = 0, bool = true );
+  static QWidget*          getDesktop() /ReleaseGIL/ ;
+  static QWidget*          getMainFrame() /ReleaseGIL/ ;
+  static QMenuBar*         getMainMenuBar() /ReleaseGIL/ ;
+  static QPopupMenu*       getPopupMenu( const MenuName ) /ReleaseGIL/ ;
+  static SALOME_Selection* getSelection() /Factory,ReleaseGIL/ ;
+  static int               getStudyId() /ReleaseGIL/ ;
+  static void              putInfo( const QString&, const int = 0 ) /ReleaseGIL/ ;
+  static const QString     getActiveComponent() /ReleaseGIL/ ;
+  static void              updateObjBrowser( const int = 0, bool = true ) /ReleaseGIL/ ;
 
   static QString           getFileName         ( QWidget*, const QString&, const QStringList&, const QString&, bool ) /ReleaseGIL/ ;
   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 void              helpContext( const QString&, const QString& ) /ReleaseGIL/ ;
 
-  static bool              dumpView( const QString& );
+  static bool              dumpView( const QString& ) /ReleaseGIL/ ;
 
-  static int               defaultMenuGroup();
+  static int               defaultMenuGroup() /ReleaseGIL/ ;
 
-  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 );
-  static int               createTool( QtxAction*, const int,      const int = -1, const int = -1 );
-  static int               createTool( QtxAction*, const QString&, const int = -1, const int = -1 );
+  static int               createTool( const QString& ) /ReleaseGIL/ ;
+  static int               createTool( const int,  const int,      const int = -1 ) /ReleaseGIL/ ;
+  static int               createTool( const int,  const QString&, const int = -1 ) /ReleaseGIL/ ;
+  static int               createTool( QtxAction*, const int,      const int = -1, const int = -1 ) /ReleaseGIL/ ;
+  static int               createTool( QtxAction*, const QString&, const int = -1, const int = -1 ) /ReleaseGIL/ ;
 
   static int               createMenu( const QString&, const int,
-                                      const int = -1, const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 ) /ReleaseGIL/ ;
   static int               createMenu( const QString&, const QString&, 
-                                      const int = -1, const int = -1, const int = -1 );
+                                      const int = -1, const int = -1, const int = -1 ) /ReleaseGIL/ ;
   static int               createMenu( const int,      const int,
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1 ) /ReleaseGIL/ ;
   static int               createMenu( const int,      const QString&, 
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1 ) /ReleaseGIL/ ;
   static int               createMenu( QtxAction*,     const int,      const int = -1, 
-                                      const int = -1, const int = -1 );
+                                      const int = -1, const int = -1 ) /ReleaseGIL/ ;
   static int               createMenu( QtxAction*,     const QString&, const int = -1, 
-                                      const int = -1, const int = -1 );
-  static QtxAction*        createSeparator();
+                                      const int = -1, const int = -1 ) /ReleaseGIL/ ;
+  static QtxAction*        createSeparator() /ReleaseGIL/ ;
 
   static QtxAction*        createAction( const int, const QString&, 
                                         const QString& = QString::null, const QString& = QString::null, 
-                                        const QString& = QString::null, const int = 0, const bool = false );
+                                        const QString& = QString::null, const int = 0, const bool = false ) /ReleaseGIL/ ;
 
-  static QtxAction*        action( const int );
-  static int               actionId( const QtxAction* );
+  static QtxAction*        action( const int ) /ReleaseGIL/ ;
+  static int               actionId( const QtxAction* ) /ReleaseGIL/ ;
 
   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 = 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& );
+                                     const bool = true ) /ReleaseGIL/ ;
+
+  static void              addSetting    ( const QString&, const QString&, const double ) /ReleaseGIL/ ;
+  static void              addSetting    ( const QString&, const QString&, const int /Constrained/ ) /ReleaseGIL/ ;
+  static void              addSetting    ( const QString&, const QString&, const bool, const int ) /ReleaseGIL/ ;
+  static void              addSetting    ( const QString&, const QString&, const QString& ) /ReleaseGIL/ ;
+  static void              addSetting    ( const QString&, const QString&, const QColor& ) /ReleaseGIL/ ;
+  static int               integerSetting( const QString&, const QString&, const int = 0 ) /ReleaseGIL/ ;
+  static double            doubleSetting ( const QString&, const QString&, const double = 0 ) /ReleaseGIL/ ;
+  static bool              boolSetting   ( const QString&, const QString&, const bool = false ) /ReleaseGIL/ ;
+  static QString           stringSetting ( const QString&, const QString&, const QString& = QString("") ) /ReleaseGIL/ ;
+  static QColor            colorSetting  ( const QString&, const QString&, const QColor& = QColor() ) /ReleaseGIL/ ;
+  static void              removeSetting ( const QString&, const QString& ) /ReleaseGIL/ ;
+  static bool              hasSetting    ( const QString&, const QString& ) /ReleaseGIL/ ;
 
 // obsolete
-  static void              addStringSetting( const QString&, const QString&, bool = true );
-  static void              addIntSetting   ( const QString&, const int,      bool = true );
-  static void              addDoubleSetting( const QString&, const double,   bool = true );
-  static void              removeSettings  ( const QString& );
-  static QString           getSetting      ( const QString& );
+  static void              addStringSetting( const QString&, const QString&, bool = true ) /ReleaseGIL/ ;
+  static void              addIntSetting   ( const QString&, const int,      bool = true ) /ReleaseGIL/ ;
+  static void              addDoubleSetting( const QString&, const double,   bool = true ) /ReleaseGIL/ ;
+  static void              addBoolSetting  ( const QString&, const bool,     bool = true ) /ReleaseGIL/ ;
+  static void              removeSettings  ( const QString& ) /ReleaseGIL/ ;
+  static QString           getSetting      ( const QString& ) /ReleaseGIL/ ;
+
+  static int               addGlobalPreference( const QString& ) /ReleaseGIL/ ;
+  static int               addPreference( const QString& ) /ReleaseGIL/ ;
+  static int               addPreference( const QString&,
+                                          const int, const int = -1,
+                                          const QString& = QString::null,
+                                         const QString& = QString::null ) /ReleaseGIL/ ;
+  static QVariant          preferenceProperty( const int, const QString& ) /ReleaseGIL/ ;
+  static void              setPreferenceProperty( const int, 
+                                                  const QString&,
+                                                  const QVariant& ) /ReleaseGIL/ ;
+  static void              addPreferenceProperty( const int, 
+                                                  const QString&, 
+                                                 const int, 
+                                                 const QVariant& ) /ReleaseGIL/ ;
+
+  static void              message( const QString&, bool = true ) /ReleaseGIL/ ;
+  static void              clearMessages() /ReleaseGIL/ ;
 };
+
diff --git a/src/SALOME_SWIG/Help.py b/src/SALOME_SWIG/Help.py
new file mode 100755 (executable)
index 0000000..404ee4d
--- /dev/null
@@ -0,0 +1,141 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Help.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+class SalomeDoc:
+    def __init__(self, aDoc):
+        self.doc = aDoc
+    def __repr__(self):
+        print self.doc
+        return "---"
+    def salome(self):
+        doc_salome = '''
+MODULE : salome
+---------------
+module salome gives access to Salome ressources:
+variables:
+
+  salome:orb             : CORBA
+  salome.naming_service  : instance of naming Service class
+      methods:
+          Resolve(name)  : find a CORBA object (ior) by its pathname
+          Register(name) : register a CORBA object under a pathname
+  salome.lcc             : instance of lifeCycleCORBA class
+      methods:
+          FindOrLoadComponent(server,name) :
+                           obtain an Engine (CORBA object)
+                           or launch the Engine if not found,
+                           with a Server name and an Engine name
+  salome.sg
+      methods:
+         updateObjBrowser(bool):
+         getActiveStudyId():
+         getActiveStudyName():
+         
+         SelectedCount():      returns number of selected objects
+         getSelected(i):       returns entry of selected object number i
+         getAllSelected():     returns list of entry of selected objects
+         AddIObject(Entry):    select an existing Interactive object
+         RemoveIObject(Entry): remove object from selection
+         ClearIObjects():      clear selection
+         
+         Display(*Entry):
+         DisplayOnly(Entry):
+         Erase(Entry):
+         DisplayAll():
+         EraseAll():
+
+         IDToObject(Entry):    returns CORBA reference from entry
+
+  salome.myStudyName     : active Study Name
+  salome.myStudyId       : active Study Id
+  salome.myStudy         : the active Study itself (CORBA ior)
+                           methods : defined in SALOMEDS.idl
+                                                         
+methods:
+  salome.DumpStudy(study) : Dump a study, given the ior
+---
+'''
+        print doc_salome
+        
+    def geompy(self):
+        doc_geompy = '''
+MODULE : geompy
+---------------
+module geompy provides an encapsulation of GEOM Engine methods
+variables:
+  geompy.geom               : a Geometry Engine, found or loaded
+                              at first import of module geompy.
+                              methods : defined in GEOM_Gen.idl
+  geompy.myBuilder          : a study builder
+  geompy.father             : GEOM root in current study (salome.myStudy)
+
+methods:
+  addToStudy(aShape, aName) : add the shape into the current study
+  --- all methods of GEOM_Gen.idl that returns a shape are encapsulated,
+      with the same interface : shapes are named with their ior
+'''
+        print doc_geompy
+        
+    def supervision(self):
+        doc_supervision = '''
+MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor
+-----------------------------------------------------------------
+this modules provide access to Editor and Executor Engine methods
+
+See SUPERV.idl
+
+In order to run the example (supervisionexample.py)
+
+    Type : from supervisionexample import *
+           supervisionexample.py contains comments
+
+A new python example avoids references to LifeCycleCORBA
+                     avoids references to NamingService
+                     avoids references to ModuleCatalog
+                     avoids SuperVisionComponent creation
+                     allows G.Input(...) instead of AddInput(G,...)
+                     replaces Editor/Executor with Graph
+                     allows Nodes, Ports and Links CORBA objects
+                     shortens methods names
+                     ...
+
+    See /SuperVisionTest/resources/GraphExample.py
+                                   and GraphExample.xml
+---
+'''
+        print doc_supervision
+        
+    
+
+help = SalomeDoc('''
+Availables modules:
+  salome      : gives access to Salome ressources
+  geompy      : encapsulation of GEOM Engine methods
+  supervision : gives access to SuperVision Engine
+To obtain specific help on a module "truc", type: help.truc()
+To run an example, type: import example3
+''')
+  
diff --git a/src/SALOME_SWIG/Makefile.am b/src/SALOME_SWIG/Makefile.am
new file mode 100755 (executable)
index 0000000..f5a184e
--- /dev/null
@@ -0,0 +1,116 @@
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+#
+# Step 1: build the wrapping source files with swig
+#
+# libSALOME_LifeCycleCORBA.i -- swig --> swig_wrap.cpp
+#                                        libSALOME_Swig.py
+#
+# Step 2: build the dynamic library from cpp built source files and
+#         dependant libraries.
+#
+# swig_wrap.cpp -- gcc --> swig_wrap.o    |-- link --> _libSALOME_Swig.la
+#                          +              |
+#                          dependant libs |
+#
+# The file libSALOME_Swigcmodule.py will be installed in
+# <prefix>/lib/python<version>/site-package/salome.
+# The library will be installed in the same place.
+#
+
+# this option puts it to dist
+#BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS    = @SWIG_FLAGS@ -I$(srcdir)
+SWIG_SOURCES  = libSALOME_Swig.i
+
+nodist_pkgpython_DATA = libSALOME_Swig.py
+libSALOME_Swig.py: swig_wrap.cpp
+
+# library
+lib_LTLIBRARIES = libSALOME_Swigcmodule.la
+libSALOME_Swigcmodule_la_SOURCES  = $(BUILT_SOURCES) $(SWIG_SOURCES) SALOMEGUI_Swig.cxx
+nodist_libSALOME_Swigcmodule_la_SOURCES = swig_wrap.cpp
+salomeinclude_HEADERS= SALOMEGUI_Swig.hxx SALOMEGUI_Swig.i
+
+libSALOME_Swigcmodule_la_CPPFLAGS =\
+       $(QT_INCLUDES) $(PYTHON_INCLUDES) $(CAS_CPPFLAGS) $(VTK_INCLUDES) \
+       $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H @KERNEL_CXXFLAGS@ \
+       -I$(top_builddir)/salome_adm/unix -I$(top_builddir)/idl \
+       -I$(srcdir)/../SalomeApp -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT \
+       -I$(srcdir)/../ObjBrowser -I$(srcdir)/../LightApp -I$(srcdir)/../SOCC \
+       -I$(srcdir)/../SVTK -I$(srcdir)/../Event -I$(srcdir)/../OBJECT \
+       -I$(srcdir)/../CAM -I$(srcdir)/../STD -I$(srcdir)/../OCCViewer \
+       -I$(srcdir)/../Prs -I$(srcdir)/../VTKViewer -I$(srcdir)/../SPlot2d \
+       -I$(srcdir)/../Plot2d \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+libSALOME_Swigcmodule_la_LDFLAGS  = -module
+libSALOME_Swigcmodule_la_LIBADD   = \
+       ../SalomeApp/libSalomeApp.la \
+       @PYTHON_LIBS@
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = swig_wrap.cpp
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Scripts to be installed.
+dist_salomescript_DATA= \
+       examplevtk1.py \
+       test_table.py \
+       test_big_table.py \
+       test_many_objects.py \
+       test_remove_ref.py \
+       libSALOME_Swig.py
+
+nodist_salomescript_DATA= \
+       supervisionexample.py \
+       supervisiongeomexample.py
+
+EXTRA_DIST+= \
+       supervisionexample.py.in \
+       supervisiongeomexample.py.in
+
+sharedpkgpython_PYTHON= SALOMEGUI_shared_modules.py
+
+install-exec-hook: $(libdir)/_libSALOME_Swig.so
+
+$(libdir)/_libSALOME_Swig.so:
+       (cd $(libdir); ln -sf libSALOME_Swigcmodule.so _libSALOME_Swig.so;)
diff --git a/src/SALOME_SWIG/Makefile.in b/src/SALOME_SWIG/Makefile.in
deleted file mode 100755 (executable)
index 80cc9da..0000000
+++ /dev/null
@@ -1,57 +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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Paul RASCLE, EDF
-#  Module : SALOME
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= SALOMEGUI_Swig.hxx \
-               SALOMEGUI_Swig.i
-
-# Libraries targets
-
-LIB = libSALOME_Swigcmodule.la
-LIB_SRC = SALOMEGUI_Swig.cxx
-
-LIB_CLIENT_IDL = SALOMEDS.idl \
-                 SALOME_Exception.idl \
-                SALOME_GenericObj.idl
-
-SWIG_DEF = libSALOME_Swig.i
-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 $(KERNEL_CXXFLAGS)
-LIBS+= $(PYTHON_LIBS)
-LDFLAGS+= -lSalomeApp
-
-@CONCLUDE@
diff --git a/src/SALOME_SWIG/PyInterp.py b/src/SALOME_SWIG/PyInterp.py
new file mode 100755 (executable)
index 0000000..3e0133d
--- /dev/null
@@ -0,0 +1,102 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : PyInterp.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import sys
+from omniORB import CORBA
+from LifeCycleCORBA import *
+from libSALOME_Swig import *
+import SALOMEDS
+from SALOME_NamingServicePy import *
+
+    #--------------------------------------------------------------------------
+
+def DumpComponent(Study, SO, offset):
+    it = Study.NewChildIterator(SO)
+    Builder = Study.NewBuilder()
+    while it.More():
+        CSO = it.Value()
+        it.Next()
+        anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
+        AtName = anAttr._narrow(SALOMEDS.AttributeName)
+        t_name = AtName.Value()
+        if t_name[0] == 1:
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "--"
+                ofs = ofs +1
+            print a + ">" + CSO.GetID() + " " + t_name[1]
+        t_RefSO = CSO.ReferencedObject()
+        if t_RefSO[0] == 1:
+            RefSO = t_RefSO[1]
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "  "
+                ofs = ofs +1
+            print a + ">" + RefSO.GetID()
+        DumpComponent(Study, CSO, offset+2)
+
+    #--------------------------------------------------------------------------
+
+def DumpStudy(Study):
+    itcomp = Study.NewComponentIterator()
+    while itcomp.More():
+        SC = itcomp.Value()
+        itcomp.Next()
+        name = SC.ComponentDataType()
+        print "-> ComponentDataType is " + name
+        DumpComponent(Study, SC, 1)
+        
+
+    #--------------------------------------------------------------------------
+
+# initialise the ORB
+orb = CORBA.ORB_init([''], CORBA.ORB_ID)
+
+# create an LifeCycleCORBA instance
+lcc = LifeCycleCORBA(orb)
+
+# create an SALOMEGUI_Swig instance
+sg = SALOMEGUI_Swig()
+
+#create an naming service instance
+naming_service = SALOME_NamingServicePy_i(orb)
+
+# get active study name and id
+myStudyName = sg.getActiveStudyName()
+print myStudyName
+
+myStudyId = sg.getActiveStudyId()
+print myStudyId
+
+# get Study Manager reference
+obj = naming_service.Resolve('myStudyManager')
+myStudyManager = obj._narrow(SALOMEDS.StudyManager)
+
+# get active study
+myStudy = myStudyManager.GetStudyByName(myStudyName)
+
index ccf9b841abee3f1da60b4b0a9ce5ffb114865257..d56fafe083388b288bd2ffa72256a0b72d80d327 100644 (file)
@@ -40,6 +40,9 @@
 #include "SALOME_Prs.h"
 #include "SOCC_ViewModel.h"
 #include "SVTK_ViewModel.h"
+#include "SVTK_ViewWindow.h"
+#include "SOCC_ViewWindow.h"
+#include "SPlot2d_ViewWindow.h"
 
 #include "SALOME_Event.hxx"
 #include "SALOME_ListIO.hxx"
@@ -554,7 +557,7 @@ public:
        SALOME_View* view = dynamic_cast<SALOME_View*>( window->getViewManager()->getViewModel() );
        if ( view ) {
          SALOME_Prs* aPrs = view->CreatePrs( myEntry );
-         myResult = aPrs->IsNull();
+         myResult = !aPrs->IsNull();
        }
       }
     }
@@ -569,3 +572,188 @@ bool SALOMEGUI_Swig::IsInCurrentView( const char* theEntry )
 {
   return ProcessEvent( new TIsInViewerEvent( theEntry ) );
 }
+
+/*!
+  Updates (repaint) current view
+*/
+void SALOMEGUI_Swig::UpdateView()
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       SUIT_ViewWindow* window = anApp->desktop()->activeWindow();
+       if ( window ) {
+         SALOME_View* view = dynamic_cast<SALOME_View*>( window->getViewManager()->getViewModel() );
+         if ( view )
+           view->Repaint();
+       }
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent() );
+}
+
+/*!
+  Fit all the contents of the current view window
+ */
+void SALOMEGUI_Swig::FitAll()
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       SUIT_ViewWindow* window = anApp->desktop()->activeWindow();
+       if ( window ) {
+         if ( dynamic_cast<SVTK_ViewWindow*>( window ) )
+           (dynamic_cast<SVTK_ViewWindow*>( window ))->onFitAll();
+         else if ( dynamic_cast<SOCC_ViewWindow*>( window ) )
+           (dynamic_cast<SOCC_ViewWindow*>( window ))->onFitAll();
+         else if ( dynamic_cast<SPlot2d_ViewWindow*>( window ) )
+           (dynamic_cast<SPlot2d_ViewWindow*>( window ))->onFitAll();
+       }
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent() );
+}
+
+/*!
+  Reset current view window to the default state.
+ */
+void SALOMEGUI_Swig::ResetView()
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent() {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       SUIT_ViewWindow* window = anApp->desktop()->activeWindow();
+       if ( window ) {
+         if ( dynamic_cast<SVTK_ViewWindow*>( window ) )
+           (dynamic_cast<SVTK_ViewWindow*>( window ))->onResetView();
+         else if ( dynamic_cast<SOCC_ViewWindow*>( window ) )
+           (dynamic_cast<SOCC_ViewWindow*>( window ))->onResetView();
+         else if ( dynamic_cast<SPlot2d_ViewWindow*>( window ) )
+           (dynamic_cast<SPlot2d_ViewWindow*>( window ))->onFitAll();
+         // VSR: there is no 'ResetView' functionality for Plot2d viewer,
+         // so we use 'FitAll' instead.
+       }
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent() );
+}
+
+enum {
+  __ViewTop,
+  __ViewBottom,
+  __ViewLeft,
+  __ViewRight,
+  __ViewFront,
+  __ViewBack
+};
+
+void setView( int view )
+{
+  class TEvent: public SALOME_Event {
+  private:
+    int myView;
+  public:
+    TEvent( int view ) : myView( view ) {}
+    virtual void Execute() {
+      if ( SalomeApp_Application* anApp = getApplication() ) {
+       SUIT_ViewWindow* window = anApp->desktop()->activeWindow();
+       if ( window ) {
+         if ( dynamic_cast<SVTK_ViewWindow*>( window ) ) {
+           switch( myView ) {
+           case __ViewTop:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onTopView(); break;
+           case __ViewBottom:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onBottomView(); break;
+           case __ViewLeft:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onLeftView(); break;
+           case __ViewRight:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onRightView(); break;
+           case __ViewFront:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onFrontView(); break;
+           case __ViewBack:
+             (dynamic_cast<SVTK_ViewWindow*>( window ))->onBackView(); break;
+           default:
+             break;
+           }
+         }
+         else if ( dynamic_cast<SOCC_ViewWindow*>( window ) ) {
+           switch( myView ) {
+           case __ViewTop:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onTopView(); break;
+           case __ViewBottom:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onBottomView(); break;
+           case __ViewLeft:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onLeftView(); break;
+           case __ViewRight:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onRightView(); break;
+           case __ViewFront:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onFrontView(); break;
+           case __ViewBack:
+             (dynamic_cast<SOCC_ViewWindow*>( window ))->onBackView(); break;
+           default:
+             break;
+           }
+         }
+       }
+      }
+    }
+  };
+  ProcessVoidEvent( new TEvent( view ) );
+}
+
+/*!
+  Switch current view window to show top view
+ */
+void SALOMEGUI_Swig::ViewTop()
+{
+  setView( __ViewTop );
+}
+
+/*!
+  Switch current view window to show bottom view
+ */
+void SALOMEGUI_Swig::ViewBottom()
+{
+  setView( __ViewBottom );
+}
+
+/*!
+  Switch current view window to show left view
+ */
+void SALOMEGUI_Swig::ViewLeft()
+{
+  setView( __ViewLeft );
+}
+
+/*!
+  Switch current view window to show right view
+ */
+void SALOMEGUI_Swig::ViewRight()
+{
+  setView( __ViewRight );
+}
+
+/*!
+  Switch current view window to show front view
+ */
+void SALOMEGUI_Swig::ViewFront()
+{
+  setView( __ViewFront );
+}
+
+/*!
+  Switch current view window to show back view
+ */
+void SALOMEGUI_Swig::ViewBack()
+{
+  setView( __ViewBack );
+}
index 456211227b3359593c5b8fecbd1917f524b4d8b5..97e09fa28f137062849afa7a736188f73ba31bac 100644 (file)
@@ -60,6 +60,17 @@ public:
   void             DisplayAll();
   void             EraseAll();
   bool             IsInCurrentView( const char *Entry );
+  void             UpdateView();
+
+  /* view operations */
+  void             FitAll();
+  void             ResetView();
+  void             ViewTop();
+  void             ViewBottom();
+  void             ViewLeft();
+  void             ViewRight();
+  void             ViewFront();
+  void             ViewBack();
 
   /* get component name/username */
   const char*      getComponentName( const char* ComponentUserName );
index 8ad7a3ae05ad1ffc62c41d5f3dafc0dfc105a0c4..7db1de9098f0b7d01ff1e2210fd17b09ac95450d 100644 (file)
 #include "SALOMEGUI_Swig.hxx"
 %}
 
-%include "pointer.i"
+%include "cpointer.i"
+
+/* Exception handler for all functions */
+%exception {
+  class PyAllowThreadsGuard {
+   public:
+    // Py_BEGIN_ALLOW_THREADS
+    PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+    // Py_END_ALLOW_THREADS
+    ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+   private:
+    PyThreadState *_save;
+  };
+
+  PyAllowThreadsGuard guard;
+
+  $action
+}
 
 class SALOMEGUI_Swig
 {
@@ -63,6 +80,17 @@ class SALOMEGUI_Swig
   void DisplayAll();
   void EraseAll();
   bool IsInCurrentView(const char *Entry);
+  void UpdateView();
+
+/* view operations */
+  void FitAll();
+  void ResetView();
+  void ViewTop();
+  void ViewBottom();
+  void ViewLeft();
+  void ViewRight();
+  void ViewFront();
+  void ViewBack();
 
 /* get component name/username */
   const char* getComponentName( const char* ComponentUserName );
diff --git a/src/SALOME_SWIG/salome.py b/src/SALOME_SWIG/salome.py
new file mode 100755 (executable)
index 0000000..9d45865
--- /dev/null
@@ -0,0 +1,157 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+from omniORB import CORBA
+from LifeCycleCORBA import *
+from libSALOME_Swig import *
+import SALOMEDS
+from SALOME_NamingServicePy import *
+
+from SALOME_utilities import *
+
+#--------------------------------------------------------------------------
+
+def DumpComponent(Study, SO, offset):
+    it = Study.NewChildIterator(SO)
+    Builder = Study.NewBuilder()
+    while it.More():
+        CSO = it.Value()
+        it.Next()
+        anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
+        AtName = anAttr._narrow(SALOMEDS.AttributeName)
+        t_name = AtName.Value()
+        if t_name[0] == 1:
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "--"
+                ofs = ofs +1
+            MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) )
+        t_RefSO = CSO.ReferencedObject()
+        if t_RefSO[0] == 1:
+            RefSO = t_RefSO[1]
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "  "
+                ofs = ofs +1
+            MESSAGE( a + ">" + str(RefSO.GetID()) )
+        DumpComponent(Study, CSO, offset+2)
+
+    #--------------------------------------------------------------------------
+
+def DumpStudy(Study):
+    itcomp = Study.NewComponentIterator()
+    while itcomp.More():
+        SC = itcomp.Value()
+        itcomp.Next()
+        name = SC.ComponentDataType()
+        MESSAGE( "-> ComponentDataType is " + name )
+        DumpComponent(Study, SC, 1)
+        
+
+    #--------------------------------------------------------------------------
+
+def ImportComponentGUI(ComponentName):
+    libName = "lib" + ComponentName + "_Swig"
+    command = "from " + libName + " import *"
+    exec ( command )
+    constructor = ComponentName + "_Swig()"
+    command = "gui = " + constructor
+    exec ( command )
+    return gui
+
+    #--------------------------------------------------------------------------
+
+def SalomeGUIgetAllSelected(self):
+    selNumber = self.SelectedCount()
+    listSelected = []
+    for i in range(selNumber):
+        listSelected.append(self.getSelected(i))
+    return listSelected
+
+class SalomeGUI(SALOMEGUI_Swig):
+    getAllSelected = SalomeGUIgetAllSelected
+    
+    #--------------------------------------------------------------------------
+
+def IDToObject(id):
+    myObj = None
+    mySO = myStudy.FindObjectID(id);
+    if mySO is not None:
+        ok, anAttr = mySO.FindAttribute("AttributeIOR")
+        if ok:
+            AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
+            if AtIOR.Value() != "":
+                myObj = orb.string_to_object(AtIOR.Value())
+    return myObj
+
+def ObjectToSObject(obj):
+    mySO = None
+    if obj is not None:
+        ior =  orb.object_to_string(obj)
+        if ior != "":
+            mySO = myStudy.FindObjectIOR(ior)
+    return mySO
+
+def ObjectToID(obj):
+    mySO = ObjectToSObject(obj)
+    if mySO:
+        return mySO.GetID()
+    return ""
+
+def IDToSObject(id):
+    mySO = myStudy.FindObjectID(id);
+    return mySO
+
+    #--------------------------------------------------------------------------
+
+# initialise the ORB
+orb = CORBA.ORB_init([''], CORBA.ORB_ID)
+
+# create an LifeCycleCORBA instance
+lcc = LifeCycleCORBA(orb)
+
+# create an SALOMEGUI_Swig instance
+sg = SalomeGUI()
+
+#create an naming service instance
+naming_service = SALOME_NamingServicePy_i(orb)
+
+# get active study name and id
+myStudyName = sg.getActiveStudyName()
+MESSAGE( myStudyName )
+
+myStudyId = sg.getActiveStudyId()
+MESSAGE( str(myStudyId) )
+
+# get Study Manager reference
+obj = naming_service.Resolve('myStudyManager')
+myStudyManager = obj._narrow(SALOMEDS.StudyManager)
+
+# get active study
+myStudy = myStudyManager.GetStudyByName(myStudyName)
+
diff --git a/src/SALOME_SWIG/supervisionexample.py b/src/SALOME_SWIG/supervisionexample.py
deleted file mode 100755 (executable)
index 3513150..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-#  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
-#  Author    : Jean Rahuel
-#  Project   : SALOME
-#  Copyright : CEA
-#==============================================================================
-
-from SuperV import *
-
-
-
-# load this object with Nodes, Links and Datas stored in GraphEssai.xml
-# (GraphEssai.xml was created with python in SuperVisionTest and GraphEssai.py)
-myGraph = Graph("@ROOT_BUILDDIR@/share/salome/resources/GraphEssai.xml")
-
-#myGraph = Graph("/home/data/jr_HEAD/build/share/salome/resources/GraphEssai.xml")
-# This DataFlow is "valid" : no loop, correct links between Nodes etc...
-
-print myGraph.IsValid()
-
-# Get Nodes
-myGraph.PrintNodes()
-Add,Sub,Mul,Div = myGraph.Nodes()
-
-# Load Datas
-Addx = Add.Input("x",3.)
-Addy = Add.Input("y",4.5)
-Subx = Sub.Input("x",1.5)
-
-# Get Output Port
-Addz = Add.Port('z')
-Subz = Sub.Port('z')
-Mulz = Mul.Port('z')
-Divz = Div.Port('z')
-
-# 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()
-
-# Wait for Completion (but it is already done after event loop ...)
-print "Done : ",myGraph.DoneW()
-
-# Get result
-print "Result : ",Divz.ToString()
-
-# Intermediate results :
-print "Intermediate Result Add\z : ",Addz.ToString()
-print "Intermediate Result Sub\z : ",Subz.ToString()
-print "Intermediate Result Mul\z : ",Mulz.ToString()
-
-print " "
-print "Type : print myGraph.IsDone()"
-print "       If execution is finished ==> 1 (true)"
-print " "
-print "Type : print Divz.ToString()"
-print "       You will get the result"
-print " "
-print "Type : myGraph.PrintPorts()"
-print "       to see input and output values of the graph"
-print " "
-print "Type : Add.PrintPorts()"
-print "Type : Sub.PrintPorts()"
-print "Type : Mul.PrintPorts()"
-print "Type : Div.PrintPorts()"
-print "       to see input and output values of nodes"
-
-# Export will create newsupervisionexample.xml and the corresponding .py file
-print myGraph.Export("@ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml")
-
-print " "
-print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml"
-print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.py"
index 56bdd9bf50cf3fadcf3b434b9e286780e00c7e04..66974aeb6200c3cabc62babb2296f877a90744e9 100755 (executable)
@@ -12,9 +12,9 @@ from SuperV import *
 
 # load this object with Nodes, Links and Datas stored in GraphEssai.xml
 # (GraphEssai.xml was created with python in SuperVisionTest and GraphEssai.py)
-myGraph = Graph("@ROOT_BUILDDIR@/share/salome/resources/GraphEssai.xml")
+myGraph = Graph("@ROOT_BUILDDIR@/share/salome/resources/superv/GraphEssai.xml")
 
-#myGraph = Graph("/home/data/jr_HEAD/build/share/salome/resources/GraphEssai.xml")
+#myGraph = Graph("/home/data/jr_HEAD/build/share/salome/resources/superv/GraphEssai.xml")
 # This DataFlow is "valid" : no loop, correct links between Nodes etc...
 
 print myGraph.IsValid()
@@ -78,8 +78,8 @@ print "Type : Div.PrintPorts()"
 print "       to see input and output values of nodes"
 
 # Export will create newsupervisionexample.xml and the corresponding .py file
-print myGraph.Export("@ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml")
+print myGraph.Export("@ROOT_BUILDDIR@/share/salome/resources/superv/newsupervisionexample.xml")
 
 print " "
-print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.xml"
-print "See file @ROOT_BUILDDIR@/share/salome/resources/newsupervisionexample.py"
+print "See file @ROOT_BUILDDIR@/share/salome/resources/superv/newsupervisionexample.xml"
+print "See file @ROOT_BUILDDIR@/share/salome/resources/superv/newsupervisionexample.py"
diff --git a/src/SALOME_SWIG/supervisiongeomexample.py b/src/SALOME_SWIG/supervisiongeomexample.py
deleted file mode 100755 (executable)
index bf9e5b7..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#  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
-
-from SuperV import *
-
-import salome
-
-import geompy
-
-
-geom = lcc.FindOrLoadComponent("FactoryServer", "Geometry")
-geom.GetCurrentStudy(salome.myStudyId)
-
-myBuilder = salome.myStudy.NewBuilder()
-
-# Graph creation 
-GraphGeom2Essai = Graph( 'GraphGeom2Essai' )
-print GraphGeom2Essai.SetAuthor( '' )
-print GraphGeom2Essai.SetComment( '' )
-GraphGeom2Essai.Coords( 0 , 0 )
-
-# Creation of Nodes
-MakeSphere = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeSphere' )
-print MakeSphere.SetAuthor( '' )
-print MakeSphere.SetContainer( 'FactoryServer' )
-print MakeSphere.SetComment( '' )
-MakeSphere.Coords( 26 , 13 )
-MakeCopy = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeCopy' )
-print MakeCopy.SetAuthor( '' )
-print MakeCopy.SetContainer( 'FactoryServer' )
-print MakeCopy.SetComment( '' )
-MakeCopy.Coords( 219 , 12 )
-MakeTranslation = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeTranslation' )
-print MakeTranslation.SetAuthor( '' )
-print MakeTranslation.SetContainer( 'FactoryServer' )
-print MakeTranslation.SetComment( '' )
-MakeTranslation.Coords( 219 , 159 )
-MakeFuse = GraphGeom2Essai.Node( 'Geometry' , 'Geometry' , 'MakeFuse' )
-print MakeFuse.SetAuthor( '' )
-print MakeFuse.SetContainer( 'FactoryServer' )
-print MakeFuse.SetComment( '' )
-MakeFuse.Coords( 465 , 106 )
-
-# Creation of intermediate Output variables and of links
-MakeSphereshape = MakeSphere.Port( 'shape' )
-MakeCopyshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeCopy.Port( 'shape1' ) )
-MakeTranslationshape1 = GraphGeom2Essai.Link( MakeSphereshape , MakeTranslation.Port( 'shape1' ) )
-MakeCopyshape = MakeCopy.Port( 'shape' )
-MakeFuseshape1 = GraphGeom2Essai.Link( MakeCopyshape , MakeFuse.Port( 'shape1' ) )
-MakeTranslationshape = MakeTranslation.Port( 'shape' )
-MakeFuseshape2 = GraphGeom2Essai.Link( MakeTranslationshape , MakeFuse.Port( 'shape2' ) )
-
-# Creation of Input datas
-MakeSpherex1 = MakeSphere.Input( 'x1' , 0)
-MakeSpherey1 = MakeSphere.Input( 'y1' , 0)
-MakeSpherez1 = MakeSphere.Input( 'z1' , 0)
-MakeSphereradius = MakeSphere.Input( 'radius' , 50)
-MakeTranslationx1 = MakeTranslation.Input( 'x1' , 80)
-MakeTranslationy1 = MakeTranslation.Input( 'y1' , 0)
-MakeTranslationz1 = MakeTranslation.Input( 'z1' , 0)
-
-# Missing Input datas : None
-
-# Creation of Output variables
-MakeFuseshape = MakeFuse.Port( 'shape' )
-
-# State of Ports of the Graph
-GraphGeom2Essai.PrintPorts()
-
-# Start asynchronous run
-print GraphGeom2Essai.Run()
-
-# Done ?
-print GraphGeom2Essai.IsDone()
-
-# Events of execution :
-aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event()
-while aStatus :
-    print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
-    aStatus,aNode,anEvent,aState = GraphGeom2Essai.Event()
-print GraphGeom2Essai.IsDone()
-
-# Waiting end of execution :
-print GraphGeom2Essai.DoneW()
-
-print " "
-print "Type print GraphGeom2Essai.IsDone()"
-print "1 <==> It's done"
-print " "
-print "Type print GraphGeom2Essai.DoneW()"
-print "Wait until end of execution : 1(success)"
-print " "
-print "Type GraphGeom2Essai.PrintPorts()"
-print "     to see input and output values of the graph"
-print " "
-print "Type MakeSphere.PrintPorts()"
-print "Type MakeCopy.PrintPorts()"
-print "Type MakeTranslation.PrintPorts()"
-print "Type MakeFuse.PrintPorts()"
-print "     to see input and output values of nodes"
-print " "
-print "Type print GraphGeom2Essai.Export('File-Name')"
-print "You will get a .py and a .xml file of this graph"
diff --git a/src/SALOME_SWIG/testattr.py b/src/SALOME_SWIG/testattr.py
deleted file mode 100755 (executable)
index 18f0915..0000000
+++ /dev/null
@@ -1,109 +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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : testattr.py
-#  Module : SALOME
-
-import SALOMEDS
-#import SALOMEDS_Attributes_idl
-import geompy
-import salome
-# ===============================================================
-
-# creating new object ===========================================
-obj = geompy.myBuilder.NewObject(geompy.father)
-
-# adding Name attribute =========================================
-A1 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeName")
-name = A1._narrow(SALOMEDS.AttributeName)
-name.SetValue("First Object")
-
-# adding Comment attribute ======================================
-A2 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeComment")
-comment = A2._narrow(SALOMEDS.AttributeComment)
-comment.SetValue("This is Comment attribute")
-
-# adding IOR attribute ==========================================
-#A3 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeIOR")
-# ...
-
-# adding integer attribute ======================================
-A4 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeInteger")
-integer = A4._narrow(SALOMEDS.AttributeInteger)
-integer.SetValue(12)
-
-# adding real attribute =========================================
-A5 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeReal")
-real = A5._narrow(SALOMEDS.AttributeReal)
-real.SetValue(0.25)
-
-# adding sequence of integer attribute ==========================
-A6 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSequenceOfInteger")
-intseq = A6._narrow(SALOMEDS.AttributeSequenceOfInteger)
-intseq.Add(1)
-intseq.Add(2)
-intseq.Add(3)
-
-
-# adding sequence of real attribute =============================
-A7 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSequenceOfReal")
-realseq = A7._narrow(SALOMEDS.AttributeSequenceOfReal)
-realseq.Add(0.001)
-realseq.Add(0.002)
-realseq.Add(0.003)
-
-# adding PersistentRef attribute ================================
-#A8 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributePersistentRef")
-# ...
-
-# adding Drawable attribute =====================================
-A9 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeDrawable")
-drawable = A9._narrow(SALOMEDS.AttributeDrawable)
-drawable.SetDrawable(1)
-
-# adding Selectable attribute ===================================
-#A10 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeSelectable")
-# ...
-
-# adding Expandable attribute ===================================
-#A11 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeExpandable")
-# ...
-
-# adding Opened attribute =======================================
-#A12 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeOpened")
-# ...
-
-# adding TextColor attribute ====================================
-A13 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeTextColor")
-textcolor = A13._narrow(SALOMEDS.AttributeTextColor)
-
-# ...
-
-# adding TextHighlightColor of real attribute ===================
-#A14 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributeTextHighlightColor")
-# ...
-
-# adding PixMap of real attribute ===============================
-#A15 = geompy.myBuilder.FindOrCreateAttribute(obj,"AttributePixMap")
-# ...
-
-# opening OCAF Browser ==========================================
-# result = salome.myStudy.OCAFBrowser()
diff --git a/src/SOCC/Makefile.am b/src/SOCC/Makefile.am
new file mode 100755 (executable)
index 0000000..25db606
--- /dev/null
@@ -0,0 +1,50 @@
+#  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
+# $Header: /dn06/SALOME_CVS/GUI_SRC/src/SOCC/Makefile.in,v 1.1
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES=libSOCC.la
+
+salomeinclude_HEADERS= \
+       SOCC.h \
+       SOCC_ViewModel.h \
+       SOCC_Prs.h \
+       SOCC_ViewWindow.h
+
+dist_libSOCC_la_SOURCES= \
+       SOCC_ViewModel.cxx \
+       SOCC_Prs.cxx \
+       SOCC_ViewWindow.cxx
+
+MOC_FILES= \
+       SOCC_ViewModel_moc.cxx \
+       SOCC_ViewWindow_moc.cxx
+nodist_libSOCC_la_SOURCES= $(MOC_FILES)
+
+libSOCC_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) $(BOOST_CPPFLAGS) \
+       -I$(srcdir)/../SUIT -I$(srcdir)/../OBJECT -I$(srcdir)/../Prs \
+       -I$(srcdir)/../OCCViewer -I$(srcdir)/../Qtx
+
+libSOCC_la_LDFLAGS=$(QT_MT_LIBS)
+libSOCC_la_LIBADD= ../SUIT/libsuit.la ../OBJECT/libSalomeObject.la \
+       ../Prs/libSalomePrs.la ../OCCViewer/libOCCViewer.la
diff --git a/src/SOCC/Makefile.in b/src/SOCC/Makefile.in
deleted file mode 100755 (executable)
index f1ad967..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#  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
-# $Header: /dn06/SALOME_CVS/GUI_SRC/src/SOCC/Makefile.in,v 1.1
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-# header files
-EXPORT_HEADERS= SOCC.h \
-               SOCC_ViewModel.h \
-               SOCC_Prs.h \
-               SOCC_ViewWindow.h
-
-# Libraries targets
-LIB = libSOCC.la
-
-LIB_SRC= SOCC_ViewModel.cxx \
-        SOCC_Prs.cxx \
-        SOCC_ViewWindow.cxx
-
-LIB_MOC = SOCC_ViewModel.h \
-         SOCC_ViewWindow.h
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) 
-
-LDFLAGS+=$(QT_MT_LIBS)
-LIBS+= -lsuit -lSalomeObject -lSalomePrs -lOCCViewer
-
-@CONCLUDE@
index 44623c874b7e1dd8dd28d56c84c964dec3cccd63..eb2cb6821bdfe493c4af96a80e8084845c5ba1cc 100644 (file)
@@ -74,7 +74,7 @@ void SOCC_Prs::AddObject( const Handle(AIS_InteractiveObject)& obj )
 */
 bool SOCC_Prs::IsNull() const 
 { 
-  return myObjects.IsEmpty()
+  return myObjects.IsEmpty() == Standard_True;
 }
 
 /*!
index 8d425a47c63d9d753e5dc20e575a0bd979a22b6e..8d27c10a7f94d19a83938200a8eb4c5dba11a2b0 100755 (executable)
@@ -521,12 +521,8 @@ void SOCC_Viewer::EraseAll( const bool forced )
     //  }
     //}
   }
-
-  // display trihedron if necessary
-  if ( isTrihedronDisplayed )
-    getAISContext()->Display( getTrihedron() );
-  else
-    Repaint();
+  
+  Repaint();
 }
 
 /*!
index 2e519687b3f10c88cc49826ddebe071f7bcbbf0d..d7c4edb81916b4116943d91fffac741746760f8b 100644 (file)
@@ -79,23 +79,23 @@ SOCC_ViewWindow
     myViewPort->fitAll();
     break;
   case SUIT_Accel::RotateLeft  : 
-    myViewPort->startRotation( cx, cy );
-    myViewPort->rotate( cx - inc, cy );
+    myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
+    myViewPort->rotate( cx - inc, cy, myCurrPointType, mySelectedPoint );
     myViewPort->endRotation();
     break;
   case SUIT_Accel::RotateRight :  
-    myViewPort->startRotation( cx, cy );
-    myViewPort->rotate( cx + inc, cy );
+    myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
+    myViewPort->rotate( cx + inc, cy, myCurrPointType, mySelectedPoint );
     myViewPort->endRotation();
     break;
   case SUIT_Accel::RotateUp    :  
-    myViewPort->startRotation( cx, cy );
-    myViewPort->rotate( cx, cy - inc );
+    myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
+    myViewPort->rotate( cx, cy - inc, myCurrPointType, mySelectedPoint );
     myViewPort->endRotation();
     break;
   case SUIT_Accel::RotateDown  :  
-    myViewPort->startRotation( cx, cy );
-    myViewPort->rotate( cx, cy + inc );
+    myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
+    myViewPort->rotate( cx, cy + inc, myCurrPointType, mySelectedPoint );
     myViewPort->endRotation();
     break;
   }
diff --git a/src/SPlot2d/Makefile.am b/src/SPlot2d/Makefile.am
new file mode 100644 (file)
index 0000000..17dc25b
--- /dev/null
@@ -0,0 +1,52 @@
+#  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 $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSPlot2d.la
+
+salomeinclude_HEADERS = \
+       SPlot2d.h \
+       SPlot2d_Curve.h \
+       SPlot2d_Prs.h \
+       SPlot2d_ViewModel.h \
+       SPlot2d_ViewWindow.h
+
+dist_libSPlot2d_la_SOURCES = \
+       SPlot2d_Curve.cxx \
+       SPlot2d_Prs.cxx \
+       SPlot2d_ViewModel.cxx \
+       SPlot2d_ViewWindow.cxx
+
+MOC_FILES = \
+       SPlot2d_ViewModel_moc.cxx \
+       SPlot2d_ViewWindow_moc.cxx
+nodist_libSPlot2d_la_SOURCES = $(MOC_FILES)
+
+nodist_salomeres_DATA = SPlot2d_msg_en.qm
+
+libSPlot2d_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../Plot2d -I$(srcdir)/../Prs \
+       -I$(srcdir)/../OBJECT
+libSPlot2d_la_LDFLAGS=$(QT_MT_LIBS) $(QWT_LIBS) ../SUIT/libsuit.la ../Plot2d/libPlot2d.la ../Prs/libSalomePrs.la
+
+
+
+
+
diff --git a/src/SPlot2d/Makefile.in b/src/SPlot2d/Makefile.in
deleted file mode 100644 (file)
index 0304abb..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#  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=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_HEADERS = \
-           SPlot2d.h \
-           SPlot2d_Curve.h \
-          SPlot2d_Prs.h \
-          SPlot2d_ViewModel.h
-
-# .po files to transform in .qm
-PO_FILES = SPlot2d_msg_en.po
-
-# Libraries targets
-
-LIB = libSPlot2d.la
-LIB_SRC =        \
-           SPlot2d_Curve.cxx \
-          SPlot2d_Prs.cxx \
-          SPlot2d_ViewModel.cxx
-
-LIB_MOC = \
-          SPlot2d_ViewModel.h
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS)
-LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs
-
-
-@CONCLUDE@
-
-
-
-
-
index 4ac94388f3f518f1c2aa64a648a8beff54f72cd1..527a8a135209102df824e0c2c7442265b3444b83 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "SPlot2d_ViewModel.h"
 
+#include "SPlot2d_ViewWindow.h"
+
 #include "SPlot2d_Prs.h"
 #include "SUIT_Session.h"
 #include "SUIT_Application.h"
@@ -114,10 +116,10 @@ void SPlot2d_Viewer::rename( const Handle(SALOME_InteractiveObject)& IObject,
 void SPlot2d_Viewer::renameAll( const Handle(SALOME_InteractiveObject)& IObj, const QString& name )
 {
   SUIT_ViewManager* vm = getViewManager();
-  if( vm )
+  if ( vm )
   {
     const QPtrVector<SUIT_ViewWindow>& wnds = vm->getViews();
-    for( int i=0; i<wnds.size(); i++ )
+    for ( uint i = 0; i < wnds.size(); i++ )
     {
       Plot2d_ViewWindow* pwnd = dynamic_cast<Plot2d_ViewWindow*>( wnds.at( i ) );
       rename( IObj, name, pwnd->getViewFrame() );
@@ -379,3 +381,14 @@ void SPlot2d_Viewer::onCloneView( Plot2d_ViewFrame* clonedVF, Plot2d_ViewFrame*
       newVF->displayCurve( *anIt, false );
   newVF->Repaint();
 }
+
+/*!
+  create SPlot2d_ViewWindow
+*/
+SUIT_ViewWindow* SPlot2d_Viewer::createView( SUIT_Desktop* theDesktop )
+{
+  SPlot2d_ViewWindow* aPlot2dView = new SPlot2d_ViewWindow(theDesktop, this);
+  if (getPrs())
+    aPlot2dView->getViewFrame()->Display(getPrs());
+  return aPlot2dView;
+}
index c9968c0550988c94494882bb3dd9881b63336121..7182def582893641f2b72880c7e3f65035c49691 100644 (file)
@@ -52,6 +52,8 @@ public:
   void rename( const Handle(SALOME_InteractiveObject)&, const QString&, Plot2d_ViewFrame* = 0 );
   void renameAll( const Handle(SALOME_InteractiveObject)&, const QString& );
   bool isInViewer( const Handle(SALOME_InteractiveObject)& IObject );
+
+  virtual   SUIT_ViewWindow* createView(SUIT_Desktop* theDesktop);
   
   /* display */                
   void Display( const Handle(SALOME_InteractiveObject)& IObject, bool update = true );
diff --git a/src/SPlot2d/SPlot2d_ViewWindow.cxx b/src/SPlot2d/SPlot2d_ViewWindow.cxx
new file mode 100644 (file)
index 0000000..0e0a376
--- /dev/null
@@ -0,0 +1,75 @@
+// 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
+//
+#include "SPlot2d_ViewWindow.h"
+
+#include "Plot2d_ViewFrame.h"
+
+#include "SUIT_Accel.h"
+
+/*!
+  Constructor
+*/
+SPlot2d_ViewWindow
+::SPlot2d_ViewWindow( SUIT_Desktop* theDesktop, 
+                     Plot2d_Viewer* theModel)
+  : Plot2d_ViewWindow( theDesktop, theModel )
+{
+}
+
+/*!
+  Destructor
+*/
+SPlot2d_ViewWindow
+::~SPlot2d_ViewWindow()
+{
+}
+
+/*!
+  Performs action
+  \param theAction - type of action
+*/
+bool 
+SPlot2d_ViewWindow
+::action( const int theAction  )
+{
+  switch ( theAction ) {
+  case SUIT_Accel::PanLeft: 
+    getViewFrame()->onPanLeft();
+    break;
+  case SUIT_Accel::PanRight: 
+    getViewFrame()->onPanRight();
+    break;
+  case SUIT_Accel::PanUp: 
+    getViewFrame()->onPanUp();
+    break;
+  case SUIT_Accel::PanDown: 
+    getViewFrame()->onPanDown();
+    break;
+  case SUIT_Accel::ZoomIn: 
+    getViewFrame()->onZoomIn();
+    break;
+  case SUIT_Accel::ZoomOut: 
+    getViewFrame()->onZoomOut();
+    break;
+  case SUIT_Accel::ZoomFit:
+    getViewFrame()->fitAll();
+    break;
+  }
+  return true;
+}
diff --git a/src/SPlot2d/SPlot2d_ViewWindow.h b/src/SPlot2d/SPlot2d_ViewWindow.h
new file mode 100644 (file)
index 0000000..a11b45a
--- /dev/null
@@ -0,0 +1,46 @@
+// 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
+//
+#ifndef SPLOT2D_VIEWWINDOW_H
+#define SPLOT2D_VIEWWINDOW_H
+
+#ifdef WIN32
+#pragma warning( disable:4251 )
+#endif
+
+#include "SPlot2d.h"
+#include "Plot2d_ViewWindow.h"
+
+class SPLOT2D_EXPORT SPlot2d_ViewWindow : public Plot2d_ViewWindow
+{
+  Q_OBJECT;
+
+public:
+  SPlot2d_ViewWindow( SUIT_Desktop*, Plot2d_Viewer* );
+  virtual ~SPlot2d_ViewWindow();
+  
+protected:
+  virtual bool      action( const int );
+
+};
+
+#ifdef WIN32
+#pragma warning( default:4251 )
+#endif
+
+#endif
diff --git a/src/SPlot2d/SPlot2d_msg_en.po b/src/SPlot2d/SPlot2d_msg_en.po
deleted file mode 100644 (file)
index b5ec921..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#  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. translating
-# from French to English, "Foo::Bar" would be translated to "Pub",
-# not "Foo::Pub".
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2005-06-16 12:01:13 PM MSD\n"
-"PO-Revision-Date: YYYY-MM-DD\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
diff --git a/src/SPlot2d/resources/SPlot2d_msg_en.po b/src/SPlot2d/resources/SPlot2d_msg_en.po
new file mode 100644 (file)
index 0000000..b5ec921
--- /dev/null
@@ -0,0 +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
+#
+# This is a Qt message file in .po format.  Each msgid starts with
+# a scope.  This scope should *NOT* be translated - eg. translating
+# from French to English, "Foo::Bar" would be translated to "Pub",
+# not "Foo::Pub".
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2005-06-16 12:01:13 PM MSD\n"
+"PO-Revision-Date: YYYY-MM-DD\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
diff --git a/src/STD/Makefile.am b/src/STD/Makefile.am
new file mode 100755 (executable)
index 0000000..7426836
--- /dev/null
@@ -0,0 +1,77 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libstd.la
+
+salomeinclude_HEADERS= \
+       STD_Application.h \
+       STD.h \
+       STD_MDIDesktop.h \
+       STD_SDIDesktop.h \
+       STD_TabDesktop.h \
+       STD_LoadStudiesDlg.h
+
+dist_libstd_la_SOURCES=\
+       STD_Application.cxx \
+       STD_MDIDesktop.cxx \
+       STD_SDIDesktop.cxx \
+       STD_TabDesktop.cxx \
+       STD_LoadStudiesDlg.cxx
+
+MOC_FILES= \
+       STD_Application_moc.cxx \
+       STD_MDIDesktop_moc.cxx \
+       STD_SDIDesktop_moc.cxx \
+       STD_TabDesktop_moc.cxx \
+       STD_LoadStudiesDlg_moc.cxx
+
+nodist_libstd_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA=\
+       resources/config \
+       resources/cut.png \
+       resources/copy.png \
+       resources/close.png \
+       resources/cursor_rotate.png \
+       resources/cursor_zoom.png \
+       resources/help.png \
+       resources/new.png \
+       resources/open.png \
+       resources/print.png \
+       resources/paste.png \
+       resources/redo.png \
+       resources/reset.png \
+       resources/save.png \
+       resources/undo_arrow.png \
+       resources/undo.png \
+       resources/std.ini
+
+nodist_salomeres_DATA=\
+       STD_images.qm \
+       STD_msg_en.qm
+
+libstd_la_CPPFLAGS=$(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+libstd_la_LDFLAGS=$(QT_MT_LIBS)
+libstd_la_LIBADD=../SUIT/libsuit.la
diff --git a/src/STD/Makefile.in b/src/STD/Makefile.in
deleted file mode 100755 (executable)
index cfd6dec..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= STD_Application.h \
-               STD.h \
-               STD_MDIDesktop.h \
-               STD_SDIDesktop.h \
-               STD_TabDesktop.h \
-               STD_CloseDlg.h \
-               STD_LoadStudiesDlg.h
-                    
-# .po files to transform in .qm
-PO_FILES = STD_images.po \
-          STD_msg_en.po 
-
-# Libraries targets
-LIB = libstd.la
-
-LIB_SRC= STD_Application.cxx \
-        STD_MDIDesktop.cxx \
-        STD_SDIDesktop.cxx \
-        STD_TabDesktop.cxx \
-        STD_CloseDlg.cxx \
-        STD_LoadStudiesDlg.cxx
-
-LIB_MOC =  STD_Application.h \
-          STD_MDIDesktop.h \
-          STD_SDIDesktop.h \
-          STD_TabDesktop.h \
-          STD_CloseDlg.h \
-          STD_LoadStudiesDlg.h
-
-RESOURCES_FILES = \
-config \
-cut.png \
-copy.png \
-close.png \
-cursor_rotate.png \
-cursor_zoom.png \
-help.png \
-new.png \
-open.png \
-print.png \
-paste.png \
-redo.png \
-reset.png \
-save.png \
-undo_arrow.png \
-undo.png \
-std.ini
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS)
-LIBS+= -lsuit
-
-@CONCLUDE@
index 5a74b47853b76b1eb51074c6900452c9da893a37..177dd82956e15c8ceeeeccd78125ac21447f2415 100755 (executable)
@@ -20,8 +20,6 @@
 
 #include "STD_MDIDesktop.h"
 
-#include "STD_CloseDlg.h"
-
 #include <SUIT_Tools.h>
 #include <SUIT_Desktop.h>
 #include <SUIT_Session.h>
@@ -29,6 +27,7 @@
 #include <SUIT_Operation.h>
 #include <SUIT_MessageBox.h>
 #include <SUIT_ResourceMgr.h>
+#include <SUIT_MsgDlg.h>
 
 #include <QtxDockAction.h>
 #include <QtxActionMenuMgr.h>
@@ -41,6 +40,7 @@
 #include <qstatusbar.h>
 #include <qfiledialog.h>
 #include <qapplication.h>
+#include <qmessagebox.h>
 
 #include <iostream>
 
@@ -53,8 +53,9 @@ extern "C" STD_EXPORT SUIT_Application* createApplication()
 /*!Constructor.*/
 STD_Application::STD_Application()
 : SUIT_Application(),
-myEditEnabled( true ),
-myActiveViewMgr( 0 )
+  myActiveViewMgr( 0 ),
+  myExitConfirm( true ),
+  myEditEnabled( true )
 {
   STD_MDIDesktop* desk = new STD_MDIDesktop();
 
@@ -64,6 +65,19 @@ myActiveViewMgr( 0 )
 /*!Destructor.*/
 STD_Application::~STD_Application()
 {
+  clearViewManagers();
+}
+
+/*! \retval requirement of exit confirmation*/
+bool STD_Application::exitConfirmation() const
+{
+  return myExitConfirm;
+}
+
+/*! Set the requirement of exit confirmation*/
+void STD_Application::setExitConfirmation( const bool on )
+{
+  myExitConfirm = on;
 }
 
 /*! \retval QString "StdApplication"*/
@@ -116,7 +130,8 @@ void STD_Application::onDesktopClosing( SUIT_Desktop*, QCloseEvent* e )
     return;
   }
 
-  if ( !isPossibleToClose() )
+  bool closePermanently;
+  if ( !isPossibleToClose( closePermanently ) )
   {
     e->ignore();
     return;
@@ -186,13 +201,6 @@ void STD_Application::createActions()
                 tr( "MEN_DESK_HELP_ABOUT" ), tr( "PRP_DESK_HELP_ABOUT" ),
                 SHIFT+Key_A, desk, false, this, SLOT( onHelpAbout() ) );
 
-  //SRN: BugID IPAL9021, add an action "Load"
-  createAction( FileLoadId, tr( "TOT_DESK_FILE_LOAD" ),
-                resMgr->loadPixmap( "STD", tr( "ICON_FILE_OPEN" ) ),
-               tr( "MEN_DESK_FILE_LOAD" ), tr( "PRP_DESK_FILE_LOAD" ),
-               CTRL+Key_L, desk, false, this, SLOT( onLoadDoc() ) );
-  //SRN: BugID IPAL9021: End
-
   QtxDockAction* da = new QtxDockAction( tr( "TOT_DOCK_WINDOWS" ), tr( "MEN_DOCK_WINDOWS" ), desk );
   registerAction( ViewWindowsId, da );
   da->setAutoPlace( false );
@@ -208,7 +216,6 @@ void STD_Application::createActions()
 
   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 );
@@ -222,8 +229,9 @@ void STD_Application::createActions()
   createMenu( EditPasteId, editMenu );
   createMenu( separator(), editMenu );
 
-  createMenu( ViewWindowsId,   viewMenu );
-  createMenu( ViewStatusBarId, viewMenu );
+  createMenu( ViewWindowsId,   viewMenu, 0 );
+  createMenu( separator(),     viewMenu, -1, 10 );
+  createMenu( ViewStatusBarId, viewMenu, 10 );
   createMenu( separator(),     viewMenu );
 
   createMenu( HelpAboutId, helpMenu );
@@ -322,11 +330,6 @@ bool STD_Application::onOpenDoc( const QString& aName )
   return res;
 }
 
-/*! called on loading the existent study */
-void STD_Application::onLoadDoc()
-{
-}
-
 /*! \retval true, if document was loaded successful, else false.*/
 bool STD_Application::onLoadDoc( const QString& aName )
 {
@@ -374,7 +377,9 @@ void STD_Application::afterCloseDoc()
 /*!Close document, if it's possible.*/
 void STD_Application::onCloseDoc( bool ask )
 {
-  if ( ask && !isPossibleToClose() )
+  bool closePermanently = true;
+
+  if ( ask && !isPossibleToClose( closePermanently ) )
     return;
 
   SUIT_Study* study = activeStudy();
@@ -382,7 +387,7 @@ void STD_Application::onCloseDoc( bool ask )
   beforeCloseDoc( study );
 
   if ( study )
-    study->closeDocument(myClosePermanently);
+    study->closeDocument( closePermanently );
 
   clearViewManagers();
 
@@ -416,42 +421,64 @@ void STD_Application::onCloseDoc( bool ask )
 /*!Check the application on closing.
  * \retval true if possible, else false
  */
-bool STD_Application::isPossibleToClose()
+bool STD_Application::isPossibleToClose( bool& closePermanently )
 {
-  myClosePermanently = true; //SRN: BugID: IPAL9021
   if ( activeStudy() )
   {
     activeStudy()->abortAllOperations();
     if ( activeStudy()->isModified() )
     {
       QString sName = activeStudy()->studyName().stripWhiteSpace();
-      QString msg = sName.isEmpty() ? tr( "INF_DOC_MODIFIED" ) : tr ( "INF_DOCUMENT_MODIFIED" ).arg( sName );
-
-      //SRN: BugID: IPAL9021: Begin
-      STD_CloseDlg dlg(desktop());
-      switch( dlg.exec() )
-      {
-      case 1:
-        if ( activeStudy()->isSaved() )
-          onSaveDoc();
-        else if ( !onSaveAsDoc() )
-          return false;
-        break;
-      case 2:
-        break;
-      case 3:
-             myClosePermanently = false;
-        break;
-      case 4:
-      default:
-        return false;
-      }
-     //SRN: BugID: IPAL9021: End
+      return closeAction( closeChoice( sName ), closePermanently );
     }
   }
   return true;
 }
 
+/*!
+  \brief Show dialog box to propose possible user actions when study is closed.
+  \param docName study name
+  \return chosen action ID
+  \sa closeAction()
+*/
+int STD_Application::closeChoice( const QString& docName )
+{
+  SUIT_MsgDlg dlg( desktop(), tr( "CLOSE_DLG_CAPTION" ), tr ( "CLOSE_DLG_DESCRIPTION" ),
+                  QMessageBox::standardIcon( QMessageBox::Information ) );
+  dlg.addButton( tr ( "CLOSE_DLG_SAVE_CLOSE" ), CloseSave );
+  dlg.addButton( tr ( "CLOSE_DLG_CLOSE" ), CloseDiscard );
+
+  return dlg.exec();
+}
+
+/*!
+  \brief Process user actions selected from the dialog box when study is closed.
+  \param choice chosen action ID
+  \param closePermanently "forced study closing" flag
+  \return operation status
+  \sa closeChoice()
+*/
+bool STD_Application::closeAction( const int choice, bool& closePermanently )
+{
+  bool res = true;
+  switch( choice )
+  {
+  case CloseSave:
+    if ( activeStudy()->isSaved() )
+      onSaveDoc();
+    else if ( !onSaveAsDoc() )
+      res = false;
+    break;
+  case CloseDiscard:
+    break;
+  case CloseCancel:
+  default:
+    res = false;
+  }
+
+  return res;
+}
+
 /*!Save document if all ok, else error message.*/
 void STD_Application::onSaveDoc()
 {
@@ -525,10 +552,14 @@ bool STD_Application::onSaveAsDoc()
 /*!Closing session.*/
 void STD_Application::onExit()
 {
-  int aAnswer = SUIT_MessageBox::info2( desktop(), tr( "INF_DESK_EXIT" ), tr( "QUE_DESK_EXIT" ),
-                                        tr( "BUT_OK" ), tr( "BUT_CANCEL" ), 1, 2, 2 );
-  if ( aAnswer == 1 )
+  if ( !exitConfirmation() || 
+       SUIT_MessageBox::info2( desktop(), 
+                              tr( "INF_DESK_EXIT" ), 
+                              tr( "QUE_DESK_EXIT" ),
+                              tr( "BUT_OK" ),
+                              tr( "BUT_CANCEL" ), 1, 2, 2 ) == 1 ) {
     SUIT_Session::session()->closeSession();
+  }
 }
 
 /*!Virtual slot. Not implemented here.*/
@@ -588,6 +619,8 @@ void STD_Application::updateDesktopTitle()
 /*!Update commands status.*/
 void STD_Application::updateCommandsStatus()
 {
+  SUIT_Application::updateCommandsStatus();
+
   bool aHasStudy = activeStudy() != 0;
   bool aIsNeedToSave = false;
   if ( aHasStudy )
@@ -678,7 +711,8 @@ void STD_Application::removeViewManager( SUIT_ViewManager* vm )
   emit viewManagerRemoved( vm );
 
   vm->disconnectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
-  vm->disconnect();
+  disconnect( vm, SIGNAL( activated( SUIT_ViewManager* ) ),
+             this, SLOT( onViewManagerActivated( SUIT_ViewManager* ) ) );
   myViewMgrs.removeRef( vm );
 
   if ( myActiveViewMgr == vm )
@@ -691,8 +725,11 @@ void STD_Application::clearViewManagers()
   ViewManagerList lst;
   viewManagers( lst );
 
-  for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current(); ++it )
-    removeViewManager( it.current() );
+  for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current(); ++it ) {
+    QGuardedPtr<SUIT_ViewManager> vm = it.current();
+    removeViewManager( vm );
+    delete vm;
+  }
 }
 
 /*!\retval TRUE, if view manager \a vm, already in view manager list (\a myViewMgrs).*/
index b6ca7fc08d476827e21fbb52f836329274c0b4f9..13ff29e641197d670efedad2d42bc8802b1c3811 100755 (executable)
@@ -52,7 +52,7 @@ public:
 
   virtual QString       applicationName() const;
 
-  virtual bool          isPossibleToClose();
+  virtual bool          isPossibleToClose( bool& );
   virtual bool          useFile( const QString& );
 
   virtual void          createEmptyStudy();
@@ -84,6 +84,9 @@ public:
 
   virtual void          contextMenuPopup( const QString&, QPopupMenu*, QString& ) {}
 
+  bool                  exitConfirmation() const;
+  void                  setExitConfirmation( const bool );
+
 signals:
   /*!emit that view manager added*/
   void                  viewManagerAdded( SUIT_ViewManager* );
@@ -101,7 +104,6 @@ public slots:
   virtual void          onOpenDoc();
   virtual bool          onOpenDoc( const QString& );
 
-  virtual void          onLoadDoc();
   virtual bool          onLoadDoc( const QString& );
 
   virtual void          onExit();
@@ -126,7 +128,7 @@ protected:
           MenuHelpId = 7
        };
 
-  enum {  FileNewId,   FileOpenId,   FileLoadId, FileCloseId,
+  enum {  FileNewId,   FileOpenId,   FileCloseId,
          FileSaveId,  FileSaveAsId, FileExitId, 
          ViewStatusBarId, ViewWindowsId, NewWindowId,
           EditCutId, EditCopyId, EditPasteId,
@@ -134,6 +136,8 @@ protected:
          UserID
        };
  
+  enum { CloseCancel, CloseSave, CloseDiscard };
+
 protected:
   virtual void          createActions();
   virtual void          updateDesktopTitle();
@@ -153,13 +157,16 @@ protected:
 
   virtual void          setActiveViewManager( SUIT_ViewManager* );
 
+  virtual bool          closeAction( const int, bool& );
+  virtual int           closeChoice( const QString& );
+
 private:
   ViewManagerList       myViewMgrs;
   SUIT_ViewManager*     myActiveViewMgr;
 
 private:
+  bool                  myExitConfirm;
   bool                  myEditEnabled;
-  bool                  myClosePermanently;
 };
 
 #if defined WIN32
diff --git a/src/STD/STD_CloseDlg.cxx b/src/STD/STD_CloseDlg.cxx
deleted file mode 100644 (file)
index ff09c55..0000000
+++ /dev/null
@@ -1,100 +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/ or email : webmaster.salome@opencascade.com
-//
-#include "STD_CloseDlg.h"
-
-#include <qlabel.h> 
-#include <qlayout.h> 
-#include <qpushbutton.h>
-#include <qmessagebox.h>
-#include <qhbuttongroup.h>
-
-#ifndef WNT
-using namespace std;
-#endif
-
-/*!
- * \brief creates a Close dialog box
- * \param parent a parent widget
- * \param modal bool argument, if true the dialog box is a modal dialog box
- * \param f style flags
- */
-
-STD_CloseDlg::STD_CloseDlg( QWidget* parent, bool modal, WFlags f )
-: QDialog( parent, "", true,  WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
-{
-  setSizeGripEnabled( true );
-  setCaption( tr( "CLOSE_DLG_CAPTION" ) );
-
-  QVBoxLayout* m_vbL = new QVBoxLayout( this );
-  m_vbL->setMargin( 11 );
-  m_vbL->setSpacing( 6 );
-
-  QLabel* m_lIcon = new QLabel( this, "m_lDescr" );
-  QPixmap pm = QMessageBox::standardIcon( QMessageBox::Warning );
-  m_lIcon->setPixmap( pm );
-  m_lIcon->setScaledContents( false );
-  m_lIcon->setAlignment( Qt::AlignCenter );
-
-  QLabel* m_lDescr = new QLabel (this, "m_lDescr");
-  m_lDescr->setText ( tr ("CLOSE_DLG_DESCRIPTION") );
-  m_lDescr->setAlignment( Qt::AlignCenter );
-  m_lDescr->setMinimumHeight( m_lDescr->sizeHint().height()*5 );
-  m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
-
-  QHBoxLayout* m_hl1 = new QHBoxLayout();
-  m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 );
-  m_hl1->addWidget( m_lIcon );
-  m_hl1->addWidget( m_lDescr );
-
-  m_pb1 = new QPushButton( tr ("CLOSE_DLG_SAVE_CLOSE"), this );
-  m_pb2 = new QPushButton( tr ("CLOSE_DLG_CLOSE"),      this );
-  m_pb3 = new QPushButton( tr ("CLOSE_DLG_UNLOAD"),     this );
-  m_pb4 = new QPushButton( tr ("BUT_CANCEL"), this );
-
-  QGridLayout* m_hl2 = new QGridLayout();
-  m_hl2->setMargin( 0 ); m_hl2->setSpacing( 6 );
-  m_hl2->addWidget( m_pb1, 0, 0 );
-  m_hl2->addWidget( m_pb2, 0, 1 );
-  m_hl2->addWidget( m_pb3, 0, 2 );
-  m_hl2->addColSpacing( 3, 10 );
-  m_hl2->setColStretch( 3, 5 );
-  m_hl2->addWidget( m_pb4, 0, 4 );
-  
-  m_vbL->addLayout( m_hl1 );
-  m_vbL->addLayout( m_hl2 );
-
-  connect( m_pb1, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
-  connect( m_pb2, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
-  connect( m_pb3, SIGNAL( clicked() ), this, SLOT( onButtonClicked() ) );
-  connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) );
-}
-
-/*!
- * \brief reaction on clicked(pressed) button
- */
-void STD_CloseDlg::onButtonClicked()
-{
-  QPushButton* btn = ( QPushButton* )sender();
-  if ( btn == m_pb1 )
-    done( 1 );
-  if ( btn == m_pb2 )
-    done( 2 );
-  if ( btn == m_pb3 )
-    done( 3 );
-}
diff --git a/src/STD/STD_CloseDlg.h b/src/STD/STD_CloseDlg.h
deleted file mode 100644 (file)
index 6975e88..0000000
+++ /dev/null
@@ -1,62 +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/ or email : webmaster.salome@opencascade.com
-//
-#ifndef STD_CloseDlg_H
-#define STD_CloseDlg_H
-
-#include <qdialog.h> 
-
-/*! \class QDialog
- * \brief For more information see <a href="http://doc.trolltech.com">QT documentation</a>.
- */
-/*!\class STD_CloseDlg
- * \brief Describes a dialog box shown on closing the active study
- */
-class STD_CloseDlg: public QDialog
-{
-  Q_OBJECT
-
-public:
-  STD_CloseDlg ( QWidget * parent = 0, bool modal = FALSE, WFlags f = 0 ) ;
-  ~STD_CloseDlg ( ) { };
-
-private slots:
-  void onButtonClicked();
-
-private:
-  /*!\var m_pb1
-   * \brief Private, stores a dialog button 1
-   */
-  QPushButton* m_pb1; 
-  /*!\var m_pb2
-   * \brief Private, stores a dialog button 2
-   */
-  QPushButton* m_pb2;
-  /*!\var m_pb3
-   * \brief Private, stores a dialog button 3
-   */
-  QPushButton* m_pb3;
-
-  /*!\var m_pb4
-   * \brief Private, stores a dialog button 4
-   */
-  QPushButton* m_pb4;
-};
-
-#endif
-
index eef69e683e788434578dc18b3d99819072f25d8f..c70c031cc60f31bde781235ab22ffc44ff4e6bb4 100755 (executable)
@@ -23,7 +23,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: example-Qt-message-extraction\n"
 "POT-Creation-Date: 1999-02-23 15:38+0200\n"
-"PO-Revision-Date: 1999-02-23 15:38+0200\n"
+"PO-Revision-Date: 2007-11-07 18:43+0300\n"
 "Last-Translator: \n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 
@@ -192,7 +192,7 @@ msgid "PRP_DESK_VIEW_STDTOOLBAR"
 msgstr "Toggles standard toolbar on/off"
 
 msgid "QUE_DESK_EXIT"
-msgstr "Do you really want to quit ?"
+msgstr "Are you sure you want to quit SALOME?"
 
 msgid "TOT_DESK_FILE_NEW"
 msgstr "New document"
@@ -345,7 +345,7 @@ msgid "STD_Application::INF_DOC_SAVING_FAILS"
 msgstr "Can't save file \"%1\".\nPossible reason is permission denied or disc full.\nTry to use another file name."
 
 msgid "CLOSE_DLG_SAVE_CLOSE"
-msgstr "&Save&&Close"
+msgstr "&Save && Close"
 
 msgid "CLOSE_DLG_CLOSE"
 msgstr "C&lose w/o saving"
@@ -366,7 +366,7 @@ msgid "CLOSE_DLG_CAPTION"
 msgstr "Close active study"
 
 msgid "CLOSE_DLG_DESCRIPTION"
-msgstr "Do you want to close or only unload the study"
+msgstr "Study is modified. Do you want to save it?"
 
 msgid "DLG_LOAD_STUDY_CAPTION"
 msgstr "Load Study"
diff --git a/src/SUIT/Makefile.am b/src/SUIT/Makefile.am
new file mode 100755 (executable)
index 0000000..8454371
--- /dev/null
@@ -0,0 +1,123 @@
+#  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$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libsuit.la
+
+salomeinclude_HEADERS= \
+       SUIT.h \
+       SUIT_ActionOperation.h \
+       SUIT_Application.h \
+       SUIT_Convertor.h \
+       SUIT_DataObject.h \
+       SUIT_DataObjectIterator.h \
+       SUIT_DataObjectKey.h \
+       SUIT_DataOwner.h \
+       SUIT_Desktop.h \
+       SUIT_ExceptionHandler.h \
+       SUIT_FileDlg.h \
+       SUIT_FileValidator.h \
+       SUIT_MessageBox.h \
+       SUIT_MsgDlg.h \
+       SUIT_Operation.h \
+       SUIT_OverrideCursor.h \
+       SUIT_ParserSettings.h \
+       SUIT_PopupClient.h \
+       SUIT_ResourceMgr.h \
+       SUIT_SelectionMgr.h \
+       SUIT_Selector.h \
+       SUIT_Session.h \
+       SUIT_SmartPtr.h \
+       SUIT_Study.h \
+       SUIT_ToolButton.h \
+       SUIT_Tools.h \
+       SUIT_ViewManager.h \
+       SUIT_ViewModel.h \
+       SUIT_ViewWindow.h \
+       SUIT_SelectionFilter.h \
+       SUIT_Accel.h \
+       SUIT_TreeSync.h
+
+dist_libsuit_la_SOURCES= \
+       SUIT_ActionOperation.cxx \
+       SUIT_Application.cxx \
+       SUIT_DataObject.cxx \
+       SUIT_DataObjectIterator.cxx \
+       SUIT_DataObjectKey.cxx \
+       SUIT_DataOwner.cxx \
+       SUIT_Desktop.cxx \
+       SUIT_ExceptionHandler.cxx \
+       SUIT_FileDlg.cxx \
+       SUIT_FileValidator.cxx \
+       SUIT_MessageBox.cxx \
+       SUIT_MsgDlg.cxx \
+       SUIT_Operation.cxx \
+       SUIT_OverrideCursor.cxx \
+       SUIT_ParserSettings.cxx \
+       SUIT_PopupClient.cxx \
+       SUIT_ResourceMgr.cxx \
+       SUIT_SelectionMgr.cxx \
+       SUIT_Selector.cxx \
+       SUIT_Session.cxx \
+       SUIT_Study.cxx \
+       SUIT_ToolButton.cxx \
+       SUIT_Tools.cxx \
+       SUIT_ViewManager.cxx \
+       SUIT_ViewModel.cxx \
+       SUIT_ViewWindow.cxx \
+       SUIT_SelectionFilter.cxx \
+       SUIT_Accel.cxx
+
+MOC_FILES= \
+       SUIT_ActionOperation_moc.cxx \
+       SUIT_Application_moc.cxx \
+       SUIT_DataObject_moc.cxx \
+       SUIT_Desktop_moc.cxx \
+       SUIT_FileDlg_moc.cxx \
+       SUIT_MsgDlg_moc.cxx \
+       SUIT_Operation_moc.cxx \
+       SUIT_PopupClient_moc.cxx \
+       SUIT_Session_moc.cxx \
+       SUIT_Study_moc.cxx \
+       SUIT_ToolButton_moc.cxx \
+       SUIT_ViewModel_moc.cxx \
+       SUIT_ViewWindow_moc.cxx \
+       SUIT_ViewManager_moc.cxx \
+       SUIT_SelectionMgr_moc.cxx \
+       SUIT_Selector_moc.cxx \
+       SUIT_Accel_moc.cxx
+nodist_libsuit_la_SOURCES=$(MOC_FILES)
+
+dist_salomeres_DATA = \
+       resources/cascade.png \
+       resources/htile.png \
+       resources/vtile.png
+
+nodist_salomeres_DATA = \
+       SUIT_images.qm \
+       SUIT_msg_en.qm
+
+libsuit_la_CPPFLAGS=$(QT_INCLUDES) -I$(srcdir)/../Qtx
+libsuit_la_LDFLAGS=$(QT_MT_LIBS)
+libsuit_la_LIBADD=../Qtx/libqtx.la
diff --git a/src/SUIT/Makefile.in b/src/SUIT/Makefile.in
deleted file mode 100755 (executable)
index bc25b71..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#  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$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= SUIT.h \
-         SUIT_ActionOperation.h \
-        SUIT_Application.h \
-        SUIT_Convertor.h \
-        SUIT_DataObject.h \
-        SUIT_DataObjectIterator.h \
-        SUIT_DataObjectKey.h \
-        SUIT_DataOwner.h \
-        SUIT_Desktop.h \
-        SUIT_ExceptionHandler.h \
-        SUIT_FileDlg.h \
-        SUIT_FileValidator.h \
-        SUIT_MessageBox.h \
-        SUIT_Operation.h \
-        SUIT_OverrideCursor.h \
-        SUIT_ParserSettings.h \
-        SUIT_PopupClient.h \
-        SUIT_ResourceMgr.h \
-        SUIT_SelectionMgr.h \
-        SUIT_Selector.h \
-        SUIT_Session.h \
-        SUIT_SmartPtr.h \
-        SUIT_Study.h \
-        SUIT_ToolButton.h \
-        SUIT_Tools.h \
-        SUIT_ViewManager.h \
-        SUIT_ViewModel.h \
-        SUIT_ViewWindow.h \
-        SUIT_SelectionFilter.h \
-        SUIT_Accel.h \
-        SUIT_TreeSync.h
-
-# .po files to transform in .qm
-PO_FILES = SUIT_images.po \
-          SUIT_msg_en.po 
-                    
-# Libraries targets
-LIB = libsuit.la
-
-LIB_SRC= SUIT_ActionOperation.cxx \
-         SUIT_Application.cxx \
-        SUIT_DataObject.cxx \
-        SUIT_DataObjectIterator.cxx \
-        SUIT_DataObjectKey.cxx \
-        SUIT_DataOwner.cxx \
-        SUIT_Desktop.cxx \
-        SUIT_ExceptionHandler.cxx \
-        SUIT_FileDlg.cxx \
-        SUIT_FileValidator.cxx \
-        SUIT_MessageBox.cxx \
-        SUIT_Operation.cxx \
-        SUIT_OverrideCursor.cxx \
-        SUIT_ParserSettings.cxx \
-        SUIT_PopupClient.cxx \
-        SUIT_ResourceMgr.cxx \
-        SUIT_SelectionMgr.cxx \
-        SUIT_Selector.cxx \
-        SUIT_Session.cxx \
-        SUIT_Study.cxx \
-        SUIT_ToolButton.cxx \
-        SUIT_Tools.cxx \
-        SUIT_ViewManager.cxx \
-        SUIT_ViewModel.cxx \
-        SUIT_ViewWindow.cxx \
-        SUIT_SelectionFilter.cxx \
-        SUIT_Accel.cxx 
-
-LIB_MOC = SUIT_ActionOperation.h \
-          SUIT_Application.h \
-         SUIT_DataObject.h \
-         SUIT_Desktop.h \
-         SUIT_FileDlg.h \
-         SUIT_Operation.h \
-         SUIT_PopupClient.h \
-         SUIT_Session.h \
-         SUIT_Study.h \
-         SUIT_ToolButton.h \
-         SUIT_ViewModel.h \
-         SUIT_ViewWindow.h \
-         SUIT_ViewManager.h \
-         SUIT_SelectionMgr.h \
-          SUIT_Selector.h \
-         SUIT_Accel.h 
-
-RESOURCES_FILES = \
-       cascade.png \
-       htile.png \
-       vtile.png
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS) -lqtx
-
-@CONCLUDE@
index a4a21d8623fb062d71e8f0c460382553fb8edbf4..e6400595ce50f490dbd8f6dd410701f565b0a0e5 100755 (executable)
@@ -25,6 +25,7 @@
 #include <qlabel.h>
 #include <qtimer.h>
 #include <qstatusbar.h>
+#include <qapplication.h>
 
 #include <QtxAction.h>
 #include <QtxActionMenuMgr.h>
   Default constructor
 */
 SUIT_Application::SUIT_Application()
-: QObject( 0 ),
-myStudy( 0 ),
-myDesktop( 0 ),
-myStatusLabel( 0 )
-{ 
+  : QObject( 0 ),
+    myStudy( 0 ),
+    myDesktop( 0 ),
+    myStatusLabel( 0 )
+{
 }
 
 /*!
@@ -46,8 +47,8 @@ myStatusLabel( 0 )
 */
 SUIT_Application::~SUIT_Application() 
 {
+  setActiveStudy( 0 );
   delete myStudy;
-  myStudy = 0;
 
   setDesktop( 0 );
 }
@@ -64,7 +65,7 @@ SUIT_Desktop* SUIT_Application::desktop()
    \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()
+bool SUIT_Application::isPossibleToClose( bool& )
 {
   return true;
 }
@@ -168,7 +169,7 @@ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const
   \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 )
+void SUIT_Application::putInfo( const QString& msg, const int msec )
 {
   if ( !desktop() )
     return;
@@ -180,11 +181,36 @@ void SUIT_Application::putInfo ( const QString& msg, const int msec )
     myStatusLabel->show();
   }
 
+  QString prev = myStatusLabel->text();
+
   myStatusLabel->setText( msg );
   if ( msec != -1 )
-    QTimer::singleShot( msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec, myStatusLabel, SLOT( clear() ) );
+    QTimer::singleShot( msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec, this, SLOT( onInfoClear() ) );
+
+  if ( prev != msg )
+    emit infoChanged( msg );
+}
+
+/*!
+  Clear the information label in status bar after delay.
+*/
+void SUIT_Application::onInfoClear()
+{
+  if ( !myStatusLabel )
+    return;
+
+  bool changed = !myStatusLabel->text().isEmpty();
+  myStatusLabel->clear();
+  if ( changed )
+    emit infoChanged( QString::null );
 }
 
+/*!
+  Updates status of the registerd actions
+*/
+void SUIT_Application::updateCommandsStatus()
+{}
+
 /*!
   Initialize with application arguments
   \param argc - number of application arguments
@@ -221,8 +247,11 @@ void SUIT_Application::setDesktop( SUIT_Desktop* desk )
 
   delete myDesktop;
   myDesktop = desk;
-  if ( myDesktop )
+  if ( myDesktop ) {
     connect( myDesktop, SIGNAL( activated() ), this, SLOT( onDesktopActivated() ) );
+    // Force desktop activation (NPAL16628)
+    QApplication::postEvent(myDesktop, new QEvent(QEvent::WindowActivate));
+  }
 }
 
 /*!
@@ -244,6 +273,12 @@ void SUIT_Application::setActiveStudy( SUIT_Study* study )
   if ( myStudy == study )
     return;
 
+  if(myStudy)
+    disconnect(myStudy, SIGNAL( studyModified( SUIT_Study* ) ), this, SLOT( updateCommandsStatus() ) );
+
+  if(study)
+    connect(study, SIGNAL( studyModified( SUIT_Study* ) ), this, SLOT( updateCommandsStatus() ) );
+           
   myStudy = study;
 }
 
@@ -601,3 +636,12 @@ void SUIT_Application::onDesktopActivated()
 {
   emit activated( this );
 }
+
+/*!
+  SLOT: is used for Help browsing
+*/
+
+void SUIT_Application::onHelpContextModule (const QString& /*theComponentName*/,
+                                            const QString& /*theFileName*/)
+{
+}
index 72dc89363a4efe379f4923c74c642723fcbe7a11..14d4854ab23a5af04ab65632c98e38eab797e546 100755 (executable)
 #include <qobject.h>
 #include <qwidget.h>
 
+class QLabel;
+class QString;
 class QAction;
+class QIconSet;
 class SUIT_Desktop;
 class SUIT_Convertor;
 class SUIT_ViewModel;
 class SUIT_ResourceMgr;
-class QString;
-class QIconSet;
-class QLabel;
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! \class QObject
  * \brief For more information see <a href="http://doc.trolltech.com">QT documentation</a>.
  */
@@ -58,7 +63,7 @@ public:
 
   /*! Returns 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. */
-  virtual bool          isPossibleToClose();
+  virtual bool          isPossibleToClose( bool& );
 
   /*! Performs some finalization of life cycle of this application.
       For instance, the application can force its documents(s) to close. */
@@ -107,6 +112,14 @@ public:
 signals:
   void                  applicationClosed( SUIT_Application* );
   void                  activated( SUIT_Application* );
+  void                  infoChanged( QString );
+
+public slots:
+  virtual void          updateCommandsStatus();
+  virtual void          onHelpContextModule( const QString&, const QString& );
+
+private slots:
+  void                  onInfoClear();
 
 protected:
   SUIT_Application*     startApplication( int, char** ) const;
@@ -171,4 +184,8 @@ extern "C"
 
 #define APP_CREATE_NAME "createApplication"
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 9f4227d488a3dae21d1535f93f4df41b2b46ccc9..053e1abe738d45f6738c7c092271b1fe4a02ce5b 100755 (executable)
@@ -29,7 +29,7 @@ class SUIT_EXPORT SUIT_DataObjectKey
 {
 public:
   SUIT_DataObjectKey();
-  ~SUIT_DataObjectKey();
+  virtual ~SUIT_DataObjectKey();
 
   virtual bool isLess( const SUIT_DataObjectKey* ) const = 0;
   virtual bool isEqual( const SUIT_DataObjectKey* ) const = 0;
index 826bd89bfa439b15b6f134fd46b1cf126cf6f862..a0aa525c4fd1eb614c9dae7b1f0bb0884da8452d 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include "SUIT_DataOwner.h"
 
 #ifndef WNT
@@ -36,18 +37,35 @@ SUIT_DataOwner::~SUIT_DataOwner()
 {
 }
 
-/*! operator== : compares two owners*/
+/*! Operator == compares two owners*/
 bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
 {
   if ( !p1.isNull() && !p2.isNull() )
-    return (p1->isEqual( *p2 ) && p2->isEqual( *p1 ));
+    return (p1->keyString() == p2->keyString());
   return p1.isNull() && p2.isNull();
 }
 
+// *** jfa: The below function has been put here 14.02.2007 from branch BR_Dev_For_4_0
+// *** and also improved for better comparison of DataOwners with DataSubOwners.
+// *** This comment is to be removed after merging with BR_Dev_For_4_0.
+/*! Operator < allows to order suit data owners for map */
+bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
+{
+  if ( p1.isNull() && p2.isNull() )
+    return false;
+  else if ( p1.isNull() )
+    return true;
+  else if ( p2.isNull() )
+    return false;
+
+  return (p1->keyString() < p2->keyString());
+}
+// *** end
+
 /*!
   \class SUIT_DataOwnerPtrList 
   implements value list with unique items (uniqueness is 
-  provided by operator==())
+  provided by operator==() and operator<())
 */
 
 /*!
@@ -126,12 +144,12 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>
 */
 SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x )
 {
-  if( mySkipEqual && myMap.contains( x ) ) //contains uses SUIT_DataOwnerPtr::operator==
+  if ( mySkipEqual && myMap.contains( x ) ) //contains uses SUIT_DataOwnerPtr::operator==
     return myMap[ x ];
 
   iterator it = QValueList<SUIT_DataOwnerPtr>::append( x );
 
-  if( mySkipEqual )
+   if ( mySkipEqual )
     myMap.insert( x, it );
 
   return it;
@@ -156,11 +174,3 @@ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x )
     myMap.remove(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 bc2ef2615535a148e165754413b81e3352865bb7..7e88c58ff9e7738e8066080ec371633c70ffa751 100755 (executable)
@@ -40,8 +40,9 @@ class SUIT_EXPORT SUIT_DataOwner : public RefCount
 public:
   SUIT_DataOwner();//!< constructor
   virtual ~SUIT_DataOwner();//!< destructor
-  //! compare function
-  virtual bool isEqual( const SUIT_DataOwner& ) const = 0;
+  // *** jfa: The below line has been put here 14.02.2007.
+  // *** It cancels modifications from branch BR_Dev_For_4_0
+  virtual QString keyString() const = 0;//!< used for comparison
 };
 
 /*! \typedef SUIT_DataOwnerPtr
index 6c6bcb37e8632891bb6753a0ea6f6a9f5d9b9a56..8b2c63202b75a2613329ee91f1939a8a535bd05a 100755 (executable)
@@ -171,4 +171,18 @@ void SUIT_Desktop::logoClear()
     myLogoMgr->clear();
 }
 
+/*!
+  Emits activated signal
+*/
+void SUIT_Desktop::emitActivated()
+{
+  emit activated();
+}
 
+/*!
+  Emits message signal
+*/
+void SUIT_Desktop::emitMessage( const QString& theMessage )
+{
+  emit message( theMessage );
+}
index d63657956e981fe9075c10a46aa69680a7ced01c..e3acceb62f3621646107c89d2d8ff995614ba576 100755 (executable)
@@ -59,11 +59,15 @@ public:
   void                     logoRemove( const QString& );
   void                     logoInsert( const QString&, const QPixmap&, const int = -1 );
 
+  void                     emitActivated();
+  void                     emitMessage( const QString& );
+
 signals:
   void                     activated();
   void                     deactivated();
   void                     windowActivated( SUIT_ViewWindow* );
   void                     closing( SUIT_Desktop*, QCloseEvent* );
+  void                     message( const QString& );
 
 protected:
   virtual bool             event( QEvent* );
diff --git a/src/SUIT/SUIT_MsgDlg.cxx b/src/SUIT/SUIT_MsgDlg.cxx
new file mode 100644 (file)
index 0000000..b19372c
--- /dev/null
@@ -0,0 +1,224 @@
+// 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   : SUIT_MsgDlg.cxx
+// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+//
+
+#include "SUIT_MsgDlg.h"
+
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+
+/*!
+  \class SUIT_MsgDlg
+  \brief Information message dialog box with custom number of buttons.
+
+  The class provides a functionality to display message box with the custom number
+  of buttons. Each button is identified by the unique non-zero number which can 
+  be tested after dialog box finishes its execution. Pressing each button except
+  causes dialog box to finish execution with return status equal to the button
+  identifier. In addition, pressing "Cancel" button finishes dialog box execution
+  wih return status 0.
+
+  It is also possible to display custom pixmap or icon at the left side of the
+  dialog box. Pass the required pixmap to the constructor or use method setPixmap().
+
+  The typical usage of the dialog box:
+  \code
+  SUIT_MsgDlg dlg( this, tr( "Warning!" ), 
+                   tr( "File %s exists. Overwrite?" ).arg( files[i] ),
+                  QMessageBox::standardIcon( QMessageBox::Warning ) );
+  dlg.addButton( "Yes", YesId );
+  dlg.addButton( "No", NoId );
+  dlg.addButton( "Yes to all", YesAllId );
+  dlg.addButton( "No to all", NoAllId );
+  int ret = dlg.exec();
+  switch( ret ) {
+  case YesId:
+    // process one file
+    processOneFile();
+    break;
+  case NoId:
+    // skip current file processing and proceed to the next file
+    break;
+  case YesAllId:
+    // process all files
+    processAllFiles();
+    stopped = true;
+    break;
+  case NoAllId:
+    // skip all process all files
+    processAllFiles();
+    break;
+  default:
+    // operation is cancelled
+    break;
+  }
+  \endcode
+
+  \sa addButton(), setPixmap()
+*/
+
+/*!
+  \brief Constructor.
+  \param parent parent widget
+  \param title dialog box caption
+  \param msg dialog box message
+  \param icon dialog box icon
+*/
+SUIT_MsgDlg::SUIT_MsgDlg( QWidget*       parent, 
+                         const QString& title, 
+                         const QString& msg, 
+                         const QPixmap& icon )
+: QDialog ( parent, "SUIT_MsgDlg", true )
+{
+  // title
+  setCaption( title );
+  
+  // icon
+  myIconLab = new QLabel( this );
+  myIconLab->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
+  myIconLab->setScaledContents( false );
+  myIconLab->setAlignment( Qt::AlignCenter );
+
+  if ( !icon.isNull() )
+    myIconLab->setPixmap( icon );
+
+  // info message
+  myMsgLab = new QLabel( msg, this );
+  myMsgLab->setTextFormat( Qt::RichText );
+  myMsgLab->setAlignment( Qt::AlignCenter );
+  
+  // Buttons
+  myButtonLayout = new QHBoxLayout(); 
+  myButtonLayout->setMargin( 0 ); 
+  myButtonLayout->setSpacing( 6 );
+
+  // <Cancel>
+  QPushButton* cancelBtn = new QPushButton( tr( "CANCEL" ), this );
+  myButtonLayout->addSpacing( 20 );
+  myButtonLayout->addStretch();
+  myButtonLayout->addWidget( cancelBtn );
+
+  QGridLayout* layout = new QGridLayout( this ); 
+  layout->setMargin( 11 );
+  layout->setSpacing( 6 );
+
+  layout->addWidget( myIconLab, 0, 0 );
+  layout->addWidget( myMsgLab,  0, 1 );
+  layout->addMultiCellLayout( myButtonLayout, 1, 1, 0, 1 );
+
+  // signals and slots connections
+  connect( cancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+/*!
+  \brief Destructor.
+*/
+SUIT_MsgDlg::~SUIT_MsgDlg()
+{
+}
+
+/*!
+  \brief Add operation button to the dialog box.
+
+  If the parameter \a id is equal to -1, then the 
+  button identifier is generated automatically.
+
+  \param btext button text
+  \param id button identifier
+  \return button identifier
+*/
+int SUIT_MsgDlg::addButton( const QString& btext, const int id )
+{
+  static int lastId = 0;
+  int bid = id == -1 ? --lastId : id;
+
+  QPushButton* b = button( bid );
+  if ( b ) {
+    myButtons.remove( b );
+    delete b;
+  }
+
+  QPushButton* newButton = new QPushButton( btext, this );
+
+  myButtonLayout->insertWidget( myButtons.count(), newButton );
+  myButtons.insert( newButton, bid );
+  connect( newButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+
+  return bid;
+}
+
+/*!
+  \brief Set icon to the dialog box
+  \param icon pixmap
+*/
+void SUIT_MsgDlg::setPixmap( const QPixmap& icon )
+{
+  myIconLab->setPixmap( icon );
+}
+
+
+/*!
+  \brief Called when any dialog button (except \c Cancel) 
+  is clicked.
+  
+  Closes the dialog and sets its result code to the identifier
+  of the button clicked by the user.
+*/
+void SUIT_MsgDlg::accept()
+{
+  QPushButton* btn = ( QPushButton* )sender();
+  done( myButtons[ btn ] );
+}
+
+/*!
+  \brief Search button with the specified identifier.
+  \param id button identifier
+  \return button or 0 if \a id is invalid
+*/
+QPushButton* SUIT_MsgDlg::button( const int id ) const
+{
+  QPushButton* btn = 0;
+  for ( ButtonMap::ConstIterator it = myButtons.begin(); 
+       it != myButtons.end() && !btn; ++it ) {
+    if ( it.data() == id )
+      btn = it.key();
+  }
+  return btn;
+}
+
+/*!
+  \brief Get information icon label.
+  \return information icon label
+*/
+QLabel* SUIT_MsgDlg::iconLabel() const
+{
+  return myIconLab;
+}
+
+/*!
+  \brief Get information message label.
+  \return information message label
+*/
+QLabel* SUIT_MsgDlg::messageLabel() const
+{
+  return myMsgLab;
+}
diff --git a/src/SUIT/SUIT_MsgDlg.h b/src/SUIT/SUIT_MsgDlg.h
new file mode 100644 (file)
index 0000000..e7f0e81
--- /dev/null
@@ -0,0 +1,66 @@
+// 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   : SUIT_MsgDlg.h
+// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+//
+
+#ifndef SUIT_MSGDLG_H
+#define SUIT_MSGDLG_H
+
+#include "SUIT.h"
+
+#include <qdialog.h> 
+#include <qpixmap.h>
+#include <qmap.h>
+
+class QLabel;
+class QPushButton;
+class QHBoxLayout;
+
+class SUIT_EXPORT SUIT_MsgDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  SUIT_MsgDlg( QWidget*, const QString&, const QString&, const QPixmap& = QPixmap() ) ;
+  ~SUIT_MsgDlg();
+
+  int  addButton( const QString&, const int = -1);
+  void setPixmap( const QPixmap& );
+
+public slots:
+  void accept();
+
+protected:
+  QPushButton* button( const int ) const;
+  QLabel*      iconLabel() const;
+  QLabel*      messageLabel() const;
+
+private:
+  typedef QMap<QPushButton*,int> ButtonMap;
+
+private:
+  ButtonMap    myButtons;
+  QHBoxLayout* myButtonLayout;
+  QLabel*      myIconLab;
+  QLabel*      myMsgLab;
+};
+
+#endif // SUIT_MSGDLG_H
+
index 7d4023f3a398b6d06ec145382f4d6bb16536e23c..f65bc9f1245c92a7ac7bb6f67ca22326b8913671 100644 (file)
@@ -36,7 +36,7 @@ public:
   class Signal;
 
   SUIT_PopupClient();
-  ~SUIT_PopupClient();
+  virtual ~SUIT_PopupClient();
 
   bool            connectPopupRequest( QObject* reciever, const char* slot );
   bool            disconnectPopupRequest( QObject* reciever, const char* slot );
index 9a11288e386c77456428cf7c422f00f2ba9d4777..b076babd36c82b23d1856034151a91f3e22334fe 100755 (executable)
@@ -20,6 +20,8 @@
 
 #include <qfileinfo.h>
 #include <qdir.h>
+#include <qapplication.h>
+#include <qregexp.h>
 
 /*!
     Constructor
@@ -64,21 +66,39 @@ 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 bool for_load ) const
 {
-  QString pathName = QtxResourceMgr::userFileName( appName );
+  QString pathName;
+
+  // Try config file, given in arguments
+  for (int i = 1; i < qApp->argc(); i++) {
+    QRegExp rx ("--resources=(.+)");
+    if ( rx.search( QString(qApp->argv()[i]) ) >= 0 && rx.capturedTexts().count() > 1 ) {
+      QString file = rx.capturedTexts()[1];
+      QFileInfo fi (file);
+      pathName = fi.absFilePath();
+    }
+  }
+
+  if (!pathName.isEmpty())
+    return pathName;
+
+  // QtxResourceMgr::userFileName() + '.' + version()
+  pathName = QtxResourceMgr::userFileName( appName );
 
   if ( !version().isEmpty() )
     pathName += QString( "." ) + version();
 
-  if( !QFileInfo( pathName ).exists() && for_load )
+  if ( !QFileInfo( pathName ).exists() && for_load )
   {
     QString newName = findAppropriateUserFile( pathName );
-    if( !newName.isEmpty() )
+    if ( !newName.isEmpty() )
       pathName = newName;
   }
 
@@ -104,7 +124,7 @@ QString SUIT_ResourceMgr::findAppropriateUserFile( const QString& fname ) const
     if( id<0 )
       continue;
 
-    if( abs( id-id0 ) < abs( appr-id0 ) )
+    if( appr < 0 || abs( id-id0 ) < abs( appr-id0 ) )
     {
       appr = id;
       appr_file = d.absFilePath( *anIt );
index a26510108f64487ac20a8ab43ebf74e2e395579b..bc63de032acef57d3eb9baf4e9583cc9b809f998 100644 (file)
@@ -28,7 +28,7 @@ class SUIT_EXPORT SUIT_SelectionFilter
 {
 public:
   SUIT_SelectionFilter();
-  ~SUIT_SelectionFilter();
+  virtual ~SUIT_SelectionFilter();
 
   virtual bool isOk( const SUIT_DataOwner* ) const = 0;
 };
index 6d5f0669dda3d121dff1d413188cb09d2d338ba5..6ea09564821da65837fd0d776feb0e9b6417708f 100755 (executable)
@@ -35,6 +35,9 @@
 #include <dlfcn.h>
 #endif
 
+static bool   SUIT_Session_IsPythonExecuted = false;
+static QMutex SUIT_Session_PythonMutex;
+
 SUIT_Session* SUIT_Session::mySession = 0;
 
 /*! Constructor.*/
@@ -44,7 +47,8 @@ SUIT_Session::SUIT_Session()
 myResMgr( 0 ),
 myHandler( 0 ),
 myActiveApp( 0 ),
-myExitStatus( FROM_GUI )
+myExitStatus( NORMAL ),
+myExitFlags ( 0 )
 {
   SUIT_ASSERT( !mySession )
 
@@ -58,6 +62,10 @@ SUIT_Session::~SUIT_Session()
 {
   myAppList.clear();
 
+  if (myResMgr) {
+    delete myResMgr;
+    myResMgr = 0;
+  }
   mySession = 0;
 }
 
@@ -230,12 +238,13 @@ void SUIT_Session::onApplicationClosed( SUIT_Application* theApp )
 /*!
   Destroys session by closing all applications.
 */
-void SUIT_Session::closeSession( int mode )
+void SUIT_Session::closeSession( int mode, int flags )
 {
   while ( !myAppList.isEmpty() )
   {
     SUIT_Application* app = myAppList.getFirst();
-    if ( mode == ASK && !app->isPossibleToClose() )
+    bool closePermanently;
+    if ( mode == ASK && !app->isPossibleToClose( closePermanently ) )
       return;
     else if ( mode == SAVE )
     {
@@ -245,12 +254,26 @@ void SUIT_Session::closeSession( int mode )
     }
     else if ( mode == DONT_SAVE )
     {
-      myExitStatus = FROM_CORBA_SESSION;
-      //....
+      myExitStatus = FORCED;
     }
 
     app->closeApplication();
   }
+  myExitFlags = flags;
+}
+
+/*!
+  Get session exit flags.
+
+  By default, exit flags are set to 0. You can use pass any flags to the
+  closeSession() method if you need to process them later on application
+  quiting.
+
+  \return exit flags
+*/
+int SUIT_Session::exitFlags() const
+{
+  return myExitFlags;
 }
 
 /*! \retval return myHandler*/
@@ -319,7 +342,32 @@ SUIT_ResourceMgr* SUIT_Session::createResourceMgr( const QString& appName ) cons
 /*!
   Slot, called on activation of some application's desktop
 */
-void SUIT_Session::onApplicationActivated( SUIT_Application* app ) 
+void SUIT_Session::onApplicationActivated( SUIT_Application* app )
 {
   myActiveApp = app;
 }
+
+/*!
+  \retval Return TRUE, if a command is currently executed in Python Console,
+                 FALSE otherwise.
+*/
+bool SUIT_Session::IsPythonExecuted()
+{
+  bool ret;
+  SUIT_Session_PythonMutex.lock();
+  ret = SUIT_Session_IsPythonExecuted;
+  SUIT_Session_PythonMutex.unlock();
+  return ret;
+}
+
+/*!
+  Set value of boolean flag, being returned by method \a IsPythonExecuted().
+  It is supposed to set the flag to TRUE when any python command starts
+  and reset it to FALSE when the command finishes.
+*/
+void SUIT_Session::SetPythonExecuted(bool isPythonExecuted)
+{
+  SUIT_Session_PythonMutex.lock();
+  SUIT_Session_IsPythonExecuted = isPythonExecuted;
+  SUIT_Session_PythonMutex.unlock();
+}
index 08078ff74f9dc6c6f0dc7f32ce4b3da90b0c743d..7b16ea1832427b96cc319122b9d9245592865da4 100755 (executable)
@@ -24,6 +24,7 @@
 #include "SUIT_Application.h"
 #include "SUIT_ResourceMgr.h"
 
+#include <qmutex.h>
 #include <qobject.h>
 #include <qptrlist.h>
 #include <qptrvector.h>
@@ -54,7 +55,7 @@ public:
   typedef LIB_HANDLE AppLib;
 
   enum { ASK = 0, SAVE, DONT_SAVE } CloseMode;
-  enum { FROM_GUI = 0, FROM_CORBA_SESSION } ExitStatus;
+  enum { NORMAL = 0, FORCED } ExitStatus;
 
 public:
   SUIT_Session();
@@ -69,10 +70,15 @@ public:
 
   SUIT_ResourceMgr*            resourceMgr() const;
 
-  void                         closeSession( int mode = ASK );
+  void                         closeSession( int mode = ASK, int flags = 0 );
+  int                          exitFlags() const;
 
   SUIT_ExceptionHandler*       handler() const;
 
+  // To lock GUI user actions during python command execution (PAL12651)
+  static bool                  IsPythonExecuted();
+  static void                  SetPythonExecuted(bool isPythonExecuted);
+
 signals:
   void                         applicationClosed( SUIT_Application* );
 
@@ -103,6 +109,7 @@ private:
   static SUIT_Session*         mySession;
 
   int                          myExitStatus;
+  int                          myExitFlags;
 };
 
 #endif
index a3baef3ce8bc7dfa153cea62db34b2e91c3cd4a4..801d9ecb0a6ba2495fca660659ad70c016adebba 100755 (executable)
@@ -200,6 +200,15 @@ void SUIT_Study::setIsModified( const bool on )
   myIsModified = on;
 }
 
+/*!
+  Set study modified to \a on.
+ */
+void SUIT_Study::Modified()
+{
+  setIsModified( TRUE );
+  sendChangesNotification();
+}
+
 /*!
   Set root object.
  */
@@ -511,18 +520,12 @@ bool SUIT_Study::hasTransaction() const
 {
   return false;
 }
-
-/*!
- * \brief Stores the study state
-*/
-int SUIT_Study::storeState()
-{
-  return -1;
-}
  
 /*!
- * \brief Restores the study state
-*/
+ * \brief Restores the study state.
+ */
 void SUIT_Study::restoreState(int savePoint)
 {
+  // Redefined in SalomeApp_Study.
+  // Called from SALOME_Session_i::restoreVisualState(CORBA::Long theSavePoint)
 }
index 156c6bc74df61f24a70f95fe04b46b75bd69e98a..15f78a351c3e75f3676dc7b3473808147523957a 100755 (executable)
@@ -50,6 +50,7 @@ public:
 
   virtual bool      isSaved()  const;
   virtual bool      isModified() const;
+  virtual void      Modified();
 
   virtual void      createDocument();
   virtual void      closeDocument( bool = true );
@@ -75,7 +76,6 @@ public:
   bool              suspend( SUIT_Operation* );
   bool              resume( SUIT_Operation* );
 
-  virtual int       storeState();
   virtual void      restoreState(int savePoint);
 
 signals:
index 602a8913bf72f502dd78a25dde6c28de7bcff369..61d8fde064081ab4b271bda586b0668aaa4661bb 100644 (file)
@@ -106,7 +106,7 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td )
   if( td.isEqual( r1, r2 ) )
   {
     // update items themselves
-    td.updateItem( r2 );
+    td.updateItem( r1, r2 );
 
     // iterate 'siblings' (direct children) 
     QValueList< DiffItem< SrcItem, TrgItem > > d;
@@ -135,7 +135,7 @@ TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td )
         else
        {
          //to update
-         td.updateItem( item.myTrg );
+         td.updateItem( item.mySrc, item.myTrg );
          synchronize( item.mySrc, item.myTrg, td );
          lastItem = item.myTrg;
        }
index 619b9c488522fe9e451c8e9d01bfa7c4558c4006..9d2e7e18619cdd04f16bd00d33734716b7b91d20 100755 (executable)
 #include "SUIT_Study.h"
 
 #include <qcursor.h>
+#include <qregexp.h>
 #include <qmessagebox.h>
 
 #ifdef WNT
 #include <windows.h>
 #endif
 
+QMap<QString, int> SUIT_ViewManager::_ViewMgrId;
+
 /*!\class SUIT_ViewManager.
  * Class provide manipulation with view windows.
  */
@@ -39,17 +42,20 @@ SUIT_ViewManager::SUIT_ViewManager( SUIT_Study* theStudy,
                                     SUIT_ViewModel* theViewModel )
 : QObject( 0 ),
 myDesktop( theDesktop ),
-myTitle( "Default viewer" ),
+myTitle( "Default: %M - viewer %V" ),
 myStudy( NULL )
 {
   myViewModel = 0;
   myActiveView = 0;
-  setViewModel(theViewModel);
-  connect(theDesktop, SIGNAL(windowActivated(SUIT_ViewWindow*)), 
-          this,       SLOT(onWindowActivated(SUIT_ViewWindow*)));
+  setViewModel( theViewModel );
+
+  myId = useNewId( getType() );
+
+  connect( theDesktop, SIGNAL( windowActivated( SUIT_ViewWindow* ) ), 
+           this,       SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
 
   myStudy = theStudy;
-  if( myStudy )
+  if ( myStudy )
     connect( myStudy, SIGNAL( destroyed() ), this, SLOT( onDeleteStudy() ) );
 }
 
@@ -63,6 +69,26 @@ SUIT_ViewManager::~SUIT_ViewManager()
   }
 }
 
+int SUIT_ViewManager::useNewId( const QString& type )
+{
+  if ( !_ViewMgrId.contains( type ) )
+    _ViewMgrId.insert( type, 0 );
+
+  int id = _ViewMgrId[type];
+  _ViewMgrId[type]++;
+  return id;
+}
+
+void SUIT_ViewManager::setTitle( const QString& theTitle )
+{
+  if ( myTitle == theTitle )
+    return;
+
+  myTitle = theTitle;
+  for ( uint i = 0; i < myViews.count(); i++ )
+    setViewName( myViews[i] );
+}
+
 /*!Sets view model \a theViewModel to view manager.*/
 void SUIT_ViewManager::setViewModel(SUIT_ViewModel* theViewModel) 
 {
@@ -76,10 +102,31 @@ void SUIT_ViewManager::setViewModel(SUIT_ViewModel* theViewModel)
 }
 
 /*!Sets view name for view window \a theView.*/
-void SUIT_ViewManager::setViewName(SUIT_ViewWindow* theView)
+void SUIT_ViewManager::setViewName( SUIT_ViewWindow* theView )
 {
-  int aPos = myViews.find(theView);
-  theView->setCaption(myTitle + QString(":%1").arg(aPos+1));
+  QString title = prepareTitle( getTitle(), myId + 1, myViews.find( theView ) + 1 );
+  theView->setCaption( title );
+}
+
+QString SUIT_ViewManager::prepareTitle( const QString& title, const int mId, const int vId )
+{
+  QString res = title;
+  QRegExp re( "%[%MV]" );
+  int i = 0;
+  while ( ( i = re.search( res, i ) ) != -1 )
+  {
+    QString rplc;
+    QString str = res.mid( i, re.matchedLength() );
+    if ( str == QString( "%%" ) )
+      rplc = QString( "%" );
+    else if ( str == QString( "%M" ) )
+      rplc = QString::number( mId );
+    else if ( str == QString( "%V" ) )
+      rplc = QString::number( vId );
+    res.replace( i, re.matchedLength(), rplc );
+    i += rplc.length();
+  }
+  return res;
 }
 
 /*! Creates View, adds it into list of views and returns just created view window*/
@@ -131,7 +178,7 @@ bool SUIT_ViewManager::insertView(SUIT_ViewWindow* theView)
   }
   
   connect(theView, SIGNAL(closing(SUIT_ViewWindow*)),
-          this,    SLOT(onDeleteView(SUIT_ViewWindow*)));
+          this,    SLOT(onClosingView(SUIT_ViewWindow*)));
 
   connect(theView, SIGNAL(mousePressed(SUIT_ViewWindow*, QMouseEvent*)),
           this,    SLOT(onMousePressed(SUIT_ViewWindow*, QMouseEvent*)));
@@ -168,10 +215,31 @@ bool SUIT_ViewManager::insertView(SUIT_ViewWindow* theView)
 
 /*!Emit delete view. Remove view window \a theView from view manager.
 */
-void SUIT_ViewManager::onDeleteView(SUIT_ViewWindow* theView)
+void SUIT_ViewManager::onClosingView( SUIT_ViewWindow* theView )
 {
-  emit deleteView(theView);
-  removeView(theView);
+  closeView( theView );
+}
+
+/*!
+  Remove the view window \a theView from view manager and destroy it.
+*/
+void SUIT_ViewManager::closeView( SUIT_ViewWindow* theView )
+{
+  if ( !theView )
+    return;
+
+  QGuardedPtr<SUIT_ViewWindow> view( theView );
+
+  view->hide();
+
+  if ( !view->testWFlags( WDestructiveClose ) )
+    return;
+
+  emit deleteView( view );
+  removeView( view );
+
+  if ( view )
+    delete view;
 }
 
 /*!Remove view window \a theView from view manager.
@@ -188,6 +256,26 @@ void SUIT_ViewManager::removeView(SUIT_ViewWindow* theView)
     emit lastViewClosed(this);
 }
 
+/*!
+  Set or clear flag Qt::WDestructiveClose for all views
+*/
+void SUIT_ViewManager::setDestructiveClose( const bool on )
+{
+  for ( uint i = 0; i < myViews.count(); i++ )
+    myViews[i]->setDestructiveClose( on );
+}
+
+/*!
+  Returns 'true' if any of views (view windows) is visible.
+*/
+bool SUIT_ViewManager::isVisible() const
+{
+  bool res = false;
+  for ( uint i = 0; i < myViews.count() && !res; i++ )
+    res = myViews[i]->isVisibleTo( myViews[i]->parentWidget() );
+  return res;
+}
+
 /*!
   Show or hide all views (view windows)
 */
@@ -223,17 +311,15 @@ void SUIT_ViewManager::onWindowActivated(SUIT_ViewWindow* view)
 */
 void SUIT_ViewManager::closeAllViews()
 {
-  unsigned int aSize = myViews.size();
-  for (uint i = 0; i < aSize; i++) {
-    if (myViews[i])
-      myViews[i]->close();
-  }
+  for ( uint i = 0; i < myViews.size(); i++ )
+    delete myViews[i];
+  myViews.clear();
 }
 
 /*!
  *\retval QString - type of view model.
  */
-QString  SUIT_ViewManager::getType() const 
+QString SUIT_ViewManager::getType() const
 { 
   return (!myViewModel)? "": myViewModel->getType(); 
 }
index 8cacbe253904f5fcf4996954577088b01fd6fa43..ced80a1c7fa0c80a9d51f099d02744d638b9936e 100755 (executable)
@@ -59,12 +59,16 @@ public:
   int              getViewsCount() { return myViews.count(); }
   QPtrVector<SUIT_ViewWindow> getViews() { return myViews; }  
 
-  QString          getTitle() const { return myTitle;}
-  void             setTitle(QString theTitle) { myTitle = theTitle; }
+  QString          getTitle() const { return myTitle; }
+  virtual void     setTitle( const QString& );
 
   SUIT_ViewWindow* createViewWindow();
 
+  bool             isVisible() const;
   virtual void     setShown( const bool );
+  virtual void     setDestructiveClose( const bool );
+
+  int              getId() const { return myId; }
 
 public slots:
   void             createView();
@@ -85,8 +89,8 @@ signals:
   
 protected slots:
   void             onWindowActivated(SUIT_ViewWindow*);
-  void             onDeleteView(SUIT_ViewWindow* theView);
-  void             onMousePressed(SUIT_ViewWindow* theView, QMouseEvent* theEvent);
+  void             onClosingView( SUIT_ViewWindow* );
+  void             onMousePressed(SUIT_ViewWindow*, QMouseEvent* );
   void             onDeleteStudy();
 
 private slots:
@@ -101,8 +105,14 @@ protected:
   /*! Removes the View from internal Views Vector.*/
   virtual void     removeView(SUIT_ViewWindow* theView);
   
+  /*! Close the specified View.*/
+  virtual void     closeView(SUIT_ViewWindow* theView);
+  
   /*! Used to set unique name for the view.*/
   virtual void     setViewName(SUIT_ViewWindow* theView);
+  QString          prepareTitle( const QString&, const int, const int );
+
+  static int       useNewId( const QString& );
 
 protected:
   SUIT_Desktop*               myDesktop;
@@ -110,8 +120,11 @@ protected:
   QPtrVector<SUIT_ViewWindow> myViews;
   SUIT_ViewWindow*            myActiveView;
 
+  int                         myId;
   QString                     myTitle;
   SUIT_Study*                 myStudy;
+
+  static QMap<QString, int>   _ViewMgrId;
 };
 
 #ifdef WIN32
index 0df3081c310cbcc28b42a47069f832054d6a6b77..faf064fb51486b4cdbf093c3a33d3379263b1d38 100755 (executable)
@@ -111,11 +111,22 @@ bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString&
   return dumpViewToFormat( dumpView(), fileName, format );
 }
 
+/*!
+  Set or clear flag Qt::WDestructiveClose
+*/
+void SUIT_ViewWindow::setDestructiveClose( const bool on )
+{
+  if ( on )
+    setWFlags( WDestructiveClose );
+  else
+    clearWFlags( WDestructiveClose );
+}
+
 /*! Close event \a theEvent.
 */
 void SUIT_ViewWindow::closeEvent(QCloseEvent* theEvent)
 {
-  QMainWindow::closeEvent( theEvent );
+//  QMainWindow::closeEvent( theEvent );
   emit closing( this );
 }
 
index 2e5eb7804028577bea7157c854b2d13c04a444da..6a6a6f86920a840d25c2f6915f6b607141d9903f 100755 (executable)
@@ -54,6 +54,8 @@ public:
   virtual QString   getVisualParameters();
   virtual void      setVisualParameters( const QString& parameters );
 
+  void              setDestructiveClose( const bool );
+
 public slots:
   virtual void      onDumpView();
 
diff --git a/src/SUITApp/Makefile.am b/src/SUITApp/Makefile.am
new file mode 100644 (file)
index 0000000..6e76029
--- /dev/null
@@ -0,0 +1,57 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSUITApp.la
+
+salomeinclude_HEADERS= SUITApp_Application.h
+
+dist_libSUITApp_la_SOURCES= \
+       SUITApp.cxx \
+       SUITApp_Application.cxx 
+
+MOC_FILES=SUITApp_Application_moc.cxx
+nodist_libSUITApp_la_SOURCES= $(MOC_FILES)
+
+nodist_salomeres_DATA= SUITApp_msg_en.qm
+
+libSUITApp_la_CPPFLAGS=$(QT_INCLUDES) $(PYTHON_INCLUDES) \
+                       -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+libSUITApp_la_LDFLAGS=$(QT_MT_LIBS) 
+libSUITApp_la_LIBADD= ../SUIT/libsuit.la ../Qtx/libqtx.la
+
+if ENABLE_PYCONSOLE
+libSUITApp_la_LDFLAGS+= -Xlinker -export-dynamic $(PYTHON_LIBS)
+endif
+
+# Executable
+bin_PROGRAMS= SUITApp
+
+dist_SUITApp_SOURCES=SUITApp.cxx
+
+SUITApp_CPPFLAGS=$(QT_INCLUDES) $(PYTHON_INCLUDES) \
+                 -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
+
+SUITApp_LDADD= libSUITApp.la ../SUIT/libsuit.la ../Qtx/libqtx.la
diff --git a/src/SUITApp/Makefile.in b/src/SUITApp/Makefile.in
deleted file mode 100644 (file)
index 1265308..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= SUITApp_Application.h
-
-# .po files to transform in .qm
-PO_FILES = SUITApp_msg_en.po
-
-LIB_SRC= SUITApp.cxx \
-        SUITApp_Application.cxx 
-
-LIB_MOC = SUITApp_Application.h
-
-# Libraries targets
-LIB = libSUITApp.la
-
-# Executables targets
-BIN = SUITApp
-BIN_SRC = 
-
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS) 
-
-LIBS+= -Xlinker -export-dynamic $(PYTHON_LIBS)
-LIBS+= -lsuit -lqtx
-LIBSFORBIN+= -lsuit -lqtx
-
-@CONCLUDE@
-
-
index f343c435e623ee1ae8cd0645b645bddb7653c33c..db686afad5aed13d88ee3c5c83f35d1afe012e8d 100644 (file)
@@ -165,10 +165,6 @@ int main( int args, char* argv[] )
       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" ) {
@@ -177,10 +173,17 @@ int main( int args, char* argv[] )
          else
            appVersion = "";
        }
+       QString splashIcon;
+       resMgr->value( "splash", "image", splashIcon );
        QPixmap px( splashIcon );
        if ( !px.isNull() ) {
          splash = QtxSplash::splash( px );
-         if ( !splashTextColors.isEmpty() ) {
+         int splashMargin;
+         if ( resMgr->value( "splash", "margin", splashMargin ) && splashMargin > 0 ) {
+           splash->setMargin( splashMargin );
+         }
+         QString splashTextColors;
+         if ( resMgr->value( "splash", "text_colors", splashTextColors ) && !splashTextColors.isEmpty() ) {
            QStringList colors = QStringList::split( "|", splashTextColors );
            QColor c1, c2;
            if ( colors.count() > 0 ) c1 = QColor( colors[0] );
@@ -196,7 +199,8 @@ int main( int args, char* argv[] )
          QFont f = splash->font();
          f.setBold( true );
          splash->setFont( f );
-         if ( !splashInfo.isEmpty() ) {
+         QString splashInfo;
+         if ( resMgr->value( "splash", "info", splashInfo, false ) && !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" ) );
index 4639f100d79933cce38cbf6c192eed56eca62494..bf32979dea0b74650c171d9529389c82b1573c04 100644 (file)
@@ -18,6 +18,7 @@
 //
 #include "SUITApp_Application.h"
 
+#include "SUIT_Session.h"
 #include "SUIT_MessageBox.h"
 #include "SUIT_ExceptionHandler.h"
 
@@ -68,6 +69,20 @@ myExceptHandler( hand )
 */
 bool SUITApp_Application::notify( QObject* receiver, QEvent* e )
 {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) < 0x060101
+  // Disable GUI user actions while python command is executed
+  if (SUIT_Session::IsPythonExecuted()) {
+    // Disable mouse and keyboard events
+    QEvent::Type aType = e->type();
+    if (aType == QEvent::MouseButtonPress || aType == QEvent::MouseButtonRelease ||
+        aType == QEvent::MouseButtonDblClick || aType == QEvent::MouseMove ||
+        aType == QEvent::Wheel || aType == QEvent::ContextMenu ||
+        aType == QEvent::KeyPress || aType == QEvent::KeyRelease ||
+        aType == QEvent::Accel || aType == QEvent::AccelOverride)
+      return false;
+  }
+#endif
+
   return myExceptHandler ? myExceptHandler->handle( receiver, e ) :
                            QApplication::notify( receiver, e );
 }
diff --git a/src/SUPERVGraph/Makefile.am b/src/SUPERVGraph/Makefile.am
new file mode 100755 (executable)
index 0000000..c82a4dc
--- /dev/null
@@ -0,0 +1,53 @@
+#  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 $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSUPERVGraph.la
+
+salomeinclude_HEADERS= \
+       SUPERVGraph_ViewFrame.h \
+       SUPERVGraph_ViewManager.h \
+       SUPERVGraph_ViewModel.h \
+       SUPERVGraph.h
+
+dist_libSUPERVGraph_la_SOURCES= \
+       SUPERVGraph.cxx \
+       SUPERVGraph_ViewFrame.cxx \
+       SUPERVGraph_ViewManager.cxx \
+       SUPERVGraph_ViewModel.cxx 
+
+MOC_FILES= \
+       SUPERVGraph_moc.cxx \
+       SUPERVGraph_ViewFrame_moc.cxx \
+       SUPERVGraph_ViewManager_moc.cxx \
+       SUPERVGraph_ViewModel_moc.cxx 
+nodist_libSUPERVGraph_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA= \
+       resources/view_pan.png \
+       resources/view_reset.png
+
+nodist_salomeres_DATA= \
+       SUPERVGraph_images.qm \
+       SUPERVGraph_msg_en.qm  
+
+libSUPERVGraph_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../OBJECT
+libSUPERVGraph_la_LDFLAGS=$(QT_MT_LIBS) ../SUIT/libsuit.la
diff --git a/src/SUPERVGraph/Makefile.in b/src/SUPERVGraph/Makefile.in
deleted file mode 100755 (executable)
index 334a2c9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#  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=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:@srcdir@/resources
-
-
-@COMMENCE@
-
-EXPORT_HEADERS = SUPERVGraph_ViewFrame.h \
-                SUPERVGraph_ViewManager.h \
-                SUPERVGraph_ViewModel.h \
-                SUPERVGraph.h
-
-# .po files to transmit in .qm
-PO_FILES = SUPERVGraph_images.po \
-          SUPERVGraph_msg_en.po  
-
-# Libraries targets
-
-LIB = libSUPERVGraph.la
-LIB_SRC =        SUPERVGraph.cxx \
-                 SUPERVGraph_ViewFrame.cxx \
-                 SUPERVGraph_ViewManager.cxx \
-                 SUPERVGraph_ViewModel.cxx 
-
-LIB_MOC =        SUPERVGraph_moc.cxx \
-                 SUPERVGraph_ViewFrame_moc.cxx \
-                 SUPERVGraph_ViewManager_moc.cxx \
-                 SUPERVGraph_ViewModel_moc.cxx 
-
-RESOURCES_FILES = view_pan.png \
-                 view_reset.png
-
-LIB_CLIENT_IDL = 
-
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS)
-LDFLAGS+=$(QT_MT_LIBS) -lsuit
-
-
-@CONCLUDE@
index f2d336449e5fe089b82cc6f4e3be8d2db6b7485a..2a5e7f03b39dbbb410383c69ac6fb72fb6bda5fb 100755 (executable)
 
 #include <qaction.h>
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 class SUPERVGRAPH_EXPORT SUPERVGraph_View: public QWidget, public SUIT_PopupClient {
   Q_OBJECT;
  public:
@@ -127,5 +131,10 @@ class SUPERVGRAPH_EXPORT SUPERVGraph_ViewFrame : public SUIT_ViewWindow {
   QToolBar*        myToolBar;
 
   SUPERVGraph_View* myView;
-}; 
+};
+
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
diff --git a/src/SVTK/Makefile.am b/src/SVTK/Makefile.am
new file mode 100755 (executable)
index 0000000..a1c1c48
--- /dev/null
@@ -0,0 +1,134 @@
+#  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
+# $Header: 
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSVTK.la
+
+salomeinclude_HEADERS= \
+       SVTK.h \
+       SVTK_Prs.h \
+       SVTK_Actor.h \
+       SALOME_Actor.h \
+       SVTK_RectPicker.h \
+       SVTK_DeviceActor.h \
+       SVTK_DialogBase.h \
+       SVTK_FontWidget.h \
+       SVTK_CubeAxesActor2D.h \
+       SVTK_Functor.h \
+       SVTK_MainWindow.h \
+       SVTK_View.h \
+       SVTK_ViewManager.h \
+       SVTK_ViewModel.h \
+       SVTK_ViewWindow.h \
+       SVTK_Renderer.h \
+       SVTK_InteractorStyle.h \
+       SVTK_RenderWindowInteractor.h \
+       SVTK_GenericRenderWindowInteractor.h \
+       SVTK_Selector.h \
+       SVTK_Selection.h \
+       SVTK_SelectionEvent.h \
+       SVTK_SpaceMouse.h \
+       SVTK_Event.h \
+       SVTK_ViewModelBase.h \
+       SVTK_SetRotationPointDlg.h \
+       SVTK_Extension.h
+
+dist_libSVTK_la_SOURCES= \
+       SVTK_Prs.cxx \
+       SVTK_Actor.cxx \
+       SALOME_Actor.cxx \
+       SVTK_RectPicker.cxx \
+       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 \
+       SVTK_View.cxx \
+       SVTK_ViewManager.cxx \
+       SVTK_ViewModel.cxx \
+       SVTK_Renderer.cxx \
+       SVTK_ViewWindow.cxx \
+       SVTK_InteractorStyle.cxx \
+       SVTK_RenderWindowInteractor.cxx \
+       SVTK_GenericRenderWindowInteractor.cxx \
+       SVTK_SpaceMouse.cxx \
+       SVTK_Selector.cxx \
+       SVTK_SetRotationPointDlg.cxx \
+       SVTK_Extension.cxx
+
+EXTRA_DIST+= SVTK_SelectorDef.h SVTK_Trihedron.h
+
+MOC_FILES= \
+       SVTK_GenericRenderWindowInteractor_moc.cxx \
+       SVTK_RenderWindowInteractor_moc.cxx \
+       SVTK_NonIsometricDlg_moc.cxx \
+       SVTK_UpdateRateDlg_moc.cxx \
+       SVTK_CubeAxesDlg_moc.cxx \
+       SVTK_FontWidget_moc.cxx \
+       SVTK_DialogBase_moc.cxx \
+       SVTK_ViewModelBase_moc.cxx \
+       SVTK_ViewManager_moc.cxx \
+       SVTK_ViewWindow_moc.cxx \
+       SVTK_MainWindow_moc.cxx \
+       SVTK_ViewModel_moc.cxx \
+       SVTK_View_moc.cxx \
+       SVTK_SetRotationPointDlg_moc.cxx
+nodist_libSVTK_la_SOURCES= $(MOC_FILES)
+
+nodist_salomeres_DATA= \
+       SVTK_msg_en.qm \
+       SVTK_images.qm
+
+libSVTK_la_CPPFLAGS= \
+       $(QT_INCLUDES) \
+       $(CAS_CPPFLAGS) \
+       $(VTK_INCLUDES) \
+       $(QWT_INCLUDES) \
+       $(BOOST_CPPFLAGS) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../STD \
+       -I$(srcdir)/../CAM -I$(srcdir)/../OBJECT -I$(srcdir)/../Prs \
+       -I$(srcdir)/../VTKViewer
+
+libSVTK_la_LDFLAGS= \
+       $(VTK_LIBS) \
+       $(QT_MT_LIBS) \
+       $(CAS_KERNEL) $(CAS_VIEWER) \
+       $(QWT_LIBS)
+
+libSVTK_la_LIBADD= ../Qtx/libqtx.la ../SUIT/libsuit.la ../STD/libstd.la \
+                  ../CAM/libCAM.la ../OBJECT/libSalomeObject.la \
+                  ../Prs/libSalomePrs.la ../VTKViewer/libVTKViewer.la
+
+# Executable
+bin_PROGRAMS = SVTK
+
+dist_SVTK_SOURCES= SVTK.cxx
+
+SVTK_CPPFLAGS=$(libSVTK_la_CPPFLAGS)
+SVTK_LDFLAGS=$(libSVTK_la_LDFLAGS)
+SVTK_LDADD=libSVTK.la $(libSVTK_la_LIBADD)
diff --git a/src/SVTK/Makefile.in b/src/SVTK/Makefile.in
deleted file mode 100755 (executable)
index f45b583..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#  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
-# $Header: 
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files
-EXPORT_HEADERS= \
-       SVTK.h \
-       SVTK_Prs.h \
-       SVTK_Actor.h \
-       SALOME_Actor.h \
-       SVTK_RectPicker.h \
-       SVTK_DeviceActor.h \
-       SVTK_DialogBase.h \
-       SVTK_FontWidget.h \
-       SVTK_CubeAxesActor2D.h \
-       SVTK_Functor.h \
-       SVTK_MainWindow.h \
-       SVTK_View.h \
-       SVTK_ViewManager.h \
-       SVTK_ViewModel.h \
-       SVTK_ViewWindow.h \
-       SVTK_Renderer.h \
-       SVTK_InteractorStyle.h \
-       SVTK_RenderWindowInteractor.h \
-       SVTK_GenericRenderWindowInteractor.h \
-       SVTK_Selector.h \
-       SVTK_Selection.h \
-       SVTK_SelectionEvent.h \
-       SVTK_SpaceMouse.h \
-       SVTK_Event.h \
-       SVTK_ViewModelBase.h
-
-PO_FILES = \
-       SVTK_msg_en.po \
-       SVTK_images.po
-
-# Libraries targets
-LIB = libSVTK.la
-
-LIB_SRC= \
-       SVTK_Prs.cxx \
-       SVTK_Actor.cxx \
-       SALOME_Actor.cxx \
-       SVTK_RectPicker.cxx \
-       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 \
-       SVTK_View.cxx \
-       SVTK_ViewManager.cxx \
-       SVTK_ViewModel.cxx \
-       SVTK_Renderer.cxx \
-       SVTK_ViewWindow.cxx \
-       SVTK_InteractorStyle.cxx \
-       SVTK_RenderWindowInteractor.cxx \
-       SVTK_GenericRenderWindowInteractor.cxx \
-       SVTK_SpaceMouse.cxx \
-       SVTK_Selector.cxx
-
-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 \
-       SVTK_MainWindow.h \
-       SVTK_ViewModel.h \
-       SVTK_View.h
-
-BIN = SVTK
-
-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
-
-LDFLAGSFORBIN=$(LDFLAGS) $(LIBS)
-
-@CONCLUDE@
index 8bd1cbd4323660a6670287c8a5c99c28bb4dbf1f..b9597c30c1fb3fc0bc9ed43b6743e4ff320dff3c 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "VTKViewer_Transform.h"
 #include "VTKViewer_TransformFilter.h"
-#include "VTKViewer_PassThroughFilter.h"
 #include "VTKViewer_GeometryFilter.h"
 #include "SVTK_RectPicker.h"
 
@@ -58,6 +57,7 @@
 
 #include <vtkInteractorStyle.h>
 #include <vtkRenderWindowInteractor.h>
+#include <vtkPassThroughFilter.h>
 
 #include <TColStd_MapOfInteger.hxx>
 #include <TColStd_IndexedMapOfInteger.hxx>
index 03c4ca7a77f169a7a17b8ed4425aca4f6b685249..a44acc9fd35a369ded98aec4110e9889dc4572a3 100644 (file)
@@ -57,6 +57,10 @@ class SVTK_InteractorStyle;
 extern int SALOME_POINT_SIZE;
 extern int SALOME_LINE_WIDTH;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 //! The class is a basic one for all SALOME VTK presentation.
 /*!
   It provide highlight and prehighlight capabilites,
@@ -227,4 +231,8 @@ class SVTK_EXPORT SALOME_Actor : public VTKViewer_Actor
   vtkSmartPointer<vtkOutlineSource> myOutline;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif // SALOME_ACTOR_H
index 036926fb869f806db86ed5ab09ddd47a0493c94a..1d32a1c2b1f099d19fb54268ed880cc76671e4ad 100644 (file)
@@ -56,6 +56,7 @@ SVTK_Actor
   myUnstructuredGrid(vtkUnstructuredGrid::New())
 {
   myIsShaded = true;
+  myIsResolveCoincidentTopology = false;
 
   Visibility = Pickable = false;
 
index bb7542da36249e8c73e3f9c070f8a8b3079b48a0..e0a8afc0297e825a62145403234cce2c6dbb7512 100644 (file)
@@ -34,6 +34,10 @@ class vtkUnstructuredGrid;
 
 class SALOME_Actor;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 //! This class used for internal SVTK package purpose (highlight and prehighlight)
 class SVTK_EXPORT SVTK_Actor : public SVTK_DeviceActor
 {
@@ -82,4 +86,8 @@ public:
   ~SVTK_Actor();
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index b9583c642ba6997e0f989f7401b4271c50974b4b..445f6d71e744ab0ed2fe832a0d29c66790715dcb 100644 (file)
@@ -44,6 +44,10 @@ class VTKViewer_Transform;
 #include "SVTK.h"
 #include "VTKViewer.h"
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 #ifndef WNT
 class VTK_HYBRID_EXPORT SVTK_CubeAxesActor2D : public vtkCubeAxesActor2D
 #else
@@ -106,4 +110,8 @@ private:
   void operator=(const SVTK_CubeAxesActor2D&);  // Not implemented.
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 279015efdd5b55699c075e7e9654c08291db6885..a3bb037730cf4a8d353b54196fd75b41c5ec9c0c 100644 (file)
@@ -31,7 +31,6 @@
 
 #include "VTKViewer_Transform.h"
 #include "VTKViewer_TransformFilter.h"
-#include "VTKViewer_PassThroughFilter.h"
 #include "VTKViewer_GeometryFilter.h"
 
 // VTK Includes
@@ -44,6 +43,8 @@
 #include <vtkPolyDataMapper.h>
 #include <vtkDataSetMapper.h>
 
+#include <vtkPassThroughFilter.h>
+
 using namespace std;
 
 vtkStandardNewMacro(SVTK_DeviceActor);
@@ -61,7 +62,7 @@ SVTK_DeviceActor
   myProperty = vtkProperty::New();
   myRepresentation = SVTK::Representation::Surface;
 
-  myIsResolveCoincidentTopology = false;
+  myIsResolveCoincidentTopology = true;
   vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
                                                                 myPolygonOffsetUnits);
 
@@ -74,7 +75,7 @@ SVTK_DeviceActor
   myTransformFilter = VTKViewer_TransformFilter::New();
 
   for(int i = 0; i < 6; i++)
-    myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
+    myPassFilter.push_back(vtkPassThroughFilter::New());
 }
 
 /*!
@@ -139,8 +140,7 @@ SVTK_DeviceActor
     }else if(vtkPolyDataMapper* aMapper = dynamic_cast<vtkPolyDataMapper*>(theMapper)){
       aMapper->SetInput(myPassFilter[anId]->GetPolyDataOutput());
     }
-  }else
-    myPassFilter[ 0 ]->SetInput( NULL );
+  }
   Superclass::SetMapper(theMapper);
 }
 
@@ -249,8 +249,15 @@ SVTK_DeviceActor
 {
   if ( !myIsShrinkable ) 
     return;
+  
   if ( vtkDataSet* aDataSet = myPassFilter[ 0 ]->GetOutput() )
-  {
+  {     
+    aDataSet->Update();
+    int numCells=aDataSet->GetNumberOfCells();
+    int numPts = aDataSet->GetNumberOfPoints();
+    //It's impossible to use to apply "shrink" for "empty" dataset
+    if (numCells < 1 || numPts < 1)
+           return;
     myShrinkFilter->SetInput( aDataSet );
     myPassFilter[ 1 ]->SetInput( myShrinkFilter->GetOutput() );
     myIsShrunk = true;
@@ -293,7 +300,6 @@ SVTK_DeviceActor
   myShrinkFilter->SetShrinkFactor(theValue);
 }
 
-
 /*!
   Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on)
   param theMode - new mode
@@ -307,13 +313,17 @@ SVTK_DeviceActor
     switch(myRepresentation){
     case Points : 
     case Surface : 
-      myProperty->DeepCopy(GetProperty());
+      myProperty->SetAmbient(GetProperty()->GetAmbient());
+      myProperty->SetDiffuse(GetProperty()->GetDiffuse());
+      myProperty->SetSpecular(GetProperty()->GetSpecular());
     }
     
     switch(theMode){
     case Points : 
     case Surface : 
-      GetProperty()->DeepCopy(myProperty);
+      GetProperty()->SetAmbient(myProperty->GetAmbient());
+      GetProperty()->SetDiffuse(myProperty->GetDiffuse());
+      GetProperty()->SetSpecular(myProperty->GetSpecular());
       break;
     default:
       GetProperty()->SetAmbient(1.0);
@@ -490,3 +500,8 @@ SVTK_DeviceActor
   factor = myPolygonOffsetFactor;
   units = myPolygonOffsetUnits;
 }
+
+vtkDataSetMapper* SVTK_DeviceActor::GetDataSetMapper()
+{
+  return myMapper;
+}
index c68829de92886477771cefaa1d7fee2e7e668d42..47fc3e12d1e7e1f847d719b6569a4fe7953cf0b0 100644 (file)
 
 class VTKViewer_Transform;
 class VTKViewer_TransformFilter;
-class VTKViewer_PassThroughFilter;
 class VTKViewer_GeometryFilter;
 
 class vtkCell;
 class vtkDataSet;
 class vtkShrinkFilter;
 class vtkDataSetMapper;
+class vtkPassThroughFilter;
 
 namespace SVTK
 {
@@ -59,6 +59,9 @@ namespace SVTK
   }
 }
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
 
 class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 {
@@ -172,6 +175,8 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   void
   Render(vtkRenderer *, vtkMapper *);
 
+  vtkDataSetMapper* GetDataSetMapper();
+
  protected:
   SVTK::Representation::Type myRepresentation;
   vtkProperty *myProperty;
@@ -183,7 +188,7 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 
   VTKViewer_GeometryFilter *myGeomFilter;
   VTKViewer_TransformFilter *myTransformFilter;
-  std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
+  std::vector<vtkPassThroughFilter*> myPassFilter;
   vtkShrinkFilter* myShrinkFilter;
   vtkDataSetMapper* myMapper;
 
@@ -208,5 +213,8 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
 
 #endif //SVTK_DEVICE_ACTOR_H
index fa415ab831145c7a1df22ba3ca8ca9f8564ea92f..00a9e2c0fbb68da9c80937ebf60d3583729353cc 100644 (file)
@@ -61,6 +61,14 @@ namespace SVTK
     StartGlobalPan,
     StartFitArea,
 
+    SetRotateGravity,
+    StartPointSelection,
+    SetRotateSelected,
+    
+    BBCenterChanged,
+    RotationPointChanged,
+    ChangeRotationPoint,
+        
     LastEvent
   };
 }
diff --git a/src/SVTK/SVTK_Extension.cxx b/src/SVTK/SVTK_Extension.cxx
new file mode 100755 (executable)
index 0000000..a26dac1
--- /dev/null
@@ -0,0 +1,44 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SVTK_Extension.cxx
+//  Author : Sergey ANIKIN
+//  Module : SALOME
+
+#include "SVTK_Extension.h"
+
+#ifdef WIN32
+#include <windows.h>
+#else
+#include <dlfcn.h>
+#endif
+
+void* SVTK::getOpenGLExtension( const char* theExtension )
+{
+#ifdef WIN32
+  return wglGetProcAddress( theExtension );
+#else
+  void* OpenGLLibrary = dlopen( "libGL.so", RTLD_LAZY );
+  return dlsym( OpenGLLibrary, theExtension );
+#endif
+}
diff --git a/src/SVTK/SVTK_Extension.h b/src/SVTK/SVTK_Extension.h
new file mode 100755 (executable)
index 0000000..0b39e59
--- /dev/null
@@ -0,0 +1,35 @@
+// 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 SVTK_Extension_H
+#define SVTK_Extension_H
+
+/*!
+  \file SVTK_Extension.h
+  Functions of loading OpenGL extensions.
+*/
+
+#include <SVTK.h>
+
+namespace SVTK
+{
+  SVTK_EXPORT void* getOpenGLExtension( const char* theExtension );
+}
+
+
+#endif
index ed70aa2a7acc48a0660137a36958102d34e51749..953072a9446e6bb5c4291a8285ae9c09b3888aa5 100644 (file)
@@ -27,6 +27,8 @@
 #ifndef SVTK_FontWidget_H
 #define SVTK_FontWidget_H
 
+#include "SVTK.h"
+
 #include <qhbox.h>
 
 class QToolButton;
@@ -39,7 +41,7 @@ class QColor;
  * Class       : SVTK_FontWidget
  * Description : Dialog for specifynig font
  */
-class SVTK_FontWidget : public QHBox
+class SVTK_EXPORT SVTK_FontWidget : public QHBox
 {
   Q_OBJECT
 
index b47705d503da2e8d17355552cba7957d7b29c01b..ff5b6cb713d1549aab1c9aa7e87d80c3dd40c651 100644 (file)
@@ -41,6 +41,9 @@ class QWidget;
 class SVTK_Selector;
 class SVTK_Renderer;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
 
 /*!
   \class QVTK_GenericRenderWindowInteractor
@@ -123,4 +126,8 @@ class SVTK_EXPORT SVTK_GenericRenderWindowInteractor: public QVTK_GenericRenderW
   QWidget* myRenderWidget; //!< Keeps a pointer to QWidget, where vtkRenderWindow maps to.
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 4f8dfaa60858dfd927dca36eefc5b98c17b6b831..1f662ca7b49c96f8c3a96011dfbb931b31968f3a 100644 (file)
@@ -36,6 +36,7 @@
 #include "SVTK_Event.h" 
 #include "SVTK_Selector.h"
 #include "SVTK_Functor.h"
+#include "SVTK_Actor.h"
 
 #include "VTKViewer_Algorithm.h"
 #include "SVTK_Functor.h"
 #include <vtkCommand.h>
 #include <vtkCamera.h>
 #include <vtkRenderer.h>
-#include <vtkPicker.h>
+#include <vtkPointPicker.h>
 #include <vtkRenderWindow.h>
 #include <vtkRenderWindowInteractor.h>
 #include <vtkCallbackCommand.h>
 #include <vtkRendererCollection.h>
+#include <vtkDataSet.h>
+#include <vtkPerspectiveTransform.h> 
+#include <vtkMatrix4x4.h>
 
 #include <qapplication.h>
 #include <qpixmap.h>
@@ -62,6 +66,8 @@
 //VRV: porting on Qt 3.0.5
 #include <algorithm>
 
+#include <iostream>
+
 using namespace std;
 
 namespace
@@ -75,44 +81,28 @@ namespace
     theInteractor->GetEventPosition(theX,theY);
     theY = theInteractor->GetSize()[1] - theY - 1;
   }
-
-  //==================================================================
-  // function : GetFirstSALOMEActor
-  // purpose  :
-  //==================================================================
-  struct THaveIO
-  {
-    bool
-    operator()(SALOME_Actor* theActor)
-    {
-      return theActor->hasIO();
-    }
-  };
-
-  inline
-  SALOME_Actor* 
-  GetFirstSALOMEActor(vtkPicker *thePicker)
-  {
-    return VTK::Find<SALOME_Actor>(thePicker->GetActors(),THaveIO());
-  }
 }
 
 
 vtkStandardNewMacro(SVTK_InteractorStyle);
 
+
 /*!
   Constructor
 */
 SVTK_InteractorStyle
 ::SVTK_InteractorStyle():
   mySelectionEvent(new SVTK_SelectionEvent()),
-  myPicker(vtkPicker::New()),
+  myPointPicker(vtkPointPicker::New()),
   myLastHighlitedActor(NULL),
   myLastPreHighlitedActor(NULL),
   myControllerIncrement(SVTK_ControllerIncrement::New()),
-  myControllerOnKeyDown(SVTK_ControllerOnKeyDown::New())
+  myControllerOnKeyDown(SVTK_ControllerOnKeyDown::New()),
+  myHighlightRotationPointActor(SVTK_Actor::New())
 {
-  myPicker->Delete();
+  myPointPicker->Delete();
+
+  myPointPicker->SetTolerance(0.025);
 
   this->MotionFactor = 10.0;
   this->State = VTK_INTERACTOR_STYLE_CAMERA_NONE;
@@ -131,6 +121,20 @@ SVTK_InteractorStyle
   //
   myControllerIncrement->Delete();
   myControllerOnKeyDown->Delete();
+
+  myCurrRotationPointType = SVTK::SetRotateGravity;
+  myPrevRotationPointType = myCurrRotationPointType;
+
+  myHighlightRotationPointActor->Delete();
+  myHighlightRotationPointActor->Initialize();
+  myHighlightRotationPointActor->PickableOff();
+  myHighlightRotationPointActor->SetVisibility( false );
+  
+  myHighlightRotationPointActor->GetProperty()->SetPointSize(SALOME_POINT_SIZE+2);
+  myHighlightRotationPointActor->GetProperty()->SetLineWidth(SALOME_LINE_WIDTH+2);
+  myHighlightRotationPointActor->GetProperty()->SetRepresentationToPoints();
+
+  myBBFirstCheck = true;
 }
 
 /*!
@@ -205,7 +209,7 @@ void
 SVTK_InteractorStyle
 ::RotateXY(int dx, int dy)
 {
-  if(GetCurrentRenderer() == NULL)
+  /*   if(GetCurrentRenderer() == NULL)
     return;
   
   int *size = GetCurrentRenderer()->GetRenderWindow()->GetSize();
@@ -222,6 +226,61 @@ SVTK_InteractorStyle
 
   GetCurrentRenderer()->ResetCameraClippingRange(); 
 
+  this->Render();*/
+
+  if(GetCurrentRenderer() == NULL)
+    return;
+  
+  vtkCamera *cam = GetCurrentRenderer()->GetActiveCamera();
+
+  double viewFP[3], viewPos[3];
+  cam->GetFocalPoint(viewFP);
+  cam->GetPosition(viewPos);
+
+  if ( myCurrRotationPointType == SVTK::SetRotateGravity )
+  {
+    vtkFloatingPointType aCenter[3];
+    if ( ComputeBBCenter(GetCurrentRenderer(),aCenter) ) 
+    {
+      myRotationPointX = aCenter[0];
+      myRotationPointY = aCenter[1];
+      myRotationPointZ = aCenter[2];
+    }
+  }
+
+  // Calculate corresponding transformation
+  vtkPerspectiveTransform* aTransform = vtkPerspectiveTransform::New();
+  aTransform->Identity();
+  aTransform->Translate(+myRotationPointX, +myRotationPointY, +myRotationPointZ);
+
+  // Azimuth transformation
+  int *size = GetCurrentRenderer()->GetRenderWindow()->GetSize();
+  double aDeltaAzimuth = -20.0 / size[0];
+  
+  double rxf = double(dx) * aDeltaAzimuth * this->MotionFactor;
+  aTransform->RotateWXYZ(rxf, cam->GetViewUp());
+
+  // Elevation transformation
+  double aDeltaElevation = -20.0 / size[1];
+
+  double ryf = double(dy) * aDeltaElevation * this->MotionFactor;
+  vtkMatrix4x4* aMatrix = cam->GetViewTransformMatrix();
+  const double anAxis[3] = {-aMatrix->GetElement(0,0), // mkr : 27.11.2006 : PAL14011 - Strange behaviour in rotation in VTK Viewer.
+                           -aMatrix->GetElement(0,1), 
+                           -aMatrix->GetElement(0,2)};
+  
+  aTransform->RotateWXYZ(ryf, anAxis);
+            
+  aTransform->Translate(-myRotationPointX, -myRotationPointY, -myRotationPointZ);
+
+  // To apply the transformation
+  cam->SetPosition(aTransform->TransformPoint(viewPos));
+  cam->SetFocalPoint(aTransform->TransformPoint(viewFP));
+
+  cam->OrthogonalizeViewUp();
+
+  GetCurrentRenderer()->ResetCameraClippingRange(); 
+
   this->Render();
 }
 
@@ -431,9 +490,53 @@ SVTK_InteractorStyle
   } else {
     if (ctrl)
       startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM);
+    else if ( myCurrRotationPointType == SVTK::StartPointSelection )
+    {
+      SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY();
+
+      SALOME_Actor* anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
+      
+      if ( anActor )
+      {
+       myPointPicker->Pick( aSelectionEvent->myX,
+                            aSelectionEvent->myY, 
+                            0.0, 
+                            GetCurrentRenderer() );
+       int aVtkId = myPointPicker->GetPointId();
+       if ( aVtkId >= 0 )
+       {
+         int anObjId = anActor->GetNodeObjId( aVtkId );
+         vtkFloatingPointType* aCoords = anActor->GetNodeCoord(anObjId);
+         
+         myCurrRotationPointType = SVTK::SetRotateSelected;
+         
+         // invoke event for update coordinates in SVTK_SetRotationPointDlg
+         InvokeEvent(SVTK::RotationPointChanged,(void*)aCoords);
+       }
+       else
+       {
+         // invoke event with no data (for SVTK_SetRotationPointDlg)
+         InvokeEvent(SVTK::RotationPointChanged,0);
+         myCurrRotationPointType = myPrevRotationPointType;
+       }
+      }
+      else
+      {
+       // invoke event with no data (for SVTK_SetRotationPointDlg)
+       InvokeEvent(SVTK::RotationPointChanged,0);
+       myCurrRotationPointType = myPrevRotationPointType;
+      }
+    
+      myHighlightRotationPointActor->SetVisibility( false );
+      if(GetCurrentRenderer() != NULL)
+       GetCurrentRenderer()->RemoveActor( myHighlightRotationPointActor.GetPointer() );
+
+      GetRenderWidget()->setCursor(myDefCursor); 
+    }
     else
       startOperation(VTK_INTERACTOR_STYLE_CAMERA_SELECT);
   }
+  
   return;
 }
 
@@ -696,6 +799,26 @@ SVTK_InteractorStyle
   ForcedState = VTK_INTERACTOR_STYLE_CAMERA_ROTATE;
 }
 
+/*!
+  Set rotation point selected by user
+*/
+void 
+SVTK_InteractorStyle
+::startPointSelection()
+{
+  myCurrRotationPointType = SVTK::StartPointSelection;
+
+  if(GetCurrentRenderer() != NULL) {
+    GetCurrentRenderer()->AddActor( myHighlightRotationPointActor.GetPointer() );
+    vtkFloatingPointType aColor[3];
+    GetCurrentRenderer()->GetBackground( aColor );
+    myHighlightRotationPointActor->GetProperty()->SetColor(1. - aColor[0],
+                                                          1. - aColor[1],
+                                                          1. - aColor[2]);
+  }
+
+  setCursor(VTK_INTERACTOR_STYLE_CAMERA_NONE);
+}
 
 /*! 
   Starts Spin operation (e.g. through menu command)
@@ -863,7 +986,10 @@ SVTK_InteractorStyle
       break;
     case VTK_INTERACTOR_STYLE_CAMERA_NONE:
     default:
-      GetRenderWidget()->setCursor(myDefCursor); 
+      if ( myCurrRotationPointType == SVTK::StartPointSelection )
+       GetRenderWidget()->setCursor(myHandCursor);
+      else
+       GetRenderWidget()->setCursor(myDefCursor); 
       myCursorState = false;
       break;
   }
@@ -942,51 +1068,54 @@ SVTK_InteractorStyle
         fitRect(x1, y1, x2, y2);
       }
       else {
-        if (myPoint == myOtherPoint) {
-         // process point selection
-          this->FindPokedRenderer(aSelectionEvent->myX, aSelectionEvent->myY);
-         Interactor->StartPickCallback();
-
-          myPicker->Pick(aSelectionEvent->myX, 
-                        aSelectionEvent->myY, 
-                        0.0, 
-                        GetCurrentRenderer());
-         //
-         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 );
-         }
-         myLastHighlitedActor = anActor;
-       } 
-       else {
-          //processing rectangle selection
-         Interactor->StartPickCallback();
-         GetSelector()->StartPickCallback();
-         aSelectionEvent->myIsRectangle = true;
-
-         if(!myShiftState)
-           GetSelector()->ClearIObjects();
-
-         vtkActorCollection* aListActors = GetCurrentRenderer()->GetActors();
-         aListActors->InitTraversal();
-         while(vtkActor* aActor = aListActors->GetNextActor()){
-           if(aActor->GetVisibility()){
-             if(SALOME_Actor* aSActor = SALOME_Actor::SafeDownCast(aActor)){
-               if(aSActor->hasIO()){
-                 aSActor->Highlight( this, aSelectionEvent, true );
-               }
+        if (myPoint == myOtherPoint)
+         {
+           // process point selection
+           this->FindPokedRenderer(aSelectionEvent->myX, aSelectionEvent->myY);
+           Interactor->StartPickCallback();
+           
+           SALOME_Actor* anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
+           
+           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 );
+               myLastHighlitedActor = anActor;
+             }
+         } 
+       else 
+         {
+           //processing rectangle selection
+           Interactor->StartPickCallback();
+           GetSelector()->StartPickCallback();
+           aSelectionEvent->myIsRectangle = true;
+
+           if(!myShiftState)
+             GetSelector()->ClearIObjects();
+
+           vtkActorCollection* aListActors = GetCurrentRenderer()->GetActors();
+           aListActors->InitTraversal();
+           while(vtkActor* aActor = aListActors->GetNextActor())
+             {
+               if(aActor->GetVisibility())
+                 {
+                   if(SALOME_Actor* aSActor = SALOME_Actor::SafeDownCast(aActor))
+                     {
+                       if(aSActor->hasIO())
+                         aSActor->Highlight( this, aSelectionEvent, true );
+                     }
+                 }
              }
-           }
          }
-       }
        Interactor->EndPickCallback();
        GetSelector()->EndPickCallback();
       } 
@@ -1078,24 +1207,43 @@ SVTK_InteractorStyle
 ::onCursorMove(QPoint mousePos) 
 {
   // processing highlighting
-  SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY();
+   SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY();
   this->FindPokedRenderer(aSelectionEvent->myX,aSelectionEvent->myY);
 
   bool anIsChanged = false;
 
-  myPicker->Pick(aSelectionEvent->myX, 
-                aSelectionEvent->myY, 
-                0.0, 
-                GetCurrentRenderer());
+  SALOME_Actor *anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
   
-  SALOME_Actor *anActor = GetFirstSALOMEActor(myPicker.GetPointer());
-  if (anActor){
-    anIsChanged |= anActor->PreHighlight( this, aSelectionEvent, true );
+  if ( myCurrRotationPointType == SVTK::StartPointSelection )
+  {
+    myHighlightRotationPointActor->SetVisibility( false );
+
+    if ( anActor )
+    {
+      myPointPicker->Pick( aSelectionEvent->myX, aSelectionEvent->myY, 0.0, GetCurrentRenderer() );
+      int aVtkId = myPointPicker->GetPointId();
+      if ( aVtkId >= 0 ) {
+       int anObjId = anActor->GetNodeObjId( aVtkId );
+
+       TColStd_IndexedMapOfInteger aMapIndex;
+       aMapIndex.Add( anObjId );
+       myHighlightRotationPointActor->MapPoints( anActor, aMapIndex );
+
+       myHighlightRotationPointActor->SetVisibility( true );
+       anIsChanged = true;
+      }
+    }
   }
+  else {
+    if (anActor){
+      anIsChanged |= anActor->PreHighlight( this, aSelectionEvent, true );
+    }
 
-  if(myLastPreHighlitedActor.GetPointer() && myLastPreHighlitedActor.GetPointer() != anActor)
-    anIsChanged |= myLastPreHighlitedActor->PreHighlight( this, aSelectionEvent, false );   
+    if(myLastPreHighlitedActor.GetPointer() && myLastPreHighlitedActor.GetPointer() != anActor)
+      anIsChanged |= myLastPreHighlitedActor->PreHighlight( this, aSelectionEvent, false );   
 
+  }
+  
   myLastPreHighlitedActor = anActor;
 
   if(anIsChanged)
@@ -1225,6 +1373,11 @@ SVTK_InteractorStyle
     theInteractor->AddObserver( SVTK::StartRotate, EventCallbackCommand, Priority );
     theInteractor->AddObserver( SVTK::StartGlobalPan, EventCallbackCommand, Priority );
     theInteractor->AddObserver( SVTK::StartFitArea, EventCallbackCommand, Priority );
+
+    theInteractor->AddObserver( SVTK::SetRotateGravity, EventCallbackCommand, Priority );
+    theInteractor->AddObserver( SVTK::StartPointSelection, EventCallbackCommand, Priority );
+
+    theInteractor->AddObserver( SVTK::ChangeRotationPoint, EventCallbackCommand, Priority );
   }
 }
 
@@ -1237,6 +1390,30 @@ SVTK_InteractorStyle
 {
   //vtkInteractorStyle::OnTimer();
   this->Interactor->Render();
+  // check if bounding box was changed
+  if ( GetCurrentRenderer() )
+  {
+    vtkFloatingPointType aCurrBBCenter[3];
+    if ( ComputeBBCenter(GetCurrentRenderer(),aCurrBBCenter) )
+    {
+      if ( !myBBFirstCheck )
+      {
+       if ( fabs(aCurrBBCenter[0]-myBBCenter[0]) > 1e-38 ||
+            fabs(aCurrBBCenter[1]-myBBCenter[1]) > 1e-38 ||
+            fabs(aCurrBBCenter[2]-myBBCenter[2]) > 1e-38 ) {
+         // bounding box was changed => send SVTK::RotationPointChanged event
+         // invoke event for update coordinates in SVTK_SetRotationPointDlg
+         InvokeEvent(SVTK::BBCenterChanged,(void*)aCurrBBCenter);
+         for ( int i =0; i < 3; i++) myBBCenter[i] = aCurrBBCenter[i];
+       }
+      }
+      else 
+      {
+       for ( int i =0; i < 3; i++) myBBCenter[i] = aCurrBBCenter[i];
+       myBBFirstCheck = false;
+      }
+    }
+  }
 }
 
 /*!
@@ -1299,6 +1476,8 @@ SVTK_InteractorStyle
     vtkObject* anObject = reinterpret_cast<vtkObject*>( clientData );
     SVTK_InteractorStyle* self = dynamic_cast<SVTK_InteractorStyle*>( anObject );
     int aSpeedIncrement=self->ControllerIncrement()->Current();
+    vtkFloatingPointType aCenter[3];
+    vtkFloatingPointType* aSelectedPoint;
     if ( self ) {
       switch ( event ) {
       case SVTK::SpaceMouseMoveEvent : 
@@ -1372,6 +1551,40 @@ SVTK_InteractorStyle
       case SVTK::StartFitArea:
        self->startFitArea();
        return;
+
+      case SVTK::SetRotateGravity:
+       if ( self->myCurrRotationPointType == SVTK::StartPointSelection )
+       {
+         self->myHighlightRotationPointActor->SetVisibility( false );
+         if( self->GetCurrentRenderer() != NULL )
+           self->GetCurrentRenderer()->RemoveActor( self->myHighlightRotationPointActor.GetPointer() );
+         self->GetRenderWidget()->setCursor(self->myDefCursor); 
+       }
+       self->myPrevRotationPointType = self->myCurrRotationPointType;
+       self->myCurrRotationPointType = SVTK::SetRotateGravity;
+       if ( ComputeBBCenter(self->GetCurrentRenderer(),aCenter) ) 
+         // invoke event for update coordinates in SVTK_SetRotationPointDlg
+         self->InvokeEvent(SVTK::BBCenterChanged,(void*)aCenter);
+       return;
+      case SVTK::StartPointSelection:
+       self->startPointSelection();
+       return;
+
+      case SVTK::ChangeRotationPoint:
+       if ( self->myCurrRotationPointType == SVTK::StartPointSelection )
+       {
+         self->myHighlightRotationPointActor->SetVisibility( false );
+         if( self->GetCurrentRenderer() != NULL )
+           self->GetCurrentRenderer()->RemoveActor( self->myHighlightRotationPointActor.GetPointer() );
+         self->GetRenderWidget()->setCursor(self->myDefCursor); 
+       }
+       self->myPrevRotationPointType = self->myCurrRotationPointType;
+       self->myCurrRotationPointType = SVTK::SetRotateSelected;
+       aSelectedPoint = (vtkFloatingPointType*)callData;
+       self->myRotationPointX = aSelectedPoint[0];
+       self->myRotationPointY = aSelectedPoint[1];
+       self->myRotationPointZ = aSelectedPoint[2];
+       return;
       }
     }
   }
index 064b6a2dedb912cca326eb45af3aa828f9235713..3ce8ba2f43e643da3b66a973f20f3e03b892265c 100644 (file)
 #include <map>
 
 #include <vtkObject.h>
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 //
 //! Control the value of increment  in SALOME way.
 /*!
   This class controls of value of increment,
   for pan/rotate/zoom operations in SALOME way
 */
-class SVTK_ControllerIncrement : public vtkObject{
+class SVTK_EXPORT SVTK_ControllerIncrement : public vtkObject{
  public:
   vtkTypeMacro(SVTK_ControllerIncrement, vtkObject);
   static SVTK_ControllerIncrement* New();
@@ -81,7 +86,7 @@ class SVTK_ControllerIncrement : public vtkObject{
   This class controls the behaviour of KeyDown event
   in SALOME way
 */
-class SVTK_ControllerOnKeyDown : public vtkObject{
+class SVTK_EXPORT SVTK_ControllerOnKeyDown : public vtkObject{
  public:
   vtkTypeMacro(SVTK_ControllerOnKeyDown, vtkObject);
   static SVTK_ControllerOnKeyDown* New();
@@ -99,12 +104,13 @@ class SVTK_ControllerOnKeyDown : public vtkObject{
 };
 
 class vtkCell;
-class vtkPicker;
+class vtkPointPicker;
 
 class SALOME_Actor;
 
 class SVTK_Selector;
 class SVTK_GenericRenderWindowInteractor;
+class SVTK_Actor;
 
 #define VTK_INTERACTOR_STYLE_CAMERA_NONE    0
 #define VTK_INTERACTOR_STYLE_CAMERA_ROTATE  1
@@ -114,6 +120,7 @@ class SVTK_GenericRenderWindowInteractor;
 #define VTK_INTERACTOR_STYLE_CAMERA_FIT        5
 #define VTK_INTERACTOR_STYLE_CAMERA_SELECT     6
 #define VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN 7
+#define VTK_INTERACTOR_STYLE_CAMERA_SELECT_ROTATION_POINT 8
 
 //! Introduce SALOME way of user interaction
 /*!
@@ -220,7 +227,7 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   
   SVTK_Selector* GetSelector();
 
- protected:
 protected:
   SVTK_InteractorStyle();
   ~SVTK_InteractorStyle();
 
@@ -273,6 +280,8 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
   void startFitArea();
   void startSpin();
 
+  void startPointSelection();
+
  protected:
   void loadCursors();
   void startOperation(int operation);
@@ -319,7 +328,22 @@ class SVTK_EXPORT SVTK_InteractorStyle: public vtkInteractorStyle
 
   PSelectionEvent mySelectionEvent;
 
-  vtkSmartPointer<vtkPicker> myPicker;
+  unsigned long                   myCurrRotationPointType;
+  unsigned long                   myPrevRotationPointType;
+
+  double                          myRotationPointX;
+  double                          myRotationPointY;
+  double                          myRotationPointZ;
+
+  vtkSmartPointer<SVTK_Actor>     myHighlightRotationPointActor;
+  vtkSmartPointer<vtkPointPicker> myPointPicker;
+  
+  vtkFloatingPointType            myBBCenter[3];
+  bool                            myBBFirstCheck;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 2cb5d437959cd2b1c25187277716ea02ef34cce7..045a05453c584528882fefb33b6c06923a01eb83 100644 (file)
 #include "SVTK_NonIsometricDlg.h"
 #include "SVTK_UpdateRateDlg.h"
 #include "SVTK_CubeAxesDlg.h"
+#include "SVTK_SetRotationPointDlg.h"
 
 #include "SVTK_MainWindow.h"
 #include "SVTK_Event.h"
 #include "SVTK_Renderer.h"
 #include "SVTK_RenderWindowInteractor.h"
+#include "SVTK_InteractorStyle.h"
 
 #include "SVTK_Selector.h"
 
@@ -91,6 +93,7 @@ SVTK_MainWindow
   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");
+  mySetRotationPointDlg = new SVTK_SetRotationPointDlg(myActionsMap[ChangeRotationPointId],this,"SVTK_SetRotationPointDlg");
 }
 
 /*!
@@ -143,6 +146,9 @@ SVTK_MainWindow
     GetRenderer()->OnAdjustTrihedron();
 
   GetInteractor()->update();
+
+  if ( (SVTK_InteractorStyle*)GetInteractorStyle() )
+    ((SVTK_InteractorStyle*)GetInteractorStyle())->OnTimer();
 }
 
 /*!
@@ -312,7 +318,7 @@ SVTK_MainWindow
 /*!
   Redirect the request to SVTK_Renderer::GetTrihedronSize
 */
-int
+vtkFloatingPointType
 SVTK_MainWindow
 ::GetTrihedronSize()
 {
@@ -324,7 +330,7 @@ SVTK_MainWindow
 */
 void 
 SVTK_MainWindow
-::SetTrihedronSize( const int theSize, const bool theRelative )
+::SetTrihedronSize( const vtkFloatingPointType theSize, const bool theRelative )
 {
   GetRenderer()->SetTrihedronSize(theSize, theRelative);
   Repaint();
@@ -463,6 +469,15 @@ SVTK_MainWindow
   connect(anAction, SIGNAL(activated()), this, SLOT(activateGlobalPanning()));
   myActionsMap[ GlobalPanId ] = anAction;
 
+  // Change rotation point
+  anAction = new QtxAction(tr("MNU_CHANGINGROTATIONPOINT_VIEW"), 
+                          theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_ROTATION_POINT" ) ),
+                          tr( "MNU_CHANGINGROTATIONPOINT_VIEW" ), 0, this);
+  anAction->setStatusTip(tr("DSC_CHANGINGROTATIONPOINT_VIEW"));
+  anAction->setToggleAction(true);
+  connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onChangeRotationPoint(bool)));
+  myActionsMap[ ChangeRotationPointId ] = anAction;
+
   // Rotation
   anAction = new QtxAction(tr("MNU_ROTATE_VIEW"), 
                           theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_ROTATE" ) ),
@@ -581,6 +596,8 @@ SVTK_MainWindow
   aPanningBtn->AddAction(myActionsMap[PanId]);
   aPanningBtn->AddAction(myActionsMap[GlobalPanId]);
 
+  myActionsMap[ChangeRotationPointId]->addTo(myToolBar);
+
   myActionsMap[RotationId]->addTo(myToolBar);
 
   SUIT_ToolButton* aViewsBtn = new SUIT_ToolButton(myToolBar);
@@ -648,6 +665,52 @@ SVTK_MainWindow
   myEventDispatcher->InvokeEvent(SVTK::StartRotate,0);
 }
 
+/*!
+  Change rotation point
+*/
+void
+SVTK_MainWindow
+::onChangeRotationPoint(bool theIsActivate)
+{
+  if(theIsActivate){
+    mySetRotationPointDlg->addObserver();
+    if ( mySetRotationPointDlg->IsFirstShown() )
+      activateSetRotationGravity();
+    mySetRotationPointDlg->show();
+  }else
+    mySetRotationPointDlg->hide();
+}
+
+/*!
+  Set the gravity center as a rotation point
+*/
+void
+SVTK_MainWindow
+::activateSetRotationGravity()
+{
+  myEventDispatcher->InvokeEvent(SVTK::SetRotateGravity,0);
+}
+
+/*!
+  Set the selected point as a rotation point
+*/
+void
+SVTK_MainWindow
+::activateSetRotationSelected(void* theData)
+{
+  myEventDispatcher->InvokeEvent(SVTK::ChangeRotationPoint,theData);
+}
+
+/*!
+  Set the point selected by user as a rotation point
+*/
+void
+SVTK_MainWindow
+::activateStartPointSelection()
+{
+  myEventDispatcher->InvokeEvent(SVTK::StartPointSelection,0);
+}
+
 /*!
   Starts global panning transformation
 */
index 3d9637a40482fdfac5be52804861bb7a4e9660ae..1be95b652af5177c2d7460454729769ae9d1c819 100644 (file)
@@ -46,6 +46,7 @@ class SVTK_NonIsometricDlg;
 class SVTK_UpdateRateDlg;
 class SVTK_CubeAxesActor2D;
 class SVTK_CubeAxesDlg;
+class SVTK_SetRotationPointDlg;
 
 class VTKViewer_Trihedron;
 class VTKViewer_Transform;
@@ -163,12 +164,12 @@ public:
              bool theIsUpdate = false);
 
   //! Redirect the request to #SVTK_Renderer::GetTrihedronSize
-  int  
+  vtkFloatingPointType  
   GetTrihedronSize();
 
   //! Redirect the request to #SVTK_Renderer::SetTrihedronSize
   void
-  SetTrihedronSize(const int theSize, const bool theRelative = true);
+  SetTrihedronSize(const vtkFloatingPointType theSize, const bool theRelative = true);
 
   //! Redirect the request to #SVTK_Renderer::AdjustActors
   void 
@@ -207,6 +208,12 @@ public:
   void activatePanning(); 
   void activateGlobalPanning(); 
 
+  void onChangeRotationPoint(bool theIsActivate);
+
+  void activateSetRotationGravity();
+  void activateSetRotationSelected(void* theData);
+  void activateStartPointSelection();
+
   void onFrontView(); 
   void onBackView(); 
   void onTopView();
@@ -240,7 +247,8 @@ public:
   void
   SetEventDispatcher(vtkObject* theDispatcher);
 
-  enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
+  enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, 
+        ChangeRotationPointId, RotationId,
          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, 
         ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate};
   typedef QMap<int, QtxAction*> TActionsMap;
@@ -250,6 +258,7 @@ public:
   SVTK_NonIsometricDlg* myNonIsometricDlg;
   SVTK_UpdateRateDlg* myUpdateRateDlg;
   SVTK_CubeAxesDlg* myCubeAxesDlg;
+  SVTK_SetRotationPointDlg* mySetRotationPointDlg;
 
   vtkSmartPointer<vtkObject> myEventDispatcher;
   TActionsMap myActionsMap;  
index 9aaad409eeb3d19dc660ec8b3f1f176c99b17b14..fb5ced7f2d69f69b7189c30c00af63869f90ff85 100644 (file)
@@ -115,22 +115,29 @@ namespace
     // WorldToView() is called.  This is expensive, so we get the matrix once
     // and handle the transformation ourselves.
     vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New();
-    aMatrix->DeepCopy(theRenderer->GetActiveCamera()->
-                     GetCompositePerspectiveTransformMatrix(1,0,1));
+    aMatrix->DeepCopy( theRenderer->GetActiveCamera()->
+                      GetCompositePerspectiveTransformMatrix( theRenderer->GetTiledAspectRatio(), 0, 1 ) );
 
     // We grab the z-buffer for the selection region all at once and probe the resulting array.
     float *aZPtr = theRenderer->GetRenderWindow()->
       GetZbufferData(theSelection[0], theSelection[1], theSelection[2], theSelection[3]);
 
     //cout<<"theSelection = {"<<theSelection[0]<<", "<<theSelection[1]<<", "<<theSelection[2]<<", "<<theSelection[3]<<"}\n";
-    /*
+
+    //cout<<"\t";
+    for(int iX = theSelection[0]; iX <= theSelection[2];  iX++){
+      //cout<<iX<<"\t";
+    }
+    //cout<<endl;
+
     for(int iY = theSelection[1]; iY <= theSelection[3];  iY++){
+      //cout<<iY<<"\t";
       for(int iX = theSelection[0]; iX <= theSelection[2];  iX++){
-       cout<<GetZ(aZPtr,theSelection,iX,iY)<<" ";
+       //cout<<std::setprecision(4)<<GetZ(aZPtr,theSelection,iX,iY)<<"\t";
       }
-      cout<<endl;
+      //cout<<endl;
     }
-    */
+
     for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
       // perform conversion
       vtkFloatingPointType aX[4] = {1.0, 1.0, 1.0, 1.0};
index d70ed0a1a2934512aefc1e82e6a3b3b8b736d1aa..3a6576edb04ec5eef0dbfbb9d3ffb230fc941978 100644 (file)
 
 class vtkRenderer;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! \class vtkAbstractPropPicker
  * \brief For more information see <a href="http://www.vtk.org/">VTK documentation
  */
@@ -117,6 +121,10 @@ class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker
        vtkRenderer*);
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
 
 
index 920f93e9936c0d7fd22c0ca3aeeabfb89d3edea9..647fbc5548f9f6f30cba258da30982a255c21bb8 100644 (file)
@@ -88,13 +88,13 @@ void
 QVTK_RenderWindowInteractor
 ::Initialize(vtkGenericRenderWindowInteractor* theDevice)
 {
-  if(GetDevice())
-    myDevice->SetRenderWindow(NULL);
+  if ( GetDevice() )
+    myDevice->SetRenderWindow( NULL );
 
   myDevice = theDevice;
 
-  if(theDevice)
-    theDevice->SetRenderWindow(getRenderWindow());
+  if ( theDevice )
+    theDevice->SetRenderWindow( getRenderWindow() );
 }
 
 /*!
@@ -103,9 +103,11 @@ QVTK_RenderWindowInteractor
 QVTK_RenderWindowInteractor
 ::~QVTK_RenderWindowInteractor() 
 {
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance())
-    if(aSpaceMouse->isSpaceMouseOn())
-      aSpaceMouse->close(x11Display());
+#ifndef WIN32
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+  if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() )
+    aSpaceMouse->close( x11Display() );
+#endif
 }
 
 
@@ -159,7 +161,7 @@ QVTK_RenderWindowInteractor
 {
   // Final initialization just before the widget is displayed
   GetDevice()->SetSize(width(),height());
-  if(!GetDevice()->GetInitialized()){
+  if(!GetDevice()->GetInitialized() && GetDevice()->GetRenderWindow()){
     GetDevice()->Initialize();
     GetDevice()->ConfigureEvent();
   }
@@ -368,14 +370,19 @@ QVTK_RenderWindowInteractor
 {
   QWidget::focusInEvent( event );
 
+#ifndef WIN32
   // register set space mouse events receiver
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(!aSpaceMouse->isSpaceMouseOn()) {// initialize 3D space mouse driver 
-      aSpaceMouse->initialize(x11Display(),winId());
-    }else{
-      aSpaceMouse->setWindow(x11Display(),winId());
-    }
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+
+  if ( aSpaceMouse )
+  {
+    if ( !aSpaceMouse->isSpaceMouseOn() )
+      // initialize 3D space mouse driver 
+      aSpaceMouse->initialize( x11Display(), winId() );
+    else
+      aSpaceMouse->setWindow( x11Display(), winId() );
   }
+#endif
 }
 
 /*!
@@ -388,13 +395,27 @@ QVTK_RenderWindowInteractor
 {
   QWidget::focusOutEvent( event );
 
+#ifndef WIN32
   // unregister set space mouse events receiver
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(aSpaceMouse->isSpaceMouseOn())
-      aSpaceMouse->setWindow(x11Display(),0);
-  }
+  SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance();
+  if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() )
+    aSpaceMouse->setWindow( x11Display(), 0 );
+#endif
+}
+
+
+#ifdef WIN32
+
+/*!
+  To handle native Win32 events (from such devices as SpaceMouse)
+*/
+bool QVTK_RenderWindowInteractor::winEvent( MSG* msg )
+{
+  // TODO: Implement event handling for SpaceMouse
+  return QWidget::winEvent( msg );
 }
 
+#else
 
 /*!
   To handle native X11 events (from such devices as SpaceMouse)
@@ -404,19 +425,22 @@ QVTK_RenderWindowInteractor
 ::x11Event( XEvent *xEvent )
 {
   // handle 3d space mouse events
-  if(SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance()){
-    if(aSpaceMouse->isSpaceMouseOn() && xEvent->type == ClientMessage){
+  if ( SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance() )
+  {
+    if ( aSpaceMouse->isSpaceMouseOn() && xEvent->type == ClientMessage )
+    {
       SVTK_SpaceMouse::MoveEvent anEvent;
       int type = aSpaceMouse->translateEvent( x11Display(), xEvent, &anEvent, 1.0, 1.0 );
-      switch( type ){
-      case SVTK_SpaceMouse::SpaceMouseMove : 
-       GetDevice()->InvokeEvent(SVTK::SpaceMouseMoveEvent, anEvent.data );
-       break;
-      case SVTK_SpaceMouse::SpaceButtonPress :
-       GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button );
-       break;
-      case SVTK_SpaceMouse::SpaceButtonRelease :
-       break;
+      switch ( type )
+      {
+      case SVTK_SpaceMouse::SpaceMouseMove:
+             GetDevice()->InvokeEvent( SVTK::SpaceMouseMoveEvent, anEvent.data );
+             break;
+      case SVTK_SpaceMouse::SpaceButtonPress:
+             GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button );
+             break;
+      case SVTK_SpaceMouse::SpaceButtonRelease:
+             break;
       }
       return true; // stop handling the event
     }
@@ -425,6 +449,8 @@ QVTK_RenderWindowInteractor
   return QWidget::x11Event( xEvent );
 }
 
+#endif
+
 /*!
   Constructor
 */
index d91db66a6d10c47fa7939966348395b677b768df..dd6a525027712eb317fbbd0035323b7a0444af83 100644 (file)
@@ -52,6 +52,10 @@ class vtkObject;
 class SVTK_Selector;
 class SVTK_Renderer;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*!
   \class QVTK_RenderWindowInteractor
   Implements Qt based vtkRenderWindowInteractor.
@@ -116,8 +120,12 @@ class SVTK_EXPORT QVTK_RenderWindowInteractor: public QWidget
   virtual void focusInEvent( QFocusEvent* );
   virtual void focusOutEvent( QFocusEvent* );
 
-  //! To handle native X11 events (from such devices as SpaceMouse)
+  //! To handle native events (from such devices as SpaceMouse)
+#ifdef WIN32
+  virtual bool winEvent( MSG* );
+#else
   virtual bool x11Event( XEvent *e );
+#endif
 
   vtkSmartPointer<vtkRenderWindow> myRenderWindow;
   vtkSmartPointer<vtkGenericRenderWindowInteractor> myDevice;
@@ -249,5 +257,8 @@ class SVTK_EXPORT SVTK_RenderWindowInteractor: public QVTK_RenderWindowInteracto
   TInteractorStyles myInteractorStyles;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
 
 #endif
index 2ca7c7aef08f4490c82a24c420ca1d2f2827aab2..cab5ca695e67649dce67d9cff6276d5d3f4bd29f 100644 (file)
@@ -81,8 +81,6 @@ SVTK_Renderer
   myDevice->Delete();
   myTransform->Delete();
 
-  SetSelectionTolerance();
-
   myPointPicker->Delete();
   myCellPicker->Delete();
 
@@ -112,7 +110,7 @@ SVTK_Renderer
   myEventCallbackCommand->Delete();
 
   myTrihedron->AddToRender(GetDevice());
-  GetDevice()->AddProp(GetCubeAxes());
+  GetDevice()->AddViewProp(GetCubeAxes());
 
   myBndBox[0] = myBndBox[2] = myBndBox[4] = 0;
   myBndBox[1] = myBndBox[3] = myBndBox[5] = myTrihedron->GetSize();
@@ -225,6 +223,7 @@ SVTK_Renderer
 {
   myInteractor = theInteractor;
   mySelector = theSelector;
+  SetSelectionTolerance();
 }
 
 /*!
@@ -348,13 +347,16 @@ SVTK_Renderer
 void
 SVTK_Renderer
 ::SetSelectionTolerance(const double& theTolNodes, 
-                       const double& theTolCell)
+                       const double& theTolCell,
+                       const double& theTolObjects)
 {
   myPointPicker->SetTolerance( theTolNodes );
   myCellPicker->SetTolerance( theTolCell );
 
   myPointRectPicker->SetTolerance( theTolNodes );
   myCellRectPicker->SetTolerance( theTolCell );
+
+  mySelector->SetTolerance( theTolObjects );
 }
 
 
@@ -466,7 +468,7 @@ SVTK_Renderer
 */
 void
 SVTK_Renderer
-::SetTrihedronSize(int theSize, const bool theRelative)
+::SetTrihedronSize(vtkFloatingPointType theSize, const bool theRelative)
 {
   if(myTrihedronSize != theSize || myIsTrihedronRelative != theRelative){
     myTrihedronSize = theSize;
@@ -478,7 +480,7 @@ SVTK_Renderer
 /*!
   \return size of the trihedron in percents from bounding box of the scene
 */
-int
+vtkFloatingPointType
 SVTK_Renderer
 ::GetTrihedronSize() const
 {
index c9908539d1c050855e967d791200374151b40482..5c24cefa13b315a4a25202a2deaa174d9bd751c5 100644 (file)
@@ -52,6 +52,9 @@ class SVTK_CubeAxesActor2D;
 class VTKViewer_Actor;
 class SVTK_Selector;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
 
 /*! 
   \class SVTK_Renderer
@@ -119,7 +122,8 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject
   //! Setup requested tolerance for the picking
   void
   SetSelectionTolerance(const double& theTolNodes = 0.025, 
-                       const double& theTolCell = 0.001);
+                       const double& theTolCell = 0.001,
+                       const double& theTolObjects = 0.025);
 
   //----------------------------------------------------------------------------
   //! Adjust all intenal actors (trihedron and graduated rules) to the scene
@@ -128,10 +132,10 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject
 
   //! Set size of the trihedron in percents from bounding box of the scene
   void
-  SetTrihedronSize(int theSize, const bool theRelative = true);
+  SetTrihedronSize(vtkFloatingPointType theSize, const bool theRelative = true);
  
   //! Get size of the trihedron in percents from bounding box of the scene
-  int  
+  vtkFloatingPointType  
   GetTrihedronSize() const;
 
   //! Shows if the size of the trihedron is relative
@@ -243,9 +247,13 @@ class SVTK_EXPORT SVTK_Renderer : public vtkObject
   //----------------------------------------------------------------------------
   vtkSmartPointer<SVTK_CubeAxesActor2D> myCubeAxes;
   vtkSmartPointer<VTKViewer_Trihedron> myTrihedron;  
-  int  myTrihedronSize;
+  vtkFloatingPointType myTrihedronSize;
   bool myIsTrihedronRelative;
   vtkFloatingPointType myBndBox[6];
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 78c94989d531f51a6a8eb21682456e7e94d828cd..fe5a930470c1bbf2c9585722dacbe98c23e1624a 100644 (file)
 #include <TColStd_IndexedMapOfInteger.hxx>
 
 #include <vtkCallbackCommand.h>
+#include <vtkActorCollection.h>
+#include <vtkCellPicker.h>
+
+
+/*!
+  Find first SALOME_Actor from the end of actors collection
+*/
+inline
+SALOME_Actor* 
+GetLastSALOMEActor(vtkActorCollection* theCollection)
+{
+  if (theCollection) {
+    for (int i = theCollection->GetNumberOfItems() - 1; i >= 0; i--) {
+      if (SALOME_Actor* anActor = dynamic_cast<SALOME_Actor*>(theCollection->GetItemAsObject(i)))
+       if (anActor->hasIO())
+         return anActor;
+    }
+  }
+  return NULL;
+}
+
 
 /*!
   \return new SVTK_Selector
@@ -50,9 +71,14 @@ SVTK_Selector
   Default constructor
 */
 SVTK_SelectorDef
-::SVTK_SelectorDef()
+::SVTK_SelectorDef():
+  myPicker(vtkPicker::New()),
+  myCellPicker(vtkCellPicker::New())
 {
   mySelectionMode = ActorSelection;
+
+  myPicker->Delete();
+  myCellPicker->Delete();
 }
 
 /*!
@@ -280,16 +306,13 @@ SVTK_SelectorDef
   TMapIOSubIndex::const_iterator anIter = myMapIOSubIndex.find(theIO);
   if(anIter != myMapIOSubIndex.end()){
     const TColStd_IndexedMapOfInteger& aMapIndex = anIter->second.myMap;
-    return aMapIndex.Contains(theIndex);
+    return aMapIndex.Contains( theIndex ) == Standard_True;
   }
 
   return false;
 }
 
-static 
-bool
-removeIndex(TColStd_IndexedMapOfInteger& theMapIndex,
-           const int theIndex)
+static bool removeIndex(TColStd_IndexedMapOfInteger& theMapIndex, const int theIndex)
 {
   int anId = theMapIndex.FindIndex(theIndex); // i==0 if Index is not in the MapIndex
   if(anId){
@@ -308,7 +331,7 @@ removeIndex(TColStd_IndexedMapOfInteger& theMapIndex,
       theMapIndex = aNewMap;
     }
   }
-  return anId;
+  return anId != 0;
 }
 
 /*!
@@ -402,18 +425,18 @@ SVTK_SelectorDef
   }
   TColStd_IndexedMapOfInteger& aMapIndex = anIter->second.myMap;
 
-  bool anIsConatains = aMapIndex.Contains(theIndex);
-  if(anIsConatains)
-    removeIndex(aMapIndex,theIndex);
+  bool anIsConatains = aMapIndex.Contains( theIndex ) == Standard_True;
+  if ( anIsConatains )
+    removeIndex( aMapIndex, theIndex );
   
-  if(!theIsModeShift)
+  if ( !theIsModeShift )
     aMapIndex.Clear();
   
-  if(!anIsConatains)
+  if ( !anIsConatains )
     aMapIndex.Add( theIndex );
 
-  if( aMapIndex.IsEmpty())
-    myMapIOSubIndex.erase(theIO);
+  if ( aMapIndex.IsEmpty() )
+    myMapIOSubIndex.erase( theIO );
 
   return false;
 }
@@ -518,3 +541,34 @@ SVTK_SelectorDef
   return Handle(VTKViewer_Filter)();
 }
 
+SALOME_Actor*
+SVTK_SelectorDef
+::Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const
+{
+  myCellPicker->Pick(theEvent->myX,
+                    theEvent->myY, 
+                    0.0,
+                    theRenderer);
+  
+  vtkActorCollection* aListActors = myCellPicker->GetActors();
+  SALOME_Actor* anActor = GetLastSALOMEActor(aListActors);
+  
+  if (! anActor) {
+    myPicker->Pick(theEvent->myX,
+                  theEvent->myY, 
+                  0.0,
+                  theRenderer);
+    aListActors = myPicker->GetActors();
+    anActor = GetLastSALOMEActor(aListActors);
+  }
+  
+  return anActor;
+}
+
+void
+SVTK_SelectorDef
+::SetTolerance(const double& theTolerance) 
+{
+  myPicker->SetTolerance(theTolerance);        
+  myCellPicker->SetTolerance(theTolerance);
+}
index 44c1d9690bdac408d5cdad304f59d2d73b75214c..f72ba8adc042bf24618eba25dad43bf51d8afb14 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef SVTK_SELECTOR_H
 #define SVTK_SELECTOR_H
 
+#include "SVTK.h"
 #include "SVTK_Selection.h"
 #include "SALOME_ListIO.hxx"
 #include "VTKViewer_Filter.h"
 
 class SALOME_Actor;
 
+class SVTK_SelectionEvent;
+
+class vtkRenderer;
+
+
 //! Define an abstract interface for selection in SVTK package
 /*!
   The class implements selection functionality through storing corresponding
@@ -49,7 +55,7 @@ class SALOME_Actor;
   \note
   Also, for each #SALOME_InteractiveObject it tries to keep corresponding refenrence to #SALOME_Actor
  */
-class SVTK_Selector: public vtkObject
+class SVTK_EXPORT SVTK_Selector: public vtkObject
 {
 public:
   static SVTK_Selector* New();
@@ -204,6 +210,15 @@ public:
   virtual
   void 
   EndPickCallback() = 0;
+
+  //----------------------------------------------------------------------------
+  virtual
+  SALOME_Actor*
+  Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const =0;
+
+  virtual
+  void
+  SetTolerance(const double& theTolerance) = 0;
 };
 
 
index e20d764ec73c54b1b358f83c8dfd02b5b6a08e6d..634d7297bf2a62b4539877823a9c41317038b920 100644 (file)
@@ -43,6 +43,9 @@ class SALOME_Actor;
 class SVTK_Viewer;
 class SVTK_ViewWindow;
 
+class vtkPicker;
+class vtkCellPicker;
+
 class SVTK_SelectorDef: public SVTK_Selector
 {
 public:
@@ -165,6 +168,15 @@ public:
   void 
   EndPickCallback();
 
+  //----------------------------------------------------------------------------
+  virtual
+  SALOME_Actor*
+  Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const;
+
+  virtual
+  void
+  SetTolerance(const double& theTolerance);
+
 private:
   int mySelectionMode;
 
@@ -206,6 +218,9 @@ private:
 
   typedef std::map<TFilterID,Handle(VTKViewer_Filter)> TFilters;
   TFilters myFilters;
+
+  vtkSmartPointer<vtkPicker> myPicker;
+  vtkSmartPointer<vtkCellPicker> myCellPicker;
 };
 
 #endif
diff --git a/src/SVTK/SVTK_SetRotationPointDlg.cxx b/src/SVTK/SVTK_SetRotationPointDlg.cxx
new file mode 100755 (executable)
index 0000000..d98efaa
--- /dev/null
@@ -0,0 +1,325 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#include "SVTK_SetRotationPointDlg.h"
+#include "SVTK_MainWindow.h"
+#include "SVTK_RenderWindowInteractor.h"
+#include "SVTK_Event.h"
+#include "SVTK_InteractorStyle.h"
+
+#include "VTKViewer_Utilities.h"
+
+#include "QtxAction.h"
+
+#include <qlineedit.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qvalidator.h>
+#include <qbuttongroup.h>
+#include <qobjectlist.h>
+#include <qcheckbox.h>
+#include <qhbox.h>
+
+#include <vtkCallbackCommand.h>
+
+using namespace std;
+
+/*!
+  Constructor
+*/
+SVTK_SetRotationPointDlg
+::SVTK_SetRotationPointDlg(QtxAction* theAction,
+                          SVTK_MainWindow* theParent,
+                          const char* theName):
+  SVTK_DialogBase(theAction,
+                 theParent, 
+                 theName),
+  myMainWindow(theParent),
+  myPriority(0.0),
+  myEventCallbackCommand(vtkCallbackCommand::New()),
+  myRWInteractor(theParent->GetInteractor())
+{
+  setCaption(tr("DLG_TITLE"));
+  setSizeGripEnabled(TRUE);
+
+  // Create layout for this dialog
+  QGridLayout* layoutDlg = new QGridLayout (this);
+  layoutDlg->setSpacing(6);
+  layoutDlg->setMargin(11);
+
+  // Create check box "Use Bounding Box Center"
+  QHBox* aCheckBox = new QHBox(this);
+
+  myIsBBCenter = new QCheckBox(tr("USE_BBCENTER"), aCheckBox);
+  myIsBBCenter->setChecked(true);
+  connect(myIsBBCenter, SIGNAL(stateChanged(int)), SLOT(onBBCenterChecked()));
+
+  // Create croup button with radio buttons
+  myGroupSelButton = new QButtonGroup(2,Qt::Vertical,"",this);
+  myGroupSelButton->setMargin(11);
+  
+  // Create "Set to Origin" button
+  myToOrigin = new QPushButton(myGroupSelButton);
+  myToOrigin->setText(tr("LBL_TOORIGIN"));
+  connect(myToOrigin, SIGNAL(clicked()), this, SLOT(onToOrigin()));
+
+  // Create "Select Point from View" button
+  mySelectPoint = new QPushButton(myGroupSelButton);
+  mySelectPoint->setText(tr("LBL_SELECTPOINT"));
+  mySelectPoint->setToggleButton(true);
+  connect(mySelectPoint, SIGNAL(clicked()), this, SLOT(onSelectPoint()));
+
+  // Create croup box with grid layout
+  myGroupBoxCoord = new QGroupBox(this, "GroupBox");
+  QHBoxLayout* aHBoxLayout = new QHBoxLayout(myGroupBoxCoord);
+  aHBoxLayout->setMargin(11);
+  aHBoxLayout->setSpacing(6);
+
+  // "X" coordinate
+  QLabel* TextLabelX = new QLabel (tr("LBL_X"), myGroupBoxCoord, "TextLabelX");
+  TextLabelX->setFixedWidth(15);
+  myX = new QLineEdit(myGroupBoxCoord);
+  myX->setValidator(new QDoubleValidator(myX));
+  myX->setText(QString::number(0.0));
+  connect(myX, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // "Y" coordinate
+  QLabel* TextLabelY = new QLabel (tr("LBL_Y"), myGroupBoxCoord, "TextLabelY");
+  TextLabelY->setFixedWidth(15);
+  myY = new QLineEdit(myGroupBoxCoord);
+  myY->setValidator(new QDoubleValidator(myY));
+  myY->setText(QString::number(0.0));
+  connect(myY, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // "Z" coordinate
+  QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), myGroupBoxCoord, "TextLabelZ");
+  TextLabelZ->setFixedWidth(15);
+  myZ = new QLineEdit(myGroupBoxCoord);
+  myZ->setValidator(new QDoubleValidator(myZ));
+  myZ->setText(QString::number(0.0));
+  connect(myZ, SIGNAL(textChanged(const QString&)), this, SLOT(onCoordChanged()));
+
+  // Layout widgets in the horizontal group box
+  aHBoxLayout->addWidget(TextLabelX);
+  aHBoxLayout->addWidget(myX);
+  aHBoxLayout->addWidget(TextLabelY);
+  aHBoxLayout->addWidget(myY);
+  aHBoxLayout->addWidget(TextLabelZ);
+  aHBoxLayout->addWidget(myZ);
+
+  // "Close" button
+  QGroupBox* aGroupBox = new QGroupBox(this);
+  QHBoxLayout* aHBoxLayout2 = new QHBoxLayout(aGroupBox);
+  aHBoxLayout2->setMargin(11);
+  aHBoxLayout2->setSpacing(6);
+
+  QPushButton* m_bClose = new QPushButton(tr("&Close"), aGroupBox, "m_bClose");
+  m_bClose->setAutoDefault(TRUE);
+  m_bClose->setFixedSize(m_bClose->sizeHint());
+  connect(m_bClose, SIGNAL(clicked()), this, SLOT(onClickClose()));
+
+  // Layout buttons
+  aHBoxLayout2->addWidget(m_bClose);
+
+  // Layout top level widgets
+  layoutDlg->addWidget(aCheckBox,0,0);
+  layoutDlg->addWidget(myGroupSelButton,1,0);
+  layoutDlg->addWidget(myGroupBoxCoord,2,0);
+  layoutDlg->addWidget(aGroupBox,3,0);
+  
+  setEnabled(myGroupSelButton,!myIsBBCenter->isChecked());
+  setEnabled(myGroupBoxCoord,!myIsBBCenter->isChecked());
+
+  this->resize(400, this->sizeHint().height());
+
+  myEventCallbackCommand->Delete();
+  myEventCallbackCommand->SetClientData(this);
+  myEventCallbackCommand->SetCallback(SVTK_SetRotationPointDlg::ProcessEvents);
+  myIsObserverAdded = false;
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+SVTK_SetRotationPointDlg
+::~SVTK_SetRotationPointDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+
+void
+SVTK_SetRotationPointDlg
+::addObserver()
+{
+  if ( !myIsObserverAdded ) {
+    vtkInteractorStyle* aIStyle = myRWInteractor->GetInteractorStyle();
+    aIStyle->AddObserver(SVTK::BBCenterChanged, myEventCallbackCommand.GetPointer(), myPriority);
+    aIStyle->AddObserver(SVTK::RotationPointChanged, myEventCallbackCommand.GetPointer(), myPriority);
+    myIsObserverAdded = true;
+  }
+}
+
+/*!
+  Return true if it is the first show for this dialog
+*/
+bool
+SVTK_SetRotationPointDlg
+::IsFirstShown()
+{
+  return myIsBBCenter->isChecked() && myX->text().toDouble() == 0.
+    && myY->text().toDouble() == 0. && myZ->text().toDouble() == 0.;
+}
+
+/*!
+  Processes events
+*/
+void 
+SVTK_SetRotationPointDlg
+::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* theCallData)
+{
+  SVTK_SetRotationPointDlg* self = reinterpret_cast<SVTK_SetRotationPointDlg*>(theClientData);
+  vtkFloatingPointType* aCoord = (vtkFloatingPointType*)theCallData;
+  
+  switch ( theEvent ) {
+  case SVTK::BBCenterChanged:
+    if ( self->myIsBBCenter->isChecked()
+        ||
+        IsBBEmpty(self->myMainWindow->getRenderer()) )
+    {
+      if ( aCoord )
+      {
+       self->myX->setText( QString::number(aCoord[0]) );
+       self->myY->setText( QString::number(aCoord[1]) );
+       self->myZ->setText( QString::number(aCoord[2]) );
+      }
+    }
+    break;
+  case SVTK::RotationPointChanged:
+    if ( aCoord )
+    {
+      self->myX->setText( QString::number(aCoord[0]) );
+      self->myY->setText( QString::number(aCoord[1]) );
+      self->myZ->setText( QString::number(aCoord[2]) );
+    }
+    if ( !self->myIsBBCenter->isChecked() )
+      self->mySelectPoint->toggle();
+  }
+}
+
+void 
+SVTK_SetRotationPointDlg
+::setEnabled(QGroupBox* theGrp, const bool theState)
+{
+  QObjectList aChildren(*theGrp->children());
+  QObject* anObj;
+  for(anObj = aChildren.first(); anObj !=0; anObj = aChildren.next())
+  {
+    if (anObj !=0 && anObj->inherits("QLineEdit"))
+      ((QLineEdit*)anObj)->setReadOnly(!theState);
+    if (anObj !=0 && anObj->inherits("QPushButton"))
+      ((QLineEdit*)anObj)->setEnabled(theState);
+  }
+  
+}
+
+void 
+SVTK_SetRotationPointDlg
+::onBBCenterChecked()
+{
+  setEnabled(myGroupSelButton,!myIsBBCenter->isChecked());
+  setEnabled(myGroupBoxCoord,!myIsBBCenter->isChecked());
+  
+  if ( myIsBBCenter->isChecked() )
+  { 
+    if ( mySelectPoint->state() == QButton::On )
+      mySelectPoint->toggle();
+    // activate mode : the rotation point is the center of the bounding box
+    // send the data to the SVTK_InteractorStyle: set the type of the rotation point
+    //                                            calculate coordinates of the rotation point
+    myMainWindow->activateSetRotationGravity();
+  }
+  else
+  {
+    QString aX = myX->text();
+    myX->setText(QString::number(aX.toDouble()+1.));
+    myX->setText(aX);
+  }
+}
+
+void
+SVTK_SetRotationPointDlg
+::onToOrigin()
+{
+  if ( mySelectPoint->state() == QButton::On )
+    mySelectPoint->toggle();
+  myX->setText(QString::number(0.0));
+  myY->setText(QString::number(0.0));
+  myZ->setText(QString::number(0.0));
+}
+
+void
+SVTK_SetRotationPointDlg
+::onSelectPoint()
+{
+  if ( mySelectPoint->state() == QButton::On )
+    myMainWindow->activateStartPointSelection();
+  else
+    mySelectPoint->toggle();
+}
+
+void
+SVTK_SetRotationPointDlg
+::onCoordChanged()
+{
+  if ( !myIsBBCenter->isChecked() ) {
+    if ( mySelectPoint->state() == QButton::On
+        &&
+        ( myX->hasFocus() || myY->hasFocus() || myZ->hasFocus() ) )
+      mySelectPoint->toggle();
+    vtkFloatingPointType aCenter[3] = {myX->text().toDouble(), 
+                                      myY->text().toDouble(), 
+                                      myZ->text().toDouble()};
+    myMainWindow->activateSetRotationSelected((void*)aCenter);
+  }
+  else
+    myMainWindow->activateSetRotationGravity();
+}
+
+void
+SVTK_SetRotationPointDlg
+::onClickClose()
+{
+  reject();
+}
+
+
diff --git a/src/SVTK/SVTK_SetRotationPointDlg.h b/src/SVTK/SVTK_SetRotationPointDlg.h
new file mode 100755 (executable)
index 0000000..a598aff
--- /dev/null
@@ -0,0 +1,110 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#ifndef SVTK_SETROTATIONPOINTDLG_H
+#define SVTK_SETROTATIONPOINTDLG_H
+
+#include "SVTK.h"
+
+#include "SVTK_DialogBase.h"
+
+#include <vtkSmartPointer.h>
+
+class SVTK_MainWindow;
+class SVTK_RenderWindowInteractor;
+
+class QtxAction;
+
+class QLineEdit;
+class QPushButton;
+class QGroupBox;
+class QButtonGroup;
+class QCheckBox;
+
+class vtkCallbackCommand;
+class vtkObject;
+
+class SVTK_EXPORT SVTK_SetRotationPointDlg : public SVTK_DialogBase
+{
+  Q_OBJECT;
+
+public:
+  SVTK_SetRotationPointDlg(QtxAction* theAction,
+                          SVTK_MainWindow* theParent,
+                          const char* theName);
+
+  ~SVTK_SetRotationPointDlg();
+  
+  void addObserver();
+  bool IsFirstShown();
+  
+protected:
+  SVTK_MainWindow *myMainWindow;
+  SVTK_RenderWindowInteractor* myRWInteractor;
+  bool myIsObserverAdded;
+  
+  QCheckBox*    myIsBBCenter;
+
+  QButtonGroup* myGroupSelButton;
+  QPushButton*  myToOrigin;
+  QPushButton*  mySelectPoint;
+
+  QGroupBox* myGroupBoxCoord;
+  QLineEdit* myX;
+  QLineEdit* myY;
+  QLineEdit* myZ;
+
+  void setEnabled(QGroupBox* theGrp, const bool theState);
+
+  //----------------------------------------------------------------------------
+  // Priority at which events are processed
+  vtkFloatingPointType myPriority;
+
+  // Used to process events
+  vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+
+  // Description:
+  // Main process event method
+  static void ProcessEvents(vtkObject* object, 
+                            unsigned long event,
+                            void* clientdata, 
+                            void* calldata);
+
+protected slots:
+  void onBBCenterChecked();
+  
+  void onToOrigin();
+  void onSelectPoint();
+
+  void onCoordChanged();
+
+  void onClickClose();
+
+};
+
+#endif // SVTK_SETROTATIONPOINTDLG_H
index c6913f7822e5e54b0b8e8c065f7c2a56e5c8c1ec..7d858a7809b2aff7fe0b5152e0f2227eb5ef3c5c 100644 (file)
 #include <math.h>
 #include <stdio.h>
 
+#ifndef WIN32
 #include <X11/X.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/Xatom.h>
 #include <X11/keysym.h>
+#endif
 
 #include "SVTK_SpaceMouse.h"
 
@@ -55,10 +57,14 @@ SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance()
 */
 SVTK_SpaceMouse::SVTK_SpaceMouse()
 {
+#ifndef WIN32
   win = InputFocus;
+#endif
   spaceMouseOn = 0;
 }
 
+#ifndef WIN32
+
 /*!
   Initialization
 */
@@ -204,3 +210,4 @@ int SVTK_SpaceMouse::translateEvent( Display* display, XEvent* xEvent, MoveEvent
   return (!display);
 }
 
+#endif
index 3c675f71e081b8cfc2d142e1a15460236ba8c3b5..f920bf44a9ed4e5d273f93a60a89b5058b31595a 100644 (file)
 #ifndef SVTK_SpaceMouse_h
 #define SVTK_SpaceMouse_h
 
+#ifndef WIN32
 extern "C"
 {
 #include <X11/X.h>
 #include <X11/Xlib.h>
 }
+#endif
 
 class SVTK_SpaceMouse 
 {
@@ -54,21 +56,25 @@ class SVTK_SpaceMouse
 
   bool isSpaceMouseOn() const { return spaceMouseOn != 0; }
 
+#ifndef WIN32
   int initialize     ( Display*, Window );
   int setWindow      ( Display*, Window );
   int translateEvent ( Display*, XEvent*, MoveEvent*, double, double );
   int close          ( Display* );
+#endif
 
  private:
   SVTK_SpaceMouse();
   static SVTK_SpaceMouse* myInstance;
 
+#ifndef WIN32
   Atom XMotionEvent;
   Atom XButtonPressEvent;
   Atom XButtonReleaseEvent;
   Atom XCommandEvent;
 
   Window win;
+#endif
   int spaceMouseOn;
 };
 
index ac0bbd4d89b8dd41e7252cce952185bbca6078a8..45751cfec523a7e16a2337c203dd95a162b3e113 100644 (file)
@@ -46,9 +46,13 @@ SVTK_Trihedron
   int aCount = 0;
   while(vtkActor* aProp = aCollection->GetNextActor()) {
     if(aProp->GetVisibility())
-      if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(aProp))
+      if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(aProp)) {
         if(!anActor->IsInfinitive()) 
-          aCount++;
+         aCount++;
+      }
+      else if ( !OwnActor( anActor ) ) {
+       aCount++;
+      }
   }
   return aCount;
 }
index 882728b3ae045ff48e015db26c9a877847ad01cf..34ea473009411a804fdadbc7a1182fefdd093e58 100644 (file)
@@ -259,9 +259,10 @@ SVTK_View
 void
 SVTK_View
 ::SetSelectionTolerance(const double& theTolNodes, 
-                       const double& theTolCell)
+                       const double& theTolCell,
+                       const double& theTolObjects)
 {
-  GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell);
+  GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell, theTolObjects);
 }
 
 /*!
index 4c25de9bcead69118b2ec683f2c0e43b6774733a..c7cc984b9aa39ed24b0579882fe1c2ce24b5ef87 100644 (file)
@@ -251,7 +251,8 @@ public:
   //! Redirect the request to #SVTK_Renderer::SetPreselectionProp
   void
   SetSelectionTolerance(const double& theTolNodes = 0.025, 
-                       const double& theTolCell = 0.001);
+                       const double& theTolCell = 0.001,
+                       const double& theTolObjects = 0.025);
 
  protected:  
   int myDisplayMode;
index 3465d153573435e354a50f93dde8d74448084dd8..b7856fdc7e22a225621233ec698f090e9bf64451 100644 (file)
 #include "SVTK_ViewManager.h"
 #include "SVTK_ViewModel.h"
 
-int SVTK_ViewManager::_SVTKViewMgr_Id = 0;
+#include <VTKViewer_ViewManager.h>
 
 /*!
   Constructor
 */
-SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, 
-                   SUIT_Desktop* theDesktop ) 
-: SUIT_ViewManager( study, theDesktop )
+SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop ) 
+: SUIT_ViewManager( study, theDesktop, new SVTK_Viewer() )
 {
-  myId = ++_SVTKViewMgr_Id;
-  setViewModel( new SVTK_Viewer() );
+  setTitle( VTKViewer_ViewManager::tr( "VTK_VIEW_TITLE" ) );
 }
 
 /*!
@@ -46,12 +44,3 @@ SUIT_Desktop* SVTK_ViewManager::getDesktop()
 {
   return myDesktop;
 }
-
-/*!
-  Sets default name of view
-*/
-void SVTK_ViewManager::setViewName(SUIT_ViewWindow* theView)
-{
-  int aPos = myViews.find(theView);
-  theView->setCaption( tr( "VTK_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) );
-}
index eda0626005a9b9a8951d87476588a5ca57cccded..8ff4efcc97545af264e2e59be6a20ff9ed3990ae 100644 (file)
@@ -37,13 +37,6 @@ public:
   virtual ~SVTK_ViewManager();
 
   SUIT_Desktop* getDesktop();
-
-protected:
-  void setViewName( SUIT_ViewWindow* theView );
-
-private:
-  int               myId;
-  static  int       _SVTKViewMgr_Id;
 };
 
 #endif
index 61cde9d5bfc80bad611320c7689f643201eeb71e..0624c7d47988a2cf37dd867c3874cc9916e69481 100644 (file)
@@ -127,7 +127,7 @@ createView( SUIT_Desktop* theDesktop )
 /*!
   \return trihedron size
 */
-int SVTK_Viewer::trihedronSize() const
+vtkFloatingPointType SVTK_Viewer::trihedronSize() const
 {
   return myTrihedronSize;
 }
@@ -145,17 +145,17 @@ bool SVTK_Viewer::trihedronRelative() const
   \param theSize - new size
   \param theRelative - new relativeness
 */
-void SVTK_Viewer::setTrihedronSize( const int theSize, const bool theRelative )
+void SVTK_Viewer::setTrihedronSize( const vtkFloatingPointType 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);
-      }
+    for ( uint i = 0; i < aViews.count(); i++ )
+    {
+      if ( TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at( i )) )
+             aView->SetTrihedronSize( theSize, theRelative );
     }
   }
 }
@@ -197,6 +197,7 @@ SVTK_Viewer
     if ( !aView->getMainWindow()->getToolBar()->isVisible() ){
       thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
     }
+    aView->RefreshDumpImage();
   }
 }
 
index 3c55105c11344537a2c229b36a2404a5f8ed3ebd..ec61193b2363b83e00397c71d77515ffb24a7f6f 100644 (file)
@@ -63,13 +63,13 @@ public:
   void setBackgroundColor( const QColor& );
 
   //! Get size of trihedron of the viewer (see #SVTK_Renderer::SetTrihedronSize)
-  int trihedronSize() const;
+  vtkFloatingPointType 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, const bool = true );
+  void setTrihedronSize( const vtkFloatingPointType, const bool = true );
 
 public:
   void enableSelection(bool isEnabled);
@@ -117,7 +117,7 @@ protected slots:
 
 private:
   QColor myBgColor;
-  int    myTrihedronSize;
+  vtkFloatingPointType myTrihedronSize;
   bool   myTrihedronRelative;
   bool   mySelectionEnabled;
   bool   myMultiSelectionEnabled;
index 3fee43d8e104b13f9659982791524520c7e65834..56317d592ac77caed86d5de45252ad9ed90f9cfb 100755 (executable)
@@ -29,6 +29,7 @@
 #include <vtkPointPicker.h>
 #include <vtkCellPicker.h>
 #include <vtkAxisActor2D.h>
+#include <vtkGL2PSExporter.h>
 
 #include "QtxAction.h"
 
 #include "VTKViewer_Algorithm.h"
 #include "SVTK_Functor.h"
 
+
+namespace SVTK
+{
+  int convertAction( const int accelAction )
+  {
+    switch ( accelAction ) {
+    case SUIT_Accel::PanLeft     : return SVTK::PanLeftEvent;
+    case SUIT_Accel::PanRight    : return SVTK::PanRightEvent;
+    case SUIT_Accel::PanUp       : return SVTK::PanUpEvent;
+    case SUIT_Accel::PanDown     : return SVTK::PanDownEvent;
+    case SUIT_Accel::ZoomIn      : return SVTK::ZoomInEvent;
+    case SUIT_Accel::ZoomOut     : return SVTK::ZoomOutEvent;
+    case SUIT_Accel::RotateLeft  : return SVTK::RotateLeftEvent;
+    case SUIT_Accel::RotateRight : return SVTK::RotateRightEvent;
+    case SUIT_Accel::RotateUp    : return SVTK::RotateUpEvent;
+    case SUIT_Accel::RotateDown  : return SVTK::RotateDownEvent;  
+    }
+    return accelAction;
+  }
+}
+
+
+
+
+
 /*!
   Constructor
 */
@@ -68,7 +94,8 @@ SVTK_ViewWindow
 ::SVTK_ViewWindow(SUIT_Desktop* theDesktop):
   SUIT_ViewWindow(theDesktop),
   myMainWindow(NULL),
-  myView(NULL)
+  myView(NULL),
+  myDumpImage(QImage())
 {}
 
 /*!
@@ -442,6 +469,7 @@ SVTK_ViewWindow
 ::setBackgroundColor( const QColor& color )
 {
   myMainWindow->SetBackgroundColor( color );
+  SUIT_ViewWindow::setBackgroundColor( color );
 }
 
 /*!
@@ -547,7 +575,7 @@ SVTK_ViewWindow
 /*!
   \return trihedron size
 */
-int
+vtkFloatingPointType
 SVTK_ViewWindow
 ::GetTrihedronSize() const
 {
@@ -561,7 +589,7 @@ SVTK_ViewWindow
 */
 void
 SVTK_ViewWindow
-::SetTrihedronSize(const int theSize, const bool theRelative)
+::SetTrihedronSize(const vtkFloatingPointType theSize, const bool theRelative)
 {
   myMainWindow->SetTrihedronSize(theSize, theRelative);
 }
@@ -684,8 +712,59 @@ SVTK_ViewWindow
 QImage
 SVTK_ViewWindow
 ::dumpView()
+{    
+  if ( myMainWindow->getToolBar()->hasMouse() || myDumpImage.isNull() )
+    return myMainWindow->dumpView();
+  
+  return myDumpImage;
+}
+
+QString SVTK_ViewWindow::filter() const
 {
-  return myMainWindow->dumpView();
+  return tr( "SVTK_IMAGE_FILES" );
+}
+
+bool SVTK_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format )
+{
+  if ( format != "PS" && format != "EPS" && format != "PDF" )
+    return SUIT_ViewWindow::dumpViewToFormat( img, fileName, format );
+
+  QApplication::setOverrideCursor( Qt::waitCursor );
+
+  vtkGL2PSExporter *anExporter = vtkGL2PSExporter::New();
+  anExporter->SetRenderWindow(getRenderWindow());
+
+  if ( format == "PS" ) {
+    anExporter->SetFileFormatToPS();
+    anExporter->CompressOff();
+  }
+
+  if ( format == "EPS" ) {
+    anExporter->SetFileFormatToEPS();
+    anExporter->CompressOff();
+  }
+
+  if ( format == "PDF" ) {
+    anExporter->SetFileFormatToPDF();
+  }
+
+  QString aFilePrefix(fileName);
+  QString anExtension(SUIT_Tools::extension(fileName));
+  aFilePrefix.truncate(aFilePrefix.length() - 1 - anExtension.length());
+  anExporter->SetFilePrefix(aFilePrefix.latin1());
+  anExporter->Write();
+  anExporter->Delete();
+
+  QApplication::restoreOverrideCursor();
+  return true;
+}
+
+/*!
+  \refresh QImage, containing all scene rendering in window
+*/
+void SVTK_ViewWindow::RefreshDumpImage()
+{
+  myDumpImage = myMainWindow->dumpView();
 }
 
 /*!
@@ -720,26 +799,10 @@ SVTK_ViewWindow
 void
 SVTK_ViewWindow
 ::SetSelectionTolerance(const double& theTolNodes, 
-                       const double& theTolItems)
+                       const double& theTolItems,
+                       const double& theTolObjects)
 {
-  myView->SetSelectionTolerance(theTolNodes,theTolItems);
-}
-
-int convertAction( const int accelAction )
-{
-  switch ( accelAction ) {
-  case SUIT_Accel::PanLeft     : return SVTK::PanLeftEvent;
-  case SUIT_Accel::PanRight    : return SVTK::PanRightEvent;
-  case SUIT_Accel::PanUp       : return SVTK::PanUpEvent;
-  case SUIT_Accel::PanDown     : return SVTK::PanDownEvent;
-  case SUIT_Accel::ZoomIn      : return SVTK::ZoomInEvent;
-  case SUIT_Accel::ZoomOut     : return SVTK::ZoomOutEvent;
-  case SUIT_Accel::RotateLeft  : return SVTK::RotateLeftEvent;
-  case SUIT_Accel::RotateRight : return SVTK::RotateRightEvent;
-  case SUIT_Accel::RotateUp    : return SVTK::RotateUpEvent;
-  case SUIT_Accel::RotateDown  : return SVTK::RotateDownEvent;  
-  }
-  return accelAction;
+  myView->SetSelectionTolerance(theTolNodes,theTolItems, theTolObjects);
 }
 
 /*!
@@ -755,7 +818,7 @@ SVTK_ViewWindow
   if ( accelAction == SUIT_Accel::ZoomFit )
     onFitAll();
   else {
-    int anEvent = convertAction( accelAction );
+    int anEvent = SVTK::convertAction( accelAction );
     myMainWindow->InvokeEvent( anEvent, 0 );
   }
   return true;
index 7a592578b531c2f06c2ef223213537d2a812fb3e..dca18f0854b46ed561425c43ae916d955b405e7a 100755 (executable)
@@ -28,6 +28,8 @@
 #include "SUIT_ViewWindow.h"
 #include "SALOME_InteractiveObject.hxx"
 
+#include <qimage.h>
+
 class SUIT_Desktop;
 
 class VTKViewer_Actor;
@@ -48,6 +50,12 @@ class vtkRenderer;
 class vtkRenderWindow;
 class vtkRenderWindowInteractor;
 
+namespace SVTK
+{
+  SVTK_EXPORT
+    int convertAction( const int );
+}
+
 //! Define a container for SALOME VTK view window
 class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
 {
@@ -60,6 +68,8 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   virtual
   ~SVTK_ViewWindow();
   
+  virtual QImage dumpView();
+
   //! To initialize #SVTK_ViewWindow instance
   virtual
   void
@@ -213,13 +223,13 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   GetCubeAxes();
 
   //! Redirect the request to #SVTK_Renderer::GetTrihedronSize
-  int  
+  vtkFloatingPointType  
   GetTrihedronSize() const;
 
   //! Redirect the request to #SVTK_Renderer::SetTrihedronSize
   virtual
   void 
-  SetTrihedronSize( const int, const bool = true );
+  SetTrihedronSize( const vtkFloatingPointType, const bool = true );
 
   //! Redirect the request to #SVTK_Renderer::SetSelectionProp
   virtual
@@ -241,7 +251,8 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   virtual
   void
   SetSelectionTolerance(const double& theTolNodes = 0.025, 
-                       const double& theTolCell = 0.001);
+                       const double& theTolCell = 0.001,
+                       const double& theTolObjects = 0.025);
 
   //! Methods to save/restore visual parameters of a view (pan, zoom, etc.)
   virtual 
@@ -255,6 +266,9 @@ class SVTK_EXPORT SVTK_ViewWindow : public SUIT_ViewWindow
   virtual
   bool
   eventFilter( QObject*, QEvent* );
+
+  virtual
+  void RefreshDumpImage();
   
 public slots:
   virtual
@@ -342,14 +356,19 @@ protected:
   void
   doSetVisualParameters( const QString& );
 
-  QImage dumpView();
+  virtual QString filter() const;
+  virtual bool dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format );
+  
   virtual bool action( const int );
-
+  
   SVTK_View* myView;
   SVTK_MainWindow* myMainWindow;
   SVTK_ViewModelBase* myModel;
 
   QString myVisualParams; // used for delayed setting of view parameters 
+
+private:
+  QImage myDumpImage;
 };
 
 #ifdef WIN32
index 1e28bfdbd21fae8236b84b49bb99b328518f7e28..6e5f620d32e9a9a592b791f8dabd7963a6e42612 100755 (executable)
@@ -113,6 +113,12 @@ msgstr "Rotation of the point of view around the scene center"
 msgid "MNU_ROTATE_VIEW"
 msgstr "Rotation"
 
+msgid "DSC_CHANGINGROTATIONPOINT_VIEW"
+msgstr "Change the point, around which the rotation is performed"
+
+msgid "MNU_CHANGINGROTATIONPOINT_VIEW"
+msgstr "Change Rotation Point"
+
 msgid "DSC_DUMP_VIEW"
 msgstr "Saves the active view in the image file"
 
@@ -182,6 +188,39 @@ msgstr "Scaling"
 msgid "SVTK_MainWindow::DSC_SVTK_SCALING"
 msgstr "Scaling"
 
+msgid "SVTK_SetRotationPointDlg::DLG_TITLE"
+msgstr "Set Rotation Point"
+
+msgid "SVTK_SetRotationPointDlg::USE_BBCENTER"
+msgstr "Use Bounding Box Center"
+
+msgid "SVTK_SetRotationPointDlg::LBL_TOORIGIN"
+msgstr "Set to Origin"
+
+msgid "SVTK_SetRotationPointDlg::LBL_SELECTPOINT"
+msgstr "Select Point from View"
+
+msgid "SVTK_SetRotationPointDlg::LBL_CENTER_OF_BOUNDING_BOX"
+msgstr "Center of bounding box"
+
+msgid "SVTK_SetRotationPointDlg::LBL_ORIGIN"
+msgstr "Origin of the coordinate system"
+
+msgid "SVTK_SetRotationPointDlg::LBL_SELECTED_POINT"
+msgstr "Selected point"
+
+msgid "SVTK_SetRotationPointDlg::LBL_X"
+msgstr "X :"
+
+msgid "SVTK_SetRotationPointDlg::LBL_Y"
+msgstr "Y :"
+
+msgid "SVTK_SetRotationPointDlg::LBL_Z"
+msgstr "Z :"
+
+msgid "SVTK_SetRotationPointDlg::RBUTTONGROUP_TITLE"
+msgstr "The rotation point type"
+
 msgid "SVTK_FontWidget::ARIAL"
 msgstr "Arial"
 
@@ -275,3 +314,5 @@ msgstr "Current Update Rate, FPS"
 msgid "SVTK_UpdateRateDlg::NUMBER_CELLS"
 msgstr "Number of Cells, -"
 
+msgid "SVTK_IMAGE_FILES"
+msgstr "Images Files (*.bmp *.png *.jpg *.jpeg *.pdf *.ps *.eps)""
\ No newline at end of file
diff --git a/src/SalomeApp/Makefile.am b/src/SalomeApp/Makefile.am
new file mode 100755 (executable)
index 0000000..7ced482
--- /dev/null
@@ -0,0 +1,110 @@
+#  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
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+if CPPUNIT_IS_OK
+if GUI_ENABLE_CORBA
+  SUBDIRS=Test
+endif
+endif
+
+lib_LTLIBRARIES= libSalomeApp.la
+
+salomeinclude_HEADERS= \
+       SalomeApp.h \
+       SalomeApp_Application.h \
+       SalomeApp_DataModel.h \
+       SalomeApp_DataObject.h \
+       SalomeApp_Module.h \
+       SalomeApp_Study.h \
+       SalomeApp_ExceptionHandler.h \
+       SalomeApp_EventFilter.h \
+       SalomeApp_Tools.h \
+       SalomeApp_ImportOperation.h \
+       SalomeApp_Filter.h \
+       SalomeApp_TypeFilter.h \
+       SalomeApp_StudyPropertiesDlg.h \
+       SalomeApp_CheckFileDlg.h \
+       SalomeApp_VisualState.h \
+       SalomeApp_ExitDlg.h
+
+dist_libSalomeApp_la_SOURCES= \
+       SalomeApp_Module.cxx \
+       SalomeApp_Application.cxx \
+       SalomeApp_DataModel.cxx \
+       SalomeApp_DataObject.cxx \
+       SalomeApp_Study.cxx \
+       SalomeApp_ExceptionHandler.cxx \
+       SalomeApp_EventFilter.cxx \
+       SalomeApp_PyInterp.cxx \
+       SalomeApp_Tools.cxx \
+       SalomeApp_ImportOperation.cxx \
+       SalomeApp_Filter.cxx \
+       SalomeApp_TypeFilter.cxx \
+       SalomeApp_StudyPropertiesDlg.cxx \
+       SalomeApp_ListView.cxx \
+       SalomeApp_CheckFileDlg.cxx \
+       SalomeApp_VisualState.cxx \
+       SalomeApp_ExitDlg.cxx
+
+MOC_FILES= \
+       SalomeApp_Application_moc.cxx \
+       SalomeApp_DataModel_moc.cxx \
+       SalomeApp_Module_moc.cxx \
+       SalomeApp_Study_moc.cxx \
+       SalomeApp_StudyPropertiesDlg_moc.cxx \
+       SalomeApp_ListView_moc.cxx \
+       SalomeApp_CheckFileDlg_moc.cxx \
+       SalomeApp_ExitDlg_moc.cxx
+
+nodist_libSalomeApp_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA= \
+       resources/SalomeApp.ini \
+       resources/SalomeApp.xml
+
+nodist_salomeres_DATA= \
+       SalomeApp_images.qm \
+       SalomeApp_msg_en.qm
+
+libSalomeApp_la_CPPFLAGS=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) \
+       $(CAS_CPPFLAGS) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) @KERNEL_CXXFLAGS@ \
+       -I$(srcdir)/../LightApp -I$(srcdir)/../CAM -I$(srcdir)/../Qtx \
+       -I$(srcdir)/../SUIT -I$(srcdir)/../OBJECT -I$(srcdir)/../SVTK \
+       -I$(srcdir)/../STD -I$(srcdir)/../VTKViewer -I$(srcdir)/../ObjBrowser \
+       -I$(srcdir)/../PythonConsole -I$(srcdir)/../TOOLSGUI \
+       -I$(srcdir)/../PyInterp -I$(srcdir)/../Session -I$(top_builddir)/idl \
+       -I$(srcdir)/../Event \
+       -I$(srcdir)/../CASCatch \
+       -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ @LIBXML_INCLUDES@
+libSalomeApp_la_LDFLAGS=$(PYTHON_LIBS) $(QT_MT_LIBS) 
+libSalomeApp_la_LIBADD= $(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSalomeDSClient \
+       ../SUIT/libsuit.la ../STD/libstd.la ../CAM/libCAM.la ../ObjBrowser/libObjBrowser.la \
+       ../Prs/libSalomePrs.la ../SPlot2d/libSPlot2d.la ../GLViewer/libGLViewer.la \
+       ../OCCViewer/libOCCViewer.la ../VTKViewer/libVTKViewer.la ../OBJECT/libSalomeObject.la \
+       ../SVTK/libSVTK.la ../SOCC/libSOCC.la ../PyInterp/libPyInterp.la \
+       ../PythonConsole/libPythonConsole.la ../LogWindow/libLogWindow.la \
+       ../LightApp/libLightApp.la ../TOOLSGUI/libToolsGUI.la ../CASCatch/libCASCatch.la $(CAS_KERNEL)
+
+EXTRA_DIST+=SalomeApp_PyInterp.h
diff --git a/src/SalomeApp/Makefile.in b/src/SalomeApp/Makefile.in
deleted file mode 100755 (executable)
index ed377df..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#  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
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= SalomeApp.h \
-               SalomeApp_Application.h \
-               SalomeApp_DataModel.h \
-               SalomeApp_DataObject.h \
-               SalomeApp_Module.h \
-               SalomeApp_Study.h \
-               SalomeApp_ExceptionHandler.h \
-               SalomeApp_EventFilter.h \
-               SalomeApp_Tools.h \
-               SalomeApp_ImportOperation.h \
-               SalomeApp_Filter.h \
-               SalomeApp_TypeFilter.h \
-               SalomeApp_StudyPropertiesDlg.h \
-               SalomeApp_CheckFileDlg.h \
-               SalomeApp_VisualState.h
-
-# .po files to transform in .qm
-PO_FILES = SalomeApp_images.po \
-          SalomeApp_msg_en.po
-
-# Libraries targets
-LIB = libSalomeApp.la
-
-LIB_SRC= SalomeApp_Module.cxx \
-         SalomeApp_Application.cxx \
-        SalomeApp_DataModel.cxx \
-        SalomeApp_DataObject.cxx \
-        SalomeApp_Study.cxx \
-        SalomeApp_ExceptionHandler.cxx \
-        SalomeApp_EventFilter.cxx \
-        SalomeApp_PyInterp.cxx \
-        SalomeApp_Tools.cxx \
-        SalomeApp_ImportOperation.cxx \
-        SalomeApp_Filter.cxx \
-        SalomeApp_TypeFilter.cxx \
-        SalomeApp_StudyPropertiesDlg.cxx \
-        SalomeApp_ListView.cxx \
-        SalomeApp_CheckFileDlg.cxx \
-        SalomeApp_VisualState.cxx
-
-LIB_MOC = SalomeApp_Application.h \
-         SalomeApp_DataModel.h \
-         SalomeApp_Module.h \
-         SalomeApp_Study.h \
-         SalomeApp_StudyPropertiesDlg.h \
-         SalomeApp_ListView.h \
-         SalomeApp_CheckFileDlg.h
-
-LIB_CLIENT_IDL = SALOMEDS.idl \
-                SALOME_Exception.idl \
-                SALOME_GenericObj.idl
-
-RESOURCES_FILES = SalomeApp.ini \
-                 SalomeApp.xml
-
-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 $(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSalomeDSClient $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI
-
-@CONCLUDE@
-
-
-
-
-
index 5e73de8a68d0e045911a1063dcb3b84bd7447f67..802d7d7b0fd5ea10fc7d4ff3161750f9ff73592f 100644 (file)
@@ -30,6 +30,7 @@
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_EventFilter.h"
 #include "SalomeApp_VisualState.h"
+#include "SalomeApp_ExitDlg.h"
 
 #include "SalomeApp_StudyPropertiesDlg.h"
 
@@ -43,6 +44,7 @@
 
 #include <SUIT_Tools.h>
 #include <SUIT_Session.h>
+#include <SUIT_MsgDlg.h>
 
 #include <QtxMRUAction.h>
 
@@ -61,7 +63,6 @@
 #include <SALOME_ModuleCatalog_impl.hxx>
 #include <SALOME_LifeCycleCORBA.hxx>
 
-#include <qmap.h>
 #include <qaction.h>
 #include <qcombobox.h>
 #include <qlistbox.h>
@@ -69,6 +70,7 @@
 #include <qcheckbox.h>
 #include <qpushbutton.h>
 #include <qlabel.h>
+#include <qmessagebox.h>
 
 #include "SALOMEDSClient_ClientFactory.hxx"
 #include "SALOMEDSClient_IParameters.hxx"
 
 #include <SALOMEDSClient_ClientFactory.hxx>
 
+#include <vector>
+/*!Internal class that updates object browser item properties */
+class SalomeApp_Updater : public OB_Updater
+{
+public:
+  SalomeApp_Updater() : OB_Updater(){};
+  virtual ~SalomeApp_Updater(){};
+  virtual void update( SUIT_DataObject* theObj, OB_ListItem* theItem );
+};
+
+void SalomeApp_Updater::update( SUIT_DataObject* theObj, OB_ListItem* theItem )
+{
+  if( !theObj || !theItem )
+    return;
+
+  SalomeApp_DataObject* SAObj = dynamic_cast<SalomeApp_DataObject*>( theObj );
+  if( !SAObj )
+    return;
+  
+  _PTR(SObject) SObj = SAObj->object();
+  if( !SObj )
+    return;
+  _PTR( GenericAttribute ) anAttr;
+
+  // Selectable
+  if ( SObj->FindAttribute( anAttr, "AttributeSelectable" ) )
+  {
+    _PTR(AttributeSelectable) aAttrSel = anAttr;
+    theItem->setSelectable( aAttrSel->IsSelectable() );
+  }
+  // Expandable
+  if ( SObj->FindAttribute(anAttr, "AttributeExpandable") ) 
+  {
+    _PTR(AttributeExpandable) aAttrExpand = anAttr;
+    theItem->setExpandable( aAttrExpand->IsExpandable() );
+  }
+  // Opened
+  //this attribute is not supported in the version of SALOME 3.x
+  //if ( SObj->FindAttribute(anAttr, "AttributeOpened") ) 
+  //{
+  //  _PTR(AttributeOpened) aAttrOpen = anAttr;
+  //  theItem->setOpen( aAttrOpen->IsOpened() );
+  //}
+}
+
 /*!Create new instance of SalomeApp_Application.*/
 extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication()
 {
@@ -91,6 +138,8 @@ extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication()
 SalomeApp_Application::SalomeApp_Application()
 : LightApp_Application()
 {
+  connect( desktop(), SIGNAL( message( const QString& ) ), 
+          this,      SLOT( onDesktopMessage( const QString& ) ) );
 }
 
 /*!Destructor.
@@ -108,6 +157,66 @@ void SalomeApp_Application::start()
   LightApp_Application::start();
 
   SalomeApp_EventFilter::Init();
+
+  static bool isFirst = true;
+  if ( isFirst ) {
+    isFirst = false;
+
+    QString hdffile;
+    QStringList pyfiles;
+
+    for (int i = 1; i < qApp->argc(); i++) {
+      QRegExp rxs ("--study-hdf=(.+)");
+      if ( rxs.search( QString(qApp->argv()[i]) ) >= 0 && rxs.capturedTexts().count() > 1 ) {
+       QString file = rxs.capturedTexts()[1];
+        QFileInfo fi ( file );
+        QString extension = fi.extension( false ).lower();
+        if ( extension == "hdf" && fi.exists() )
+          hdffile = fi.absFilePath();
+      }
+      else {
+        QRegExp rxp ("--pyscript=(.+)");
+        if ( rxp.search( QString(qApp->argv()[i]) ) >= 0 && rxp.capturedTexts().count() > 1 ) {
+          QStringList files = QStringList::split(",",rxp.capturedTexts()[1],false);
+          pyfiles += files;
+        }
+      }
+    }
+
+    if ( !hdffile.isEmpty() )       // open hdf file given as parameter
+      onOpenDoc( hdffile );
+    else if ( pyfiles.count() > 0 ) // create new study
+      onNewDoc();
+
+    // import/execute python scripts
+    if ( pyfiles.count() > 0 && activeStudy() ) {
+      SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+      if ( appStudy ) {
+       _PTR(Study) aStudy = appStudy->studyDS();
+       if ( !aStudy->GetProperties()->IsLocked() ) {
+          for (uint j = 0; j < pyfiles.count(); j++ ) {
+            QFileInfo fi ( pyfiles[j] );
+           PythonConsole* pyConsole = pythonConsole();
+           if ( pyConsole ) {
+              QString extension = fi.extension( false ).lower();
+              if ( fi.exists() ) {
+                // execute python script
+                QString command = QString( "execfile(\"%1\")" ).arg( fi.absFilePath() );
+                pyConsole->exec( command );
+              }
+              else {
+                // import python module
+                QString command = QString( "import %1" ).arg( pyfiles[j] );
+               if ( extension == "py" )
+                 command = QString( "import %1" ).arg( fi.baseName( true ) );
+                pyConsole->exec( command );
+              }
+            }
+          }
+       }
+      }
+    }
+  }
 }
 
 /*!Create actions:*/
@@ -148,12 +257,22 @@ void SalomeApp_Application::createActions()
                tr( "MEN_DESK_REGISTRY_DISPLAY" ), tr( "PRP_DESK_REGISTRY_DISPLAY" ),
                /*SHIFT+Key_D*/0, desk, false, this, SLOT( onRegDisplay() ) );
 
+  //SRN: BugID IPAL9021, add an action "Load"
+  createAction( FileLoadId, tr( "TOT_DESK_FILE_LOAD" ),
+                resourceMgr()->loadPixmap( "STD", tr( "ICON_FILE_OPEN" ) ),
+               tr( "MEN_DESK_FILE_LOAD" ), tr( "PRP_DESK_FILE_LOAD" ),
+               CTRL+Key_L, desk, false, this, SLOT( onLoadDoc() ) );
+  //SRN: BugID IPAL9021: End
+
+
   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( FileLoadId,   fileMenu, 0 );  //SRN: BugID IPAL9021, add a menu item "Load"
+
   createMenu( DumpStudyId, fileMenu, 10, -1 );
   createMenu( separator(), fileMenu, -1, 15, -1 );
   createMenu( LoadScriptId, fileMenu, 10, -1 );
@@ -299,7 +418,11 @@ void SalomeApp_Application::onLoadDoc()
     return;
 
   name = studyname;
+#ifndef WNT
+  //this code replace marker of windows drive and path become invalid therefore 
+  // defines placed there
   name.replace( QRegExp(":"), "/" );
+#endif
 
   if( LightApp_Application::onLoadDoc( name ) )
   {
@@ -309,6 +432,23 @@ void SalomeApp_Application::onLoadDoc()
   }
 }
 
+/*!
+  \brief Close application.
+*/
+void SalomeApp_Application::onExit()
+{
+  bool killServers = false;
+  bool result = true;
+
+  if ( exitConfirmation() ) {
+    SalomeApp_ExitDlg dlg( desktop() );
+    result = dlg.exec() == QDialog::Accepted;
+    killServers = dlg.isServersShutdown();
+  }
+  
+  if ( result )
+    SUIT_Session::session()->closeSession( SUIT_Session::ASK, killServers );
+}
 
 /*!SLOT. Load document with \a aName.*/
 bool SalomeApp_Application::onLoadDoc( const QString& aName )
@@ -377,6 +517,29 @@ void SalomeApp_Application::onPaste()
     }
 }
 
+/*! Check if the study is locked */
+void SalomeApp_Application::onCloseDoc( bool ask )
+{
+  SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
+
+  if (study != NULL) {
+    _PTR(Study) stdDS = study->studyDS(); 
+    if(stdDS && stdDS->IsStudyLocked()) {
+      if ( SUIT_MessageBox::warn2( desktop(),
+                                  QObject::tr( "WRN_WARNING" ),
+                                  QObject::tr( "CLOSE_LOCKED_STUDY" ),
+                                  QObject::tr( "BUT_YES" ), 
+                                  QObject::tr( "BUT_NO" ),
+                                  SUIT_YES, 
+                                  SUIT_NO, 
+                                  SUIT_NO ) == SUIT_NO ) return;
+       
+    }
+  }
+
+  LightApp_Application::onCloseDoc( ask );
+}
+
 /*!Sets enable or disable some actions on selection changed.*/
 void SalomeApp_Application::onSelectionChanged()
 {
@@ -539,8 +702,27 @@ void SalomeApp_Application::onDumpStudy( )
   fd->setFilters( aFilters );
   fd->myPublishChk->setChecked( true );
   fd->mySaveGUIChk->setChecked( true );
-  fd->exec();
-  QString aFileName = fd->selectedFile();
+  QString aFileName;
+  while (1) {
+    fd->exec();
+    fd->raise();
+    aFileName = fd->selectedFile();
+    if (!aFileName.isEmpty()) {
+      if ( (aFileName.find('-', 0) == -1) && (aFileName.find('!', 0) == -1) && (aFileName.find('?', 0) == -1) &&
+          (aFileName.find('#', 0) == -1) && (aFileName.find('*', 0) == -1) && (aFileName.find('&', 0) == -1)) {
+       break;
+      }
+      else {
+      SUIT_MessageBox::warn1 ( desktop(),
+                              QObject::tr("WRN_WARNING"),
+                              tr("WRN_FILE_NAME_BAD"),
+                              QObject::tr("BUT_OK") );
+      }
+    }
+    else {
+      break;
+    }
+  }
   bool toPublish = fd->myPublishChk->isChecked();
   bool toSaveGUI = fd->mySaveGUIChk->isChecked();
   delete fd;
@@ -629,6 +811,7 @@ QWidget* SalomeApp_Application::createWindow( const int flag )
   if ( flag == WT_ObjectBrowser )
   {
     OB_Browser* ob = (OB_Browser*)wid;
+    ob->setUpdater( new SalomeApp_Updater() );
     connect( ob->listView(), SIGNAL( doubleClicked( QListViewItem* ) ), this, SLOT( onDblClick( QListViewItem* ) ) );
     bool autoSize = resMgr->booleanValue( "ObjectBrowser", "auto_size", false ),
          autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true );
@@ -705,6 +888,80 @@ void SalomeApp_Application::updateDesktopTitle() {
   desktop()->setCaption( aTitle );
 }
 
+/*!
+  \brief Show dialog box to propose possible user actions when study is closed.
+  \param docName study name
+  \return chosen action ID
+  \sa closeAction()
+*/
+int SalomeApp_Application::closeChoice( const QString& docName )
+{
+  SUIT_MsgDlg dlg( desktop(), tr( "APPCLOSE_CAPTION" ), tr ( "APPCLOSE_DESCRIPTION" ),
+                   QMessageBox::standardIcon( QMessageBox::Information ) );
+  dlg.addButton( tr ( "APPCLOSE_SAVE" ),   CloseSave );
+  dlg.addButton( tr ( "APPCLOSE_CLOSE" ),  CloseDiscard );
+  dlg.addButton( tr ( "APPCLOSE_UNLOAD" ), CloseUnload );
+
+  return dlg.exec();
+}
+
+/*!
+  \brief Process user actions selected from the dialog box when study is closed.
+  \param choice chosen action ID
+  \param closePermanently "forced study closing" flag
+  \return operation status
+  \sa closeChoice()
+*/
+bool SalomeApp_Application::closeAction( const int choice, bool& closePermanently )
+{
+  bool res = true;
+  switch( choice )
+  {
+  case CloseSave:
+    if ( activeStudy()->isSaved() )
+      onSaveDoc();
+    else if ( !onSaveAsDoc() )
+      res = false;
+    break;
+  case CloseDiscard:
+    break;
+  case CloseUnload:
+    closePermanently = false;
+    break;
+  case CloseCancel:
+  default:
+    res = false;
+  }
+  return res;
+}
+
+/*!
+  \brief Get module activation actions
+  \return map <action_id><action_name> where
+  - action_id is unique non-zero action identifier
+  - action_name is action title
+  \sa moduleActionSelected()
+*/
+QMap<int, QString> SalomeApp_Application::activateModuleActions() const
+{
+  QMap<int, QString> opmap = LightApp_Application::activateModuleActions();
+  opmap.insert( LoadStudyId,  tr( "ACTIVATE_MODULE_OP_LOAD" ) );
+  return opmap;
+}
+
+/*!
+  \brief Process module activation action.
+  \param id action identifier
+  \sa activateModuleActions()
+*/
+void SalomeApp_Application::moduleActionSelected( const int id )
+{
+  if ( id == LoadStudyId )
+    onLoadDoc();
+  else
+    LightApp_Application::moduleActionSelected( id );
+}
+
 /*!Gets CORBA::ORB_var*/
 CORBA::ORB_var SalomeApp_Application::orb()
 {
@@ -742,7 +999,10 @@ QString SalomeApp_Application::defaultEngineIOR()
   QString anIOR( "" );
   CORBA::Object_ptr anEngine = namingService()->Resolve( "/SalomeAppEngine" );
   if ( !CORBA::is_nil( anEngine ) )
-    anIOR = orb()->object_to_string( anEngine );
+  {
+    CORBA::String_var objStr = orb()->object_to_string( anEngine );
+    anIOR = QString( objStr.in() );
+  }
   return anIOR;
 }
 
@@ -834,7 +1094,8 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
   CAM_Module* currentModule = activeModule();
   if (currentModule && currentModule->moduleName() == aModuleTitle)
     return;
-  thePopup->insertItem( tr( "MEN_OPENWITH" ), this, SLOT( onOpenWith() ) );
+  if ( !aModuleTitle.isEmpty() )
+    thePopup->insertItem( tr( "MEN_OPENWITH" ).arg( aModuleTitle ), this, SLOT( onOpenWith() ) );
 }
 
 /*!Update obect browser:
@@ -1103,3 +1364,21 @@ void SalomeApp_Application::updateSavePointDataObjects( SalomeApp_Study* study )
     delete it.data();
 }
 
+/*! Check data object */
+bool SalomeApp_Application::checkDataObject(LightApp_DataObject* theObj)
+{
+  if (theObj)
+    return true;
+
+  return false;
+}
+
+/*! Process standard messages from desktop */
+void SalomeApp_Application::onDesktopMessage( const QString& message )
+{
+  // update object browser
+  if ( message.lower() == "updateobjectbrowser" || 
+       message.lower() == "updateobjbrowser" )
+    updateObjectBrowser();
+}
+
index fbe0a84639810962b722756486179b11dd77353e..373e13b1db17032a3726942eacc7acdda6b25806 100644 (file)
@@ -31,6 +31,8 @@
 #include "SalomeApp.h"
 #include <LightApp_Application.h>
 
+#include <qmap.h>
+
 #include <CORBA.h>
 
 #include <SALOMEconfig.h>
@@ -67,7 +69,11 @@ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application
 public:
   enum { MenuToolsId = 5 };
   enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId,
-         CatalogGenId, RegDisplayId, SaveGUIStateId, UserID };
+         CatalogGenId, RegDisplayId, SaveGUIStateId, FileLoadId, UserID };
+
+protected:
+  enum { CloseUnload = CloseDiscard + 1 };
+  enum { LoadStudyId = OpenStudyId  + 1 };
 
 public:
   SalomeApp_Application();
@@ -81,6 +87,8 @@ public:
 
   virtual void                        contextMenuPopup( const QString&, QPopupMenu*, QString& );
 
+  virtual bool                        checkDataObject(LightApp_DataObject* theObj);
+
   static CORBA::ORB_var               orb();
   static SALOMEDSClient_StudyManager* studyMgr();
   static SALOME_NamingService*        namingService();
@@ -94,13 +102,16 @@ public slots:
   virtual bool                        onOpenDoc( const QString& );
   virtual void                        onLoadDoc();
   virtual bool                        onLoadDoc( const QString& );
+  virtual void                        onExit();
   virtual void                        onCopy();
   virtual void                        onPaste();
   void                                onSaveGUIState();// called from VISU
+  virtual void                        onCloseDoc( bool ask = true);
 
 protected slots:
   void                                onStudySaved( SUIT_Study* );
   void                                onStudyOpened( SUIT_Study* );
+  void                                onDesktopMessage( const QString& );
 
 protected:
   virtual void                        createActions();
@@ -112,6 +123,12 @@ protected:
 
   virtual void                        createPreferences( LightApp_Preferences* );
   virtual void                        updateDesktopTitle();
+  
+  virtual bool                        closeAction( const int, bool& );
+  virtual int                         closeChoice( const QString& );
+
+  virtual QMap<int, QString>          activateModuleActions() const;
+  virtual void                        moduleActionSelected( const int );
 
 private slots:
   void                                onDeleteInvalidReferences();
@@ -127,6 +144,7 @@ private slots:
   void                                onCatalogGen();
   void                                onRegDisplay();
   void                                onOpenWith();
+
 };
 
 #ifdef WIN32
index d899ad63d39e932ac6062500e48df4ba74cb3db6..742a75e3567fa9370c4c82bb757d3224b58489ed 100644 (file)
@@ -38,8 +38,6 @@
 #include <SUIT_TreeSync.h>
 #include <SUIT_DataObjectIterator.h>
 
-#include "SALOMEDS_Tool.hxx"
-
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Exception)
 
@@ -64,7 +62,7 @@ public:
   void     children( const suitPtr&, QValueList<suitPtr>& ) const;
   suitPtr  parent( const suitPtr& ) const;
   bool     isCorrect( const kerPtr& ) const;
-  void     updateItem( const suitPtr& ) const;
+  void     updateItem( const kerPtr&, const suitPtr& ) const;
 
 private:
   _PTR( Study )     myStudy;
@@ -87,7 +85,14 @@ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const
 {
   kerPtr refObj;
   QString name = so->GetName().c_str();
-  bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) );
+  _PTR( GenericAttribute ) anAttr;
+  bool isDraw = true;
+  if ( so->FindAttribute(anAttr, "AttributeDrawable") ) 
+  {
+    _PTR(AttributeDrawable) aAttrDraw = anAttr;
+    isDraw = aAttrDraw->IsDrawable(); 
+  }
+  bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) ) && isDraw;  
   return res;
 }
 
@@ -221,7 +226,7 @@ suitPtr SalomeApp_DataModelSync::parent( const suitPtr& p ) const
   Updates SUIT object
   \param p - SUIT object
 */
-void SalomeApp_DataModelSync::updateItem( const suitPtr& ) const
+void SalomeApp_DataModelSync::updateItem( const kerPtr& obj, const suitPtr& ) const
 {
 }
 
@@ -333,7 +338,7 @@ SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sob
 {
   if( !study || !study->root() || !sobj )
     return 0;
-
+    
   DataObjectList ch; study->root()->children( ch );
   DataObjectList::const_iterator anIt = ch.begin(), aLast = ch.end();
   SUIT_DataObject* suitObj = 0;
index d3a4b5c9dd5129326be90c672953df9bfa3cb3f5..dd9ff896078cce00674d647eb20eadf4a3ef6c41 100644 (file)
@@ -134,7 +134,9 @@ QString SalomeApp_DataObject::text( const int id ) const
 #else
     if ( componentObject() != (SUIT_DataObject*)this )
 #endif
-      txt = value( referencedObject() );
+      txt = value( object() );
+      if ( txt.isEmpty() )
+       txt = value( referencedObject() );
     break;
   case CT_Entry:
     txt = entry( object() );
@@ -186,6 +188,17 @@ QColor SalomeApp_DataObject::color( const ColorRole cr ) const
        else
          clr = QColor( 200, 200, 200 );
       }
+    else if ( myObject )
+    {
+      _PTR(GenericAttribute) anAttr;
+      if( myObject->FindAttribute ( anAttr, "AttributeTextHighlightColor") )
+      {
+        _PTR(AttributeTextHighlightColor) aHighColAttr = anAttr;
+       clr = QColor( (int)(aHighColAttr->TextHighlightColor().R), 
+                     (int)(aHighColAttr->TextHighlightColor().G), 
+                     (int)(aHighColAttr->TextHighlightColor().B));
+      }
+    }
     break;
   case HighlightedText:
     if ( isReference() )
diff --git a/src/SalomeApp/SalomeApp_Displayer.cxx b/src/SalomeApp/SalomeApp_Displayer.cxx
deleted file mode 100644 (file)
index 55ac92b..0000000
+++ /dev/null
@@ -1,210 +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/ or email : webmaster.salome@opencascade.com
-//
-
-#include "SalomeApp_Displayer.h"
-#include "SalomeApp_Application.h"
-
-#include <SALOME_InteractiveObject.hxx>
-
-#include <SUIT_Session.h>
-#include <SUIT_Desktop.h>
-#include <SUIT_ViewManager.h>
-#include <SUIT_ViewModel.h>
-#include <SUIT_ViewWindow.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();
-  if ( vf )
-  {
-    SALOME_Prs* prs = buildPresentation( entry, vf );
-
-    if ( prs )
-    {
-      vf->BeforeDisplay( this );
-      vf->Display( prs );
-      vf->AfterDisplay( this );
-
-      if ( updateViewer )
-        vf->Repaint();
-
-      delete prs;  // delete presentation because displayer is its owner
-    }
-  }
-}
-
-/*!
-  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)
-  SUIT_Session* ses = SUIT_Session::session();
-  SUIT_Application* app = ses->activeApplication();
-  if ( app )
-  {
-    SUIT_Desktop* desk = app->desktop();
-    QPtrList<SUIT_ViewWindow> wnds = desk->windows();
-    SUIT_ViewWindow* wnd;
-    for ( wnd = wnds.first(); wnd; wnd = wnds.next() )
-    {
-      SUIT_ViewManager* vman = wnd->getViewManager();
-      if( !vman )
-        continue;
-
-      SUIT_ViewModel* vmodel = vman->getViewModel();
-      if( !vmodel )
-       continue;
-       
-      SALOME_View* view = dynamic_cast<SALOME_View*>(vmodel);
-      if( view && ( IsDisplayed( entry, view ) || view == GetActiveView() ) )
-      {
-       Erase( entry, true, false, view );
-       Display( entry, updateViewer, view );
-      }
-    }
-  }
-}
-
-/*!
-  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 )
-{
-  SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
-
-  if ( vf ) {
-    SALOME_Prs* prs = vf->CreatePrs( entry.latin1() );
-    if ( prs ) {
-      vf->Erase( prs, forced );
-      if ( updateViewer )
-       vf->Repaint();
-      delete prs;  // delete presentation because displayer is its owner
-    }
-  }
-}
-
-/*!
-  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();
-
-  if ( vf ) {
-    vf->EraseAll( forced );
-    if ( updateViewer )
-      vf->Repaint();
-  }
-}
-
-/*!
-  \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();
-  if( vf )
-  {
-    Handle( SALOME_InteractiveObject ) temp = new SALOME_InteractiveObject();
-    temp->setEntry( entry.latin1() );
-    return vf->isVisible( temp );
-  }
-  else
-    return false;
-}
-
-/*!
-  Updates active view
-*/
-void SalomeApp_Displayer::UpdateViewer() const
-{
-  SALOME_View* vf = GetActiveView();
-  if ( vf )
-    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;
-
-  SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
-
-  if ( vf )
-    prs = vf->CreatePrs( entry.latin1() );
-
-  return prs;
-}
-
-/*!
-  \return active view
-*/
-SALOME_View* SalomeApp_Displayer::GetActiveView()
-{
-  SUIT_Session* session = SUIT_Session::session();
-  if (  SUIT_Application* app = session->activeApplication() ) {
-    if ( SalomeApp_Application* sApp = dynamic_cast<SalomeApp_Application*>( app ) ) {
-      if( SUIT_ViewManager* vman = sApp->activeViewManager() ) {
-       if ( SUIT_ViewModel* vmod = vman->getViewModel() )
-         return dynamic_cast<SALOME_View*>( vmod );
-      }
-    }
-  }
-  return 0;
-}
diff --git a/src/SalomeApp/SalomeApp_Displayer.h b/src/SalomeApp/SalomeApp_Displayer.h
deleted file mode 100644 (file)
index db53193..0000000
+++ /dev/null
@@ -1,46 +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/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef SALOMEAPP_DISPLAYER_HEADER
-#define SALOMEAPP_DISPLAYER_HEADER
-
-#include <SALOME_Prs.h>
-
-class QString;
-
-class SalomeApp_Displayer : public SALOME_Displayer
-{
-public:
-  SalomeApp_Displayer();
-  virtual ~SalomeApp_Displayer();
-
-  void Display( const QString&, const bool = true, SALOME_View* = 0 );
-  void Redisplay( const QString&, const bool = true );
-  void Erase( const QString&, const bool forced = false, const bool updateViewer = true, SALOME_View* = 0 );
-  void EraseAll( const bool forced = false, const bool updateViewer = true, SALOME_View* = 0 ) const;
-  bool IsDisplayed( const QString&, SALOME_View* = 0 ) const;
-  void UpdateViewer() const;
-
-  static SALOME_View*  GetActiveView();
-
-protected:
-  virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 );
-};
-
-#endif
index b22ab38d891f028ec1be56cac29ddda38f89e092..dc6436411dcc5c7b6817b8aec22e42de9636a4e2 100644 (file)
 
 #include <qstring.h>
 
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+  #include <Standard_ErrorHandler.hxx>
+  #include <Standard_Failure.hxx>
+#else
+  #include "CASCatch.hxx"
+#endif
+
 /*!Constructor. Initialize by \a floatSignal.*/
 SalomeApp_ExceptionHandler::SalomeApp_ExceptionHandler( const bool floatSignal )
 : SUIT_ExceptionHandler()
 {
-  OSD::SetSignal( floatSignal );
+  // JFA 2006-09-28: PAL10867: suppress signal catching,
+  // if environment variable DISABLE_SIGNALS_CATCHING is set to 1.
+  // Commonly this is used with "noexcepthandler" option.
+  char* envNoCatchSignals = getenv("NOT_INTERCEPT_SIGNALS");
+  if (!envNoCatchSignals || !atoi(envNoCatchSignals))
+  {
+    OSD::SetSignal( floatSignal );
+  }
 }
 
 /*!Try to call SUIT_ExceptionHandler::internalHandle(o, e), catch if failure.*/
 bool SalomeApp_ExceptionHandler::handleSignals( QObject* o, QEvent* e )
 {
-  CASCatch_TRY {   
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+  try {
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     SUIT_ExceptionHandler::internalHandle( o, e );
   }
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+  catch(Standard_Failure) {
+#else
   CASCatch_CATCH(Standard_Failure) {
-    Handle(Standard_Failure) aFail = Standard_Failure::Caught();          
+#endif
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     throw Standard_Failure( aFail->GetMessageString() );
   }
-  
+
   return true;
 }
 
@@ -75,13 +98,14 @@ bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e )
 }
 
 /*!Create new SUIT_ExceptionHandler*/
+
 extern "C" SALOMEAPP_EXPORT SUIT_ExceptionHandler* getExceptionHandler()
 {
   // 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_
+#if defined(_DEBUG_) | defined(_DEBUG) //the Last for WNT default settings
   raiseFPE = true;
   char* envDisableFPE = getenv("DISABLE_FPE");
   if (envDisableFPE && atoi(envDisableFPE))
@@ -89,5 +113,6 @@ extern "C" SALOMEAPP_EXPORT SUIT_ExceptionHandler* getExceptionHandler()
 #else
   raiseFPE = false;
 #endif
+
   return new SalomeApp_ExceptionHandler( raiseFPE );
 }
diff --git a/src/SalomeApp/SalomeApp_ExitDlg.cxx b/src/SalomeApp/SalomeApp_ExitDlg.cxx
new file mode 100644 (file)
index 0000000..f01d581
--- /dev/null
@@ -0,0 +1,104 @@
+// 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_ExitDlg.cxx
+// Author:    Margarita KARPUNINA, Open CASCADE S.A.S.
+//
+
+#include "SalomeApp_ExitDlg.h"
+
+#include <qlabel.h> 
+#include <qlayout.h> 
+#include <qpushbutton.h>
+#include <qmessagebox.h>
+#include <qcheckbox.h>
+
+/*!
+ * \brief creates a Exit dialog box
+ * \param parent a parent widget
+ * \param modal bool argument, if true the dialog box is a modal dialog box
+ * \param f style flags
+ */
+SalomeApp_ExitDlg::SalomeApp_ExitDlg( QWidget* parent )
+  : QDialog( parent, "SalomeApp_ExitDlg", true )
+{
+  setSizeGripEnabled( true );
+  setCaption( tr( "INF_DESK_EXIT" ) );
+
+  QVBoxLayout* m_vbL = new QVBoxLayout( this );
+  m_vbL->setMargin( 11 );
+  m_vbL->setSpacing( 6 );
+
+  QLabel* m_lIcon = new QLabel( this, "m_lDescr" );
+  QPixmap pm = QMessageBox::standardIcon( QMessageBox::Question );
+  m_lIcon->setPixmap( pm );
+  m_lIcon->setScaledContents( false );
+  m_lIcon->setAlignment( Qt::AlignCenter );
+
+  QLabel* m_lDescr = new QLabel (this, "m_lDescr");
+  m_lDescr->setText ( tr ("QUE_DESK_EXIT") );
+  m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
+
+  myServersShutdown = new QCheckBox( tr("SHUTDOWN_SERVERS"), this );
+  myServersShutdown->setChecked(true);
+  
+  QVBoxLayout* m_vl1 = new QVBoxLayout();
+  m_vl1->setMargin( 10 ); m_vl1->setSpacing( 16 );
+  m_vl1->addWidget( m_lDescr );
+  m_vl1->addWidget( myServersShutdown );
+
+  QHBoxLayout* m_hl1 = new QHBoxLayout();
+  m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 );
+  m_hl1->addWidget( m_lIcon );
+  m_hl1->addStretch(); 
+  m_hl1->addLayout( m_vl1 );
+  m_hl1->addStretch();
+
+  QPushButton* m_pbOk     = new QPushButton( tr( "BUT_OK" ),     this );
+  QPushButton* m_pbCancel = new QPushButton( tr( "BUT_CANCEL" ), this );
+
+  QGridLayout* m_hl2 = new QGridLayout();
+  m_hl2->setMargin( 0 ); m_hl2->setSpacing( 6 );
+  m_hl2->addWidget( m_pbOk, 0, 0 );
+  m_hl2->setColStretch( 1, 5 );
+  m_hl2->addWidget( m_pbCancel, 0, 2 );
+  
+  m_vbL->addStretch();
+  m_vbL->addLayout( m_hl1 );
+  m_vbL->addStretch();
+  m_vbL->addLayout( m_hl2 );
+
+  connect( m_pbOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );
+  connect( m_pbCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+/*!
+ * \brief Destructor
+ */
+SalomeApp_ExitDlg::~SalomeApp_ExitDlg()
+{
+}
+
+/*!
+ * \brief get the check box status
+ */
+bool SalomeApp_ExitDlg::isServersShutdown()
+{
+  return myServersShutdown->isChecked();
+}
diff --git a/src/SalomeApp/SalomeApp_ExitDlg.h b/src/SalomeApp/SalomeApp_ExitDlg.h
new file mode 100644 (file)
index 0000000..e046291
--- /dev/null
@@ -0,0 +1,48 @@
+// 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_ExitDlg.h
+// Author:    Margarita KARPUNINA, Open CASCADE S.A.S.
+//
+
+#ifndef SALOMEAPP_EXITDLG_H
+#define SALOMEAPP_EXITDLG_H
+
+#include <qdialog.h> 
+
+class QCheckBox;
+
+/*!\class SalomeApp_ExitDlg
+ * \brief Describes a dialog box shown on question about quit application
+ */
+class SalomeApp_ExitDlg: public QDialog
+{
+  Q_OBJECT
+
+public:
+  SalomeApp_ExitDlg( QWidget* ) ;
+  ~SalomeApp_ExitDlg();
+
+  bool isServersShutdown();
+
+private:
+  QCheckBox* myServersShutdown;
+};
+
+#endif // SALOMEAPP_EXITDLG_H
+
index 07f4c0620378de6e4c20dae9a475731b86b7e52a..87ca5aad736d87de35edcc4e8a1a15278c8c3a4f 100644 (file)
@@ -59,10 +59,10 @@ public:
 
   virtual void                        storeVisualParameters(int savePoint);
   virtual void                        restoreVisualParameters(int savePoint);
+  virtual LightApp_Selection*         createSelection() const;
 
 protected:
   virtual CAM_DataModel*              createDataModel();
-  virtual LightApp_Selection*         createSelection() const;
   virtual void                        extractContainers( const SALOME_ListIO&, SALOME_ListIO& ) const;
 };
 
index 6cbc7b34df9b6319d9a3d9d51fc7aaae9ec18e85..aeee814b63b4515a6ba051db89f3559a2dcd25bc 100644 (file)
@@ -36,7 +36,7 @@
 #include <qdict.h>
 
 #include "utilities.h"
-#include <iostream.h>
+#include <iostream>
 #include <string>
 #include <vector>
 
@@ -204,7 +204,7 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName )
 */
 bool SalomeApp_Study::saveDocumentAs( const QString& theFileName )
 {
-  bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
+  bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", false );
   if ( store )
     SalomeApp_VisualState( (SalomeApp_Application*)application() ).storeState();
   
@@ -288,7 +288,9 @@ void SalomeApp_Study::closeDocument(bool permanently)
   _PTR(Study) studyPtr = studyDS();
   if ( studyPtr )
   {
-    if(permanently) SalomeApp_Application::studyMgr()->Close( studyPtr );
+    if(permanently) {
+      SalomeApp_Application::studyMgr()->Close( studyPtr );
+    }
     SALOMEDSClient_Study* aStudy = 0;
     setStudyDS( _PTR(Study)(aStudy) );
   }
@@ -306,6 +308,16 @@ bool SalomeApp_Study::isModified() const
   return isAnyChanged; 
 }
 
+/*!
+  Set study modified to \a on.
+ */
+void SalomeApp_Study::Modified()
+{
+  if(_PTR(Study) aStudy = studyDS())
+    aStudy->Modified();
+  LightApp_Study::Modified();
+}
+
 /*!
   \return if data model is saved
 */
@@ -725,6 +737,15 @@ std::string SalomeApp_Study::getVisualComponentName()
   return "Interface Applicative";
 }
 
+/*!
+ * \brief Restores the study state
+ */
+void SalomeApp_Study::restoreState(int savePoint)
+{
+  SalomeApp_VisualState((SalomeApp_Application*)application()).restoreState(savePoint);
+}
+
+
 /*!
   Slot: called on change of a root of a data model. Redefined from CAM_Study
 */
index ef5c127fd11caa68c3007ae77ed3723351d8ab8f..516df81d844f0afa9cb0c8714cfe05b3d04e56af 100644 (file)
@@ -51,6 +51,7 @@ public:
 
   virtual bool        isSaved()  const;
   virtual bool        isModified() const;
+  virtual void        Modified();
 
   virtual void        addComponent   ( const CAM_DataModel* dm);
 
@@ -73,6 +74,8 @@ public:
   void                setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint);
   virtual std::string getVisualComponentName();
 
+  virtual void        restoreState(int savePoint);
+
 protected:
   virtual void        saveModuleData ( QString theModuleName, QStringList theListOfFiles );
   virtual void        openModuleData ( QString theModuleName, QStringList& theListOfFiles );
index dab9a907e109894e2ed77943c6a53a3d064eb196..08afaeddaeb44a03b30b96fb8fbc4daacb033738 100644 (file)
@@ -217,13 +217,13 @@ void SalomeApp_VisualState::restoreState(int savePoint)
 
     //Resize the views, set their captions and apply visual parameters.
     QPtrVector<SUIT_ViewWindow> views = vm->getViews();  
-    for (int i = 0, j = 0; i<viewCount; i++, j++) {
+    for (int i = 0, j = 0; i<viewCount; i++, j+=2) {
       viewWin = views[i];
       if ( !viewWin ) 
        continue;
 
       // wait untill the window is really shown.  This step fixes MANY bugs..
-      while ( !viewWin->isVisible() )
+      while ( !vm->isVisible() )
        qApp->processEvents();
       
       viewWin->setCaption(ip->getValue(viewerEntry, j).c_str());
diff --git a/src/SalomeApp/Test/Makefile.am b/src/SalomeApp/Test/Makefile.am
new file mode 100644 (file)
index 0000000..3971f30
--- /dev/null
@@ -0,0 +1,47 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Sergey RUIN
+#  Module : SALOME
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES= libSalomeAppTest.la
+
+salomeinclude_HEADERS= SalomeAppTest.hxx
+
+dist_libSalomeAppTest_la_SOURCES= SalomeAppTest.cxx
+
+libSalomeAppTest_la_CXXFLAGS= @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS)
+libSalomeAppTest_la_LIBADD= @CPPUNIT_LIBS@
+
+bin_PROGRAMS= TestSalomeApp
+
+TestSalomeApp_SOURCES= TestSalomeApp.cxx
+
+TestSalomeApp_CXXFLAGS= $(libSalomeAppTest_la_CXXFLAGS)
+TestSalomeApp_LDADD= $(libSalomeAppTest_la_LIBADD) libSalomeAppTest.la
+
+dist_salomescript_PYTHON = TestSalomeApp.py
+UNIT_TEST_PROG = TestSalomeApp
diff --git a/src/SalomeApp/Test/Makefile.in b/src/SalomeApp/Test/Makefile.in
deleted file mode 100644 (file)
index 4754fe7..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#  SALOMELocalTrace : log on local machine
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Sergey RUIN
-#  Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# header files  
-EXPORT_HEADERS= SalomeAppTest.hxx
-
-EXPORT_PYSCRIPTS = TestSalomeApp.py
-
-# Libraries targets
-
-LIB = libSalomeAppTest.la 
-LIB_SRC = SalomeAppTest.cxx
-LIB_CLIENT_IDL = 
-
-# Executables targets
-
-BIN = TestSalomeApp
-BIN_SRC = 
-BIN_CLIENT_IDL =
-
-
-CXXFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS)
-CPPFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS)
-
-LIBS= @LIBS@ @CPPUNIT_LIBS@
-
-LDFLAGS+= 
-
-LDFLAGSFORBIN+= $(LDFLAGS) -lSalomeAppTest     
-
-UNIT_TEST_PROG = TestSalomeApp
-
-@CONCLUDE@
index 305c929d71bc1fff2b53ba95b9c89551554866b0..d89841c1433af01e35c67907e916676d6effa886 100644 (file)
@@ -5,18 +5,18 @@ language = en
 modules = GEOM,SMESH,VISU
 
 [resources]
-SUIT = $(SUITRoot)/resources
-STD = $(SUITRoot)/resources
-Plot2d = $(SUITRoot)/resources
-GLViewer = $(SUITRoot)/resources
-OCCViewer = $(SUITRoot)/resources
-VTKViewer = $(SUITRoot)/resources
-SVTK = $(SUITRoot)/resources
-LightApp = $(SUITRoot)/resources
-SalomeApp = $(SUITRoot)/resources
-GEOM = $(GEOM_ROOT_DIR)/share/salome/resources
-SMESH = $(SMESH_ROOT_DIR)/share/salome/resources
-VISU = $(VISU_ROOT_DIR)/share/salome/resources
+SUIT = $(GUI_ROOT_DIR)/share/salome/resources/gui
+STD = $(GUI_ROOT_DIR)/share/salome/resources/gui
+Plot2d = $(GUI_ROOT_DIR)/share/salome/resources/gui
+GLViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+OCCViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+VTKViewer = $(GUI_ROOT_DIR)/share/salome/resources/gui
+SVTK = $(GUI_ROOT_DIR)/share/salome/resources/gui
+LightApp = $(GUI_ROOT_DIR)/share/salome/resources/gui
+SalomeApp = $(GUI_ROOT_DIR)/share/salome/resources/gui
+GEOM = $(GEOM_ROOT_DIR)/share/salome/resources/geom
+SMESH = $(SMESH_ROOT_DIR)/share/salome/resources/smesh
+VISU = $(VISU_ROOT_DIR)/share/salome/resources/visu
   
 [GEOM]
 name = Geometry
index f6cfb540cd2af93764ba871147d8921e3e5b84ad..b4da14ade74a1c052b62cee9bb06bfbdbdd3f0bc 100644 (file)
@@ -10,6 +10,7 @@
     <parameter name="xterm"      value="no"/>
     <parameter name="portkill"   value="no"/>
     <parameter name="killall"    value="no"/>
+    <parameter name="pinter"     value="no"/>
     <parameter name="noexcepthandler"  value="no"/>
     <parameter name="modules"    value="GEOM,SMESH,VISU,SUPERV,MED,COMPONENT,PYCALCULATOR"/>
     <parameter name="pyModules"  value=""/>
   </section>
   <section name="splash" >
     <!-- Splash screen settings -->
-    <parameter name="image"           value="${SUITRoot}/resources/icon_about.png" />
+    <parameter name="image"           value="${GUI_ROOT_DIR}/share/salome/resources/gui/icon_about.png" />
     <parameter name="info"            value="%V" />
-    <parameter name="text_colors"     value="#543AA9|#FFFFFF" />
-    <parameter name="progress_colors" value="#0A4E5F|#B2EFED|1" />
+    <parameter name="text_colors"     value="#FFFFFF" />
+    <parameter name="progress_colors" value="#c33232|#d1d1d1|0" />
+    <parameter name="margin"          value="26" />
   </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="SPlot2d"      value="${SUITRoot}/resources"/>
-    <parameter name="GLViewer"     value="${SUITRoot}/resources"/>
-    <parameter name="OCCViewer"    value="${SUITRoot}/resources"/>
-    <parameter name="VTKViewer"    value="${SUITRoot}/resources"/>
-    <parameter name="SVTK"         value="${SUITRoot}/resources"/>
-    <parameter name="LightApp"     value="${SUITRoot}/resources"/>
-    <parameter name="SalomeApp"    value="${SUITRoot}/resources"/>
-    <parameter name="OB"           value="${SUITRoot}/resources"/>
-    <parameter name="CAM"          value="${SUITRoot}/resources"/>
-    <parameter name="SUPERVGraph"  value="${SUITRoot}/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="SUIT"         value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="STD"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="Plot2d"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SPlot2d"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="GLViewer"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="OCCViewer"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="VTKViewer"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SVTK"         value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="LightApp"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SalomeApp"    value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="OB"           value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="CAM"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SUPERVGraph"  value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="QxGraph"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="ToolsGUI"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <!-- NETGENPlugin and GHS3DPlugin -->
+    <!-- Here the environment variables are used in upper case, -->
+    <!-- In SMESH/resources/SalomeApp.xml case-sensitive notation is used. -->
+    <!-- As a result, both variants are acceptable. -->
+    <parameter name="NETGENPlugin" value="${NETGENPLUGIN_ROOT_DIR}/share/salome/resources/netgenplugin"/>
+    <parameter name="GHS3DPlugin"  value="${GHS3DPLUGIN_ROOT_DIR}/share/salome/resources/ghs3dplugin"/>
+    <parameter name="BLSURFPlugin" value="${BLSURFPLUGIN_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="HexoticPLUGIN" value="${HexoticPLUGIN_ROOT_DIR}/share/salome/resources"/>
   </section>
   <section name="SMESH">
     <!-- Default SMESH module plugins -->
-    <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
+    <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin,BLSURFPlugin,HexoticPLUGIN"/>
   </section>
   <section name="desktop" >
     <!-- Default GUI desktop state, position, size -->
     <parameter name="Title"      value="63, 213, 255"  />
     <parameter name="NodeBody"   value="255, 249, 147" />
   </section>
+  <section name="QxGraph" >
+    <!-- QxGraph 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="FileDlg" >
     <!-- "Open/Save File" dialog box preferences-->
     <parameter name="QuickDirList" value="${DATA_DIR}" />
   </section>
   <section name="ExternalBrowser" >
     <!-- External HELP browser settings -->
+    <parameter value="D:\Program Files\Internet Explorer\iexplore.exe" name="winapplication" />
     <parameter value="/usr/bin/mozilla" name="application" />
   </section>
 </document>
index ae12d309abdbb3727fc8e4850f5f5744c353ac71..d6a6d6d90d3d8d6fa40d414aa2b4d6a329cdd75c 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-// File:      CATHAREGUI_msg_en.po
+// File:      SalomeApp_msg_en.po
 // Created:   10/25/2004 12:46:36 PM
 // Author:    Sergey LITONIN
-// Copyright (C) CEA 2004
 
 msgid ""
 msgstr ""
@@ -118,7 +117,7 @@ msgid "SalomeApp_Application::PREF_TAB_OBJBROWSER"
 msgstr "Object browser"
 
 msgid "SalomeApp_Application::MEN_OPENWITH"
-msgstr "Activate Module"
+msgstr "Activate %1 Module"
 
 msgid "SalomeApp_Application::MEN_DELETE_INVALID_REFERENCE"
 msgstr "Delete Invalid Reference"
@@ -222,6 +221,9 @@ msgstr "Publish in study"
 msgid "SalomeApp_Application::WRN_DUMP_STUDY_FAILED"
 msgstr "Dump study failed"
 
+msgid "SalomeApp_Application::WRN_FILE_NAME_BAD"
+msgstr "Please enter correct file name"
+
 msgid "SAVE_POINT_OBJECT_TOOLTIP"
 msgstr "Saved GUI state: %1"
 
@@ -234,6 +236,9 @@ msgstr "Persistent GUI states"
 msgid "SAVE_POINT_ROOT_NAME"
 msgstr "GUI states"
 
+msgid "CLOSE_LOCKED_STUDY"
+msgstr "Close locked study?"
+
 //=======================================================================================
 
 msgid "SalomeApp_Application::MEN_RESTORE_VS"
@@ -244,3 +249,24 @@ msgstr "Rename"
 
 msgid "SalomeApp_Application::MEN_DELETE_VS"
 msgstr "Delete"
+
+msgid "SalomeApp_Application::APPCLOSE_CAPTION"
+msgstr "Close study"
+
+msgid "SalomeApp_Application::APPCLOSE_DESCRIPTION"
+msgstr "Do you want to save or unload study before closing?"
+
+msgid "SalomeApp_Application::APPCLOSE_CLOSE"
+msgstr "&Close w/o saving"
+
+msgid "SalomeApp_Application::APPCLOSE_SAVE"
+msgstr "&Save && Close"
+
+msgid "SalomeApp_Application::APPCLOSE_UNLOAD"
+msgstr "&Unload"
+
+msgid "SalomeApp_ExitDlg::SHUTDOWN_SERVERS"
+msgstr "Shutdown standalone servers"
+
+msgid "SalomeApp_Application::ACTIVATE_MODULE_OP_LOAD"
+msgstr "&Load..."
index a49f2b7d9d798ce3f0daa2956fce5b0d5062bc03..2eca8fe321d61ee19a12c18b4dcbbd5ec322a603 100755 (executable)
 #include <qvbox.h> 
 #include <qguardedptr.h> 
 
-#ifdef WNT
-#include <SALOME_WNT.hxx>
-#else
-#define SALOME_WNT_EXPORT
-#endif
+#include <SALOME_Session.hxx>
 
 /*!
   \class InquireEvent
   Contains QCustomEvents for posting to InquireServersQThread
 */
-class SALOME_WNT_EXPORT InquireEvent : public QCustomEvent
+class SESSION_EXPORT InquireEvent : public QCustomEvent
 {
 public:
 
@@ -51,7 +47,7 @@ public:
 
 class InquireServersGUI;
 
-class SALOME_WNT_EXPORT InquireServersQThread : public QThread
+class SESSION_EXPORT InquireServersQThread : public QThread
 {
 public:
   InquireServersQThread( InquireServersGUI* r );
@@ -96,7 +92,7 @@ private:
 class QLabel;
 class QFrame;
 class QProgressBar;
-class SALOME_WNT_EXPORT InquireServersGUI : public QVBox
+class SESSION_EXPORT InquireServersGUI : public QVBox
 {
     Q_OBJECT
 
diff --git a/src/Session/Makefile.am b/src/Session/Makefile.am
new file mode 100755 (executable)
index 0000000..8d76b4f
--- /dev/null
@@ -0,0 +1,77 @@
+#  SALOME Session : implementation of Session.idl
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libSalomeSession.la
+
+salomeinclude_HEADERS= \
+       Session_Session_i.hxx \
+       Session_ServerLauncher.hxx \
+       Session_ServerThread.hxx \
+       Session_ServerCheck.hxx \
+       SalomeApp_Engine_i.hxx
+
+# Libraries targets
+
+dist_libSalomeSession_la_SOURCES= \
+       Session_Session_i.cxx \
+       Session_ServerThread.cxx \
+       Session_ServerLauncher.cxx \
+       Session_ServerCheck.cxx \
+       SalomeApp_Engine_i.cxx
+
+libSalomeSession_la_CPPFLAGS= $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) \
+       $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) @KERNEL_CXXFLAGS@ $(CAS_CPPFLAGS) \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \
+       -I$(top_builddir)/salome_adm/unix -I$(top_builddir)/idl \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../Event \
+       @LIBXML_INCLUDES@
+
+libSalomeSession_la_LDFLAGS= $(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS \
+       -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lSalomeCatalog \
+       -lSalomeDSClient $(CAS_KERNEL) -lwith_loggerTraceCollector \
+       ../SUIT/libsuit.la ../Event/libEvent.la ../../idl/libSalomeIDLGUI.la
+
+# Executable
+bin_PROGRAMS= SALOME_Session_Server
+
+dist_SALOME_Session_Server_SOURCES= SALOME_Session_Server.cxx
+
+SALOME_Session_Server_CPPFLAGS= $(libSalomeSession_la_CPPFLAGS)
+SALOME_Session_Server_LDADD= $(libSalomeSession_la_LDFLAGS) $(OMNIORB_LIBS) \
+       $(HDF5_LIBS) -lSalomeContainer -lSalomeResourcesManager -lTOOLSDS \
+       -lSalomeHDFPersist -lSalomeDSImpl -lSalomeGenericObj -lRegistry \
+       -lSalomeNotification -lSALOMEBasics -lSalomeLauncher ../Qtx/libqtx.la \
+       $(top_builddir)/idl/libSalomeIDLGUI.la \
+       libSalomeSession.la
+
+lib-hook:
+       ln -sf $(top_builddir)/bin/salome/styles styles
+
+# ../SalomeApp/libSalomeApp.la
diff --git a/src/Session/Makefile.in b/src/Session/Makefile.in
deleted file mode 100755 (executable)
index 6379a13..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#  SALOME Session : implementation of Session.idl
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Paul RASCLE, EDF
-#  Module : SALOME
-#  $Header$
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_HEADERS= Session_Session_i.hxx \
-               Session_ServerLauncher.hxx \
-               Session_ServerThread.hxx \
-               Session_ServerCheck.hxx \
-               SalomeApp_Engine_i.hxx
-
-# Libraries targets
-LIB = libSalomeSession.la
-
-LIB_SRC=Session_Session_i.cxx \
-       Session_ServerThread.cxx \
-       Session_ServerLauncher.cxx \
-       Session_ServerCheck.cxx \
-       SalomeApp_Engine_i.cxx \
-
-LIB_MOC = 
-
-# Executables targets
-BIN = SALOME_Session_Server
-BIN_SRC = 
-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) $(KERNEL_CXXFLAGS) -I$(OCC_INCLUDES)
-CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS)
-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
-
-@CONCLUDE@
-
diff --git a/src/Session/SALOME_Session.hxx b/src/Session/SALOME_Session.hxx
new file mode 100755 (executable)
index 0000000..a52f389
--- /dev/null
@@ -0,0 +1,47 @@
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Session.hxx
+//  Author : Alexander A. BORODIN
+//  Module : GUI
+
+#ifndef _SALOME_Session_HXX_
+#define _SALOME_Session_HXX_
+
+#ifdef WNT
+ #if defined SESSION_EXPORTS
+  #if defined WIN32
+   #define SESSION_EXPORT __declspec( dllexport )
+  #else
+   #define SESSION_EXPORT
+  #endif
+ #else
+  #if defined WIN32
+   #define SESSION_EXPORT __declspec( dllimport )
+  #else
+   #define SESSION_EXPORT
+  #endif
+ #endif
+#else
+ #define SESSION_EXPORT
+#endif
+
+#endif
index 21ceec290f13fb492e95ea3f5d60521f462abc98..daa2dbb18e7e80014e75aeaac5c071a6afae4993 100755 (executable)
 #include "SALOME_NamingService.hxx"
 #include "SALOMETraceCollector.hxx"
 
+#include "SALOME_ModuleCatalog_impl.hxx"
+#include "OpUtil.hxx"
+#include "RegistryService.hxx"
+#include "ConnectionManager_i.hxx"
+
 #include <iostream>
 #ifndef WNT
 #include <unistd.h>
+#include <iostream.h>
+#include <string.h>
 #endif
 
 #include <qdir.h>
@@ -165,6 +172,7 @@ public:
   {
     if ( myExtAppName.isNull() || myExtAppVersion.isNull() ) {
       SALOME_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) );
+      resMgr.loadLanguage( "LightApp",  "en" );
       resMgr.loadLanguage( "SalomeApp", "en" );
 
       myExtAppName = QObject::tr( "APP_NAME" ).stripWhiteSpace();
@@ -189,28 +197,30 @@ protected:
 
   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;
+    if ( !myExtAppName.isEmpty() ) {
+      QRegExp exp( QString( "\\.%1rc\\.([a-zA-Z0-9.]+)$" ).arg( myExtAppName ) );
+      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;
+       if ( dev > 0 ) id+=dev-10000;
+       return id;
+      }
     }
 
     return -1;
@@ -246,6 +256,20 @@ public:
 
   virtual bool notify( QObject* receiver, QEvent* e )
   {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) < 0x060101
+    // Disable GUI user actions while python command is executed
+    if (SUIT_Session::IsPythonExecuted()) {
+      // Disable mouse and keyboard events
+      QEvent::Type aType = e->type();
+      if (aType == QEvent::MouseButtonPress || aType == QEvent::MouseButtonRelease ||
+          aType == QEvent::MouseButtonDblClick || aType == QEvent::MouseMove ||
+          aType == QEvent::Wheel || aType == QEvent::ContextMenu ||
+          aType == QEvent::KeyPress || aType == QEvent::KeyRelease ||
+          aType == QEvent::Accel || aType == QEvent::AccelOverride)
+        return false;
+    }
+#endif
+
     return myHandler ? myHandler->handle( receiver, e ) :
       QApplication::notify( receiver, e );
   }
@@ -286,6 +310,127 @@ bool isFound( const char* str, int argc, char** argv )
   return false;
 }
 
+void killOmniNames()
+{
+    QString fileName( ::getenv ("OMNIORB_CONFIG") );
+    QString portNumber;
+    if ( !fileName.isEmpty() ) 
+    {
+      QFile aFile( fileName );
+      if ( aFile.open(IO_ReadOnly) ) {
+        QRegExp re("InitRef = .*:([0-9]+)$");
+        QTextStream stream ( &aFile );
+        while ( !stream.atEnd() ) {
+          QString textLine = stream.readLine();
+          if ( re.search( textLine ) > -1 )
+            portNumber = re.cap(1);
+        }
+        aFile.close();
+      }
+    }
+
+    if ( !portNumber.isEmpty() ) 
+    {
+      QString cmd ;
+      cmd = QString( "ps -eo pid,command | grep -v grep | grep -E \"omniNames.*%1\" | awk '{cmd=sprintf(\"kill -9 %s\",$1); system(cmd)}'" ).arg( portNumber );
+      system ( cmd.latin1() );
+    }
+
+    /////////////////// NPAL 18309  (Kill Notifd) ////////////////////////////
+    if ( !portNumber.isEmpty() ) 
+    {
+      QString cmd = QString("import pickle, os; ");
+      cmd += QString("from killSalomeWithPort import getPiDict; ");
+      cmd += QString("filedict=getPiDict(%1); ").arg(portNumber);
+      cmd += QString("f=open(filedict, 'r'); ");
+      cmd += QString("pids=pickle.load(f); ");
+      cmd += QString("m={}; ");
+      cmd += QString("[ m.update(i) for i in pids ]; ");
+      cmd += QString("pids=filter(lambda a: 'notifd' in m[a], m.keys()); ");
+      cmd += QString("[ os.kill(pid, 9) for pid in pids ]; ");
+      cmd += QString("os.remove(filedict); ");
+      cmd  = QString("python -c \"%1\" > /dev/null").arg(cmd);
+      system( cmd.latin1() );
+    }
+
+}
+
+// shutdown standalone servers
+void shutdownServers( SALOME_NamingService* theNS )
+{
+  // get each Container from NamingService => shutdown it
+  // (the order is inverse to the order of servers initialization)
+  
+  CORBA::Object_var objS = theNS->Resolve("/Kernel/Session");
+  SALOME::Session_var session = SALOME::Session::_narrow(objS);
+  if (!CORBA::is_nil(session)) {
+    session->ping();
+    
+    string hostname = GetHostname();
+    //string containerName = "/Containers/" + hostname;
+    
+    // 1) SuperVisionContainer
+    //string containerNameSV = containerName + "/SuperVisionContainer";
+    //CORBA::Object_var objSV = theNS->Resolve(containerNameSV.c_str());
+    //Engines::Container_var SVcontainer = Engines::Container::_narrow(objSV) ;
+    //if ( !CORBA::is_nil(SVcontainer) && ( session->getPID() != SVcontainer->getPID() ) )
+    //  SVcontainer->Shutdown();
+    
+    // 2) FactoryServerPy
+    //string containerNameFSP = containerName + "/FactoryServerPy";
+    //CORBA::Object_var objFSP = theNS->Resolve(containerNameFSP.c_str());
+    //Engines::Container_var FSPcontainer = Engines::Container::_narrow(objFSP) ;
+    //if ( !CORBA::is_nil(FSPcontainer) && ( session->getPID() != FSPcontainer->getPID() ) )
+    //  FSPcontainer->Shutdown();
+    
+    // 3) FactoryServer
+    //string containerNameFS = containerName + "/FactoryServer";
+    //CORBA::Object_var objFS = theNS->Resolve(containerNameFS.c_str());
+    //Engines::Container_var FScontainer = Engines::Container::_narrow(objFS) ;
+    //if ( !CORBA::is_nil(FScontainer) && ( session->getPID() != FScontainer->getPID() ) )
+    //  FScontainer->Shutdown();
+    
+    // 4) ContainerManager
+    //CORBA::Object_var objCM=theNS->Resolve("/ContainerManager");
+    //Engines::ContainerManager_var contMan=Engines::ContainerManager::_narrow(objCM);
+    //if ( !CORBA::is_nil(contMan) && ( session->getPID() != contMan->getPID() ) )
+    //  contMan->ShutdownWithExit();
+
+    // 4) SalomeLauncher
+    CORBA::Object_var objSL = theNS->Resolve("/SalomeLauncher");
+    Engines::SalomeLauncher_var launcher = Engines::SalomeLauncher::_narrow(objSL);
+    if (!CORBA::is_nil(launcher) && (session->getPID() != launcher->getPID()))
+      launcher->Shutdown();
+
+    // 5) ConnectionManager
+    CORBA::Object_var objCnM=theNS->Resolve("/ConnectionManager");
+    Engines::ConnectionManager_var connMan=Engines::ConnectionManager::_narrow(objCnM);
+    if ( !CORBA::is_nil(connMan) && ( session->getPID() != connMan->getPID() ) )
+      connMan->ShutdownWithExit();
+    
+    // 6) SALOMEDS
+    CORBA::Object_var objSDS = theNS->Resolve("/myStudyManager");
+    SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(objSDS) ;
+    if ( !CORBA::is_nil(studyManager) && ( session->getPID() != studyManager->getPID() ) )
+      studyManager->Shutdown();
+    
+    // 7) ModuleCatalog
+    CORBA::Object_var objMC=theNS->Resolve("/Kernel/ModulCatalog");
+    SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow(objMC);
+    if ( !CORBA::is_nil(catalog) && ( session->getPID() != catalog->getPID() ) )
+      catalog->shutdown();
+    
+    // 8) Registry
+    CORBA::Object_var objR = theNS->Resolve("/Registry");
+    Registry::Components_var registry = Registry::Components::_narrow(objR);
+    if ( !CORBA::is_nil(registry) && ( session->getPID() != registry->getPID() ) )
+      registry->Shutdown();
+    
+    // 9) Kill OmniNames
+    //killOmniNames();
+  }
+}
+
 // ---------------------------- MAIN -----------------------
 int main( int argc, char **argv )
 {
@@ -314,19 +459,22 @@ int main( int argc, char **argv )
     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 );
+    QString splashIcon;
+    resMgr.value( "splash", "image", splashIcon );
     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 margin
+      int splashMargin;
+      if ( resMgr.value( "splash", "margin", splashMargin ) && splashMargin > 0 ) {
+       splash->setMargin( splashMargin );
+      }
       // ...set splash text colors
-      if ( !splashTextColors.isEmpty() ) {
+      QString splashTextColors;
+      if ( resMgr.value( "splash", "text_colors", splashTextColors ) && !splashTextColors.isEmpty() ) {
        QStringList colors = QStringList::split( "|", splashTextColors );
        QColor c1, c2;
        if ( colors.count() > 0 ) c1 = QColor( colors[0] );
@@ -337,7 +485,8 @@ int main( int argc, char **argv )
        splash->setTextColors( Qt::white, Qt::black );
       }
       // ...set splash progress colors
-      if ( !splashProgressColors.isEmpty() ) {
+      QString splashProgressColors;
+      if ( resMgr.value( "splash", "progress_colors", splashProgressColors ) && !splashProgressColors.isEmpty() ) {
        QStringList colors = QStringList::split( "|", splashProgressColors );
        QColor c1, c2;
        int gradType = QtxSplash::Vertical;
@@ -351,7 +500,8 @@ int main( int argc, char **argv )
       f.setBold( true );
       splash->setFont( f );
       // ...show splash initial status
-      if ( !splashInfo.isEmpty() ) {
+      QString splashInfo;
+      if ( resMgr.value( "splash", "info", splashInfo, false ) && !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" ) );
@@ -408,7 +558,7 @@ int main( int argc, char **argv )
 
     PortableServer::POAManager_var pman = poa->the_POAManager();
     pman->activate() ;
-    INFOS( "pman->activate()" );
+    MESSAGE( "pman->activate()" );
 
     _NS = new SALOME_NamingService( orb );
 
@@ -474,6 +624,7 @@ int main( int argc, char **argv )
     _GUIMutex.unlock();
   }
 
+  bool shutdown = false;
   if ( !result ) {
     // Launch GUI activator
     if ( isGUI ) {
@@ -482,7 +633,7 @@ int main( int argc, char **argv )
       SALOME::Session_var session = SALOME::Session::_narrow( obj ) ;
       ASSERT ( ! CORBA::is_nil( session ) );
       // ...create GUI launcher
-      INFOS( "Session activated, Launch IAPP..." );
+      MESSAGE( "Session activated, Launch IAPP..." );
       guiThread = new GetInterfaceThread( session );
     }
 
@@ -501,7 +652,7 @@ int main( int argc, char **argv )
       aGUISession = new SALOME_Session();
 
       // Load SalomeApp dynamic library
-      INFOS( "creation SUIT_Application" );
+      MESSAGE( "creation SUIT_Application" );
       SUIT_Application* aGUIApp = aGUISession->startApplication( "SalomeApp", 0, 0 );
       if ( aGUIApp )
       {
@@ -520,8 +671,10 @@ int main( int argc, char **argv )
          delete splash;
        splash = 0;
 
-       if ( result == SUIT_Session::FROM_GUI ) // desktop is closed by user from GUI
+       if ( result == SUIT_Session::NORMAL ) { // desktop is closed by user from GUI
+         shutdown = aGUISession->exitFlags();
          break;
+       }
       }
 
       delete aGUISession;
@@ -535,6 +688,9 @@ int main( int argc, char **argv )
   // unlock Session mutex
   _SessionMutex.unlock();
   
+  if ( shutdown )
+    shutdownServers( _NS );
+
   if ( myServerLauncher )
     myServerLauncher->KillAll(); // kill embedded servers
 
@@ -543,8 +699,26 @@ int main( int argc, char **argv )
   delete myServerLauncher;
   delete _NS;
 
-  LocalTraceBufferPool *bp1 = LocalTraceBufferPool::instance();
-  LocalTraceBufferPool::deleteInstance(bp1);
+  PyGILState_STATE gstate = PyGILState_Ensure();
+  Py_Finalize();
+
+  try 
+    {
+      orb->destroy();
+    }
+  catch(...) 
+    {
+      //////////////////////////////////////////////////////////////
+      // VSR: silently skip exception:
+      // CORBA.BAD_INV_ORDER.BAD_INV_ORDER_ORBHasShutdown 
+      // exception is raised when orb->destroy() is called and
+      // cpp continer is launched in the embedded mode
+      //////////////////////////////////////////////////////////////
+      // std::cerr << "Caught unexpected exception on destroy : ignored !!" << std::endl;
+    }
+
+  if ( shutdown )
+    killOmniNames();
 
   return result;
 }
index c37689369413463b7f18ebf2903ebfac317a3fa1..abadbdd675167cb07b0c48abb1c777dac14ba299 100755 (executable)
@@ -29,6 +29,8 @@
 #ifndef _SALOMEAPP_ENGINE_I_HXX_
 #define _SALOMEAPP_ENGINE_I_HXX_
 
+#include <SALOME_Session.hxx>
+
 #include "SALOME_Component_i.hxx"
 
 #include <vector> 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SalomeApp_Engine)
 
-#ifdef WNT
-#include <SALOME_WNT.hxx>
-#else
-#define SALOME_WNT_EXPORT
-#endif
-
-class SALOME_WNT_EXPORT SalomeApp_Engine_i: public POA_SalomeApp::Engine,
+class SESSION_EXPORT SalomeApp_Engine_i: public POA_SalomeApp::Engine,
                           public Engines_Component_i
 {
 public:
index c7b67a7a3a053d6ed3d36fab1eaf48cd0aa6dda4..3642f040728cdb411eca65ea4d869de5abd6e26d 100644 (file)
@@ -39,7 +39,7 @@
 const int __DEFAULT__ATTEMPTS__ = 300;      // number of checks attemtps
                                             // can be overrided by CSF_RepeatServerRequest
                                             // environment variable
-const int __DEFAULT__DELAY__    = 100000;   // delay between attempts (microseconds)
+const int __DEFAULT__DELAY__    = 50000;    // delay between attempts (microseconds)
                                             // can be overrided by CSF_DelayServerRequest
                                             // environment variable
 
@@ -135,7 +135,7 @@ void Session_ServerCheck::run()
   bOk = false;
   for ( i = 0; i < myAttempts ; i++ ) {
     QtxSplash::setStatus( info.arg( "Waiting for naming service..." ), current * myAttempts + i );
-    QThread::usleep( i == 0 ? 500000 : myDelay );
+    QThread::usleep( i == 0 ? 50000 : myDelay );
     try {
       CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
       CORBA::Object_var obj = orb->resolve_initial_references( "NameService" );
@@ -157,13 +157,13 @@ void Session_ServerCheck::run()
     return;
   }
   QtxSplash::setStatus( info.arg( "Waiting for naming service...OK" ), ++current * myAttempts );
-  QThread::usleep( 300000 );
+  QThread::usleep( 30000 );
   
   // 2. Check registry server
   bOk = false;
   for ( i = 0; i < myAttempts ; i++ ) {
     QtxSplash::setStatus( info.arg( "Waiting for registry server..." ), current * myAttempts + i );
-    QThread::usleep( i == 0 ? 500000 : myDelay );
+    QThread::usleep( i == 0 ? 50000 : myDelay );
     try {
       CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -205,13 +205,13 @@ void Session_ServerCheck::run()
     return;
   }
   QtxSplash::setStatus( info.arg( "Waiting for registry server...OK" ), ++current * myAttempts );
-  QThread::usleep( 300000 );
+  QThread::usleep( 30000 );
 
   // 3. Check data server
   bOk = false;
   for ( i = 0; i < myAttempts ; i++ ) {
     QtxSplash::setStatus( info.arg( "Waiting for study server..." ), current * myAttempts + i );
-    QThread::usleep( i == 0 ? 500000 : myDelay );
+    QThread::usleep( i == 0 ? 50000 : myDelay );
     try {
       CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -253,13 +253,13 @@ void Session_ServerCheck::run()
     return;
   }
   QtxSplash::setStatus( info.arg( "Waiting for study server...OK" ), ++current * myAttempts );
-  QThread::usleep( 300000 );
+  QThread::usleep( 30000 );
 
   // 4. Check module catalogue server
   bOk = false;
   for ( i = 0; i < myAttempts ; i++ ) {
     QtxSplash::setStatus( info.arg( "Waiting for module catalogue server..." ), current * myAttempts + i );
-    QThread::usleep( i == 0 ? 500000 : myDelay );
+    QThread::usleep( i == 0 ? 50000 : myDelay );
     try {
       CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -301,13 +301,13 @@ void Session_ServerCheck::run()
     return;
   }
   QtxSplash::setStatus( info.arg( "Waiting for module catalogue server...OK" ), ++current * myAttempts );
-  QThread::usleep( 300000 );
+  QThread::usleep( 30000 );
 
   // 5. Check data server
   bOk = false;
   for ( i = 0; i < myAttempts ; i++ ) {
     QtxSplash::setStatus( info.arg( "Waiting for session server..." ), current * myAttempts + i );
-    QThread::usleep( i == 0 ? 500000 : myDelay );
+    QThread::usleep( i == 0 ? 50000 : myDelay );
     try {
       CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -349,14 +349,14 @@ void Session_ServerCheck::run()
     return;
   }
   QtxSplash::setStatus( info.arg( "Waiting for session server...OK" ), ++current * myAttempts );
-  QThread::usleep( 300000 );
+  QThread::usleep( 30000 );
 
   // 6. Check C++ container
   if ( myCheckCppContainer ) {
     bOk = false;
     for ( i = 0; i < myAttempts ; i++ ) {
       QtxSplash::setStatus( info.arg( "Waiting for C++ container..." ), current * myAttempts + i );
-      QThread::usleep( i == 0 ? 500000 : myDelay );
+      QThread::usleep( i == 0 ? 50000 : myDelay );
       try {
        CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
        SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -399,7 +399,7 @@ void Session_ServerCheck::run()
       return;
     }
     QtxSplash::setStatus( info.arg( "Waiting for C++ container...OK" ), ++current * myAttempts );
-    QThread::usleep( 300000 );
+    QThread::usleep( 30000 );
   }
 
   // 7. Check Python container
@@ -407,7 +407,7 @@ void Session_ServerCheck::run()
     bOk = false;
     for ( i = 0; i < myAttempts ; i++ ) {
       QtxSplash::setStatus( info.arg( "Waiting for Python container..." ), current * myAttempts + i );
-      QThread::usleep( i == 0 ? 500000 : myDelay );
+      QThread::usleep( i == 0 ? 50000 : myDelay );
       try {
        CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
        SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -450,7 +450,7 @@ void Session_ServerCheck::run()
       return;
     }
     QtxSplash::setStatus( info.arg( "Waiting for Python container...OK" ), ++current * myAttempts );
-    QThread::usleep( 300000 );
+    QThread::usleep( 30000 );
   }
 
   // 8. Check supervision container
@@ -458,7 +458,7 @@ void Session_ServerCheck::run()
     bOk = false;
     for ( i = 0; i < myAttempts ; i++ ) {
       QtxSplash::setStatus( info.arg( "Waiting for Supervision container..." ), current * myAttempts + i );
-      QThread::usleep( i == 0 ? 500000 : myDelay );
+      QThread::usleep( i == 0 ? 50000 : myDelay );
       try {
        CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
        SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
@@ -501,7 +501,7 @@ void Session_ServerCheck::run()
       return;
     }
     QtxSplash::setStatus( info.arg( "Waiting for Supervision container...OK" ), ++current * myAttempts );
-    QThread::usleep( 300000 );
+    QThread::usleep( 30000 );
   }
   // clear splash status
   splash->setProgress( 0, 0 );
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 d4b05541603a2f89849f7704f4e7d963badcc743..c13c71a7a008c37c6995b45a5f1e387f57fa1656 100755 (executable)
@@ -96,7 +96,7 @@ void Session_ServerLauncher::run()
   _ServerLaunch->wakeAll();
 
   // run ORB
-  _orb->run(); // this thread waits, during omniORB process events
+  //_orb->run(); // No need to call orb->run() : it waits on a lock. Qt is already waiting in the mainloop.
 }
 
 /*! 
@@ -190,20 +190,22 @@ void Session_ServerLauncher::ActivateAll()
     {
       for (int i=0; i<argc-1; i++)
        //argv[i+1] = _argCopy[(*itServ)._firstArg + i].c_str();
-       argv[i+1] = _argv[(*itServ)._firstArg + i];
+             argv[i+1] = _argv[(*itServ)._firstArg + i];
     }
 
-    std::cout << "*** activating [" << argc << "] : " << argv[0] << std::endl;
+    MESSAGE("*** activating [" << argc << "] : " << argv[0]);
 
     Session_ServerThread* aServerThread
       = new Session_ServerThread(argc, argv, _orb,_root_poa);
     _serverThreads.push_front(aServerThread);
     
     aServerThread->Init();
+    free( argv[0] );
+    delete[] argv;
   }
 
   // Always launch Session Server
-  std::cout << "*** activating [ SESSION ] " << std::endl;
+  MESSAGE("*** activating [ SESSION ] ");
 
   int argc=1;
   char** argv = new char*[argc];
@@ -211,8 +213,8 @@ void Session_ServerLauncher::ActivateAll()
   Session_SessionThread* aServerThread
     = new Session_SessionThread(argc, argv, _orb,_root_poa,_SessionMutex,_SessionStarted);
   _serverThreads.push_front(aServerThread);
-
   aServerThread->Init();
+  delete[] argv;
 }
 
 /*! 
index b81534782fb602440c8268f2fff2c059f78f78db..b3773adf10f1116230dc266b3f85a6188ddd54c4 100755 (executable)
@@ -29,6 +29,8 @@
 #ifndef _SESSION_SERVERLAUNCHER_HXX_
 #define _SESSION_SERVERLAUNCHER_HXX_
 
+#include <SALOME_Session.hxx>
+
 #include "Session_ServerThread.hxx"
 
 #include <CORBA.h> 
 #include <qthread.h>
 #include <qwaitcondition.h>
 
-
-#ifdef WNT
-#include <SALOME_WNT.hxx>
-#else
-#define SALOME_WNT_EXPORT
-#endif
-
 using namespace std;
 
-class ServArg
+class SESSION_EXPORT ServArg
   {
   public:
     int _servType;
@@ -60,7 +55,7 @@ inline ServArg::ServArg(int servType, int firstArg, int lastArg):
   _servType(servType),_firstArg(firstArg),_lastArg(lastArg)
 {}
 
-class SALOME_WNT_EXPORT Session_ServerLauncher: public QThread
+class SESSION_EXPORT Session_ServerLauncher: public QThread
 {
 public:
   Session_ServerLauncher();
index d9ef4f806902ba74c26c36a56cdaf4c6bbf6aedf..c29a4807dd94e90a3fa8aafa67891514331a41ac 100755 (executable)
@@ -1,22 +1,22 @@
 //  SALOME Session : implementation of Session_ServerThread.cxx
 //
 //  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 
-// 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
@@ -33,7 +33,7 @@
 #include "Session_ServerThread.hxx"
 
 #include "SALOME_Container_i.hxx"
-#include "SALOME_ContainerManager.hxx"
+#include "SALOME_Launcher.hxx"
 #include <SALOMEDSClient.hxx>
 #include <SALOMEDSClient_ClientFactory.hxx>
 #include "SALOME_ModuleCatalog_impl.hxx"
@@ -55,14 +55,14 @@ using namespace std;
 
 const int Session_ServerThread::NB_SRV_TYP = 7;
 const char* Session_ServerThread::_serverTypes[NB_SRV_TYP] = {"Container",
-                                                             "ModuleCatalog",
-                                                             "Registry",
-                                                             "SALOMEDS",
-                                                             "Session",
-                                                             "SalomeAppEngine",
+                                                              "ModuleCatalog",
+                                                              "Registry",
+                                                              "SALOMEDS",
+                                                              "Session",
+                                                              "SalomeAppEngine",
                                                               "ContainerManager"};
 
-/*! 
+/*!
   default constructor not for use
 */
 Session_ServerThread::Session_ServerThread()
@@ -70,17 +70,21 @@ Session_ServerThread::Session_ServerThread()
   ASSERT(0); // must not be called
 }
 
-/*! 
+/*!
   constructor
 */
 Session_ServerThread::Session_ServerThread(int argc,
-                                          char ** argv, 
-                                          CORBA::ORB_ptr orb, 
-                                          PortableServer::POA_ptr poa)
+                                           char ** argv,
+                                           CORBA::ORB_ptr orb,
+                                           PortableServer::POA_ptr poa)
 {
   //MESSAGE("Session_ServerThread Constructor " << argv[0]);
   _argc = argc;
-  _argv = argv;
+  _argv = new char*[ _argc + 1 ];
+  _argv[_argc] = 0;
+  for (int i = 0; i < _argc; i++ )
+    _argv[i] = strdup( argv[i] );
+
   _orb = CORBA::ORB::_duplicate(orb);
   _root_poa = PortableServer::POA::_duplicate(poa);
   _servType =-1;
@@ -88,21 +92,25 @@ Session_ServerThread::Session_ServerThread(int argc,
                                         // multi thread coherence problems
 }
 
-/*! 
-  destructor 
+/*!
+  destructor
 */
 Session_ServerThread::~Session_ServerThread()
 {
   //MESSAGE("~Session_ServerThread "<< _argv[0]);
+  delete _NS;
+  for (int i = 0; i <_argc ; i++ )
+    free( _argv[i] );
+  delete[] _argv;
 }
 
-/*! 
+/*!
   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]); 
+  MESSAGE("Session_ServerThread::Init "<< _argv[0]);
 
   for (int i=0; i<_argc; i++) SCRUTE(_argv[i]);
 #ifndef WNT
@@ -112,82 +120,83 @@ void Session_ServerThread::Init()
 #endif
     if (strcmp(_argv[0],_serverTypes[i])==0)
       {
-       _servType = i;
-       MESSAGE("Server Thread type : "<<_serverTypes[i]);
-       switch (_servType)
-         {
-         case 0:  // Container
-           {
-             NamingService_WaitForServerReadiness(_NS,"/Registry");
-             NamingService_WaitForServerReadiness(_NS,"/ContainerManager");
-             ActivateContainer(_argc, _argv);
-             break;
-           }
-         case 1:  // ModuleCatalog
-           {
-             NamingService_WaitForServerReadiness(_NS,"/Registry");
-             ActivateModuleCatalog(_argc, _argv);
-             break;
-           }
-         case 2:  // Registry
-           {
-             NamingService_WaitForServerReadiness(_NS,"");
-             ActivateRegistry(_argc, _argv);
-             break;
-           }
-         case 3:  // SALOMEDS
-           {
-             NamingService_WaitForServerReadiness(_NS,"/Kernel/ModulCatalog");
-             ActivateSALOMEDS(_argc, _argv);
-             break;
-           }
-         case 4:  // Session
-           {
-             NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
-             string containerName = "/Containers/";
-             containerName = containerName + GetHostname();
-             containerName = containerName + "/FactoryServer";
-             NamingService_WaitForServerReadiness(_NS,containerName);
-             ActivateSession(_argc, _argv);
-             break;
-           }
-         case 5: // SalomeApp_Engine
-           {
-             NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
-             ActivateEngine(_argc, _argv);
-             break;
-           }
-         case 6: // Container Manager
-           {
-             NamingService_WaitForServerReadiness(_NS,"");
-             ActivateContainerManager(_argc, _argv);
-             break;
-           }
-         default:
-           {
-             ASSERT(0);
-             break;
-           }
-         }
+        _servType = i;
+        MESSAGE("Server Thread type : "<<_serverTypes[i]);
+        switch (_servType)
+          {
+          case 0:  // Container
+            {
+              NamingService_WaitForServerReadiness(_NS,"/Registry");
+              NamingService_WaitForServerReadiness(_NS,"/ContainerManager");
+              ActivateContainer(_argc, _argv);
+              break;
+            }
+          case 1:  // ModuleCatalog
+            {
+              NamingService_WaitForServerReadiness(_NS,"/Registry");
+              ActivateModuleCatalog(_argc, _argv);
+              break;
+            }
+          case 2:  // Registry
+            {
+              NamingService_WaitForServerReadiness(_NS,"");
+              ActivateRegistry(_argc, _argv);
+              break;
+            }
+          case 3:  // SALOMEDS
+            {
+              NamingService_WaitForServerReadiness(_NS,"/Kernel/ModulCatalog");
+              ActivateSALOMEDS(_argc, _argv);
+              break;
+            }
+          case 4:  // Session
+            {
+              NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
+              string containerName = "/Containers/";
+              containerName = containerName + GetHostname();
+              containerName = containerName + "/FactoryServer";
+              NamingService_WaitForServerReadiness(_NS,containerName);
+              ActivateSession(_argc, _argv);
+              break;
+            }
+          case 5: // SalomeApp_Engine
+            {
+              NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
+              ActivateEngine(_argc, _argv);
+              break;
+            }
+          case 6: // Container Manager
+            {
+              NamingService_WaitForServerReadiness(_NS,"");
+              ActivateContainerManager(_argc, _argv);
+              break;
+            }
+          default:
+            {
+              ASSERT(0);
+              break;
+            }
+          }
       }
 }
 
 void Session_ServerThread::ActivateModuleCatalog(int argc,
-                                                char ** argv)
+                                                 char ** argv)
 {
   try
     {
-      INFOS("ModuleCatalog thread started");
+      MESSAGE("ModuleCatalog thread started");
       // allocation on heap to allow destruction by POA
 
       SALOME_ModuleCatalogImpl* Catalogue_i
-       = new SALOME_ModuleCatalogImpl(argc, argv);
+        = new SALOME_ModuleCatalogImpl(argc, argv);
 
       // Tell the POA that the objects are ready to accept requests.
 
-      _root_poa->activate_object (Catalogue_i);
+      PortableServer::ObjectId_var id= _root_poa->activate_object (Catalogue_i);
+      Catalogue_i->_remove_ref();
 
-      CORBA::Object_ptr myCata = Catalogue_i->_this();
+      CORBA::Object_var myCata = Catalogue_i->_this();
       _NS->Register(myCata ,"/Kernel/ModulCatalog");
     }
   catch(CORBA::SystemException&)
@@ -205,21 +214,21 @@ void Session_ServerThread::ActivateModuleCatalog(int argc,
       INFOS( "  line: " << fe.line() );
       INFOS( "  mesg: " << fe.errmsg() );
     }
-  catch(...) 
+  catch(...)
     {
       INFOS( "Caught unknown exception." );
     }
 }
 
 void Session_ServerThread::ActivateSALOMEDS(int argc,
-                                           char ** argv)
+                                            char ** argv)
 {
   try
     {
-      INFOS("SALOMEDS thread started");
+      MESSAGE("SALOMEDS thread started");
       // We allocate the objects on the heap.  Since these are reference
       // counted objects, they will be deleted by the POA when they are no
-      // longer needed.    
+      // longer needed.
 
       ClientFactory::createStudyManager(_orb,_root_poa);
     }
@@ -238,17 +247,17 @@ void Session_ServerThread::ActivateSALOMEDS(int argc,
       INFOS( "  line: " << fe.line() );
       INFOS( "  mesg: " << fe.errmsg() );
     }
-  catch(...) 
+  catch(...)
     {
       INFOS( "Caught unknown exception." );
     }
 }
 
 void Session_ServerThread::ActivateRegistry(int argc,
-                                           char ** argv)
+                                            char ** argv)
 {
-  INFOS("Registry thread started");
-  SCRUTE(argc); 
+  MESSAGE("Registry thread started");
+  SCRUTE(argc);
   if( argc<3 )
     {
       INFOS("you must provide the Salome session name when you call SALOME_Registry_Server");
@@ -260,10 +269,10 @@ void Session_ServerThread::ActivateRegistry(int argc,
   for ( k=1 ; k<argc ; k++ )
     {
       if( strcmp(argv[k],"--salome_session")==0 )
-       {
-         ptrSessionName=argv[k+1];
-         break;
-       }
+        {
+          ptrSessionName=argv[k+1];
+          break;
+        }
     }
   ASSERT(ptrSessionName) ;
   ASSERT(strlen( ptrSessionName )>0);
@@ -273,22 +282,23 @@ void Session_ServerThread::ActivateRegistry(int argc,
     {
       RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance();
       ptrRegistry->SessionName( ptrSessionName );
+      ptrRegistry->SetOrb(_orb);
       varComponents = ptrRegistry->_this();
       // The RegistryService must not already exist.
-           
+
       try
-       {
-         CORBA::Object_var pipo = _NS->Resolve( registryName );
-         if (CORBA::is_nil(pipo) )  throw ServiceUnreachable();
-         INFOS("RegistryService servant already existing" );
-         ASSERT(0);
-       }
-      catch( const ServiceUnreachable &ex )
-       {
-       }
-      catch( const CORBA::Exception &exx )
-       {
-       }
+        {
+          CORBA::Object_var pipo = _NS->Resolve( registryName );
+          if (CORBA::is_nil(pipo) )  throw ServiceUnreachable();
+          INFOS("RegistryService servant already existing" );
+          ASSERT(0);
+        }
+      catch( const ServiceUnreachable &/*ex*/ )
+        {
+        }
+      catch( const CORBA::Exception &/*exx*/ )
+        {
+        }
       string absoluteName = string("/") + registryName;
       _NS->Register( varComponents , absoluteName.c_str() );
       MESSAGE("On attend les requetes des clients");
@@ -301,14 +311,13 @@ void Session_ServerThread::ActivateRegistry(int argc,
 }
 
 void Session_ServerThread::ActivateContainerManager(int argc,
-                                            char ** argv)
+                                                    char ** argv)
 {
   try
     {
       PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa();
-      cout << "ActivateContainerManager ......!!!! " << endl;
-      SALOME_ContainerManager * myContainer 
-       = new SALOME_ContainerManager(_orb);
+      cout << "ActivateSalomeLauncher ......!!!! " << endl;
+      SALOME_Launcher * myContainer = new SALOME_Launcher(_orb,root_poa);
     }
   catch(CORBA::SystemException&)
     {
@@ -333,66 +342,66 @@ void Session_ServerThread::ActivateContainerManager(int argc,
 }
 
 void Session_ServerThread::ActivateContainer(int argc,
-                                            char ** argv)
+                                             char ** argv)
 {
   try
     {
-      INFOS("Container thread started");
+      MESSAGE("Container thread started");
 
       // get or create the child POA
 
       PortableServer::POA_var factory_poa;
       try
-       {
-         factory_poa = _root_poa->find_POA("factory_poa",0);
-         // 0 = no activation (already done if exists)
-       }
+        {
+          factory_poa = _root_poa->find_POA("factory_poa",0);
+          // 0 = no activation (already done if exists)
+        }
       catch (PortableServer::POA::AdapterNonExistent&)
-       {
-         INFOS("factory_poa does not exists, create...");
-         // define policy objects     
-         PortableServer::ImplicitActivationPolicy_var implicitActivation =
-           _root_poa->create_implicit_activation_policy(
-                               PortableServer::NO_IMPLICIT_ACTIVATION);
-         // default = NO_IMPLICIT_ACTIVATION
-         PortableServer::ThreadPolicy_var threadPolicy =
-           _root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL);
-         // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
-      
-         // create policy list
-         CORBA::PolicyList policyList;
-         policyList.length(2);
-         policyList[0] = PortableServer::ImplicitActivationPolicy::
-           _duplicate(implicitActivation);
-         policyList[1] = PortableServer::ThreadPolicy::
-           _duplicate(threadPolicy);
-      
-         PortableServer::POAManager_var nil_mgr
-           = PortableServer::POAManager::_nil();
-         factory_poa = _root_poa->create_POA("factory_poa",
-                                             nil_mgr,
-                                             policyList);
-         //with nil_mgr instead of pman,
-         //a new POA manager is created with the new POA
-      
-         // destroy policy objects
-         implicitActivation->destroy();
-         threadPolicy->destroy();
-
-         // obtain the factory poa manager
-         PortableServer::POAManager_var pmanfac = factory_poa->the_POAManager();
-         pmanfac->activate();
-         MESSAGE("pmanfac->activate()");
-       }
-      
+        {
+          MESSAGE("factory_poa does not exists, create...");
+          // define policy objects
+          PortableServer::ImplicitActivationPolicy_var implicitActivation =
+            _root_poa->create_implicit_activation_policy(
+                                                         PortableServer::NO_IMPLICIT_ACTIVATION);
+          // default = NO_IMPLICIT_ACTIVATION
+          PortableServer::ThreadPolicy_var threadPolicy =
+            _root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL);
+          // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
+
+          // create policy list
+          CORBA::PolicyList policyList;
+          policyList.length(2);
+          policyList[0] = PortableServer::ImplicitActivationPolicy::
+            _duplicate(implicitActivation);
+          policyList[1] = PortableServer::ThreadPolicy::
+            _duplicate(threadPolicy);
+
+          PortableServer::POAManager_var nil_mgr
+            = PortableServer::POAManager::_nil();
+          factory_poa = _root_poa->create_POA("factory_poa",
+                                              nil_mgr,
+                                              policyList);
+          //with nil_mgr instead of pman,
+          //a new POA manager is created with the new POA
+
+          // destroy policy objects
+          implicitActivation->destroy();
+          threadPolicy->destroy();
+
+          // obtain the factory poa manager
+          PortableServer::POAManager_var pmanfac = factory_poa->the_POAManager();
+          pmanfac->activate();
+          MESSAGE("pmanfac->activate()");
+        }
+
       char *containerName = "";
-      if (argc >1) 
-       {
-         containerName = argv[1];
-       }
-      
-      Engines_Container_i * myContainer 
-       = new Engines_Container_i(_orb, _root_poa, containerName , argc , argv , true , false);
+      if (argc >1)
+        {
+          containerName = argv[1];
+        }
+
+      Engines_Container_i * myContainer
+        = new Engines_Container_i(_orb, _root_poa, containerName , argc , argv , true , false);
     }
   catch(CORBA::SystemException&)
     {
@@ -418,86 +427,88 @@ void Session_ServerThread::ActivateContainer(int argc,
 
 void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/)
 {
-    try
-      {
-       INFOS("SalomeApp_Engine thread started");
-       SalomeApp_Engine_i* anEngine = new SalomeApp_Engine_i();
-       /*PortableServer::ObjectId_var id = */_root_poa->activate_object( anEngine );
-       INFOS("poa->activate_object( SalomeApp_Engine )");
-      
-       CORBA::Object_ptr obj = anEngine->_this();
-       _NS->Register( obj ,"/SalomeAppEngine");
+  try
+    {
+      MESSAGE("SalomeApp_Engine thread started");
+      SalomeApp_Engine_i* anEngine = new SalomeApp_Engine_i();
+      PortableServer::ObjectId_var id =_root_poa->activate_object( anEngine );
+      MESSAGE("poa->activate_object( SalomeApp_Engine )");
 
-      }
-    catch (CORBA::SystemException&)
-      {
-       INFOS("Caught CORBA::SystemException.");
-      }
-    catch (CORBA::Exception&)
-      {
-       INFOS("Caught CORBA::Exception.");
-      }
-    catch (...)
-      {
-       INFOS("Caught unknown exception.");
-      }  
+      CORBA::Object_var obj = anEngine->_this();
+      anEngine->_remove_ref();
+      _NS->Register( obj ,"/SalomeAppEngine");
+
+    }
+  catch (CORBA::SystemException&)
+    {
+      INFOS("Caught CORBA::SystemException.");
+    }
+  catch (CORBA::Exception&)
+    {
+      INFOS("Caught CORBA::Exception.");
+    }
+  catch (...)
+    {
+      INFOS("Caught unknown exception.");
+    }
 }
 
 void Session_ServerThread::ActivateSession(int argc,
-                                          char ** argv)
+                                           char ** argv)
 {
   MESSAGE("Session_ServerThread::ActivateSession() not implemented!");
 }
 
-/*! 
-  constructor 
+/*!
+  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( GUIMutex ),
-  _GUILauncher( GUILauncher )
+                                             char** argv,
+                                             CORBA::ORB_ptr orb,
+                                             PortableServer::POA_ptr poa,
+                                             QMutex* GUIMutex,
+                                             QWaitCondition* GUILauncher)
+  : Session_ServerThread(argc, argv, orb, poa),
+    _GUIMutex( GUIMutex ),
+    _GUILauncher( GUILauncher )
 {
 }
 
-/*! 
-  destructor 
+/*!
+  destructor
 */
 Session_SessionThread::~Session_SessionThread()
 {
 }
 
 void Session_SessionThread::ActivateSession(int argc,
-                                           char ** argv)
+                                            char ** argv)
 {
-    try
-      {
-       INFOS("Session thread started");
-       SALOME_Session_i * mySALOME_Session
-         = new SALOME_Session_i(argc, argv, _orb, _root_poa, _GUIMutex, _GUILauncher) ;
-       PortableServer::ObjectId_var mySALOME_Sessionid
-         = _root_poa->activate_object(mySALOME_Session);
-       INFOS("poa->activate_object(mySALOME_Session)");
-      
-       CORBA::Object_var obj = mySALOME_Session->_this();
-       CORBA::String_var sior(_orb->object_to_string(obj));
-      
-       mySALOME_Session->NSregister();
-         }
-    catch (CORBA::SystemException&)
-      {
-       INFOS("Caught CORBA::SystemException.");
-      }
-    catch (CORBA::Exception&)
-      {
-       INFOS("Caught CORBA::Exception.");
-      }
-    catch (...)
-      {
-       INFOS("Caught unknown exception.");
-      }  
+  try
+    {
+      MESSAGE("Session thread started");
+      SALOME_Session_i * mySALOME_Session
+        = new SALOME_Session_i(argc, argv, _orb, _root_poa, _GUIMutex, _GUILauncher) ;
+      PortableServer::ObjectId_var mySALOME_Sessionid
+        = _root_poa->activate_object(mySALOME_Session);
+      MESSAGE("poa->activate_object(mySALOME_Session)");
+
+      CORBA::Object_var obj = mySALOME_Session->_this();
+      CORBA::String_var sior(_orb->object_to_string(obj));
+      mySALOME_Session->_remove_ref();
+
+      mySALOME_Session->NSregister();
+    }
+  catch (CORBA::SystemException&)
+    {
+      INFOS("Caught CORBA::SystemException.");
+    }
+  catch (CORBA::Exception&)
+    {
+      INFOS("Caught CORBA::Exception.");
+    }
+  catch (...)
+    {
+      INFOS("Caught unknown exception.");
+    }
 }
index 8c2e417da47a7eaf8bd0058e7d529ce4a7179442..04ded4d2ead238a241f946aae311d6e68869d168 100755 (executable)
@@ -29,6 +29,8 @@
 #ifndef _SESSION_SERVERTHREAD_HXX_
 #define _SESSION_SERVERTHREAD_HXX_
 
+#include <SALOME_Session.hxx>
+
 #include <CORBA.h> 
 #include <string>
 
@@ -40,7 +42,7 @@ using namespace std;
 void WaitForServerReadiness(string serverName);
 
 
-class Session_ServerThread
+class SESSION_EXPORT Session_ServerThread
 {
 public:
   static const int NB_SRV_TYP;
@@ -71,7 +73,7 @@ protected:
 };
 
 
-class Session_SessionThread : public Session_ServerThread
+class SESSION_EXPORT Session_SessionThread : public Session_ServerThread
 {
 public:
   Session_SessionThread() {}
index ee239674ed01c6bf13f43f4d83b4e7ab6a3885fd..92da744bc6199d5f110926b58b8e4afde38ba8bf 100755 (executable)
@@ -35,6 +35,7 @@
 
 #include "SUIT_Session.h"
 #include "SUIT_Application.h"
+#include "SUIT_Desktop.h"
 
 #include <qapplication.h>
 
@@ -63,6 +64,7 @@ SALOME_Session_i::SALOME_Session_i(int argc,
   _poa = PortableServer::POA::_duplicate(poa) ;
   _GUIMutex = GUIMutex;
   _GUILauncher = GUILauncher;
+  _NS = new SALOME_NamingService(_orb);
   //MESSAGE("constructor end");
 }
 
@@ -86,6 +88,7 @@ Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName
 */
 SALOME_Session_i::~SALOME_Session_i()
 {
+  delete _NS;
   //MESSAGE("destructor end");
 }
 
@@ -95,10 +98,10 @@ SALOME_Session_i::~SALOME_Session_i()
 */
 void SALOME_Session_i::NSregister()
 {
-  SALOME::Session_ptr pSession = SALOME::Session::_narrow(_this());
+  CORBA::Object_var obref=_this();
+  SALOME::Session_var pSession = SALOME::Session::_narrow(obref);
   try
     {
-      _NS = new SALOME_NamingService(_orb);
       _NS->Register(pSession, "/Kernel/Session");
     }
   catch (ServiceUnreachable&)
@@ -221,3 +224,30 @@ bool SALOME_Session_i::restoreVisualState(CORBA::Long theSavePoint)
  
   return false;
 }
+
+void SALOME_Session_i::emitMessage(const char* theMessage)
+{
+  class TEvent: public SALOME_Event {
+  public:
+    TEvent(const char * msg) {
+      _msg = msg;
+    }
+    virtual void Execute() {
+      SUIT_Session::session()->activeApplication()->desktop()->emitMessage(_msg);
+    }
+  private:
+    const char* _msg;
+  };
+  if ( SUIT_Session::session() ) {
+    if ( SUIT_Session::session()->activeApplication() ) {
+      if ( SUIT_Session::session()->activeApplication()->desktop() ) {
+       ProcessVoidEvent( new TEvent(theMessage) );
+      }
+    }
+  }
+}
+
+void SALOME_Session_i::emitMessageOneWay(const char* theMessage)
+{
+  emitMessage(theMessage);
+}
index 18d2caf8424e3cd602507e64595110e149d69b8f..58f5fdb3126b02665c6e9910147124672fb37964 100755 (executable)
@@ -29,6 +29,8 @@
 #ifndef _SESSION_SESSION_I_HXX_
 #define _SESSION_SESSION_I_HXX_
 
+#include <SALOME_Session.hxx>
+
 #include <qthread.h> 
 
 #include <SALOMEconfig.h>
@@ -36,8 +38,8 @@
 #include CORBA_SERVER_HEADER(SALOME_Session)
 class SALOME_NamingService;
 
-class SALOME_Session_i:  public virtual POA_SALOME::Session,
-                        public virtual PortableServer::RefCountServantBase
+class SESSION_EXPORT SALOME_Session_i:  public virtual POA_SALOME::Session,
+                        public virtual PortableServer::ServantBase
 {
 public:
   SALOME_Session_i(int argc, 
@@ -64,12 +66,17 @@ public:
   void NSregister();
 
   CORBA::Long GetActiveStudyId();
-  
+
   void ping(){};
+  CORBA::Long getPID() { return (CORBA::Long)getpid(); };
 
   //! Restors a visual state of the study at theSavePoint
   bool restoreVisualState(CORBA::Long theSavePoint);
 
+  //! Emit a qt signal from the session GUI desktop window.
+  void emitMessage(const char* theMessage);
+  void emitMessageOneWay(const char* theMessage);
+
 protected:
 
   //! Naming service interface
diff --git a/src/Session/runSession b/src/Session/runSession
deleted file mode 100755 (executable)
index cbb98a2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-export SALOME_HOME_DIR=`pwd`
-export ORB_HOME_DIR=${HOME}/public/omni
-
-# OCAF
-export CSF_PluginDefaults=${SALOME_HOME_DIR}/../resources
-export CSF_ResourcesDefaults=${SALOME_HOME_DIR}/../resources
-
-export CSF_SALOMEGUIResources=${SALOME_HOME_DIR}/../SALOME/resources
-export CSF_SALOMEGUILanguage=en
-export CSF_QADResources=${SALOME_HOME_DIR}/../SALOME/resources
-export CSF_QADLanguage=en
-
-export CSF_CatalogueResources=${SALOME_HOME_DIR}/../resources
-
-export CSF_GeometryResources=${SALOME_HOME_DIR}/../GEOM/resources
-
-export CSF_MeshResources=${SALOME_HOME_DIR}/../MESH/resources
-
-export CSF_PATHComponents=${SALOME_HOME_DIR}/../lib
-
-export LD_LIBRARY_PATH=${SALOME_HOME_DIR}/../lib/:${LD_LIBRARY_PATH}
-
-runNS.sh
-geom&
-mesh&
-SALOME_Session_Server
-
diff --git a/src/Style/Makefile.am b/src/Style/Makefile.am
new file mode 100644 (file)
index 0000000..aee0db5
--- /dev/null
@@ -0,0 +1,41 @@
+#  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
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+# Libraries targets
+lib_LTLIBRARIES = libSalomeStyle.la
+
+libSalomeStyle_la_SOURCES = SalomeStyle.cxx
+
+libSalomeStyle_la_CPPFLAGS=$(QT_INCLUDES)
+
+libSalomeStyle_la_LDFLAGS=$(QT_MT_LIBS)
+
+EXTRA_DIST+=SalomeStyle.h
+
+install-exec-hook:
+       mkdir -p $(bindir)/styles
+       (cd $(bindir)/styles; ln -sf ../../../lib@LIB_LOCATION_SUFFIX@/salome/libSalomeStyle.so libSalomeStyle.so;)
+
+uninstall-hook:
+       rm -f $(bindir)/styles/libSalomeStyle.so
diff --git a/src/Style/Makefile.in b/src/Style/Makefile.in
deleted file mode 100644 (file)
index 6de6bc7..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#  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
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS=
-
-# .po files to transform in .qm
-PO_FILES =
-
-# Libraries targets
-LIB = libSalomeStyle.la
-
-LIB_SRC= SalomeStyle.cxx
-
-LIB_MOC =
-
-LIB_CLIENT_IDL =
-
-RESOURCES_FILES =
-
-CPPFLAGS+=$(QT_INCLUDES)
-
-LDFLAGS+=$(QT_MT_LIBS)
-LIBS+=
-
-# create $(top_builddir)/src/Session/styles directory and copy libSalomeStyle.so there
-LIB_PLUGINDIR = $(top_builddir)/src/Session/styles
-LIB_PLUGINLIB = $(patsubst %.la, $(LIB_PLUGINDIR)/%.so, $(filter %.la, $(LIB)))
-
-lib: $(LIB) $(LIB_PLUGINDIR) $(LIB_PLUGINLIB)
-
-$(LIB_PLUGINDIR):
-       mkdir -p $@
-
-$(LIB_PLUGINLIB): $(LIB_PLUGINDIR)/%.so: .libs/%.so
-       -$(RM) $@
-       ln -sf $(CURDIR)/$< $@ || true
-
-# do the same in install step
-INSTALL_PLUGINDIR = $(bindir)/styles
-INSTALL_COPYLIB = $(patsubst %.la, $(INSTALL_PLUGINDIR)/%.so, $(filter %.la, $(LIB)))
-
-install: $(INSTALL_PLUGINDIR) $(INSTALL_COPYLIB)
-
-$(INSTALL_PLUGINDIR):
-       mkdir -p $@
-
-$(INSTALL_COPYLIB):
-       (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.la, $(LIB))) $@) || true
-
-@CONCLUDE@
-
index d35196cf5c83a68f6d43be00787aa0aa1d50572f..371e261f42a6d210eb69a903c000d485be159486 100644 (file)
@@ -483,22 +483,25 @@ void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect&
         int textW = flags & Style_Horizontal ? rt.height() : rt.width();
         int textH = flags & Style_Horizontal ? rt.width() : rt.height();
 
-        QString title = titleText( wnd->caption(), textW, p->fontMetrics() );
-
-                   if ( wnd )
+       QFont old_font = p->font(), f = old_font;
+       
+        QString title = titleText( wnd->caption(), textW, textH, f );
+       p->setFont( f );
+       if ( wnd )
         {
-                     QColorGroup cgroup = wnd->isActiveWindow() ? wnd->palette().active() : wnd->palette().inactive();
-                     p->setPen( cgroup.highlightedText() );
+         QColorGroup cgroup = wnd->isActiveWindow() ? wnd->palette().active() : wnd->palette().inactive();
+         p->setPen( cgroup.highlightedText() );
 
-                     if ( flags & Style_Horizontal )
+         if ( flags & Style_Horizontal )
           {
-                       p->rotate( 270.0 );
-                       p->translate( -(rt.height()+rt.y()), (rt.width()-rt.x()) );
-                       p->drawText( 0, 0, title );
-                     }
+           p->rotate( 270.0 );
+           p->translate( -(rt.height()+rt.y()), (rt.width()-rt.x()) );
+           p->drawText( 0, 0, title );
+         }
           else
-                       p->drawText( 2, 2, textW, textH, AlignLeft, title );
-             }
+           p->drawText( 2, 2, textW, textH, AlignLeft, title );
+       }
+       p->setFont( old_font );
       }
       break;
     }
@@ -1279,10 +1282,17 @@ int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const
   \param w - possible width
   \param fm - font metrics
 */
-QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetrics& fm ) const
+QString SalomeStyle::titleText( const QString& txt, const int W, const int H, QFont& f ) const
 {
   QString res = txt.stripWhiteSpace();
 
+  QFontMetrics fm( f );
+  while( fm.height() > H && f.pointSize()>1 )
+  {
+    f.setPointSize( f.pointSize()-1 );
+    fm = QFontMetrics( f );
+  }
+
   if ( fm.width( res ) > W )
   {
     QString end( "..." );
index e6cdd5807d07440e632170e2805cd7e0e4808c75..e87ebf16d714f166fce36605bf33c675642a8462 100644 (file)
@@ -92,7 +92,7 @@ protected:
   void               drawGradient( QPainter*, const QRect&, const QColor&,
                                   const QColor&, const Direction, gradient_func ) const;
 
-  QString            titleText( const QString&, const int, const QFontMetrics& ) const;
+  QString            titleText( const QString&, const int, const int, QFont& f ) const;
 
 private:
   QWidget*           myTitleParent;
diff --git a/src/TOOLSGUI/Makefile.am b/src/TOOLSGUI/Makefile.am
new file mode 100755 (executable)
index 0000000..e308144
--- /dev/null
@@ -0,0 +1,65 @@
+#  SALOME TOOLSGUI : implementation of desktop "Tools" optioins
+#
+#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Marc Tajchman (CEA)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libToolsGUI.la
+
+salomeinclude_HEADERS= \
+       ToolsGUI.h \
+       ToolsGUI_RegWidget.h \
+       ToolsGUI_CatalogGeneratorDlg.h
+
+dist_libToolsGUI_la_SOURCES= \
+       ToolsGUI_CatalogGeneratorDlg.cxx \
+       ToolsGUI_HelpWindow.cxx \
+       ToolsGUI_RegWidget.cxx \
+       ToolsGUI_IntervalWindow.cxx \
+       ToolsGUI.cxx
+
+EXTRA_DIST+=
+
+MOC_FILES= \
+       ToolsGUI_CatalogGeneratorDlg_moc.cxx \
+       ToolsGUI_RegWidget_moc.cxx \
+       ToolsGUI_HelpWindow_moc.cxx \
+       ToolsGUI_IntervalWindow_moc.cxx
+
+nodist_libToolsGUI_la_SOURCES= $(MOC_FILES)
+
+# .po files to transform in .qm
+nodist_salomeres_DATA= \
+       ToolsGUI_icons.qm \
+       ToolsGUI_msg_en.qm
+
+libToolsGUI_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) $(BOOST_CPPFLAGS) \
+       @KERNEL_CXXFLAGS@ @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \
+       -I$(top_builddir)/salome_adm/unix -I$(top_builddir)/idl \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
+libToolsGUI_la_LDFLAGS = $(QT_MT_LIBS) ../SUIT/libsuit.la $(CAS_KERNEL) $(KERNEL_LDFLAGS) \
+       -lSalomeNS -lOpUtil $(top_builddir)/idl/libSalomeIDLGUI.so
diff --git a/src/TOOLSGUI/Makefile.in b/src/TOOLSGUI/Makefile.in
deleted file mode 100755 (executable)
index bec8e5a..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#  SALOME TOOLSGUI : implementation of desktop "Tools" optioins
-#
-#  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Marc Tajchman (CEA)
-#  Module : SALOME
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS = ToolsGUI.h \
-                ToolsGUI_RegWidget.h \
-                ToolsGUI_CatalogGeneratorDlg.h
-
-# .po files to transform in .qm
-PO_FILES = ToolsGUI_icons.po \
-          ToolsGUI_msg_en.po
-
-# Libraries targets
-LIB = libToolsGUI.la
-
-LIB_SRC = ToolsGUI_CatalogGeneratorDlg.cxx \
-         ToolsGUI_HelpWindow.cxx \
-         ToolsGUI_RegWidget.cxx \
-         ToolsGUI_IntervalWindow.cxx \
-         ToolsGUI.cxx
-
-LIB_MOC = ToolsGUI_CatalogGeneratorDlg.h \
-          ToolsGUI_RegWidget.h
-
-LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl
-
-CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS)
-CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS)
-
-LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil
-
-@CONCLUDE@
-
index 9888f3da9331edd18e7547d54c5ab8fcf234caf3..b4849baf0b9f3bd5e3c0ddf225edecf44b1125e2 100755 (executable)
@@ -36,6 +36,8 @@ class QTextView;
 
 class ToolsGUI_HelpWindow : public QMainWindow
 {
+  Q_OBJECT
+
 public:
   ToolsGUI_HelpWindow( QWidget* parent = 0, const char* name = 0);
   ~ToolsGUI_HelpWindow();
index 5fec1a340abac7649ec690094fe8405e365ac75f..2423736575e315d0d0e7caffd724b514954410ea 100755 (executable)
@@ -34,6 +34,8 @@ using namespace std;
 
 class ToolsGUI_IntervalWindow : public QDialog
 {
+  Q_OBJECT
+
 public:
   ToolsGUI_IntervalWindow( QWidget* parent = 0 );
   ~ToolsGUI_IntervalWindow();
index 9b872f9c2f81a2acd20ba6a652a4c9f60537e830..d9c62a9bf4b6b041d8ad828df238cb02cf76e24f 100755 (executable)
@@ -150,23 +150,23 @@ Registry::Components_var MakeRegistry( CORBA::ORB_var &orb )
   // Recuperation de la reference de l'objet
   CORBA::Object_var object = 0 ;
   try
-    {
-      SCRUTE(registryName) ;
-      object = naming.Resolve( registryName ) ;
-      if(CORBA::is_nil(object)) throw CommException( "unable to find the RegistryService" ) ;
-    }
-  catch( const ServiceUnreachable &ex )
-    {
-      MESSAGE( ex.what() )
-      exit( EXIT_FAILURE ) ;
-    }
-  catch( const CORBA::Exception &exx )
-    {
-      exit( EXIT_FAILURE ) ;
-    }
-  
+  {
+    SCRUTE(registryName) ;
+    object = naming.Resolve( registryName ) ;
+    if(CORBA::is_nil(object)) throw CommException( "unable to find the RegistryService" ) ;
+  }
+  catch( const ServiceUnreachableex )
+  {
+    MESSAGE( ex.what() )
+    exit( EXIT_FAILURE ) ;
+  }
+  catch( const CORBA::Exception& )
+  {
+    exit( EXIT_FAILURE ) ;
+  }
+
   // Specialisation de l'objet generique
-  
+
   return Registry::Components::_narrow( object ) ;
 }
 
@@ -342,6 +342,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info)
   QString a = QString( "<hr><h2>" ) + tr( "Code" ) + QString( " : " );
   a.append( QString( c_info.name ) );
   a.append( "</h1><hr><br>" );
+  a.append( "<code>" ); // ASV: 28.07.06 : added <code> tags to make the text font be 
+                        // fixed width (looks much better on Windows)
   a.append( tr( "Process Id" ) + QString( " : " ) );
   a.append( BOLD( QString::number( int( c_info.pid ) ) ) );
   a.append( QString( " " ) + tr( "on machine" ) + QString( " " ) );
@@ -400,6 +402,8 @@ QString ToolsGUI_RegWidget::setlongText( const Registry::Infos &c_info)
       a.append( BOLD( QString::number( int( c_info.difftime ) ) ) );
       a.append( QString( " " ) + tr( "seconds" ) + QString( ")<br>" ) );
     }
+  a.append( "</code>" ); // ASV: 28.07.06 : added <code> tags to make the text font be 
+                         // fixed width (looks much better on Windows)
   END_OF("setlongText");  
   return a;
   
@@ -768,6 +772,8 @@ QString findFile( QString filename )
       dir = addSlash(dir) ;
       dir = dir + "resources" ;
       dir = addSlash(dir) ;
+      dir = dir + "kernel" ;
+      dir = addSlash(dir) ;
       QFileInfo fileInfo( dir + filename );
       if ( fileInfo.isFile() && fileInfo.exists() )
        return fileInfo.filePath();
@@ -795,29 +801,22 @@ QString findFile( QString filename )
   // Try CSF_SaloameResources env.var directory ( or directory list )
   cenv = getenv( "CSF_SalomeResources" );
   if ( cenv ) {
-    dir.sprintf( "%s", cenv );
-    if ( !dir.isEmpty() ) {
-      QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
-      for ( int i = 0; i < dirList.count(); i++ ) {
-       QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
-       if ( fileInfo.isFile() && fileInfo.exists() )
-         return fileInfo.filePath();
+  dir.sprintf( "%s", cenv );
+  if ( !dir.isEmpty() )
+  {
+    QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
+    for ( int i = 0; i < (int)dirList.count(); i++ )
+    {
+           QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
+           if ( fileInfo.isFile() && fileInfo.exists() )
+             return fileInfo.filePath();
       }
     }
   }
   return filename;
 }
+
 QString addSlash( const QString& path )
 {
   return Qtx::addSlash( path );
-//  if (!path.isNull()) {
-//#ifdef WNT
-//    QChar slash ('\\');
-//#else
-//    QChar slash ('/');
-//#endif
-//    if ( path.at(path.length()-1) != slash )
-//      return path + slash;
-//  }
-//  return path;
 }
index a5a3d1b96bbc1178ee00dcc42056803a9b794aab..be40bc8a245b71c9c85fa39342d5a979f7129a52 100755 (executable)
 //  Module : SALOME
 //  $Header$
 
-# ifndef __REGWIDGET_H__
-# define __REGWIDGET_H__
-# include <qapplication.h>
-# include <qmainwindow.h>
+#ifndef __REGWIDGET_H__
+#define __REGWIDGET_H__
+#include <qapplication.h>
+#include <qmainwindow.h>
 
 #include <SALOMEconfig.h>
 #include CORBA_CLIENT_HEADER(SALOME_Registry)
@@ -50,7 +50,10 @@ class QPushButton;
 class ToolsGUI_HelpWindow;
 class ToolsGUI_IntervalWindow;
 
-class Standard_EXPORT  ToolsGUI_InfoWindow : public QMainWindow {
+class Standard_EXPORT  ToolsGUI_InfoWindow : public QMainWindow
+{
+  Q_OBJECT
+
 public:
   ToolsGUI_InfoWindow( QWidget* parent = 0, const char* name = 0);
 
@@ -64,9 +67,8 @@ private:
   QTextView* myTextView;
 };
 
-class Standard_EXPORT  ToolsGUI_RegWidget : public QMainWindow
+class Standard_EXPORT ToolsGUI_RegWidget : public QMainWindow
 {
-  
   Q_OBJECT
 
 public:
@@ -114,13 +116,4 @@ private:
   static     ToolsGUI_RegWidget* myRegWidgetPtr;
 };
 
-# endif         /* # ifndef __REGWIDGET_H__ */
-
-
-
-
-
-
-
-
-
+#endif
diff --git a/src/VTKViewer/Makefile.am b/src/VTKViewer/Makefile.am
new file mode 100755 (executable)
index 0000000..5b3da9f
--- /dev/null
@@ -0,0 +1,117 @@
+#  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
+# $Header$
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+lib_LTLIBRARIES = libVTKViewer.la
+
+salomeinclude_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_InteractorStyle.h \
+       VTKViewer_RenderWindow.h \
+       VTKViewer_RenderWindowInteractor.h \
+       VTKViewer_ShrinkFilter.h \
+       VTKViewer_TransformFilter.h \
+       VTKViewer_Transform.h \
+       VTKViewer_Trihedron.h \
+       VTKViewer_Utilities.h \
+       VTKViewer_ViewManager.h \
+       VTKViewer_ViewModel.h \
+       VTKViewer_ViewWindow.h \
+       VTKViewer_Functor.h
+
+dist_libVTKViewer_la_SOURCES= \
+       VTKViewer_CellLocationsArray.cxx \
+       VTKViewer_Actor.cxx \
+       VTKViewer_ExtractUnstructuredGrid.cxx \
+       VTKViewer_Filter.cxx \
+       VTKViewer_GeometryFilter.cxx \
+       VTKViewer_AppendFilter.cxx \
+       VTKViewer_InteractorStyle.cxx \
+       VTKViewer_RenderWindow.cxx \
+       VTKViewer_RenderWindowInteractor.cxx \
+       VTKViewer_ShrinkFilter.cxx \
+       VTKViewer_Transform.cxx \
+       VTKViewer_TransformFilter.cxx \
+       VTKViewer_Trihedron.cxx \
+       VTKViewer_Utilities.cxx \
+       VTKViewer_ViewManager.cxx \
+       VTKViewer_ViewModel.cxx \
+       VTKViewer_ConvexTool.cxx \
+       VTKViewer_ViewWindow.cxx                
+
+MOC_FILES= \
+       VTKViewer_RenderWindow_moc.cxx \
+       VTKViewer_RenderWindowInteractor_moc.cxx \
+       VTKViewer_ViewManager_moc.cxx \
+       VTKViewer_ViewModel_moc.cxx \
+       VTKViewer_ViewWindow_moc.cxx 
+nodist_libVTKViewer_la_SOURCES= $(MOC_FILES)
+
+dist_salomeres_DATA=\
+       resources/view_back.png \
+       resources/view_bottom.png \
+       resources/view_camera_dump.png \
+       resources/view_fitall.png \
+       resources/view_fitarea.png \
+       resources/view_front.png \
+       resources/view_glpan.png \
+       resources/view_graduated_axes.png \
+       resources/view_left.png \
+       resources/view_pan.png \
+       resources/view_reset.png \
+       resources/view_right.png \
+       resources/view_rotate.png \
+       resources/view_scaling.png \
+       resources/view_top.png \
+       resources/view_triedre.png \
+       resources/view_update_rate.png \
+       resources/view_zoom.png \
+       resources/view_rotation_point.png
+
+nodist_salomeres_DATA= \
+       VTKViewer_images.qm \
+       VTKViewer_msg_en.qm
+
+libVTKViewer_la_CPPFLAGS=$(QT_INCLUDES) $(VTK_INCLUDES) $(CAS_CPPFLAGS) \
+       -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
+libVTKViewer_la_LDFLAGS=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) \
+       ../Qtx/libqtx.la ../SUIT/libsuit.la
+
+# Executable
+
+bin_PROGRAMS = VTKViewer
+
+dist_VTKViewer_SOURCES=VTKViewer.cxx
+
+VTKViewer_CPPFLAGS=$(libVTKViewer_la_CPPFLAGS)
+VTKViewer_LDADD=libVTKViewer.la $(libVTKViewer_la_LDFLAGS)
+
diff --git a/src/VTKViewer/Makefile.in b/src/VTKViewer/Makefile.in
deleted file mode 100755 (executable)
index 9fee23f..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#  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
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@srcdir@/resources
-
-
-@COMMENCE@
-
-# header files 
-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_InteractorStyle.h \
-               VTKViewer_PassThroughFilter.h \
-               VTKViewer_RenderWindow.h \
-               VTKViewer_RenderWindowInteractor.h \
-               VTKViewer_ShrinkFilter.h \
-               VTKViewer_TransformFilter.h \
-               VTKViewer_Transform.h \
-               VTKViewer_Trihedron.h \
-               VTKViewer_Utilities.h \
-               VTKViewer_VectorText.h \
-               VTKViewer_ViewManager.h \
-               VTKViewer_ViewModel.h \
-               VTKViewer_ViewWindow.h \
-               VTKViewer_Functor.h
-
-PO_FILES = \
-       VTKViewer_images.po \
-       VTKViewer_msg_en.po
-       
-# Libraries targets
-LIB = libVTKViewer.la
-
-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 
-
-BIN = VTKViewer
-
-CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES)
-
-LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) -lqtx -lsuit
-
-LDFLAGSFORBIN=$(LDFLAGS)
-
-@CONCLUDE@
\ No newline at end of file
index 6a548f1df2a924398cd185c3579e77886f2bf998..a65c5c204eaf3ea75720b268cbd2bc4359ad3aa6 100644 (file)
@@ -27,7 +27,6 @@
 //  $Header$
 
 #include "VTKViewer_Actor.h"
-#include "VTKViewer_CellRectPicker.h"
 #include "VTKViewer_ExtractUnstructuredGrid.h"
 #include "VTKViewer_ConvexTool.h"
 #include "VTKViewer_Filter.h"
@@ -35,8 +34,6 @@
 #include "VTKViewer_AppendFilter.h"
 #include "VTKViewer_Algorithm.h"
 #include "VTKViewer_InteractorStyle.h"
-#include "VTKViewer_PassThroughFilter.h"
-#include "VTKViewer_RectPicker.h"
 #include "VTKViewer_RenderWindow.h"
 #include "VTKViewer_RenderWindowInteractor.h"
 #include "VTKViewer_ShrinkFilter.h"
@@ -44,7 +41,6 @@
 #include "VTKViewer_Transform.h"
 #include "VTKViewer_Trihedron.h"
 #include "VTKViewer_Utilities.h"
-#include "VTKViewer_VectorText.h"
 #include "VTKViewer_ViewManager.h"
 #include "VTKViewer_ViewModel.h"
 #include "VTKViewer_ViewWindow.h"
index 5f0e621e7368da910ca2396461ab54422c9b00fc..5c65df651e9af2a7568725a23f388ed2269345cb 100755 (executable)
@@ -36,7 +36,6 @@
 
 #include "VTKViewer_Transform.h"
 #include "VTKViewer_TransformFilter.h"
-#include "VTKViewer_PassThroughFilter.h"
 #include "VTKViewer_GeometryFilter.h"
 
 // VTK Includes
@@ -47,6 +46,7 @@
 #include <vtkPolyDataMapper.h>
 #include <vtkProperty.h>
 #include <vtkRenderer.h>
+#include <vtkPassThroughFilter.h>
 
 using namespace std;
 
@@ -83,7 +83,7 @@ VTKViewer_Actor
                                                                 myPolygonOffsetUnits);
 
   for(int i = 0; i < 6; i++)
-    myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
+    myPassFilter.push_back(vtkPassThroughFilter::New());
 }
 
 /*!
@@ -347,7 +347,7 @@ VTKViewer_Actor
   unsigned long mTime = this->Superclass::GetMTime();
   unsigned long time = myTransformFilter->GetMTime();
   mTime = ( time > mTime ? time : mTime );
-  if(vtkDataSet *aDataSet = myPassFilter[0]->GetInput()){
+  if(vtkDataSet *aDataSet = dynamic_cast<vtkDataSet*>(myPassFilter[0]->GetInput())){ // bad usage of GetInput
     time = aDataSet->GetMTime();
     mTime = ( time > mTime ? time : mTime );
   }
index a0d9c4ba0dad34948af9a18a590da0ed89660522..72035b6aea01de18ff856f7c2696b1830f590793 100755 (executable)
@@ -43,15 +43,19 @@ class vtkDataSet;
 class vtkCamera;
 class vtkProperty;
 class vtkRenderer;
+class vtkPassThroughFilter;
 
 class VTKViewer_Transform;
 class VTKViewer_GeometryFilter;
 class VTKViewer_TransformFilter;
-class VTKViewer_PassThroughFilter;
 
 extern int VTKViewer_POINT_SIZE;
 extern int VTKViewer_LINE_WIDTH;
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! \class vtkLODActor
  * \brief For more information see <a href="http://www.vtk.org/">VTK documentation</a>
  */
@@ -313,7 +317,7 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor
   bool myStoreMapping;
   VTKViewer_GeometryFilter *myGeomFilter;
   VTKViewer_TransformFilter *myTransformFilter;
-  std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
+  std::vector<vtkPassThroughFilter*> myPassFilter;
 
   int myRepresentation;
   vtkProperty *myProperty;
@@ -330,4 +334,8 @@ class VTKVIEWER_EXPORT VTKViewer_Actor : public vtkLODActor
   bool myIsHighlighted;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif // VTKVIEVER_ACTOR_H
index 4218c4f20347471bfc3ebf98dd662072d09831e0..26610336968017acbe887ee6cf74f46fea14f363 100644 (file)
@@ -35,6 +35,8 @@
 #include <vtkObjectFactory.h>
 #include <vtkPointData.h>
 #include <vtkUnstructuredGrid.h>
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
 
 #include <vtkPoints.h>
 
@@ -78,34 +80,40 @@ VTKViewer_AppendFilter
 
 void
 VTKViewer_AppendFilter
-::SetPoints(vtkPoints* thePoints)
+::SetSharedPointsDataSet(vtkPointSet* thePointsDataSet)
 {
-  if(GetPoints() == thePoints)
+  if(GetSharedPointsDataSet() == thePointsDataSet)
     return;
 
-  myPoints = thePoints;
+  mySharedPointsDataSet = thePointsDataSet;
 
-  this->Modified();
+  Modified();
 }
 
-vtkPoints*
+vtkPointSet*
 VTKViewer_AppendFilter
-::GetPoints()
+::GetSharedPointsDataSet()
 {
-  return myPoints.GetPointer();
+  return mySharedPointsDataSet.GetPointer();
 }
 
-void
+int
 VTKViewer_AppendFilter
-::Execute()
+::RequestData(
+             vtkInformation *request,
+             vtkInformationVector **inputVector,
+             vtkInformationVector *outputVector)
 {
-  if(myPoints.GetPointer())
-    MakeOutput();
+  int aRet = 0;
+  if(GetSharedPointsDataSet())
+    aRet = MakeOutput(request,inputVector,outputVector);
   else
-    Superclass::Execute();
+    aRet = Superclass::RequestData(request,inputVector,outputVector);
 
   if(myDoMappingFlag)
     DoMapping();
+  
+  return aRet;
 }
 
 
@@ -119,10 +127,10 @@ VTKViewer_AppendFilter
   vtkIdType aPntStartId = 0;
   vtkIdType aCellStartId = 0;
 
-  for(vtkIdType aDataSetId = 0; aDataSetId < this->NumberOfInputs; ++aDataSetId){
-    vtkDataSet* aDataSet = (vtkDataSet *)(this->Inputs[aDataSetId]);
+  for(vtkIdType aDataSetId = 0; aDataSetId < this->GetNumberOfInputPorts(); ++aDataSetId){
+    vtkDataSet* aDataSet = (vtkDataSet *)(this->GetInput(aDataSetId));
     // Do mapping of the nodes
-    if(!myPoints.GetPointer()){
+    if(!GetSharedPointsDataSet()){
       vtkIdType aNbPnts = aDataSet->GetNumberOfPoints();
       myNodeRanges.push_back(aPntStartId + aNbPnts);
       aPntStartId += aNbPnts;
@@ -158,7 +166,7 @@ VTKViewer_AppendFilter
 ::GetPointOutputID(vtkIdType theInputID,
                   vtkIdType theInputDataSetID)
 {
-  if(myPoints.GetPointer())
+  if(GetSharedPointsDataSet())
     return theInputID;
 
   return GetOutputID(theInputID,theInputDataSetID,myNodeRanges);
@@ -170,7 +178,7 @@ VTKViewer_AppendFilter
 ::GetCellOutputID(vtkIdType theInputID,
                   vtkIdType theInputDataSetID)
 {
-  if(myPoints.GetPointer())
+  if(GetSharedPointsDataSet())
     return theInputID;
 
   return GetOutputID(theInputID,theInputDataSetID,myCellRanges);
@@ -217,7 +225,7 @@ VTKViewer_AppendFilter
                  vtkIdType& theStartID,
                  vtkIdType& theInputDataSetID)
 {
-  if(myPoints.GetPointer()) {
+  if(GetSharedPointsDataSet()) {
     theStartID = theInputDataSetID = 0;
     theInputID = theOutputID;
     return;
@@ -246,25 +254,41 @@ VTKViewer_AppendFilter
 }
 
 
-void 
+int
 VTKViewer_AppendFilter
-::MakeOutput()
+::MakeOutput(
+  vtkInformation *vtkNotUsed(request),
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
 {
   int idx;
   vtkIdType numPts, numCells, newCellId, cellId;
   vtkCellData *cd;
   vtkIdList *ptIds;
   vtkDataSet *ds;
-  vtkUnstructuredGrid *output = this->GetOutput();
+  int numInputs = this->GetNumberOfInputConnections(0);
+  
+  // get the output info object
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the ouptut
+  vtkUnstructuredGrid *output = vtkUnstructuredGrid::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
   //
-  numPts = myPoints->GetNumberOfPoints();
+  numPts = mySharedPointsDataSet->GetNumberOfPoints();
   if (numPts < 1) {
-    return;
+    return 0;
   }
   //
   numCells = 0;
-  for (idx = 0; idx < this->NumberOfInputs; ++idx) {
-    ds = (vtkDataSet *)(this->Inputs[idx]);
+  vtkInformation *inInfo = 0;
+  for (idx = 0; idx < numInputs;++idx) {
+    inInfo = inputVector[0]->GetInformationObject(idx);
+    ds = 0;
+    if (inInfo)
+      {
+      ds = vtkDataSet::SafeDownCast(inInfo->Get(vtkDataObject::DATA_OBJECT()));
+      }
     if (ds != NULL)  {
       if ( ds->GetNumberOfPoints() <= 0 && ds->GetNumberOfCells() <= 0 )  {
         continue; //no input, just skip
@@ -273,7 +297,7 @@ VTKViewer_AppendFilter
     }//if non-empty dataset
   }//for all inputs
   if (numCells < 1) {
-    return;
+    return 0;
   }
   //
   // Now can allocate memory
@@ -284,11 +308,18 @@ VTKViewer_AppendFilter
   // Append each input dataset together
   //
   // 1.points
-  output->SetPoints(myPoints.GetPointer());
+  output->SetPoints(GetSharedPointsDataSet()->GetPoints());
+  output->GetPointData()->PassData(GetSharedPointsDataSet()->GetPointData());
   // 2.cells
-  for (idx = 0; idx < this->NumberOfInputs; ++idx) {
-    ds = (vtkDataSet *)(this->Inputs[idx]);
+  for (idx = 0; idx < numInputs; ++idx) {
+    inInfo = inputVector[0]->GetInformationObject(idx);
+    ds = 0;
+    if (inInfo)
+      {
+      ds = vtkDataSet::SafeDownCast(inInfo->Get(vtkDataObject::DATA_OBJECT()));
+      }
     if (ds != NULL) {
+      
       numCells = ds->GetNumberOfCells(); 
       cd = ds->GetCellData();
       // copy cell and cell data
@@ -300,5 +331,12 @@ VTKViewer_AppendFilter
   }
   //
   ptIds->Delete();
+  return 1;
 }
 
+int VTKViewer_AppendFilter::FillInputPortInformation(int, vtkInformation *info)
+{
+  info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkDataSet");
+  info->Set(vtkAlgorithm::INPUT_IS_REPEATABLE(), 1);
+  return 1;
+}
index c9a756381b9b5a16d6460f29a33ba349d8764cc7..ef2e7f11d41d6845290f0aab1cf1d30587eeeb02 100644 (file)
 #include <vector>
 #include <map>
 
-class vtkPoints;
+class vtkPointSet;
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
 
 /*! \brief This class used same as vtkAppendFilter. See documentation on VTK for more information.
  */
@@ -48,10 +52,10 @@ public:
   bool DoMappingFlag() const;
 
   void
-  SetPoints(vtkPoints* thePoints);
+  SetSharedPointsDataSet(vtkPointSet* thePointsDataSet);
 
-  vtkPoints*
-  GetPoints();
+  vtkPointSet*
+  GetSharedPointsDataSet();
 
   vtkIdType
   GetPointOutputID(vtkIdType theInputID,
@@ -84,21 +88,26 @@ protected:
    * \brief Destructor.
    */
   ~VTKViewer_AppendFilter();
-  /*! \fn void Execute();
-   * \brief Filter culculation method.
-   */
-  virtual void Execute();
-  //
+
+  // Usual data generation method
+  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
+
+  virtual int FillInputPortInformation(int port, vtkInformation *info);
+  
   void DoMapping();
 
   void Reset();
 
-  void MakeOutput();
+  int MakeOutput(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
 
   bool myDoMappingFlag;
   TVectorIds myNodeRanges;
   TVectorIds myCellRanges;
-  vtkSmartPointer<vtkPoints> myPoints;
+  vtkSmartPointer<vtkPointSet> mySharedPointsDataSet;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 8cbd4d89b1fe234e8c156ce2e6b7eb17e3df24d1..4d965a8e12ba47dc72971fc4f15e45d9e39743d0 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "VTKViewer.h"
 
-#if (VTK_MAJOR_VERSION >= 4) &&  (VTK_MINOR_VERSION >= 4)
+#if ((VTK_MAJOR_VERSION == 4) &&  (VTK_MINOR_VERSION >= 4)) || (VTK_MAJOR_VERSION > 4)
 #  include <vtkIdTypeArray.h>
 #  define TCellLocationsArray vtkIdTypeArray
 #else
diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.cxx b/src/VTKViewer/VTKViewer_CellRectPicker.cxx
deleted file mode 100755 (executable)
index 016da1f..0000000
+++ /dev/null
@@ -1,443 +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/ or email : webmaster.salome@opencascade.com
-//
-#include <VTKViewer_CellRectPicker.h>
-
-#include "vtkGenericCell.h"
-#include "vtkAssemblyNode.h"
-#include "vtkAssemblyPath.h"
-#include "vtkObjectFactory.h"
-#include "vtkImageData.h"
-#include "vtkMapper.h"
-#include "vtkVolumeMapper.h"
-#include "vtkMath.h"
-#include "vtkLine.h"
-#include "vtkQuad.h"
-#include "vtkPoints.h"
-#include "vtkPlane.h"
-#include "vtkActor.h"
-
-vtkStandardNewMacro(VTKViewer_CellRectPicker);
-
-/*!Constructor.\n
- * \li create instance of generic cell
- * \li create two instances of Quad.
- */
-VTKViewer_CellRectPicker::VTKViewer_CellRectPicker()
-{
-  this->Cell = vtkGenericCell::New();
-  this->Quad1 = vtkQuad::New();
-  this->Quad2 = vtkQuad::New();
-}
-
-/*!Destructor.
- * \li Delete generic cell
- * \li Delete two quads.
- */
-VTKViewer_CellRectPicker::~VTKViewer_CellRectPicker()
-{
-  this->Cell->Delete();
-  this->Quad1->Delete();
-  this->Quad2->Delete();
-}
-
-/*!Clear \a ActorData and call VTKViewer_RectPicker::Initialize() method*/
-void VTKViewer_CellRectPicker::Initialize()
-{
-  ActorData.clear();
-  this->VTKViewer_RectPicker::Initialize();
-}
-
-/*!*/
-float VTKViewer_CellRectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol, 
-                                                 vtkAssemblyPath *path, vtkProp3D *prop3D, 
-                                                 vtkAbstractMapper3D *m)
-{
-  vtkDataSet *input;
-  vtkMapper *mapper;
-  vtkVolumeMapper *volumeMapper;
-  
-  // Get the underlying dataset
-  if ( (mapper=vtkMapper::SafeDownCast(m)) != NULL ) {
-    input = mapper->GetInput();
-  }
-  else if ( (volumeMapper=vtkVolumeMapper::SafeDownCast(m)) != NULL ) {
-    input = volumeMapper->GetInput();
-  }
-  else {
-    return VTK_LARGE_FLOAT;
-  }
-  
-  vtkIdType numCells;
-  if ( (numCells = input->GetNumberOfCells()) < 1 ) {
-    return 2.0;
-  }
-  
-  int i, k, subId;
-  float bounds[6], center[3], cp1[3], cp2[3];
-  float pcoord[3], weight[4], dist;
-  float t1[2], t2[2], x[3], t;
-  
-  for (k = 0; k < 4; k++) {
-    this->Quad1->PointIds->SetId(k, k);
-    this->Quad1->Points->SetPoint(k, p1[k]);
-    this->Quad2->PointIds->SetId(k, k);
-    this->Quad2->Points->SetPoint(k, p2[k]);
-  }
-  
-  /*
-  cout << "---> Selection area:"   << endl;
-  for (k = 0; k < 4; k++)
-  cout << "\t(" << p1[k][0] << ", " << p1[k][1] << ", " << p1[k][2] << ")";
-  cout << endl;
-  for (k = 0; k < 4; k++)
-  cout << "\t(" << p2[k][0] << ", " << p2[k][1] << ", " << p2[k][2] << ")";
-  cout << endl;
-  */
-  
-  vtkIdType cellId;
-  VTKViewer_CellData cellData;
-  VTKViewer_CellDataSet dataList;
-  
-  char inside; int n; float *point;
-  float tMin = VTK_LARGE_FLOAT, xMin[3];
-  for (cellId = 0; cellId < numCells; cellId++) {
-    input->GetCell(cellId, this->Cell);
-    
-    this->Cell->GetBounds(bounds);
-    for (i = 0; i < 3; i++)
-      center[i] = (bounds[2*i]+bounds[2*i+1])/2;
-    
-      /*
-      if (!VTKViewer_RectPicker::PointInside(center, p1, p2, 0.01))
-      continue;
-    */
-    
-    inside = 1;
-    n = this->Cell->Points->GetNumberOfPoints();
-    //cout << "---> Info cell " << cellId << " (" << n << "): " << endl;
-    for (k = 0; k < n; k++) {
-      point = this->Cell->Points->GetPoint(k);
-      //cout << "  P (" << point[0] << ", " << point[1] << ", " << point[2] << ")";
-      if (!VTKViewer_RectPicker::PointInside(point, p1, p2)) {
-        inside = 0; break;
-      }
-    }
-    //cout << endl;
-    if (!inside) continue;
-    
-    //cout << "---> Inside cell " << cellId << endl;
-    
-    this->Quad1->EvaluatePosition(center, 0, subId, pcoord, dist, weight);
-    t1[0] = pcoord[0]; t1[1] = pcoord[1];
-    this->Quad2->EvaluatePosition(center, 0, subId, pcoord, dist, weight);
-    t2[0] = pcoord[0]; t2[1] = pcoord[1];
-    
-    pcoord[0] = (t1[0]+t2[0])/2; pcoord[1] = (t1[1]+t2[1])/2; pcoord[2] = 0;
-    
-    this->Quad1->EvaluateLocation(subId, pcoord, cp1, weight);
-    this->Quad2->EvaluateLocation(subId, pcoord, cp2, weight);
-    
-    if (this->Cell->IntersectWithLine(cp1, cp2, tol, t, x, pcoord, subId)) {
-      cellData.cellId = cellId;
-      cellData.subId = subId;
-      cellData.depth = t;
-      for (i = 0; i < 3; i++) {
-        cellData.p1[i] = cp1[i];
-        cellData.p2[i] = cp2[i];
-      }
-      /*
-      cout << "---> Include cell " << cellId << ", depth = " << t   << endl;
-      cout << "     P1 = (" << cp1[0] << ", " << cp1[1] << ", " << cp1[2] << ")"  << endl;
-      cout << "     P2 = (" << cp2[0] << ", " << cp2[1] << ", " << cp2[2] << ")"  << endl;
-      */
-      IncludeCell(input, cellData, dataList);
-      if (t < tMin) {
-        tMin = t;
-        for (i = 0; i < 3; i++)
-          xMin[i] = x[i];
-      }
-    }
-  }
-  
-  if (!dataList.empty()) {
-    // compare against other actors
-    IncludeActor(prop3D, input, dataList);
-    if (tMin < this->GlobalTMin) {
-      this->MarkPicked(path, prop3D, m, tMin, xMin);
-    }
-  }
-  
-  return tMin;
-}
-
-/*!*/
-void VTKViewer_CellRectPicker::IncludeCell(vtkDataSet* input, 
-                                           VTKViewer_CellData cellData, 
-                                           VTKViewer_CellDataSet& dataList)
-{
-  vtkGenericCell* cell1 = vtkGenericCell::New();
-  vtkGenericCell* cell2 = vtkGenericCell::New();
-  vtkCell* sub1 = 0;
-  vtkCell* sub2 = 0;
-  
-  input->GetCell(cellData.cellId, cell1);
-  if (cell1->GetNumberOfFaces() > 0)
-    sub1 = cell1->GetFace(cellData.subId);
-  
-  int i, result;
-  float p1[3], p2[3], dir[3];
-  char add = 1;
-  
-  VTKViewer_CellData curData;
-  VTKViewer_CellDataSet::iterator it;
-  for (it = dataList.begin(); it != dataList.end();) {
-    curData = *it;
-    for (i = 0; i < 3; i++) {
-      p1[i] = (cellData.p1[i]+curData.p1[i])/2;
-      p2[i] = (cellData.p2[i]+curData.p2[i])/2;
-      dir[i] = p2[i] - p1[i];
-    }
-    
-    input->GetCell(curData.cellId, cell2);
-    sub2 = 0;
-    if (cell2->GetNumberOfFaces() > 0)
-      sub2 = cell2->GetFace(curData.subId);
-    
-    if (sub1) {
-      if (sub2)
-        result = IntersectCells(sub1, cellData.depth, 
-        sub2, curData.depth, dir);
-      else 
-        result = IntersectCells(sub1, cellData.depth, 
-        cell2, curData.depth, dir);
-    }
-    else {
-      if (sub2)
-        result = IntersectCells(cell1, cellData.depth, 
-        sub2, curData.depth, dir);
-      else
-        result = IntersectCells(cell1, cellData.depth, 
-        cell2, curData.depth, dir);
-    }
-    /*
-    cout << "     Direction = (" << dir[0] << ", " << dir[1] << ", " << dir[2] << ")";
-    cout << "     depth = " << cellData.depth << ", " << curData.depth << ", " << result << endl;
-    */
-    if (result > 0) {
-      if (result == 1) {
-        it = dataList.erase(it);
-        continue;
-      } 
-      else {
-        add = 0;
-        break;
-      }
-    }
-    ++it;
-  }
-  if (add) {
-    //cout << "     add "   << endl;
-    dataList.push_back(cellData);
-  }
-  
-  cell1->Delete();
-  cell2->Delete();
-}
-
-/*!*/
-void VTKViewer_CellRectPicker::IncludeActor(vtkProp3D* prop, 
-                                            vtkDataSet* input, 
-                                            VTKViewer_CellDataSet& dataList)
-{
-  vtkGenericCell* cell1 = vtkGenericCell::New();
-  vtkGenericCell* cell2 = vtkGenericCell::New();
-  
-  int i, result;
-  float p1[3], p2[3], dir[3];
-  char removed;
-  
-  VTKViewer_CellDataSet actorData;
-  VTKViewer_CellData curData, cellData;
-  VTKViewer_CellDataSet::iterator it1, it2;
-  VTKViewer_ActorDataMap::iterator it;
-  
-  for (it1 = dataList.begin(); it1 != dataList.end();) {
-    cellData = *it1;
-    input->GetCell(cellData.cellId, cell1);
-    removed = 0;
-    
-    for (it = ActorData.begin(); it != ActorData.end(); ++it) {
-      //vtkActor* actor = (*it).first;
-      actorData = (*it).second;
-      
-      for (it2 = actorData.begin(); it2 != actorData.end();) {
-        curData = *it2;
-        for (i = 0; i < 3; i++) {
-          p1[i] = (cellData.p1[i]+curData.p1[i])/2;
-          p2[i] = (cellData.p2[i]+curData.p2[i])/2;
-          dir[i] = p2[i] - p1[i];
-        }
-        
-        input->GetCell(curData.cellId, cell2);
-        result = IntersectCells(cell1, cellData.depth,
-          cell2, curData.depth, dir);
-        if (result > 0) {
-          if (result == 1) {
-            it2 = actorData.erase(it2);
-            continue;
-          }
-          else {
-            removed = 1;
-            it1 = dataList.erase(it1);
-            break;
-          }
-          break;
-        }
-        ++it2;
-      }
-      if (removed) break;
-    } // by actors
-    if (!removed) ++it1;
-  }
-  
-  if (!dataList.empty()) {
-    vtkActor* actor;
-    if ((actor = vtkActor::SafeDownCast(prop)) != NULL)
-      ActorData[actor] = dataList;
-  }
-  
-  cell1->Delete();
-  cell2->Delete();
-}
-
-/*! The method returns a non-zero value, if the cells intersect each other 
- * in the direction dir[3].
- * \param c1 - first vtkCell pointer
- * \param d1 - 
- * \param c2 - second vtkCell pointer
- * \param d2 - 
- * \param dir[3] - direction
- * \retval integer - Returned value is 1 if the first cell is top of 
- * the second one according to direction and 2 if the second cell is top.
- */
-int VTKViewer_CellRectPicker::IntersectCells(vtkCell* c1, float d1, vtkCell* c2, float d2, float dir[3])
-{
-  int i, k;
-  float *orig, cp[3], bounds[6];
-  vtkCell* cell = 0;
-  vtkCell* tcell = 0;
-  
-  // define the central point and cell for projection
-  if (fabs(d1-d2) < 1.e-7) return 0;
-  
-  if (d1 < d2) {
-    orig = c1->Points->GetPoint(0);
-    cell = c1;
-    tcell = c2;
-    c2->GetBounds(bounds);
-    for (i = 0; i < 3; i++)
-      cp[i] = (bounds[2*i] + bounds[2*i+1])/2;
-  }
-  else if (d1 > d2) {
-    orig = c2->Points->GetPoint(0);
-    cell = c2;
-    tcell = c1;
-    c1->GetBounds(bounds);
-    for (i = 0; i < 3; i++)
-      cp[i] = (bounds[2*i] + bounds[2*i+1])/2;
-  }
-  
-  float proj[3];
-  vtkPlane::GeneralizedProjectPoint(cp, orig, dir, proj);
-  
-  float *p, pp[3];
-  vtkPoints* aPoints = vtkPoints::New();
-  for (k = 0; k < cell->Points->GetNumberOfPoints(); k++) {
-    p = cell->Points->GetPoint(k);
-    vtkPlane::GeneralizedProjectPoint(p, orig, dir, pp);
-    aPoints->InsertNextPoint(pp[0], pp[1], pp[2]);
-  }
-  
-  int result = 0;
-  if (PointInside(proj, aPoints)) {
-    result = (d1<d2) ? 1 : 2;
-  }
-  
-  if (result == 0) {
-    // test for boundary cells
-    for (k = 0; k < tcell->Points->GetNumberOfPoints(); k++) {
-      p = tcell->Points->GetPoint(k);
-      vtkPlane::GeneralizedProjectPoint(p, orig, dir, pp);
-      if (PointInside(pp, aPoints)) {
-        result = 1; break;
-      }
-    }
-    if (result && d2<d1) result = 2;
-  }
-  
-  aPoints->Delete();
-  return result;
-}
-
-/*! Check point position.
- * \param point[3] - point
- * \param list - point data set
- * \retval 0 or 1 - The method returns a non-zero value, if the point is inlide point data set
- */
-char VTKViewer_CellRectPicker::PointInside(float point[3], vtkPoints* list)
-{
-  int i, k, l, n;
-  float x[3], *a1, *a2, v[3], p[3], q[3];
-  
-  n = list->GetNumberOfPoints();
-  if (n < 3) return 0;
-  
-  for (k = 0; k < n; k++) {
-    l = k+1; if (l == n) l = 0;
-    a1 = list->GetPoint(k);
-    a2 = list->GetPoint(l);
-    
-    // compute vectors
-    for (i = 0; i < 3; i++) {
-      x[i] = point[i] - a1[i];
-      v[i] = a2[i]-a1[i];
-    }
-    
-    // check if point coincides with vertex
-    if (x[0]*x[0] + x[1]*x[1] + x[2]*x[2] < 1.e-7) return 0;
-    
-    // compute normal
-    vtkMath::Cross(x, v, p);
-    
-    // check if point lays on edge
-    if (p[0]*p[0] + p[1]*p[1] + p[2]*p[2] < 1.e-7) return 0;
-    
-    // check if normals are in the same direction
-    if (k > 0) {
-      if (vtkMath::Dot(p, q) < 0.0) return 0;
-    }
-    
-    // remember normal direction
-    for (i = 0; i < 3; i++) {
-      q[i] = p[i];
-    }
-  }
-  
-  return 1;
-}
diff --git a/src/VTKViewer/VTKViewer_CellRectPicker.h b/src/VTKViewer/VTKViewer_CellRectPicker.h
deleted file mode 100755 (executable)
index f50636a..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//  SALOME VTKViewer : build VTK viewer into Salome desktop
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//  File    : VTKViewer_CellRectPicker.h
-//  Author  : Natalia KOPNOVA
-//  Module  : SALOME
-
-
-#ifndef __VTKViewer_CellRectPicker_h
-#define __VTKViewer_CellRectPicker_h
-
-#include "VTKViewer_RectPicker.h"
-#include <map>
-#include <vector>
-
-/*! \brief Cell data structure*/
-typedef struct {
-  vtkIdType cellId;
-  int subId;
-  float depth;
-  float p1[3];
-  float p2[3];
-} VTKViewer_CellData;
-
-typedef std::vector<VTKViewer_CellData> VTKViewer_CellDataSet;
-typedef std::map<vtkActor*, VTKViewer_CellDataSet> VTKViewer_ActorDataMap;
-
-class vtkCell;
-class vtkGenericCell;
-class vtkQuad;
-/*!Rectangular cell picker class.*/
-class VTK_EXPORT VTKViewer_CellRectPicker : public VTKViewer_RectPicker
-{
-public:
-  /*!Create new instance of CellRectPicker class.*/
-  static VTKViewer_CellRectPicker *New();
-  
-  /*! \fn vtkTypeMacro(VTKViewer_CellRectPicker,VTKViewer_RectPicker);
-   * \brief VTK type macros.
-   */
-  vtkTypeMacro(VTKViewer_CellRectPicker,VTKViewer_RectPicker);
-
-  /*! \fn VTKViewer_CellDataSet GetCellData(vtkActor* actor)
-   * \brief Get the id of the picked cells. 
-   * \brief (Notes: use GetActors() to get picked actors list)
-   * \param actor - vtkActor pointer
-   */
-  VTKViewer_CellDataSet GetCellData(vtkActor* actor) 
-    { return this->ActorData[actor]; }
-
-  static int IntersectCells(vtkCell* c1, float d1, vtkCell* c2, float d2, float dir[3]);
-
-  static char PointInside(float point[3], vtkPoints* list);
-
-protected:
-  
-  VTKViewer_CellRectPicker();
-  ~VTKViewer_CellRectPicker();
-
-  VTKViewer_ActorDataMap ActorData;
-
-  virtual float IntersectWithHex(float p1[4][4], float p2[4][4], float tol, 
-                          vtkAssemblyPath *path, vtkProp3D *p, 
-                          vtkAbstractMapper3D *m);
-
-  void Initialize();
-
-  
-  void IncludeCell(vtkDataSet* input, VTKViewer_CellData cellData, VTKViewer_CellDataSet& dalaList);
-  void IncludeActor(vtkProp3D* prop, vtkDataSet* input, VTKViewer_CellDataSet& dataList);
-
-private:
-  vtkGenericCell *Cell;
-  vtkQuad* Quad1;
-  vtkQuad* Quad2;
-};
-
-#endif
-
-
index b8064df2bce10c9e117dea32397e8d5b4b7cc86b..46e6377f6cd7b2c03ea194a0412b08fc797fbc80 100644 (file)
 #include <set>
 #include <map>
 
+#ifdef WNT
+#include <algorithm>
+#endif
+
 #include <vtkUnstructuredGrid.h>
 #include <vtkGeometryFilter.h>
 #include <vtkDelaunay3D.h>
 #include <vtkCell.h>
 #include <vtkPlane.h>
 #include <vtkMath.h>
+#include <vtkCellArray.h>
+#include <vtkTriangle.h>
+#include <vtkOrderedTriangulator.h>
+
+#ifdef _DEBUG_
+static int DEBUG_TRIA_EXECUTE = 0;
+#else
+static int DEBUG_TRIA_EXECUTE = 0;
+#endif
 
 namespace
 {
@@ -71,31 +84,117 @@ namespace
   typedef std::vector<TPolygon> TPolygons;
 }
 
-/*!
-  Constructor
-*/
+
+//----------------------------------------------------------------------------
 VTKViewer_Triangulator
 ::VTKViewer_Triangulator():
-  myInput(NULL),
-  myCellId(-1),
-  myShowInside(-1),
-  myAllVisible(-1),
-  myCellsVisibility(NULL),
-  myCellIds(vtkIdList::New())
+  myCellIds(vtkIdList::New()),
+  myFaceIds(vtkIdList::New()),
+  myPoints(vtkPoints::New()),
+  myPointIds(NULL)
 {}
 
 
-/*!
-  Destructor
-*/
+//----------------------------------------------------------------------------
 VTKViewer_Triangulator
 ::~VTKViewer_Triangulator()
 {
   myCellIds->Delete();
+  myFaceIds->Delete();
+  myPoints->Delete();
+}
+
+
+//----------------------------------------------------------------------------
+vtkPoints*
+VTKViewer_Triangulator
+::InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId)
+{
+  myPoints->Reset();
+  myPoints->Modified(); // the VTK bug
+
+  vtkIdType aNumPts;
+  theInput->GetCellPoints(theCellId, aNumPts, myPointIds); 
+  if ( aNumPts > 0 ) {
+    vtkFloatingPointType anAbsoluteCoord[3];
+    myPoints->SetNumberOfPoints(aNumPts);
+    vtkPoints *anInputPoints = theInput->GetPoints();
+    for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+      anInputPoints->GetPoint(myPointIds[aPntId], anAbsoluteCoord);
+      myPoints->SetPoint(aPntId, anAbsoluteCoord);
+    }
+  }
+
+  return myPoints;
+}
+
+
+//----------------------------------------------------------------------------
+vtkIdType 
+VTKViewer_Triangulator
+::GetNbOfPoints()
+{
+  return myPoints->GetNumberOfPoints();
+}
+
+
+//----------------------------------------------------------------------------
+vtkIdType 
+VTKViewer_Triangulator
+::GetPointId(vtkIdType thePointId)
+{
+  return thePointId;
+}
+
+
+//----------------------------------------------------------------------------
+vtkFloatingPointType 
+VTKViewer_Triangulator
+::GetCellLength()
+{
+  vtkFloatingPointType aBounds[6];
+  myPoints->GetBounds(aBounds);
+
+  vtkFloatingPointType aCoordDiff[3];
+  aCoordDiff[0] = (aBounds[1] - aBounds[0]);
+  aCoordDiff[1] = (aBounds[3] - aBounds[2]);
+  aCoordDiff[2] = (aBounds[5] - aBounds[4]);
+
+  return sqrt(aCoordDiff[0]*aCoordDiff[0] + 
+             aCoordDiff[1]*aCoordDiff[1] + 
+             aCoordDiff[2]*aCoordDiff[2]);
+}
+
+
+//----------------------------------------------------------------------------
+void 
+VTKViewer_Triangulator
+::GetCellNeighbors(vtkUnstructuredGrid *theInput,
+                  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)]);
+
+  theInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds);
 }
 
 
+//----------------------------------------------------------------------------
+vtkIdType 
+VTKViewer_Triangulator
+::GetConnectivity(vtkIdType thePntId)
+{
+  return myPointIds[thePntId];
+}
+
 
+//----------------------------------------------------------------------------
 bool 
 VTKViewer_Triangulator
 ::Execute(vtkUnstructuredGrid *theInput,
@@ -110,15 +209,9 @@ VTKViewer_Triangulator
          std::vector<vtkIdType>& theVTK2ObjIds,
          bool theIsCheckConvex)
 {
-  myInput = theInput;
-  myCellId = theCellId;
-  myShowInside = theShowInside;
-  myAllVisible = theAllVisible;
-  myCellsVisibility = theCellsVisibility;
-
-  vtkPoints *aPoints = InitPoints();
+  vtkPoints *aPoints = InitPoints(theInput, theCellId);
   vtkIdType aNumPts = GetNbOfPoints();
-  //cout<<"Triangulator - aNumPts = "<<aNumPts<<"\n";
+  if(DEBUG_TRIA_EXECUTE) cout<<"Triangulator - aNumPts = "<<aNumPts<<"\n";
 
   if(aNumPts == 0)
     return true;
@@ -129,7 +222,7 @@ VTKViewer_Triangulator
     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";
+      if(DEBUG_TRIA_EXECUTE) cout<<"\taPntId = "<<GetPointId(aPntId)<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}\n";
       aCellCenter[0] += aPntCoord[0];
       aCellCenter[1] += aPntCoord[1];
       aCellCenter[2] += aPntCoord[2];
@@ -143,8 +236,8 @@ VTKViewer_Triangulator
   int aNumFaces = GetNumFaces();
 
   static vtkFloatingPointType EPS = 1.0E-2;
-  vtkFloatingPointType aDistEps = aCellLength * EPS;
-  //cout<<"\taCellLength = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
+  vtkFloatingPointType aDistEps = aCellLength/3.0 * EPS;
+  if(DEBUG_TRIA_EXECUTE) cout<<"\taNumFaces = "<<aNumFaces<<"; aCellLength = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
 
   // To initialize set of points that belong to the cell
   typedef std::set<vtkIdType> TPointIds;
@@ -162,9 +255,9 @@ VTKViewer_Triangulator
   for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
     vtkCell* aFace = GetFace(aFaceId);
     
-    GetCellNeighbors(theCellId, aFace, myCellIds);
-    if((!myAllVisible && !myCellsVisibility[myCellIds->GetId(0)]) || 
-       myCellIds->GetNumberOfIds() <= 0 || myShowInside)
+    GetCellNeighbors(theInput, theCellId, aFace, myCellIds);
+    if((!theAllVisible && !theCellsVisibility[myCellIds->GetId(0)]) || 
+       myCellIds->GetNumberOfIds() <= 0 || theShowInside)
     {
       TPointIds aPointIds;
       vtkIdList *anIdList = aFace->PointIds;  
@@ -197,8 +290,10 @@ VTKViewer_Triangulator
 
     // 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(DEBUG_TRIA_EXECUTE) {
+      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
@@ -207,7 +302,17 @@ VTKViewer_Triangulator
       aPoints->GetPoint(aNewPts[1],aCoord[1]);
       aPoints->GetPoint(aNewPts[2],aCoord[2]);
       
-      // To calculate plane normal
+      /* To calculate plane normal for face (aFace)
+
+
+       ^ aNormal
+       |     
+       |   ^ aVector01
+       | /
+       /_________> aVector02
+       
+      
+      */
       vtkFloatingPointType aVector01[3] = { aCoord[1][0] - aCoord[0][0],
                                            aCoord[1][1] - aCoord[0][1],
                                            aCoord[1][2] - aCoord[0][2] };
@@ -216,6 +321,9 @@ VTKViewer_Triangulator
                                            aCoord[2][1] - aCoord[0][1],
                                            aCoord[2][2] - aCoord[0][2] };
       
+      vtkMath::Normalize(aVector01);
+      vtkMath::Normalize(aVector02);
+
       // To calculate the normal for the triangle
       vtkFloatingPointType aNormal[3];
       vtkMath::Cross(aVector02,aVector01,aNormal);
@@ -232,13 +340,72 @@ VTKViewer_Triangulator
          vtkFloatingPointType aPntCoord[3];
          vtkIdType aPntId = *anIter;
          aPoints->GetPoint(aPntId,aPntCoord);
+         
+         vtkFloatingPointType aVector0Pnt[3] = { aPntCoord[0] - aCoord[0][0],
+                                                 aPntCoord[1] - aCoord[0][1],
+                                                 aPntCoord[2] - aCoord[0][2] };
+
+         
+         vtkMath::Normalize(aVector0Pnt);
+         
+         vtkFloatingPointType aNormalPnt[3];
+         // calculate aNormalPnt
+         {
+           vtkFloatingPointType aCosPnt01 = vtkMath::Dot(aVector0Pnt,aVector01);
+           vtkFloatingPointType aCosPnt02 = vtkMath::Dot(aVector0Pnt,aVector02);
+           if(aCosPnt01<-1)
+             aCosPnt01 = -1;
+           if(aCosPnt01>1)
+             aCosPnt01 = 1;
+           if(aCosPnt02<-1)
+             aCosPnt02 = -1;
+           if(aCosPnt02>1)
+             aCosPnt02 = 1;
+
+           vtkFloatingPointType aDist01,aDist02;// deflection from Pi/3 angle (equilateral triangle)
+           vtkFloatingPointType aAngPnt01 = fabs(acos(aCosPnt01));
+           vtkFloatingPointType aAngPnt02 = fabs(acos(aCosPnt02));
+
+           /*  check that triangle similar to equilateral triangle
+               AOC or COB ?
+               aVector0Pnt = (OC)
+               aVector01   = (OB)
+               aVector02   = (OA)
+           
+           B
+           ^ aVector01  C     
+           |           ^ aVector0Pnt  
+           |     _____/ 
+           | ___/
+           |/________> aVector02
+           O          A
+           */
+           aDist01 = fabs(aAngPnt01-(vtkMath::Pi())/3.0); 
+           aDist02 = fabs(aAngPnt02-(vtkMath::Pi())/3.0);
+           
+           // caculate a normal for best triangle
+           if(aDist01 <= aDist02)
+             vtkMath::Cross(aVector0Pnt,aVector01,aNormalPnt);
+           else
+             vtkMath::Cross(aVector0Pnt,aVector02,aNormalPnt);
+
+         }
+         
+         vtkMath::Normalize(aNormalPnt);
+         
+         if(DEBUG_TRIA_EXECUTE)
+           cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"};";
+         
          vtkFloatingPointType aDist = vtkPlane::DistanceToPlane(aPntCoord,aNormal,aCoord[0]);
-         //cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
+         if(DEBUG_TRIA_EXECUTE) cout<<": aDist = "<<aDist;
          if(fabs(aDist) < aDistEps){
            aPointIds.insert(aPntId);
            aCenter[0] += aPntCoord[0];
            aCenter[1] += aPntCoord[1];
            aCenter[2] += aPntCoord[2];
+           if(DEBUG_TRIA_EXECUTE) cout  << "; Added = TRUE" << endl;
+         } else {
+           if(DEBUG_TRIA_EXECUTE) cout  << "; Added = FALSE" << endl;
          }
        }
        int aNbPoints = aPointIds.size();
@@ -254,9 +421,11 @@ VTKViewer_Triangulator
       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(DEBUG_TRIA_EXECUTE) {
+       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];
@@ -269,8 +438,10 @@ VTKViewer_Triangulator
                                           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";
+      if(DEBUG_TRIA_EXECUTE) {
+       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;
@@ -284,6 +455,19 @@ VTKViewer_Triangulator
                                anIds.begin(),anIds.end(),
                                std::inserter(anIntersection,anIntersection.begin()));
          
+
+         if(DEBUG_TRIA_EXECUTE) {
+           cout << "anIntersection:";
+           TPointIds::iterator aII = anIntersection.begin();
+           for(;aII!=anIntersection.end();aII++)
+             cout << *aII << ",";
+           cout << endl;
+           cout << "anIds         :";
+           TPointIds::const_iterator aIIds = anIds.begin();
+           for(;aIIds!=anIds.end();aIIds++)
+             cout << *aIIds << ",";
+           cout << endl;
+         }
          if(anIntersection == anIds){
            aRemoveFace2PointIds.insert(anIds);
          }
@@ -318,19 +502,25 @@ VTKViewer_Triangulator
          
          vtkFloatingPointType aCross[3];
          vtkMath::Cross(aVector,aVector0,aCross);
-         bool aGreaterThanPi = vtkMath::Dot(aCross,aNormal) < 0;
+         vtkFloatingPointType aCr = vtkMath::Dot(aCross,aNormal);
+         bool aGreaterThanPi = aCr < 0;
          vtkFloatingPointType aCosinus = vtkMath::Dot(aVector,aVector0);
-         if(aCosinus > 1.0)
+         vtkFloatingPointType anAngle = 0.0;
+         if(aCosinus >= 1.0){
            aCosinus = 1.0;
-         if(aCosinus < -1.0)
+         } else 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";
+           anAngle = vtkMath::Pi();
+         } else {
+           anAngle = acos(aCosinus);
+           if(aGreaterThanPi)
+             anAngle = 2*vtkMath::Pi() - anAngle;
+         }
+         
+         if(DEBUG_TRIA_EXECUTE) {
+           cout << "\t\t\t vtkMath::Dot(aCross,aNormal)="<<aCr<<endl;
+           cout<<"\t\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}";
+           cout<<"; aGreaterThanPi = "<<aGreaterThanPi<<"; aCosinus = "<<aCosinus<<"; anAngle = "<<anAngle<<"\n";
          }
          aSortedPointIds[anAngle] = aPntId;
        }
@@ -340,16 +530,18 @@ VTKViewer_Triangulator
          ::TConnectivities aConnectivities(aNumFacePts);
          TSortedPointIds::const_iterator anIter = aSortedPointIds.begin();
          TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end();
+         if(DEBUG_TRIA_EXECUTE) cout << "Polygon:";
          for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){
            vtkIdType aPntId = anIter->second;
            aConnectivities[anId] = GetConnectivity(aPntId);
+           if(DEBUG_TRIA_EXECUTE) cout << aPntId << ",";
          }
+         if(DEBUG_TRIA_EXECUTE) cout << endl;
          aPolygons.push_back(::TPolygon(aConnectivities,aCenter,aNormal));
        }
       }
     }
   }
-  
   if(aPolygons.empty())
     return true;
 
@@ -360,15 +552,17 @@ VTKViewer_Triangulator
       ::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";
+      if(DEBUG_TRIA_EXECUTE) {
+       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(DEBUG_TRIA_EXECUTE) cout<<"\t\taPntId = "<<anId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
        if(aDist < -aDistEps)
          return false;
       }
@@ -381,7 +575,13 @@ VTKViewer_Triangulator
     int aNbPolygons = aPolygons.size();
     for (int aPolygonId = 0; aPolygonId < aNbPolygons; aPolygonId++) {
       ::TPolygon& aPolygon = aPolygons[aPolygonId];
+      if(DEBUG_TRIA_EXECUTE) cout << "PoilygonId="<<aPolygonId<<" | ";
       TConnectivities& aConnectivities = aPolygon.myConnectivities;
+      if(DEBUG_TRIA_EXECUTE) {
+       for(int i=0;i<aConnectivities.size();i++)
+         cout << aConnectivities[i] << ",";
+       cout << endl;
+      }
       int aNbPoints = aConnectivities.size();
       vtkIdType aNewCellId = theOutput->InsertNextCell(VTK_POLYGON,aNbPoints,&aConnectivities[0]);
       if(theStoreMapping)
@@ -390,167 +590,149 @@ VTKViewer_Triangulator
     }
   }
 
-  //cout<<"\tTriangulator - Ok\n";
+  if(DEBUG_TRIA_EXECUTE) cout<<"\tTriangulator - Ok\n";
+  
   return true;
 }
 
-/*!
-  Constructor
-*/
+
+//----------------------------------------------------------------------------
 VTKViewer_OrderedTriangulator
 ::VTKViewer_OrderedTriangulator():
-  myCell(vtkGenericCell::New())
-{}
+  myTriangulator(vtkOrderedTriangulator::New()),
+  myBoundaryTris(vtkCellArray::New()),
+  myTriangle(vtkTriangle::New())
+{
+  myBoundaryTris->Allocate(VTK_CELL_SIZE);
+  myTriangulator->PreSortedOff();
+}
+
 
-/*!
-  Destructor
-*/
+//----------------------------------------------------------------------------
 VTKViewer_OrderedTriangulator
 ::~VTKViewer_OrderedTriangulator()
 {
-  myCell->Delete();
+  myTriangle->Delete();
+  myBoundaryTris->Delete();
+  myTriangulator->Delete();
 }
 
+
+//----------------------------------------------------------------------------
 vtkPoints*
 VTKViewer_OrderedTriangulator
-::InitPoints()
+::InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId)
 {
-  myInput->GetCell(myCellId,myCell);
-  return myInput->GetPoints();
-}
+  myBoundaryTris->Reset();
 
-vtkIdType 
-VTKViewer_OrderedTriangulator
-::GetNbOfPoints()
-{
-  return myCell->GetNumberOfPoints();
-}
+  vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId);
+  vtkIdType aNumPts = myPoints->GetNumberOfPoints();
+  if ( aNumPts > 0 ) {
+    myTriangulator->InitTriangulation(0.0, 1.0, 0.0, 1.0, 0.0, 1.0, aNumPts);
 
-vtkIdType 
-VTKViewer_OrderedTriangulator
-::GetPointId(vtkIdType thePointId)
-{
-  return myCell->GetPointId(thePointId);
-}
+    vtkFloatingPointType aBounds[6];
+    myPoints->GetBounds(aBounds);
 
-vtkFloatingPointType 
-VTKViewer_OrderedTriangulator
-::GetCellLength()
-{
-  return sqrt(myCell->GetLength2());
+    vtkFloatingPointType anAbsoluteCoord[3];
+    vtkFloatingPointType aParamentrucCoord[3];
+    for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+      myPoints->GetPoint(aPntId, anAbsoluteCoord);
+      aParamentrucCoord[0] = (anAbsoluteCoord[0] - aBounds[0]) / (aBounds[1] - aBounds[0]);
+      aParamentrucCoord[1] = (anAbsoluteCoord[1] - aBounds[2]) / (aBounds[3] - aBounds[2]);
+      aParamentrucCoord[2] = (anAbsoluteCoord[2] - aBounds[4]) / (aBounds[5] - aBounds[4]);
+      myTriangulator->InsertPoint(aPntId, anAbsoluteCoord, aParamentrucCoord, 0);
+    }
+
+    myTriangulator->Triangulate();
+    myTriangulator->AddTriangles(myBoundaryTris);
+  }
+
+  return aPoints;
 }
 
+
+//----------------------------------------------------------------------------
 vtkIdType 
 VTKViewer_OrderedTriangulator
 ::GetNumFaces()
 {
-  return myCell->GetNumberOfFaces();
+  return myBoundaryTris->GetNumberOfCells();
 }
 
+
+//----------------------------------------------------------------------------
 vtkCell*
 VTKViewer_OrderedTriangulator
 ::GetFace(vtkIdType theFaceId)
 {
-  return myCell->GetFace(theFaceId);
-}
+  vtkIdType aNumCells = myBoundaryTris->GetNumberOfCells();
+  if ( theFaceId < 0 || theFaceId >= aNumCells ) 
+    return NULL;
 
-void 
-VTKViewer_OrderedTriangulator
-::GetCellNeighbors(vtkIdType theCellId,
-                  vtkCell* theFace,
-                  vtkIdList* theCellIds)
-{
-  vtkIdList *anIdList = theFace->PointIds;  
-  myInput->GetCellNeighbors(theCellId, anIdList, theCellIds);
-}
+  vtkIdType *aCells = myBoundaryTris->GetPointer();
 
-vtkIdType 
-VTKViewer_OrderedTriangulator
-::GetConnectivity(vtkIdType thePntId)
-{
-  return thePntId;
+  // Each triangle has three points plus number of points
+  vtkIdType *aCellPtr = aCells + 4*theFaceId;
+  
+  myTriangle->PointIds->SetId(0, aCellPtr[1]);
+  myTriangle->Points->SetPoint(0, myPoints->GetPoint(aCellPtr[1]));
+
+  myTriangle->PointIds->SetId(1, aCellPtr[2]);
+  myTriangle->Points->SetPoint(1, myPoints->GetPoint(aCellPtr[2]));
+
+  myTriangle->PointIds->SetId(2, aCellPtr[3]);
+  myTriangle->Points->SetPoint(2, myPoints->GetPoint(aCellPtr[3]));
+
+  return myTriangle;
 }
 
-/*!
-  Constructor
-*/
+
+//----------------------------------------------------------------------------
 VTKViewer_DelaunayTriangulator
 ::VTKViewer_DelaunayTriangulator():
   myUnstructuredGrid(vtkUnstructuredGrid::New()),
   myGeometryFilter(vtkGeometryFilter::New()),
   myDelaunay3D(vtkDelaunay3D::New()),
-  myFaceIds(vtkIdList::New()),
-  myPoints(vtkPoints::New()),
-  myPolyData(NULL),
-  myPointIds(NULL)
+  myPolyData(NULL)
 {
+  myUnstructuredGrid->Initialize();
+  myUnstructuredGrid->Allocate();
+  myUnstructuredGrid->SetPoints(myPoints);
+
   myDelaunay3D->SetInput(myUnstructuredGrid);
   myGeometryFilter->SetInput(myDelaunay3D->GetOutput());
+  myPolyData = myGeometryFilter->GetOutput();
 }
 
 
-
-/*!
-  Destructor
-*/
+//----------------------------------------------------------------------------
 VTKViewer_DelaunayTriangulator
 ::~VTKViewer_DelaunayTriangulator()
 {
   myUnstructuredGrid->Delete();
   myGeometryFilter->Delete();
   myDelaunay3D->Delete();
-  myFaceIds->Delete();
-  myPoints->Delete();
 }
 
 
+//----------------------------------------------------------------------------
 vtkPoints* 
 VTKViewer_DelaunayTriangulator
-::InitPoints()
+::InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId)
 {
-  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);
-    }
-  }
+  vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId);
 
+  myPoints->Modified();
+  myUnstructuredGrid->Modified();
   myGeometryFilter->Update();
-  myPolyData = myGeometryFilter->GetOutput();
-
-  return myPoints;
+  
+  return aPoints;
 }
 
-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()
@@ -558,32 +740,11 @@ VTKViewer_DelaunayTriangulator
   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 2bf024d5e0fc1d1a7bd86b948ab215259e59e2dd..5e391d976af4cc0667d687c10e8f5a82ac4cc132 100644 (file)
@@ -36,7 +36,12 @@ class vtkCellData;
 class vtkPoints;
 class vtkIdList;
 class vtkCell;
+class vtkCellArray;
+class vtkTriangle;
+class vtkOrderedTriangulator;
 
+
+//----------------------------------------------------------------------------
 class VTKVIEWER_EXPORT VTKViewer_Triangulator
 {
  public:
@@ -57,51 +62,48 @@ class VTKVIEWER_EXPORT VTKViewer_Triangulator
          std::vector<vtkIdType>& theVTK2ObjIds,
          bool theIsCheckConvex);
 
- protected:
+ private:
   vtkIdList* myCellIds;
 
-  vtkUnstructuredGrid *myInput;
-  vtkIdType myCellId;
-  int myShowInside;
-  int myAllVisible;
-  const char* myCellsVisibility;
+ protected:
+  vtkIdType *myPointIds;
+  vtkIdList* myFaceIds;
+  vtkPoints* myPoints;
 
   virtual
   vtkPoints* 
-  InitPoints() = 0;
+  InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId);
 
   virtual
   vtkIdType 
-  GetNbOfPoints() = 0;
+  GetNumFaces() = 0;
 
   virtual
-  vtkIdType 
-  GetPointId(vtkIdType thePointId) = 0;
+  vtkCell* 
+  GetFace(vtkIdType theFaceId) = 0;
 
-  virtual
-  vtkFloatingPointType 
-  GetCellLength() = 0;
+  vtkIdType 
+  GetNbOfPoints();
 
-  virtual
   vtkIdType 
-  GetNumFaces() = 0;
+  GetPointId(vtkIdType thePointId);
 
-  virtual
-  vtkCell* 
-  GetFace(vtkIdType theFaceId) = 0;
+  vtkFloatingPointType 
+  GetCellLength();
 
-  virtual
   void 
-  GetCellNeighbors(vtkIdType theCellId,
+  GetCellNeighbors(vtkUnstructuredGrid *theInput,
+                  vtkIdType theCellId,
                   vtkCell* theFace,
-                  vtkIdList* theCellIds) = 0;
+                  vtkIdList* theCellIds);
 
-  virtual
   vtkIdType 
-  GetConnectivity(vtkIdType thePntId) = 0;
+  GetConnectivity(vtkIdType thePntId);
 };
 
 
+//----------------------------------------------------------------------------
 class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangulator
 {
  public:
@@ -111,22 +113,14 @@ class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangul
   ~VTKViewer_OrderedTriangulator();
 
  protected:
-  vtkGenericCell *myCell;
+  vtkOrderedTriangulator *myTriangulator;
+  vtkCellArray *myBoundaryTris;
+  vtkTriangle  *myTriangle;
 
   virtual
   vtkPoints* 
-  InitPoints();
-
-  virtual
-  vtkIdType 
-  GetNbOfPoints();
-
-  vtkIdType 
-  GetPointId(vtkIdType thePointId);
-
-  virtual
-  vtkFloatingPointType 
-  GetCellLength();
+  InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId);
 
   virtual
   vtkIdType 
@@ -135,19 +129,10 @@ class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangul
   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:
@@ -161,24 +146,11 @@ class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangu
   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();
+  InitPoints(vtkUnstructuredGrid *theInput,
+            vtkIdType theCellId);
 
   virtual
   vtkIdType 
@@ -187,16 +159,6 @@ class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangu
   virtual
   vtkCell* 
   GetFace(vtkIdType theFaceId);
-
-  virtual
-  void 
-  GetCellNeighbors(vtkIdType theCellId,
-                  vtkCell* theFace,
-                  vtkIdList* theCellIds);
-
-  virtual
-  vtkIdType 
-  GetConnectivity(vtkIdType thePntId);
 };
 
 
index 6737674082d73a71a115c78492a1e36a3e72580c..ea3abb5ff2dc9ab82e2ad8b742d902284a167c1c 100755 (executable)
@@ -34,6 +34,8 @@
 #include <vtkCellArray.h>
 #include <vtkIdList.h>
 #include <vtkCell.h>
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
 
 using namespace std;
 
@@ -79,9 +81,13 @@ void VTKViewer_ExtractUnstructuredGrid::SetStoreMapping(int theStoreMapping){
   this->Modified();
 }
 
-vtkIdType VTKViewer_ExtractUnstructuredGrid::GetInputId(int theOutId) const{
-  if(myCellIds.empty() && myCellTypes.empty()) return theOutId;
-  if(myOut2InId.empty() || theOutId > myOut2InId.size()) return -1;
+vtkIdType VTKViewer_ExtractUnstructuredGrid::GetInputId(int theOutId) const
+{
+  if ( myCellIds.empty() && myCellTypes.empty() )
+    return theOutId;
+
+  if ( myOut2InId.empty() || theOutId > (int)myOut2InId.size() )
+    return -1;
 #if defined __GNUC_2__
   return myOut2InId[theOutId];
 #else
@@ -142,9 +148,29 @@ inline void InsertPointCell(vtkCellArray *theConnectivity,
   }
 }
 
-void VTKViewer_ExtractUnstructuredGrid::Execute(){
+
+// int VTKViewer_ExtractUnstructuredGrid::RequestData(
+//   vtkInformation *vtkNotUsed(request),
+//   vtkInformationVector **inputVector,
+//   vtkInformationVector *outputVector)
+void VTKViewer_ExtractUnstructuredGrid::Execute()
+{
+  /*
+  not ported yet to the new executive-based pipeline architecture.
+
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkUnstructuredGrid *anInput = vtkUnstructuredGrid::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkUnstructuredGrid *anOutput = vtkUnstructuredGrid::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
+  */
   vtkUnstructuredGrid *anInput = this->GetInput();
   vtkUnstructuredGrid *anOutput = this->GetOutput();
+  
   myOut2InId.clear();  myIn2OutId.clear();
 
 /*  if(MYDEBUG){
@@ -344,4 +370,5 @@ void VTKViewer_ExtractUnstructuredGrid::Execute(){
       MESSAGE("Execute - myIn2OutId.size() = "<<myIn2OutId.size());
     }
   }*/
+//  return 1;
 }
index f5251a2b2b9432b7d0ece21b094103b7074db293..71f3274d8cb7f82e8fa2cfae05c1d5ae6bee7e41 100755 (executable)
 #include <set>
 #include <map>
 #include <vector>
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! \class vtkUnstructuredGridToUnstructuredGridFilter
  * \brief For more information see <a href="http://www.vtk.org/">VTK documentation</a>
  */
@@ -99,7 +104,10 @@ protected:
   ~VTKViewer_ExtractUnstructuredGrid();
 
   //! Main method, which calculate output
-  void Execute();
+  // not ported yet to the new executive-based pipeline architecture.
+  // see http://www.vtk.org/cgi-bin/viewcvs.cgi/Filtering/vtkUnstructuredGridToUnstructuredGridFilter.h?rev=1.19&view=log
+  // virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
+  virtual void Execute();
 
   EExtraction myExtractionMode;
   
@@ -119,4 +127,8 @@ private:
   void operator=(const VTKViewer_ExtractUnstructuredGrid&);
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 389299bdace62f1423330905e8e2bc6fd5112217..5d2590de63e9f337ee114d020decbc90bd4c1333 100755 (executable)
@@ -45,6 +45,8 @@
 #include <vtkUnstructuredGrid.h>
 #include <vtkVoxel.h>
 #include <vtkWedge.h>
+#include <vtkInformationVector.h>
+#include <vtkInformation.h>
 
 #include <algorithm>
 #include <iterator>
@@ -76,37 +78,54 @@ VTKViewer_GeometryFilter
 {}
 
 
-void
+int
 VTKViewer_GeometryFilter
-::Execute()
+::RequestData(
+  vtkInformation *request,
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
 {
-  vtkDataSet *input= this->GetInput();
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkDataSet *input = vtkDataSet::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkPolyData *output = vtkPolyData::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
+
   vtkIdType numCells=input->GetNumberOfCells();
 
   if (numCells == 0)
     {
-      return;
+      return 0;
     }
   
   if (input->GetDataObjectType() == VTK_UNSTRUCTURED_GRID){
-    this->UnstructuredGridExecute();
-    return;
+    return this->UnstructuredGridExecute(input, output, outInfo);
   }else
-    vtkGeometryFilter::Execute();
+    return Superclass::RequestData(request,inputVector,outputVector);
+
+  return 1;
 }
 
 
-void
+int
 VTKViewer_GeometryFilter
-::UnstructuredGridExecute()
+::UnstructuredGridExecute(
+                         vtkDataSet *dataSetInput,
+                         vtkPolyData *output,
+                         vtkInformation *outInfo)
 {
-  vtkUnstructuredGrid *input= (vtkUnstructuredGrid *)this->GetInput();
+  
+  vtkUnstructuredGrid *input= (vtkUnstructuredGrid *)dataSetInput;
   vtkCellArray *Connectivity = input->GetCells();
   // Check input
   if ( Connectivity == NULL )
     {
     vtkDebugMacro(<<"Nothing to extract");
-    return;
+    return 0;
     }
 
   vtkIdType cellId;
@@ -118,7 +137,6 @@ VTKViewer_GeometryFilter
   vtkIdType numCells=input->GetNumberOfCells();
   vtkPointData *pd = input->GetPointData();
   vtkCellData *cd = input->GetCellData();
-  vtkPolyData *output = this->GetOutput();
   vtkPointData *outputPD = output->GetPointData();
   
   VTKViewer_OrderedTriangulator anOrderedTriangulator;
@@ -753,6 +771,8 @@ VTKViewer_GeometryFilter
     {
     delete [] cellVis;
     }
+
+  return 0;
 }
 
 
@@ -813,8 +833,10 @@ VTKViewer_GeometryFilter
 }
 
 
-vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){
-  if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1;
+vtkIdType VTKViewer_GeometryFilter::GetElemObjId( int theVtkID )
+{
+  if( myVTK2ObjIds.empty() || theVtkID > (int)myVTK2ObjIds.size() )
+    return -1;
 #if defined __GNUC_2__
   return myVTK2ObjIds[theVtkID];
 #else
index a74b707336daa8c344cb01dbe92506f5b63ce5d8..300c5a948d516c5e4dbd5451f42a2e92ded3af35 100755 (executable)
 #include <vtkGeometryFilter.h>
 
 #include <vector>
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! \brief This class used same as vtkGeometryFilter. See documentation on VTK for more information.
  */
 class VTKVIEWER_EXPORT VTKViewer_GeometryFilter : public vtkGeometryFilter 
@@ -87,14 +92,15 @@ protected:
    * \brief Destructor.
    */
   ~VTKViewer_GeometryFilter();
-  /*! \fn void Execute();
-   * \brief Filter culculation method.
-   */
-  void Execute();
+
+  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
+
+  //special cases for performance
+  
   /*! \fn void UnstructuredGridExecute();
    * \brief Filter culculation method for data object type is VTK_UNSTRUCTURED_GRID.
    */
-  void UnstructuredGridExecute();
+  int UnstructuredGridExecute (vtkDataSet *, vtkPolyData *, vtkInformation *);
     
 private:
   typedef std::vector<vtkIdType> TVectorId;
@@ -106,4 +112,8 @@ private:
   int       myIsWireframeMode;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index d9eb4833fed97880d8c5998f5383d24d9ac5eb1f..b867f64b3536b95dfaf103cf16485c0e7ab38c1b 100644 (file)
@@ -56,6 +56,10 @@ class VTKViewer_RenderWindowInteractor;
 #define VTK_INTERACTOR_STYLE_CAMERA_SELECT     6
 #define VTK_INTERACTOR_STYLE_CAMERA_GLOBAL_PAN 7
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*! Description:\n
  * This class must be supplied with a vtkRenderWindowInteractor wrapper or\n
  * parent. This class should not normally be instantiated by application\n
@@ -185,4 +189,8 @@ class VTKVIEWER_EXPORT VTKViewer_InteractorStyle : public QObject, public vtkInt
   //@}
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index 172976d7ea06d5b2f29ea951dc278e851a8188ff..f052b072c0be224b1971b0aeb5aafadfcce40067 100755 (executable)
@@ -32,6 +32,8 @@
 #include <vtkDataSet.h>
 #include <vtkObjectFactory.h>
 #include <vtkPointData.h>
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
 
 vtkCxxRevisionMacro(VTKViewer_PassThroughFilter, "$Revision$");
 vtkStandardNewMacro(VTKViewer_PassThroughFilter);
@@ -43,10 +45,20 @@ vtkStandardNewMacro(VTKViewer_PassThroughFilter);
  */
 
 /*!Execute method.Output calculation.*/
-void VTKViewer_PassThroughFilter::Execute()
+int VTKViewer_PassThroughFilter::RequestData(
+  vtkInformation *,
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
 {
-  vtkDataSet *input = static_cast<vtkDataSet*>(this->GetInput());
-  vtkDataSet *output = static_cast<vtkDataSet*>(this->GetOutput());
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkDataSet *input = vtkDataSet::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkDataSet *output = vtkDataSet::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
 
   // This has to be here because it initialized all field datas.
   output->CopyStructure( input );
@@ -56,6 +68,7 @@ void VTKViewer_PassThroughFilter::Execute()
   output->GetPointData()->PassData( input->GetPointData() );
   output->GetCellData()->PassData( input->GetCellData() );
 
+  return 1;
 }
 
 /*!Methods invoked by print to print information about the object including superclasses.\n
index 3e683348f77f35997a195f26b5ea5a732a4b527d..99b81ef520d5ed8a13358c869284afe9879e04e4 100755 (executable)
@@ -36,7 +36,8 @@ protected:
   VTKViewer_PassThroughFilter() {};//!< Null body.
   virtual ~VTKViewer_PassThroughFilter() {};//!< Null body.
 
-  void Execute();
+  virtual int RequestData(vtkInformation *, vtkInformationVector **,
+                          vtkInformationVector *); //generate output data
 
 private:
   VTKViewer_PassThroughFilter( const VTKViewer_PassThroughFilter& );  //!< Not implemented.
diff --git a/src/VTKViewer/VTKViewer_RectPicker.cxx b/src/VTKViewer/VTKViewer_RectPicker.cxx
deleted file mode 100755 (executable)
index 70dcad6..0000000
+++ /dev/null
@@ -1,894 +0,0 @@
-//  SALOME VTKViewer : build VTK viewer into Salome desktop
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//
-//
-//  File   : VTKViewer_RectPicker.cxx
-//  Author : Natalia KOPNOVA
-//  Module : SALOME
-
-#include <VTKViewer_RectPicker.h>
-
-#include "vtkActor.h"
-#include "vtkAssemblyNode.h"
-#include "vtkAssemblyPath.h"
-#include "vtkCamera.h"
-#include "vtkCommand.h"
-#include "vtkImageData.h"
-#include "vtkLODProp3D.h"
-#include "vtkMapper.h"
-#include "vtkMath.h"
-#include "vtkObjectFactory.h"
-#include "vtkPoints.h"
-#include "vtkProp3DCollection.h"
-#include "vtkProperty.h"
-#include "vtkRenderWindow.h"
-#include "vtkRenderer.h"
-#include "vtkTransform.h"
-#include "vtkVertex.h"
-#include "vtkVolume.h"
-#include "vtkVolumeMapper.h"
-
-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. 
- * \retval Return non-zero if something was successfully picked.
- */
-int VTKViewer_RectPicker::Pick(float selectionX1, float selectionY1, float selectionZ1,
-                              float selectionX2, float selectionY2, float selectionZ2,
-                              vtkRenderer *renderer)
-{
-  int k, i;
-  vtkProp *prop;
-  vtkCamera *camera;
-  vtkAbstractMapper3D *mapper = NULL;
-  float p1World[4][4], p2World[4][4], p1Mapper[4][4], p2Mapper[4][4];
-  float c1[3], c2[3];
-  int picked=0;
-  int *winSize;
-  float x, y, t, p;
-  float *viewport;
-  float cameraPos[4], cameraFP[4];
-  float *displayCoords, *worldCoords;
-  float pickPosition[4][3];
-  double *clipRange;
-  float ray[4][3], rayLength[4];
-  int pickable;
-  int LODId;
-  float windowLowerLeft[4], windowUpperRight[4];
-  float bounds[6], tol;
-  float tF, tB;
-  float hitPosition[3];
-  float cameraDOP[3];
-  
-  //  Initialize picking process
-  this->Initialize();
-  this->Renderer = renderer;
-
-  /* Selection point is not defined for the rectangle
-  this->SelectionPoint[0] = 
-  this->SelectionPoint[1] = 
-  this->SelectionPoint[2] = 
-  */
-
-  // Invoke start pick method if defined
-  this->InvokeEvent(vtkCommand::StartPickEvent,NULL);
-
-  if ( renderer == NULL )
-    {
-    vtkErrorMacro(<<"Must specify renderer!");
-    return 0;
-    }
-
-  // Get camera focal point and position. Convert to display (screen) 
-  // coordinates. We need a depth value for z-buffer.
-  //
-  camera = renderer->GetActiveCamera();
-  camera->GetPosition((float *)cameraPos); cameraPos[3] = 1.0;
-  camera->GetFocalPoint((float *)cameraFP); cameraFP[3] = 1.0;
-
-  renderer->SetWorldPoint(cameraFP);
-  renderer->WorldToDisplay();
-  displayCoords = renderer->GetDisplayPoint();
-  selectionZ1 = selectionZ2 = displayCoords[2];
-
-  // Convert the selection rectangle into world coordinates.
-  //
-  renderer->SetDisplayPoint(selectionX1, selectionY1, selectionZ1);
-  renderer->DisplayToWorld();
-  worldCoords = renderer->GetWorldPoint();
-  if ( worldCoords[3] == 0.0 )
-    {
-    vtkErrorMacro(<<"Bad homogeneous coordinates");
-    return 0;
-    }
-  for (i=0; i < 3; i++) 
-    {
-    pickPosition[0][i] = worldCoords[i] / worldCoords[3];
-    }
-
-  renderer->SetDisplayPoint(selectionX1, selectionY2, (selectionZ1+selectionZ2)/2);
-  renderer->DisplayToWorld();
-  worldCoords = renderer->GetWorldPoint();
-  if ( worldCoords[3] == 0.0 )
-    {
-    vtkErrorMacro(<<"Bad homogeneous coordinates");
-    return 0;
-    }
-  for (i=0; i < 3; i++) 
-    {
-    pickPosition[1][i] = worldCoords[i] / worldCoords[3];
-    }
-  
-  renderer->SetDisplayPoint(selectionX2, selectionY2, selectionZ2);
-  renderer->DisplayToWorld();
-  worldCoords = renderer->GetWorldPoint();
-  if ( worldCoords[3] == 0.0 )
-    {
-    vtkErrorMacro(<<"Bad homogeneous coordinates");
-    return 0;
-    }
-  for (i=0; i < 3; i++) 
-    {
-    pickPosition[2][i] = worldCoords[i] / worldCoords[3];
-    }
-
-  renderer->SetDisplayPoint(selectionX2, selectionY1, (selectionZ1+selectionZ2)/2);
-  renderer->DisplayToWorld();
-  worldCoords = renderer->GetWorldPoint();
-  if ( worldCoords[3] == 0.0 )
-    {
-    vtkErrorMacro(<<"Bad homogeneous coordinates");
-    return 0;
-    }
-  for (i=0; i < 3; i++) 
-    {
-    pickPosition[3][i] = worldCoords[i] / worldCoords[3];
-    }
-  
-  //  Compute the ray endpoints.  The ray is along the line running from
-  //  the camera position to the selection point, starting where this line
-  //  intersects the front clipping plane, and terminating where this
-  //  line intersects the back clipping plane.
-  for (k=0; k < 4; k++) {
-    for (i=0; i<3; i++)
-      {
-       ray[k][i] = pickPosition[k][i] - cameraPos[i];
-      }
-  }
-  for (i=0; i<3; i++)
-    {
-      cameraDOP[i] = cameraFP[i] - cameraPos[i];
-    }
-
-  vtkMath::Normalize(cameraDOP);
-
-  for (k=0; k < 4; k++) {
-    if (( rayLength[k] = vtkMath::Dot(cameraDOP,ray[k])) == 0.0 ) 
-      {
-       vtkWarningMacro("Cannot process points");
-       return 0;
-      } 
-  }
-
-  clipRange = camera->GetClippingRange();
-
-  if ( camera->GetParallelProjection() )
-    {
-      for (k=0; k < 4; k++) {
-       tF = clipRange[0] - rayLength[k];
-       tB = clipRange[1] - rayLength[k];
-       for (i=0; i<3; i++) 
-         {
-           p1World[k][i] = pickPosition[k][i] + tF*cameraDOP[i];
-           p2World[k][i] = pickPosition[k][i] + tB*cameraDOP[i];
-         }
-       p1World[k][3] = p2World[k][3] = 1.0;
-      }
-    }
-  else
-    {
-      for (k=0; k < 4; k++) {
-       tF = clipRange[0] / rayLength[k];
-       tB = clipRange[1] / rayLength[k];
-       for (i=0; i<3; i++) 
-         {
-           p1World[k][i] = cameraPos[i] + tF*ray[k][i];
-           p2World[k][i] = cameraPos[i] + tB*ray[k][i];
-         }
-       p1World[k][3] = p2World[k][3] = 1.0;
-      }
-    }
-
-  // Compute the center points of ray rectangle
-  for (i=0; i<3; i++) {
-    c1[i] = c2[i] = 0;
-    for (k=0; k<4; k++) {
-      c1[i] += p1World[k][i];
-      c2[i] += p2World[k][i];
-    }
-    c1[i] = c1[i]/4;
-    c2[i] = c2[i]/4;
-  }
-  
-  // Compute the tolerance in world coordinates.  Do this by
-  // determining the world coordinates of the diagonal points of the
-  // window, computing the width of the window in world coordinates, and 
-  // multiplying by the tolerance.
-  //
-  viewport = renderer->GetViewport();
-  winSize = renderer->GetRenderWindow()->GetSize();
-  x = winSize[0] * viewport[0];
-  y = winSize[1] * viewport[1];
-  renderer->SetDisplayPoint(x, y, selectionZ1);
-  renderer->DisplayToWorld();
-  renderer->GetWorldPoint(windowLowerLeft);
-
-  x = winSize[0] * viewport[2];
-  y = winSize[1] * viewport[3];
-  renderer->SetDisplayPoint(x, y, selectionZ2);
-  renderer->DisplayToWorld();
-  renderer->GetWorldPoint(windowUpperRight);
-
-  for (tol=0.0,i=0; i<3; i++) 
-    {
-    tol += (windowUpperRight[i] - windowLowerLeft[i]) *
-      (windowUpperRight[i] - windowLowerLeft[i]);
-    }
-  
-  tol = sqrt (tol) * this->Tolerance;
-
-  //  Loop over all props.  Transform ray (defined from position of
-  //  camera to selection point) into coordinates of mapper (not
-  //  transformed to actors coordinates!  Reduces overall computation!!!).
-  //  Note that only vtkProp3D's can be picked by vtkPicker.
-  //
-  vtkPropCollection *props;
-  vtkProp *propCandidate;
-  if ( this->PickFromList ) 
-    {
-    props = this->GetPickList();
-    }
-  else 
-    {
-    props = renderer->GetProps();
-    }
-
-  vtkActor *actor;
-  vtkLODProp3D *prop3D;
-  vtkVolume *volume;
-  vtkAssemblyPath *path;
-  vtkProperty *tempProperty;
-  this->Transform->PostMultiply();
-  for ( props->InitTraversal(); (prop=props->GetNextProp()); )
-    {
-    for ( prop->InitPathTraversal(); (path=prop->GetNextPath()); )
-      {
-      pickable = 0;
-      actor = NULL;
-      propCandidate = path->GetLastNode()->GetProp();
-      if ( propCandidate->GetPickable() && propCandidate->GetVisibility() )
-        {
-        pickable = 1;
-        if ( (actor=vtkActor::SafeDownCast(propCandidate)) != NULL )
-          {
-          mapper = actor->GetMapper();
-          if ( actor->GetProperty()->GetOpacity() <= 0.0 )
-            {
-            pickable = 0;
-            }
-          }
-        else if ( (prop3D=vtkLODProp3D::SafeDownCast(propCandidate)) != NULL )
-          {
-          LODId = prop3D->GetPickLODID();
-          mapper = prop3D->GetLODMapper(LODId);
-
-          // if the mapper is a vtkMapper (as opposed to a vtkVolumeMapper), 
-          // then check the transparency to see if the object is pickable
-          if ( vtkMapper::SafeDownCast(mapper) != NULL)
-            {
-            prop3D->GetLODProperty(LODId, &tempProperty);
-            if ( tempProperty->GetOpacity() <= 0.0 )
-              {
-              pickable = 0;
-              }
-            }
-          }
-        else if ( (volume=vtkVolume::SafeDownCast(propCandidate)) != NULL )
-          {
-          mapper = volume->GetMapper();
-          }
-        else
-          {
-          pickable = 0; //only vtkProp3D's (actors and volumes) can be picked
-          }
-        }
-      //  If actor can be picked, get its composite matrix, invert it, and
-      //  use the inverted matrix to transform the ray points into mapper
-      //  coordinates. 
-      if ( pickable  &&  mapper != NULL )
-        {
-        vtkMatrix4x4 *LastMatrix = path->GetLastNode()->GetMatrix();
-        if (LastMatrix == NULL)
-          {
-          vtkErrorMacro (<< "Pick: Null matrix.");
-          return 0;
-          }
-        this->Transform->SetMatrix(LastMatrix);
-        this->Transform->Push();
-        this->Transform->Inverse();
-
-       for (k=0; k < 4; k++) {
-         this->Transform->TransformPoint(p1World[k],p1Mapper[k]);
-         this->Transform->TransformPoint(p2World[k],p2Mapper[k]);
-
-         for (i=0; i<3; i++) 
-           {
-             ray[k][i] = p2Mapper[k][i] - p1Mapper[k][i];
-           }
-       }
-
-        this->Transform->Pop();
-
-        //  Have the ray endpoints in mapper space, now need to compare this
-        //  with the mapper bounds to see whether intersection is possible.
-        //
-        //  Get the bounding box of the modeller.  Note that the tolerance is
-        //  added to the bounding box to make sure things on the edge of the
-        //  bounding box are picked correctly.
-        mapper->GetBounds(bounds);
-        bounds[0] -= tol; bounds[1] += tol; 
-        bounds[2] -= tol; bounds[3] += tol; 
-        bounds[4] -= tol; bounds[5] += tol; 
-        if ( HitBBox(bounds, p1Mapper, ray) ) {
-         t = this->IntersectWithHex(p1Mapper, p2Mapper, tol, path, 
-                                    (vtkProp3D *)propCandidate, mapper);
-         if ( t >= 0.0 && t <= 1.0 /*t < VTK_LARGE_FLOAT*/ ) {
-           picked = 1;
-           this->Prop3Ds->AddItem((vtkProp3D *)prop);
-           this->PickedPositions->InsertNextPoint
-             ((1.0 - t)*c1[0] + t*c2[0],
-              (1.0 - t)*c1[1] + t*c2[1],
-              (1.0 - t)*c1[2] + t*c2[2]);
-           
-           // backwards compatibility: also add to this->Actors
-           if (actor) {
-             this->Actors->AddItem(actor);
-           }
-         }
-       }
-
-        }//if visible and pickable not transparent and has mapper
-      }//for all parts
-    }//for all actors
-  
-  // Invoke end pick method if defined
-  this->InvokeEvent(vtkCommand::EndPickEvent,NULL);
-  
-  return picked;
-}
-
-#define SIDE_LEFT 0
-#define SIDE_RIGHT 1
-#define SIDE_MIDDLE 2
-
-float GetParameterValue(float start, float end, float point)
-{
-  if (start == end) return -VTK_LARGE_FLOAT;
-  return (point-start)/(end-start);
-}
-
-void GetPointCoord(const float start[3], const float end[3], float t, float point[3])
-{
-  int i;
-  for (i = 0; i < 3; i++) {
-    point[i] = start[i] + t*(end[i]-start[i]);
-  }
-}
-
-char GetIntersectionPoint(const float start[3], const float end[3], 
-                         const int& index, const float p, float point[3])
-{
-  float t = GetParameterValue(start[index], end[index], p);
-  char result = 0;
-  if (t >= 0.0 && t <= 1.0) {
-    result = 1;
-    GetPointCoord(start, end, t, point);
-  }
-  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.)
- * \retval The method returns a non-zero value, if the bounding box is hit.
- */
-char VTKViewer_RectPicker::HitBBox (float bounds[6], float origin[4][4], float dir[4][3])
-{
-  int i, j, k, n;
-  float endray[4][3];
-
-  for (k = 0; k < 4; k++) {
-    for (i = 0; i < 3; i++) {
-      endray[k][i] = origin[k][i] + dir[k][i];
-    }
-  }
-
-  // Compute hex bounding box, center point and center direction
-  float hbounds[6], center[3], ray[3];
-  for (i = 0; i < 3; i++) {
-    hbounds[2*i] = hbounds[2*i+1] = origin[0][i];
-    center[i] = ray[i] = 0;
-    for (k = 0; k < 4; k++) {
-      center[i] += origin[k][i];
-      ray[i] += endray[k][i];
-      if (origin[k][i] < hbounds[2*i]) {
-       hbounds[2*i] = origin[k][i];
-      }
-      else if (origin[k][i] > hbounds[2*i+1])
-       hbounds[2*i+1] = origin[k][i];
-      if (endray[k][i] < hbounds[2*i])
-       hbounds[2*i] = endray[k][i];
-      else if (endray[k][i] > hbounds[2*i+1])
-       hbounds[2*i+1] = endray[k][i];
-    }
-    center[i] = center[i]/4;
-    ray[i] = ray[i]/4;
-    ray[i] = ray[i] - center[i];
-  }
-
-  // Check for intersection between bouning boxes
-  for (i = 0; i < 3; i++) {
-    if (bounds[2*i+1] < hbounds[2*i] || bounds[2*i] > hbounds[2*i+1])
-      return 0;
-  }
-
-  // Check if one of the origin point lays inside bbox
-  char inside;
-  for (k = 0; k < 4; k++) {
-    inside = 1;
-    for (i = 0; i < 3; i++) {
-      if (origin[k][i] < bounds[2*i] || origin[k][i] > bounds[2*i+1]) {
-       inside = 0;
-       break;
-      }
-    }
-    if (inside) return 1;
-  }
-
-  // Find the closest coord plane for the center point
-  char side[3];
-  float coordPlane[3];
-  inside = 1;
-  for (i = 0; i < 3; i++) {
-    if (center[i] < bounds[2*i]) {
-      inside = 0;
-      coordPlane[i] = bounds[2*i];
-      side[i] = SIDE_LEFT;
-    }
-    else if (center[i] > bounds[2*i+1]) {
-      inside = 0;
-      coordPlane[i] = bounds[2*i+1];
-      side[i] = SIDE_RIGHT;
-    }
-    else {
-      coordPlane[i] = (ray[i]<0.0) ? bounds[2*i] : bounds[2*i+1];
-      side[i] = SIDE_MIDDLE;
-    }
-  }
-  if (inside) return 1;
-
-  // Calculate parametric distances to the planes and find the max
-  float maxT[3];
-  int whichPlane = 0;
-  char defined = 0;
-  for (i = 0; i < 3; i++) {
-    if (side[i] != SIDE_MIDDLE && ray[i] != 0.0) {
-      maxT[i] = (coordPlane[i]-center[i])/ray[i];
-      defined = 1;
-    }
-    else
-      maxT[i] = -1.0;
-  }
-  for (i = 0; i < 3; i++) {
-    if (maxT[whichPlane] < maxT[i])
-      whichPlane = i;
-  }
-
-  // Check for intersection along the center ray
-  float coord;
-  if (maxT[whichPlane] <= 1.0 && maxT[whichPlane] >= 0.0) {
-    inside = 1;
-    for (i = 0; i < 3; i++) {
-      if (i != whichPlane) {
-       coord = center[i] + maxT[whichPlane]*ray[i];
-       if (coord < bounds[2*i] || coord > bounds[2*i+1])
-         inside = 0;
-      }
-    }
-    if (inside) return 1;
-  }
-
-  // Define the intersection plane
-  if (!defined) {
-    for (i = 0; i < 3; i++) {
-      if (ray[i] != 0.0) {
-       maxT[i] = (coordPlane[i]-center[i])/ray[i];
-      }
-      else 
-       maxT[i] = VTK_LARGE_FLOAT;
-    }
-    for (i = 0; i < 3; i++) {
-      if (maxT[whichPlane] > maxT[i])
-       whichPlane = i;
-    }
-  }
-
-  // Compute the intersection between hex and coord plane
-  float t[4];
-  for (k = 0; k < 4; k++) {
-    if (dir[k][whichPlane] != 0.0) {
-      t[k] = (coordPlane[whichPlane]-origin[k][whichPlane])/dir[k][whichPlane];
-    }
-    else {
-      t[k] = VTK_LARGE_FLOAT;
-    }
-  }
-
-  vtkPoints* aPoints = vtkPoints::New();
-  float p[3], q[3], t1;
-  for (k = 0; k < 4; k++) {
-    n = (k+1)%4; // next point
-    if (t[k] > 1.0) {
-      if (t[n] < 1.0) {
-       // find intersection point
-       t1 = GetParameterValue(endray[k][whichPlane], endray[n][whichPlane], coordPlane[whichPlane]);
-       if (t1 > 0.0 && t1 < 1.0) {
-         GetPointCoord(endray[k], endray[n], t1, p);
-         aPoints->InsertNextPoint(p[0], p[1], p[2]);
-       }
-      }
-      if (t[n] < 0.0) {
-       // find second intersection point
-       t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]);
-       if (t1 > 0.0 && t1 < 1.0) {
-         GetPointCoord(origin[k], origin[n], t1, p);
-         aPoints->InsertNextPoint(p[0], p[1], p[2]);
-       }
-      }
-    }
-    else if (t[k] < 0.0) {
-      if (t[n] > 0.0) {
-       // find intersection point
-       t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]);
-       if (t1 > 0.0 && t1 < 1.0) {
-         GetPointCoord(origin[k], origin[n], t1, p);
-         aPoints->InsertNextPoint(p[0], p[1], p[2]);
-       }
-      }
-    }
-    else {
-      // find intersection point
-      GetPointCoord(origin[k], endray[k], t[k], p);
-      aPoints->InsertNextPoint(p[0], p[1], p[2]);
-
-      if (t[n] < 0.0) {
-       // find second intersection point
-       t1 = GetParameterValue(origin[k][whichPlane], origin[n][whichPlane], coordPlane[whichPlane]);
-       if (t1 > 0.0 && t1 < 1.0) {
-         GetPointCoord(origin[k], origin[n], t1, p);
-         aPoints->InsertNextPoint(p[0], p[1], p[2]);
-       }
-      }
-      else if (t[n] > 1.0) {
-       // find second intersection point
-       t1 = GetParameterValue(endray[k][whichPlane], endray[n][whichPlane], coordPlane[whichPlane]);
-       if (t1 > 0.0 && t1 < 1.0) {
-         GetPointCoord(endray[k], endray[n], t1, p);
-         aPoints->InsertNextPoint(p[0], p[1], p[2]);
-       }
-      }
-    }
-  }
-  n = aPoints->GetNumberOfPoints();
-  if (n == 0) {
-    aPoints->Delete();
-    return 0;
-  }
-
-  if (n == 1) {
-    aPoints->GetPoint(0, p);
-    inside = 1;
-    for (i = 0; i < 3; i++) {
-      if (i != whichPlane) {
-       if (p[i] < bounds[2*i] || p[i] > bounds[2*i+1]) {
-         inside = 0; break;
-       }
-      }
-    }
-    aPoints->Delete();
-    return inside;
-  }
-
-  // Analize intersection
-  int nearPlane, boundPlane = -1;
-  float boundCoord, boundMin, boundMax;
-  char intersect = 0;
-  for (k = 0; k < n; k++) {
-    aPoints->GetPoint(k, p);
-    j = k+1; if (j == n) j = 0;
-    aPoints->GetPoint(j, q);
-    inside = 1;
-    nearPlane = 0;
-    // if the point is inside bbox
-    for (i = 0; i < 3; i++) {
-      if (i != whichPlane) {
-       if (p[i] < bounds[2*i]) {
-         side[i] = SIDE_LEFT;
-         maxT[i] = GetParameterValue(p[i], q[i], bounds[2*i]);
-         inside = 0; 
-       }
-       else if (p[i] > bounds[2*i+1]) {
-         side[i] = SIDE_RIGHT;
-         maxT[i] = GetParameterValue(p[i], q[i], bounds[2*i+1]);
-         inside = 0; 
-       }
-       else {
-         side[i] = SIDE_MIDDLE;
-         maxT[i] = -1.0;
-       }
-      }
-      else maxT[i] = -1.0;
-      if (maxT[i] > maxT[nearPlane]) nearPlane = i;
-    }
-    if (inside) break;
-    // if segment intersects bbox
-    if (maxT[nearPlane] >= 0.0 && maxT[nearPlane] <= 1.0) {
-      for (i = 0; i < 3; i++) {
-       if (i != whichPlane && i != nearPlane) {
-         coord = p[i] + maxT[nearPlane]*(q[i]-p[i]);
-         if (coord >= bounds[2*i] && coord <= bounds[2*i+1]) {
-           intersect = 1; break;
-         }
-       }
-      }
-      // intersect with boundPlane
-      if (boundPlane == -1) {
-       boundCoord = p[nearPlane] + maxT[nearPlane]*(q[nearPlane]-p[nearPlane]);
-       boundPlane = nearPlane;
-       for (i = 0; i < 3; i++) {
-         if (i != whichPlane && i != boundPlane) {
-           coord = p[i] + maxT[nearPlane]*(q[i]-p[i]);
-           boundMin = boundMax = coord;
-         }
-       }
-      }
-      else {
-       t1 = GetParameterValue(p[boundPlane], q[boundPlane], boundCoord);
-       if (t1 >= 0.0 && t1 <= 1.0) {
-         for (i = 0; i < 3; i++) {
-           if (i != whichPlane && i != boundPlane) {
-             coord = p[i] + t1*(q[i]-p[i]);
-             if (coord < boundMin) boundMin = coord;
-             if (coord > boundMax) boundMax = coord;
-           }
-         }
-       }
-      }
-    }
-    if (intersect) break;
-  }
-  aPoints->Delete();
-  if (inside || intersect) {
-    return 1;
-  }
-
-  inside = 1;
-  for (i = 0; i < 3; i++) {
-    if (i != whichPlane && i != boundPlane) {
-      if (boundMin > bounds[2*i+1] || boundMax < bounds[2*i])
-       inside = 0;
-    }
-  }
-
-  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.
- */
-char VTKViewer_RectPicker::PointInside (float p[3], float p1[4][4], float p2[4][4], float tol)
-{
-  int i, j, k;
-  float t, coord[3];
-
-  // Fix one coordinate (x, for example) and 
-  // compute intersection with coordinate plane
-  vtkPoints* aPoints = vtkPoints::New();
-  int mode = 0;
-  for (k = 0; k < 4; k++) {
-    j = k+1; if (j == 4) j = 0;
-    switch (mode) {
-    case 0:
-      if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 0;
-      }
-      if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 1;
-      }
-      if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 2;
-      }
-      /*
-      if ((p1[k][0]-p[0])*(p2[k][0]-p[0]) <= 0) {
-       t = GetParameterValue(p1[k][0], p2[k][0], p[0]);
-       if (t >= 0.0 && t <= 1.0) {
-         GetPointCoord(p1[k], p2[k], t, coord);
-         aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       }
-      }
-      */
-      break;
-    case 1:
-      if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 1;
-      }
-      if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 2;
-      }
-      if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 0;
-      }
-      /*
-      if ((p1[k][0]-p[0])*(p1[j][0]-p[0]) <= 0) {
-       t = GetParameterValue(p1[k][0], p1[j][0], p[0]);
-       if (t > 0.0 && t < 1.0) {
-         GetPointCoord(p1[k], p1[j], t, coord);
-         aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       }
-      }
-      */
-      break;
-    case 2:
-      if (GetIntersectionPoint(p2[k], p2[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 2;
-      }
-      if (GetIntersectionPoint(p1[k], p2[k], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 1;
-      }
-      if (GetIntersectionPoint(p1[k], p1[j], 0, p[0], coord)) {
-       aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       mode = 0;
-      }
-      /*
-      if ((p2[k][0]-p[0])*(p2[j][0]-p[0]) <= 0) {
-       t = GetParameterValue(p2[k][0], p2[j][0], p[0]);
-       if (t > 0.0 && t < 1.0) {
-         GetPointCoord(p2[k], p2[j], t, coord);
-         aPoints->InsertNextPoint(coord[0], coord[1], coord[2]);
-       }
-      }
-      */
-      break;
-    }
-  }
-  int n = aPoints->GetNumberOfPoints();
-  //cout << "---> Points in X projection " << n << endl;
-  if (n == 0) {
-    aPoints->Delete();
-    return 0;
-  }
-
-  // Fix the second coord and define bounds
-  float zMin = VTK_LARGE_FLOAT, zMax = -VTK_LARGE_FLOAT, z, ncoord[3];
-  char inside = 0;
-  for (k = 0; k < n; k++) {
-    aPoints->GetPoint(k, coord);
-    //cout << "  P" << k << " (" << coord[0] << ", " << coord[1] << ", " << coord[2] << ")";
-    j = k+1; if (j == n) j = 0;
-    if (j == k) {
-      if (p[1] == coord[1] && p[2] == coord[2]) {
-       inside = 1;
-      }
-      break;
-    }
-    aPoints->GetPoint(j, ncoord);
-    t = GetParameterValue(coord[1], ncoord[1], p[1]);
-    if (t >= 0.0 && t <= 1) {
-      z = coord[2] + t*(ncoord[2]-coord[2]);
-      if (z < zMin) zMin = z;
-      if (z > zMax) zMax = z;
-    }
-  }
-  //cout << endl << " Zmin = " << zMin << ", Zmax = " << zMax  << endl;
-  if (!inside) {
-    if (p[2] <= (zMax+tol) && p[2] >= (zMin-tol))
-      inside = 1;
-  }
-  
-  aPoints->Delete();
-  return inside;
-}
-
-float VTKViewer_RectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol, 
-                                            vtkAssemblyPath *path, vtkProp3D *prop3D, 
-                                            vtkAbstractMapper3D *mapper)
-{
-  int i, k;
-  float *center, p0[3], ray[3], rayFactor, t;
-
-  // Get the data from the modeler
-  //
-  center = mapper->GetCenter();
-
-  if (!PointInside(center, p1, p2)) {
-    return 2.0;
-  }
-
-  //   Determine appropriate info
-  //
-  for (i = 0; i < 3; i++) {
-    p0[i] = ray[i] = 0;
-    for (k = 0; k < 4; k++) {
-      p0[i] += p1[k][i];
-      ray[i] += p2[k][i];
-    }
-    p0[i] = p0[i]/4;
-    ray[i] = ray[i]/4;
-    ray[i] = ray[i] - p0[i];
-  }
-  if (( rayFactor = vtkMath::Dot(ray,ray)) == 0.0 ) {
-    vtkErrorMacro("Cannot process points");
-    return 2.0;
-  }
-
-  // Project the center point onto the ray and determine its parametric value
-  //
-  t = (ray[0]*(center[0]-p0[0]) + ray[1]*(center[1]-p0[1])
-       + ray[2]*(center[2]-p0[2])) / rayFactor;
-
-  if ( t >= 0.0 && t <= 1.0 && t < this->GlobalTMin ) {
-    this->MarkPicked(path, prop3D, mapper, t, center);
-  }
-  return t;
-}
diff --git a/src/VTKViewer/VTKViewer_RectPicker.h b/src/VTKViewer/VTKViewer_RectPicker.h
deleted file mode 100755 (executable)
index e202016..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//  SALOME VTKViewer : build VTK viewer into Salome desktop
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//
-//
-//  File   : VTKViewer_RectPicker.h
-//  Author : Natalia KOPNOVA
-//  Module : SALOME
-
-#ifndef __VTKViewer_RectPicker_h
-#define __VTKViewer_RectPicker_h
-
-#include <vtkPicker.h>
-
-/*! \class vtkPicker
- * \brief For more information see <a href="http://www.vtk.org/">VTK documentation
- */
-/*! \class VTKViewer_RectPicker
- * \brief Rectangular picker class.
- */
-class VTK_EXPORT VTKViewer_RectPicker : public vtkPicker
-{
-public:
-  /*!Create new instance of VTKViewer_RectPicker.*/
-  static VTKViewer_RectPicker *New();
-  vtkTypeMacro(VTKViewer_RectPicker,vtkPicker);
-  
-  virtual int Pick(float selectionX1, float selectionY1, float selectionZ1, 
-                  float selectionX2, float selectionY2, float selectionZ2,
-                   vtkRenderer *renderer);  
-
-  /*!
-   * 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. 
-   * \retval Return non-zero if something was successfully picked.
-   */
-  int Pick(float selectionPt1[3], float selectionPt2[3], vtkRenderer *ren)
-    {return this->Pick(selectionPt1[0], selectionPt1[1], selectionPt1[2], 
-                      selectionPt2[0], selectionPt2[1], selectionPt2[2],
-                      ren);};
-
-  static char HitBBox(float bounds[6], float origin[4][4], float dir[4][3]);
-
-  static char PointInside(float point[3], float p1[4][4], float p2[4][4], float tol=0);
-
-protected:
-  VTKViewer_RectPicker();
-  ~VTKViewer_RectPicker() {};
-
-  virtual float IntersectWithHex(float p1[4][4], float p2[4][4], float tol, 
-                                vtkAssemblyPath *path, vtkProp3D *p, 
-                                vtkAbstractMapper3D *m);
-
-private:
-};
-
-#endif
-
-
index 38c64cfc49c59315929a7b3efc3e83edf924118e..3391c08c7cad9eae79e8ad96d46edcdf39466f8a 100755 (executable)
@@ -34,6 +34,8 @@
 #include <vtkObjectFactory.h>
 #include <vtkPointData.h>
 #include <vtkUnstructuredGrid.h>
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
 
 vtkCxxRevisionMacro(VTKViewer_ShrinkFilter, "$Revision$");
 vtkStandardNewMacro(VTKViewer_ShrinkFilter);
@@ -49,8 +51,21 @@ VTKViewer_ShrinkFilter::~VTKViewer_ShrinkFilter()
 
 
 /*!Execute method. Calculate output.*/
-void VTKViewer_ShrinkFilter::Execute()
+int VTKViewer_ShrinkFilter::RequestData(
+  vtkInformation *vtkNotUsed(request),
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
 {
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkDataSet *input = vtkDataSet::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkUnstructuredGrid *output = vtkUnstructuredGrid::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
+
   vtkPoints *newPts;
   int i, j, numIds, abort=0;
   vtkIdType cellId, numCells, numPts;
@@ -58,8 +73,6 @@ void VTKViewer_ShrinkFilter::Execute()
   vtkFloatingPointType center[3], *p, pt[3];
   vtkPointData *pd, *outPD;;
   vtkIdList *ptIds, *newPtIds;
-  vtkDataSet *input= this->GetInput();
-  vtkUnstructuredGrid *output = this->GetOutput();
   vtkIdType tenth;
   vtkFloatingPointType decimal;
 
@@ -70,7 +83,7 @@ void VTKViewer_ShrinkFilter::Execute()
   if (numCells < 1 || numPts < 1)
     {
     vtkErrorMacro(<<"No data to shrink!");
-    return;
+    return 0;
     }
 
   ptIds = vtkIdList::New();
@@ -154,6 +167,8 @@ void VTKViewer_ShrinkFilter::Execute()
   ptIds->Delete();
   newPtIds->Delete();
   newPts->Delete();
+  
+  return 1;
 }
 
 /*!Sets store mapping.*/
@@ -166,7 +181,9 @@ void VTKViewer_ShrinkFilter::SetStoreMapping(int theStoreMapping){
 /*!Return node object id by vtk node id.
  *\retval -1 - if no object, else return id.
  */
-vtkIdType VTKViewer_ShrinkFilter::GetNodeObjId(int theVtkID){
-  if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1;
+vtkIdType VTKViewer_ShrinkFilter::GetNodeObjId(int theVtkID)
+{
+  if ( myVTK2ObjIds.empty() || theVtkID > (int)myVTK2ObjIds.size() )
+    return -1;
   return myVTK2ObjIds.at(theVtkID);
 }
index 4d2a416bb546aadbf515953d45a14368a8d7deb6..ab46c251484ec360e7c886180648f71572b00b9f 100755 (executable)
 
 #include <vector>
 
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
 /*!Shrink cells composing an arbitrary data set.
  *\warning It is possible to turn cells inside out or cause self intersection in special cases.
  */
@@ -47,7 +51,7 @@ protected:
   VTKViewer_ShrinkFilter();
   ~VTKViewer_ShrinkFilter();
   
-  void Execute();
+  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
   /*!Not implemented.*/
   void UnstructuredGridExecute();
     
@@ -57,4 +61,8 @@ private:
   TVectorId myVTK2ObjIds;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif
index cdfc14a1fc449efd36e38d2c1984790c1c26e86d..1c1121044562eafe0d8fe72d3bbd71328a564c58 100755 (executable)
 #include <vtkPointData.h>
 #include <vtkCellData.h>
 #include <vtkPoints.h>
-
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
 
 vtkStandardNewMacro(VTKViewer_TransformFilter);
 
 /*!Execution method. Calculate output.*/
-void VTKViewer_TransformFilter::Execute(){
+int VTKViewer_TransformFilter::RequestData(
+  vtkInformation *vtkNotUsed(request),
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
+{
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkPointSet *input = vtkPointSet::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkPointSet *output = vtkPointSet::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
+
   vtkPoints *inPts;
   vtkPoints *newPts;
   int numPts, numCells;
-  vtkPointSet *input = this->GetInput();
-  vtkPointSet *output = this->GetOutput();
   vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
   vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();
   output->CopyStructure( input );
@@ -67,4 +80,6 @@ void VTKViewer_TransformFilter::Execute(){
   }
   outPD->PassData(pd);
   outCD->PassData(cd);
+  
+  return 1;
 }
index 3087a03e9196aa8a7750384b0ab28012dc4a700b..69a286b0666f599b7cb91621c5d3676f56cac4af 100755 (executable)
@@ -42,7 +42,8 @@ protected:
   VTKViewer_TransformFilter(const VTKViewer_TransformFilter&) {/*!Do nothing*/}
   /*!Operator = */
   void operator=(const VTKViewer_TransformFilter&) {/*!Do nothing*/}
-  void Execute();
+
+  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
 };
 
 #endif
index c426e0280d7cb5e319e9a4042a8cdbfcfe409c0c..f50d67b30b862bc967e3ef2efcb92107dde0b9a8 100755 (executable)
@@ -32,8 +32,7 @@
 #include <vtkLineSource.h>
 #include <vtkConeSource.h>
 #include <vtkPolyDataMapper.h>
-
-#include "VTKViewer_VectorText.h"
+#include <vtkVectorText.h>
 
 vtkStandardNewMacro(VTKViewer_UnScaledActor);
 
@@ -141,7 +140,7 @@ VTKViewer_Axis::VTKViewer_Axis()
   myLineActor->SetArrowActor(myArrowActor);
   
   /*! \li Initialize the Label pipe-line representation */
-  myVectorText = VTKViewer_VectorText::New();
+  myVectorText = vtkVectorText::New();
   
   myMapper[2] = vtkPolyDataMapper::New();
   myMapper[2]->SetInput(myVectorText->GetOutput());
@@ -259,6 +258,17 @@ void VTKViewer_Axis::SetSize(vtkFloatingPointType theSize)
   myLabelActor->AddPosition(aPosition);
 }
 
+/*! Check if actor belongs to the axis object
+ * \param theActor - vtkActor pointer
+ * \retval Return true if the actor belongs to the axis object
+ */
+bool VTKViewer_Axis::OwnActor(const vtkActor* theActor)
+{
+  return theActor == myLineActor  || 
+         theActor == myArrowActor ||
+         theActor == myLabelActor;
+}
+
 /*! \class VTKViewer_XAxis
  * \brief X Axis actor
  */
@@ -425,11 +435,31 @@ int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer)
   int aCount = 0;
   while(vtkActor* prop = aCollection->GetNextActor()) {
     if( prop->GetVisibility())
-      if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(prop))
+      if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(prop)) {
         if(!anActor->IsInfinitive()) 
-          aCount++;
+         aCount++;
+      }
+      else if ( !OwnActor( anActor ) ) {
+       aCount++;
+      }
         //int aCount = theRenderer->VisibleActorCount();
         //SetVisibility(aVis);
   }
   return aCount;
 }
+
+/*! Check if actor belongs to the axis object
+ * \param theActor - vtkActor pointer
+ * \retval Return true if the actor belongs to the axis object
+ */
+bool VTKViewer_Trihedron::OwnActor(const vtkActor* theActor)
+{
+  myPresent->InitTraversal();
+  while(vtkActor* anActor = myPresent->GetNextActor()) {
+    if ( anActor == theActor ) return true;
+  }
+  for(int i = 0; i < 3; i++) {
+    if ( myAxis[i]->OwnActor(theActor) ) return true;
+  }
+  return false;
+}
index 69b7074a343ac7a3fba48f3fa88fe80639ae87fb..0d3b34561f5ee7ce5d987e26d7f314fd272b245d 100755 (executable)
@@ -31,9 +31,9 @@ class vtkProperty;
 class vtkPolyDataMapper;
 class vtkLineSource;
 class vtkConeSource;
+class vtkVectorText;
 
 class VTKViewer_Axis;
-class VTKViewer_VectorText;
 
 /*! \class vtkFollower
  * See <a href="http://www.vtk.org/">vtk documentation</a>
@@ -112,7 +112,7 @@ protected:
 };
 
 /*!This class provide support trihedron object in vtk viewer.*/
-class VTKVIEWER_EXPORT VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
+class VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
 {
 protected:
   /*!Initialize fields by default values.*/
@@ -170,6 +170,12 @@ public:
    */
   virtual int         GetVisibleActorCount(vtkRenderer* theRenderer);
   
+  /*! Check if actor belongs to the trihedron object
+   * \param theActor - vtkActor pointer
+   * \retval Return true if the actor belongs to the trihedron object
+   */
+  virtual bool        OwnActor(const vtkActor* theActor);
+
 protected:
   /*! Actor collection*/
   vtkActorCollection* myPresent;
@@ -234,6 +240,12 @@ public:
    * \retval Return myArrowActor
    */
   virtual VTKViewer_UnScaledActor* GetArrow() { return myArrowActor; }
+
+  /*! Check if actor belongs to the axis object
+   * \param theActor - vtkActor pointer
+   * \retval Return true if the actor belongs to the axis object
+   */
+  virtual bool OwnActor(const vtkActor* theActor);
   
 protected:
   /*! Visibility flag.
@@ -276,7 +288,7 @@ protected:
 
   /*! VTKViewer_VectorText pointer (Label)
    */
-  VTKViewer_VectorText* myVectorText;
+  vtkVectorText* myVectorText;
 };
 
 #endif
index 5f061a64bc52ef94caacb6cac3bc00f9f4a64045..09b7642363244dcf98a10192fc24b02e18368ac6 100755 (executable)
@@ -214,3 +214,138 @@ ComputeTrihedronSize( vtkRenderer* theRenderer,
   return fabs( theNewSize - theSize) > theSize * EPS_SIZE ||
          fabs( theNewSize-theSize ) > theNewSize * EPS_SIZE;
 }
+
+bool IsBBEmpty(vtkRenderer* theRenderer)
+{
+  if(!theRenderer)
+    return false;
+
+  vtkFloatingPointType aNewBndBox[6];
+  aNewBndBox[ 0 ] = aNewBndBox[ 2 ] = aNewBndBox[ 4 ] = VTK_LARGE_FLOAT;
+  aNewBndBox[ 1 ] = aNewBndBox[ 3 ] = aNewBndBox[ 5 ] = -VTK_LARGE_FLOAT;
+  
+  // iterate through displayed objects and set size if necessary
+  vtkActorCollection* anActors = theRenderer->GetActors();
+  anActors->InitTraversal();
+  bool isAny = false;
+  while(vtkActor* anAct = anActors->GetNextActor())
+    //if(SALOME_Actor* anActor = dynamic_cast<SALOME_Actor*>(anAct))
+    if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(anAct))
+      if(anActor->GetVisibility() && !anActor->IsInfinitive())
+      {
+       vtkFloatingPointType *aBounds = anActor->GetBounds();
+       if(aBounds[0] > -VTK_LARGE_FLOAT && aBounds[1] < VTK_LARGE_FLOAT &&
+          aBounds[2] > -VTK_LARGE_FLOAT && aBounds[3] < VTK_LARGE_FLOAT &&
+          aBounds[4] > -VTK_LARGE_FLOAT && aBounds[5] < VTK_LARGE_FLOAT)
+         isAny = true;
+      }
+  
+  return !isAny;
+}
+
+bool ComputeBBCenter(vtkRenderer* theRenderer, vtkFloatingPointType theCenter[3])
+{  
+  theCenter[0] = theCenter[1] = theCenter[2] = 0.0;
+  
+  if(!theRenderer)
+    return false;
+
+  vtkFloatingPointType aNewBndBox[6];
+  aNewBndBox[ 0 ] = aNewBndBox[ 2 ] = aNewBndBox[ 4 ] = VTK_LARGE_FLOAT;
+  aNewBndBox[ 1 ] = aNewBndBox[ 3 ] = aNewBndBox[ 5 ] = -VTK_LARGE_FLOAT;
+
+  // iterate through displayed objects and set size if necessary
+  vtkActorCollection* anActors = theRenderer->GetActors();
+  anActors->InitTraversal();
+  bool isAny = false;
+  while(vtkActor* anAct = anActors->GetNextActor())
+  {
+    //if(SALOME_Actor* anActor = dynamic_cast<SALOME_Actor*>(anAct))
+    if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(anAct))
+    {
+      if(anActor->GetVisibility() && !anActor->IsInfinitive())
+      {
+       vtkFloatingPointType *aBounds = anActor->GetBounds();
+       if(aBounds[0] > -VTK_LARGE_FLOAT && aBounds[1] < VTK_LARGE_FLOAT &&
+          aBounds[2] > -VTK_LARGE_FLOAT && aBounds[3] < VTK_LARGE_FLOAT &&
+          aBounds[4] > -VTK_LARGE_FLOAT && aBounds[5] < VTK_LARGE_FLOAT)
+       {
+         for(int i = 0; i < 5; i = i + 2){
+           if(aBounds[i] < aNewBndBox[i]) 
+             aNewBndBox[i] = aBounds[i];
+           if(aBounds[i+1] > aNewBndBox[i+1]) 
+             aNewBndBox[i+1] = aBounds[i+1];
+         }
+         isAny = true;
+       }
+      }
+    }
+  }
+  
+  if ( !isAny )
+  {
+    // null bounding box => the center is (0,0,0)
+    return true;
+  }
+
+  if(aNewBndBox[0] > -VTK_LARGE_FLOAT && aNewBndBox[1] < VTK_LARGE_FLOAT &&
+     aNewBndBox[2] > -VTK_LARGE_FLOAT && aNewBndBox[3] < VTK_LARGE_FLOAT &&
+     aNewBndBox[4] > -VTK_LARGE_FLOAT && aNewBndBox[5] < VTK_LARGE_FLOAT)
+  {
+    static vtkFloatingPointType MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT;
+    
+    vtkFloatingPointType aLength = aNewBndBox[1]-aNewBndBox[0];
+    aLength = max((aNewBndBox[3]-aNewBndBox[2]),aLength);
+    aLength = max((aNewBndBox[5]-aNewBndBox[4]),aLength);
+    
+    if(aLength < MIN_DISTANCE)
+      return false;
+
+    vtkFloatingPointType aWidth = 
+      sqrt((aNewBndBox[1]-aNewBndBox[0])*(aNewBndBox[1]-aNewBndBox[0]) +
+          (aNewBndBox[3]-aNewBndBox[2])*(aNewBndBox[3]-aNewBndBox[2]) +
+          (aNewBndBox[5]-aNewBndBox[4])*(aNewBndBox[5]-aNewBndBox[4]));
+    
+    if(aWidth < MIN_DISTANCE)
+      return false;
+
+    theCenter[0] = (aNewBndBox[0] + aNewBndBox[1])/2.0;
+    theCenter[1] = (aNewBndBox[2] + aNewBndBox[3])/2.0;
+    theCenter[2] = (aNewBndBox[4] + aNewBndBox[5])/2.0;
+    return true;
+  }
+
+  return false;
+
+  /*
+  vtkFloatingPointType aBounds[6];
+  int aCount = ComputeVisiblePropBounds(theRenderer,aBounds);
+  printf("aNewBndBox[0] = %f, aNewBndBox[1] = %f,\naNewBndBox[2] = %f, aNewBndBox[3] = %f,\naNewBndBox[4] = %f, aNewBndBox[5] = %f\n",
+          aBounds[0],aBounds[1],aBounds[2],aBounds[3],aBounds[4],aBounds[5]);
+  printf("aCount = %d\n",aCount);
+
+  if(aCount){
+    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);
+    
+    if(aLength < MIN_DISTANCE)
+      return false;
+
+    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 false;
+
+    theCenter[0] = (aBounds[0] + aBounds[1])/2.0;
+    theCenter[1] = (aBounds[2] + aBounds[3])/2.0;
+    theCenter[2] = (aBounds[4] + aBounds[5])/2.0;
+    return true;
+  }
+  return false;*/
+}
index 7ef9cc550c63e20bf47310a7d1eda3b28fb76d4b..f9bd70e0f628a9ad086651a73651d5b95de749ba 100755 (executable)
@@ -47,4 +47,11 @@ ComputeTrihedronSize(vtkRenderer* theRenderer,
                     const vtkFloatingPointType theSize, 
                     const vtkFloatingPointType theSizeInPercents);
 
+VTKVIEWER_EXPORT
+extern
+bool IsBBEmpty(vtkRenderer* theRenderer);
+VTKVIEWER_EXPORT
+extern
+bool ComputeBBCenter(vtkRenderer* theRenderer, 
+                    vtkFloatingPointType theCenter[3]);
 #endif
index 5ec7a8c58335fe28a30c13dbc6281e7317bc4e30..88f4d95fbc1d7355beef2472a3c5e9b5b5f04e66 100755 (executable)
@@ -30,9 +30,8 @@
 
      This software is distributed WITHOUT ANY WARRANTY; without even 
      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
-     PURPOSE.  See the above copyright notice for more information.
+     PURPOSE.  See the above copyright notice for more information.*/
 
-=========================================================================*/
 // VTKViewer_VectorText.cxx is a copy of vtkVectorText.cxx file.
 // Purpose of copying:  to remove linking to libHybrid.so VTK library 
 
index 5838f6a1d837abb212a60ccf608dd80def0a0df2..347757082034652370fc8be7d65a3b934f23e94c 100755 (executable)
@@ -30,9 +30,8 @@
 
      This software is distributed WITHOUT ANY WARRANTY; without even 
      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
-     PURPOSE.  See the above copyright notice for more information.
+     PURPOSE.  See the above copyright notice for more information.*/
 
-=========================================================================*/
 // .NAME vtkVectorText - create polygonal text
 // .SECTION Description
 
@@ -76,7 +75,9 @@ protected:
   VTKViewer_VectorText();
   ~VTKViewer_VectorText();
 
-  void Execute();
+  //! Main method, which calculate output
+  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
+
   char *Text;
   char *Letters[127];
 
index d67c92d1e8cea7b614bfceb6f212ad0999e4c7ea..a206be6ee9e95495d382ba2d3bf70ac42fd41b13 100755 (executable)
 #include "VTKViewer_ViewManager.h"
 #include "VTKViewer_ViewModel.h"
 
-int VTKViewer_ViewManager::_VTKViewMgr_Id = 0;
-
 /*!Constructor.Initialize SIUT_ViewManager by \a study and \a theDesktop.
  * Create new instance of VTKViewer_Viewer and set view model by it.
  */
 VTKViewer_ViewManager::VTKViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop ) 
-: SUIT_ViewManager( study, theDesktop )
+: SUIT_ViewManager( study, theDesktop, new VTKViewer_Viewer() )
 {
-  myId = ++_VTKViewMgr_Id;
-  setViewModel( new VTKViewer_Viewer() );
+  setTitle( tr( "VTK_VIEW_TITLE" ) );
 }
 
 /*!Destructor.*/
@@ -36,10 +33,3 @@ VTKViewer_ViewManager::~VTKViewer_ViewManager()
 {
   /*!Do nothing.*/
 }
-
-/*!Sets view window name*/
-void VTKViewer_ViewManager::setViewName(SUIT_ViewWindow* theView)
-{
-  int aPos = myViews.find(theView);
-  theView->setCaption( tr( "VTK_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) );
-}
index 49d9a26c8b88d6c2234bc224a316da0891839ee5..38518fe06d3877eab6c8efb41ed671e974c3bf74 100755 (executable)
@@ -33,13 +33,6 @@ class VTKVIEWER_EXPORT VTKViewer_ViewManager : public SUIT_ViewManager
 public:
   VTKViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* );
   virtual ~VTKViewer_ViewManager();
-
-protected:
-  void setViewName( SUIT_ViewWindow* theView );
-
-private:
-  int               myId;
-  static  int       _VTKViewMgr_Id;
 };
 
 #endif
index 9653aeacf11aa2686004790210b42f842454c0c2..f611972ae9d63f315bba8b22b4f17165c2ee63e0 100755 (executable)
 #include <qpalette.h>
 #include <qpopupmenu.h>
 
+bool _InitializeVtkWarningsCall()
+{
+  char* isOn = getenv( "VTK_WARNINGS_IS_ON" );  
+  if ( !isOn || strcmp( isOn, "1" ) )
+    vtkObject::GlobalWarningDisplayOff();
+
+  delete isOn;
+  return vtkObject::GetGlobalWarningDisplay();
+}
+static bool _InitializeVtkWarnings = _InitializeVtkWarningsCall();
+
 /*!Constructor.Sets background color to black.*/
 VTKViewer_Viewer::VTKViewer_Viewer()
 : SUIT_ViewModel(),
index aba392028637f0304e817fda6a49477d1e0690dd..e885ed8ccf16b4de302a36a6bde6ec5312d47d93 100755 (executable)
@@ -131,7 +131,7 @@ VTKViewer_ViewWindow::~VTKViewer_ViewWindow()
   myRWInteractor->Delete();
   
   //m_RW->Delete() ;
-  myRenderer->RemoveAllProps();
+  myRenderer->RemoveAllViewProps();
   //m_Renderer->Delete() ;
   myTrihedron->Delete();
 }
@@ -455,8 +455,8 @@ void VTKViewer_ViewWindow::onAdjustTrihedron(){
                      (bnd[5]-bnd[4])*(bnd[5]-bnd[4]));
     }else{
       aLength = bnd[1]-bnd[0];
-      aLength = max((bnd[3]-bnd[2]),aLength);
-      aLength = max((bnd[5]-bnd[4]),aLength);
+      aLength = std::max((bnd[3]-bnd[2]),aLength);
+      aLength = std::max((bnd[5]-bnd[4]),aLength);
     }
    
     static vtkFloatingPointType aSizeInPercents = 105;
index 0f618ddc518502fb6aed4e1ee2600219d2ff6aab..895766a66b88557fee5d72bb1ca04f5bc1950cf4 100755 (executable)
@@ -62,6 +62,9 @@ msgstr "view_reset.png"
 msgid "ICON_VTKVIEWER_VIEW_RIGHT"
 msgstr "view_right.png"
 
+msgid "ICON_VTKVIEWER_VIEW_ROTATION_POINT"
+msgstr "view_rotation_point.png"
+
 msgid "ICON_VTKVIEWER_VIEW_ROTATE"
 msgstr "view_rotate.png"
 
index e98a1dc3cc7eee055ce8ed073e358089eff90db8..ea26f2678875ca2e535d66c477d9434b9fa0b74f 100755 (executable)
@@ -141,7 +141,7 @@ msgid "VTKViewer_Viewer::MEN_CHANGE_BACKGROUD"
 msgstr "Change background..."
 
 msgid "VTKViewer_ViewManager::VTK_VIEW_TITLE"
-msgstr "VTK scene:%1 - viewer:%2"
+msgstr "VTK scene:%M - viewer:%V"
 
 msgid "MNU_SHOW_TRIHEDRON"
 msgstr "Show/Hide trihedron"
diff --git a/src/VTKViewer/resources/view_rotation_point.png b/src/VTKViewer/resources/view_rotation_point.png
new file mode 100755 (executable)
index 0000000..59f5931
Binary files /dev/null and b/src/VTKViewer/resources/view_rotation_point.png differ