From: vsr Date: Wed, 30 Jan 2008 16:06:02 +0000 (+0000) Subject: Merge from BR_Dev_For_4_0 branch (from tag mergeto_BR_QT4_Dev_17Jan08) X-Git-Tag: V5_0_0a1~49 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=8bb650e7fbf61e4fac7e12f6de85661c97052c28;p=modules%2Fgui.git Merge from BR_Dev_For_4_0 branch (from tag mergeto_BR_QT4_Dev_17Jan08) --- diff --git a/adm_local/unix/config_files/check_vtk.m4 b/adm_local/unix/config_files/check_vtk.m4 index 17a564a2f..5e4fc444e 100644 --- a/adm_local/unix/config_files/check_vtk.m4 +++ b/adm_local/unix/config_files/check_vtk.m4 @@ -27,11 +27,11 @@ 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 is /usr/local)])], + [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 -5.0)])], + [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"]) ]) @@ -46,6 +46,8 @@ 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 @@ -88,6 +90,9 @@ LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkFiltering -lvtkIO -lvtkR TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS $LXLIB -lX11 -lXt" 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="" @@ -102,6 +107,9 @@ else fi 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="" diff --git a/build_configure b/build_configure index 38c83ea1c..ef97954dd 100755 --- a/build_configure +++ b/build_configure @@ -25,22 +25,22 @@ cd ${CONF_DIR} ABS_CONF_DIR=`pwd` 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 +#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 +#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 +#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 @@ -53,7 +53,8 @@ cp -f ${KERNEL_ROOT_DIR}/salome_adm/unix/SALOMEconfig.h.in salome_adm/unix # autom4te.cache (directory) echo "====================================================== aclocal" -aclocal -I adm_local/unix/config_files -I salome_adm/unix/config_files || exit 1 +aclocal -I adm_local/unix/config_files \ + -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files || exit 1 # ____________________________________________________________________ # libtoolize creates some configuration files (ltmain.sh, diff --git a/configure.ac b/configure.ac index 6ee8c787a..383c0114a 100644 --- a/configure.ac +++ b/configure.ac @@ -304,7 +304,6 @@ echo testing VTK echo --------------------------------------------- echo -OPTIONS_VTK CHECK_VTK echo @@ -487,6 +486,14 @@ echo CHECK_CPPUNIT +echo +echo --------------------------------------------- +echo Testing libxml2 +echo --------------------------------------------- +echo + +CHECK_LIBXML + echo echo --------------------------------------------- echo Summary @@ -502,7 +509,7 @@ fi if test "$GUI_DISABLE_CORBA" != "yes"; then variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok -omniORB_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok" +omniORB_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok libxml_ok Kernel_ok" else variables="cc_ok lex_yacc_ok python_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok boost_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok Kernel_ok" @@ -602,9 +609,11 @@ AC_OUTPUT([ \ ./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 \ diff --git a/doc/salome/gui/GUI/closestudy.png b/doc/salome/gui/GUI/closestudy.png deleted file mode 100755 index fb7abe1dc..000000000 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 index 366ca9f9b..000000000 --- a/doc/salome/gui/GUI/cshdat_robohelp.htm +++ /dev/null @@ -1,258 +0,0 @@ - - -GUI Module Reference Manual - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GUI/cshdat_webhelp.htm b/doc/salome/gui/GUI/cshdat_webhelp.htm deleted file mode 100755 index e0927b0bf..000000000 --- a/doc/salome/gui/GUI/cshdat_webhelp.htm +++ /dev/null @@ -1,251 +0,0 @@ - - -GUI Module Reference Manual - - - - - - - - - - - - - - - - - diff --git a/doc/salome/gui/GUI/default.css b/doc/salome/gui/GUI/default.css deleted file mode 100755 index de2e5d955..000000000 --- a/doc/salome/gui/GUI/default.css +++ /dev/null @@ -1,101 +0,0 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:0pt; - margin-bottom:0pt; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; } -UL { - margin-top:0px; - margin-bottom:0px; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } diff --git a/doc/salome/gui/GUI/default_ns.css b/doc/salome/gui/GUI/default_ns.css deleted file mode 100755 index 3eeb3c496..000000000 --- a/doc/salome/gui/GUI/default_ns.css +++ /dev/null @@ -1,118 +0,0 @@ -BODY { - background-color:#ffffff; - font-family:"Times New Roman" , serif; } -H1 { - font-weight:bold; - font-size:24.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H1 { - font-weight:bold; - font-size:24.0pt; } -H2 { - font-weight:bold; - font-size:18.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H2 { - font-weight:bold; - font-size:18.0pt; } -H3 { - font-weight:bold; - font-size:14.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H3 { - font-weight:bold; - font-size:14.0pt; } -H4 { - font-weight:bold; - font-size:12.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H4 { - font-weight:bold; - font-size:12.0pt; } -H5 { - font-weight:bold; - font-size:10.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H5 { - font-weight:bold; - font-size:10.0pt; } -H6 { - font-weight:bold; - font-size:8.0pt; - font-family:"Times New Roman" , serif; } -LI.kadov-H6 { - font-weight:bold; - font-size:8.0pt; } -P { - font-size:12.0pt; - margin-top:1pt; - margin-bottom:1pt; - font-family:"Times New Roman" , serif; } -LI.kadov-P { - font-size:12.0pt; } -A.expandspot { - color:#008000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.expandtext { - font-style:italic; - font-weight:normal; - color:#ff0000; } -A.dropspot { - cursor:hand; - color:#008000; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -A.glossterm { - color:#800000; - cursor:hand; - font-style:italic; - x-text-underline:off; - x-text-overline:off; - x-text-line-through:off; - text-decoration:none none none; } -SPAN.glosstext { - font-style:italic; - font-weight:normal; - color:#0000ff; } -OL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -UL { - margin-top:0px; - margin-bottom:0px; - font-family:"Times New Roman" , serif; } -A:active { } -A:hover { - x-text-underline:Off; - text-decoration:none; } -A:link { - x-text-underline:Off; - text-decoration:none; } -A:visited { - x-text-underline:Off; - text-decoration:none; } -P.TODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -LI.kadov-P-CTODO { - font-weight:normal; - font-style:italic; - font-family:"Arial Black" , sans-serif; } -ol ol { - margin-top:1px; } -ol ul { - margin-top:1px; } -ul ul { - margin-top:1px; } -ul ol { - margin-top:1px; } diff --git a/doc/salome/gui/GUI/doxyfile.in b/doc/salome/gui/GUI/doxyfile.in new file mode 100755 index 000000000..dfb7f3614 --- /dev/null +++ b/doc/salome/gui/GUI/doxyfile.in @@ -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 index 660565d85..000000000 --- a/doc/salome/gui/GUI/dump_study.htm +++ /dev/null @@ -1,172 +0,0 @@ - - - - - -Dump Study - - - - - - - - - - - - - -

Working with Python Scripts

- -

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

- -

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

- -

 

- -

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

- -

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

- -

 

- -

- -

 

- - - -

 

- -

To - confirm your choice click Save.

- -

 

- -

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

- -

 

- -

- -

 

- -

To - confirm your choice click Open.

- -

 

- - - - diff --git a/doc/salome/gui/GUI/ehelp.xml b/doc/salome/gui/GUI/ehelp.xml deleted file mode 100755 index 9884c422c..000000000 --- a/doc/salome/gui/GUI/ehelp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - WebSearch - - \ 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 index 6cfd2e463..000000000 --- a/doc/salome/gui/GUI/ehlpdhtm.js +++ /dev/null @@ -1,4239 +0,0 @@ -// eHelp® Corporation Dynamic HTML JavaScript -// Copyright© 1998-2003 eHelp® Corporation.All rights reserved. -// Version=4.82 - -// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten. - -//// Segment Begin -- (JavaScript 1.0) - -/// Section Begin - General and relative topics(JavaScript 1.0) - -//{{HH_SYMBOL_SECTION -var HH_ChmFilename = ""; -var HH_WindowName = ""; -var HH_GlossaryFont = ""; -var HH_Glossary = ""; -var HH_Avenue = ""; -var HH_ActiveX = false; -//}}HH_SYMBOL_SECTION - -//Begin to support previous generic parameters -//Get the information about the browser. -var gstrBsAgent = navigator.userAgent.toLowerCase(); -var gnBsVer = parseInt(navigator.appVersion); - -var gbBsOpera = (gstrBsAgent.indexOf('opera') != -1); -var gbBsKonqueror = (gstrBsAgent.indexOf('konqueror') != -1); -var gbBsSafari = (gstrBsAgent.indexOf('safari') != -1); -var gbBsIE = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; -var gbBsNS = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari; - -var gbBsMac = (gstrBsAgent.indexOf('mac') != -1); -var gbBsWindows = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1)); -var gbBsSunOS = (gstrBsAgent.indexOf("sunos") != -1); - -var gbBsIE3Before = ((gbBsIE) && (gnBsVer <= 2)); -var gbBsNS3Before = ((gbBsNS) && (gnBsVer <= 3)); - -var gbBsNS2 = ((gbBsNS) && (gnBsVer <= 2)); -var gbBsNS3 = ((gbBsNS) && (gnBsVer == 3)); -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))); -var gbBsIE302 = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1)); - -var gbBsNS4 = ((gbBsNS) && (gnBsVer >= 4)); -var gbBsNS6 = ((gbBsNS) && (gnBsVer >= 5)); -var gbBsNS7 = false; - -var gbBsIE4 = ((gbBsIE) && (gnBsVer >= 4)); -var gbBsIE5 = false; -var gbBsIE55 = false; - -var gbBsOpera6 = false; -var gbBsOpera7 = false; - -var gbBsKonqueror3 = false; - - - -gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;; -if (gbBsIE) -{ - if (parseInt(navigator.appVersion) >= 4) { - gbBsIE4 = true; - if (gbBsIE4) { - var nPos = gstrBsAgent.indexOf("msie"); - var strIEversion = gstrBsAgent.substring(nPos + 5); - var nVersion = parseFloat(strIEversion); - if (nVersion >= 5) - gbBsIE5 = true; - if (nVersion >= 5.5) - gbBsIE55 = true; - } - } -} -if (gbBsNS6) -{ - var nPos=gstrBsAgent.indexOf("gecko"); - if(nPos!=-1) - { - var nPos2=gstrBsAgent.indexOf("/", nPos); - if(nPos2!=-1) - { - var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1)); - if (nVersion>=20020823) - gbBsNS7=true; - } - } -} -if (gbBsOpera) -{ - var nPos = gstrBsAgent.indexOf("opera"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+6)); - if (nVersion >= 6) - { - gbBsOpera6=true; - if (nVersion >=7) - gbBsOpera7=true; - } - } -} -if (gbBsKonqueror) -{ - var nPos = gstrBsAgent.indexOf("konqueror"); - if(nPos!=-1) - { - var nVersion = parseFloat(gstrBsAgent.substring(nPos+10)); - if (nVersion >= 3) - { - gbBsKonqueror3=true; - } - } -} - -function insertAdjacentHTML(obj, where, htmlStr) -{ - if (gbBsIE || gbBsOpera7) - { - obj.insertAdjacentHTML(where, htmlStr); - } - else if (gbBsNS6 || gbBsSafari) - { - var r = obj.ownerDocument.createRange(); - r.setStartBefore(obj); - var parsedHTML = r.createContextualFragment(htmlStr); - - switch (where){ - case 'beforeBegin': - obj.parentNode.insertBefore(parsedHTML,obj); - break; - case 'afterBegin': - obj.insertBefore(parsedHTML,obj.firstChild); - break; - case 'beforeEnd': - obj.appendChild(parsedHTML); - break; - case 'afterEnd': - if (obj.nextSibling){ - obj.parentNode.insertBefore(parsedHTML,obj.nextSibling); - } else { - obj.parentNode.appendChild(parsedHTML); - } - break; - } - } -} - -// Utilities functions. -function BsscHasExtJs() -{ - if( gbBsIE3Before || gbBsNS3Before) - return false; - return true; -} - -// Register event handler -var gBsOnLoads = new Array(); // An array holds all the onload event handler. -var gBsOnClicks = new Array(); // An array holds all the onClick event handler. -var gBsOnUnLoads = new Array(); // An array holds all the OnUnLoad event handler. -var gBsOnMouseOvers = new Array(); // An array holds all the OnMouseOver event handler. -var gBsOnMouseOuts = new Array(); // An array holds all the OnMouseOut event handler. - -var gbOrignalOnMouseDown = null; - -function BsscRegisterOnLoad(funcHandler) -{ - var nLength = gBsOnLoads.length; - gBsOnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnClick(funcHandler) -{ - var nLength = gBsOnClicks.length; - gBsOnClicks[nLength] = funcHandler; -} - -function BsscRegisterOnUnLoad(funcHandler) -{ - var nLength = gBsOnUnLoads.length; - gBsOnUnLoads[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOver(funcHandler) -{ - var nLength = gBsOnMouseOvers.length; - gBsOnMouseOvers[nLength] = funcHandler; -} - -function BsscRegisterOnMouseOut(funcHandler) -{ - var nLength = gBsOnMouseOuts.length; - gBsOnMouseOuts[nLength] = funcHandler; -} - -function BsGeneralOnLoad() -{ - if (!gbBsIE4 && !gbBsNS4) - return; - - // Make everything visible in navigator - if (gbBsNS4 && !gbBsNS6) { - // Make some special effects items visible - for (var iLayer = 0; iLayer < document.layers.length; iLayer++) { - document.layers[iLayer].visibility = "show"; - document.layers[iLayer].left = 0; - } - } -} - -// If resize the netscape browser, need to reload it. -function BsReDo() -{ - if (innerWidth != origWidth || innerHeight != origHeight) - location.reload(); -} -// End of the local functions. - -// The following functions are used by the html files. -function BSSCOnLoad() -{ - if( !BsscHasExtJs() ) - return; - for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--) - gBsOnLoads[nElement](); -} - -function BSSCOnClick() -{ - if (!BsscHasExtJs()) return; - - for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--) - gBsOnClicks[nElement](); -} - -function BSSCOnUnload() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--) - gBsOnUnLoads[nElement](); -} - -function BSSCOnMouseOver() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--) - gBsOnMouseOvers[nElement](); -} - -function BSSCOnMouseOut() -{ - if (!BsscHasExtJs()) return; - for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--) - { - gBsOnMouseOuts[nElement](); - } -} -// End of invocation of the event handle functions. - -// Add the GereralOnLoad to the onload array. -if (typeof(BsscRegisterOnLoad) != "undefined") -{ - BsscRegisterOnLoad(BsGeneralOnLoad); -} -if (gbBsNS4&&!gbBsNS6) { - origWidth = innerWidth; - origHeight = innerHeight; - onresize = BsReDo; -} -//End to support previous generic parameters - -//Begin to support previous HHActiveX invoking -function BsHHActivateComponents() -{ - if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0]))) - { - var objBody = getElementsByTag(document,"BODY")[0]; - if( typeof(objBody) == "object" ) - { - insertAdjacentHTML(objBody, "beforeEnd", ''); - if (HHComponentActivator.object) - HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue); - } - } -} - -function BsHHActivXOnLoad() -{ - if( gbBsIE4 ) - BsHHActivateComponents(); -} - -if( typeof(BsscRegisterOnLoad) != "undefined" ) -{ - BsscRegisterOnLoad(BsHHActivXOnLoad); -} -//End to support previous HHActiveX invoking - -//Begin to support previous relative topics -//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here -var gbPopupMenuTimeoutExpired = false; -var gbInPopupMenu = false; -var gbPopupMenuTopicList = null; -var gOlddocumentClick = null; - -////////////////////////////////////////////////////////////////////////////////////////// -// -// Popup Menu code -// -////////////////////////////////////////////////////////////////////////////////////////// - -var g_bIsPopupMenuInit = false; -function _WritePopupMenuLayer() -{ - if (!g_bIsPopupMenuInit) - { - if (gbBsNS4&&!gbBsNS6) { -//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page... - document.write("
"); - } else{ - document.write(""); - if (!(gbBsNS4&&!gbBsNS6)) { - document.write(""); - } - } - g_bIsPopupMenuInit = true; - } -} - -//Seek for the bsscright frame -function _SeekFrameByName( cRoot, strName ) -{ - if( cRoot == null ) return null; - if( cRoot.frames == null ) return null; - if( cRoot.frames[strName] != null ) return cRoot.frames[strName]; - for (var i=0; i'; - } else { - strMenu += '' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + ''; - } - strMenu += ''; - - if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) { - i += 2; - } else { - i += 1; - } - } - strMenu += ""; - - if (gbBsMac) { - // totally hack. because ie5 in mac need something. is one of them. mac is mad. - strMenu +="
"; - } - - var layerPopup = null; - var stylePopup = null; - var nEventX = 0; - var nEventY = 0; - var nWindowWidth = 0; - if (gbBsIE4 || gbBsOpera7) { - - layerPopup = getElement("PopupMenu"); - layerPopup.innerHTML = strMenu; - stylePopup = layerPopup.style; - - _BSPSGetClientSize(); - - // Get the position of the item causing the event (relative to its parent) - nEventX = window.event.clientX; - nEventY = window.event.clientY; - - if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) { - nEventY += document.body.scrollTop + 10; - } else { - nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20; - } - stylePopup.top = nEventY; - - var nPopupWidth = layerPopup.scrollWidth; - if (gbBsMac) { - nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup. - } - if (nEventX + nPopupWidth + 20 > gBsClientWidth) { - if (gBsClientWidth - nPopupWidth < 5) { - stylePopup.left = 5; - } else { - stylePopup.left = gBsClientWidth - nPopupWidth - 5; - } - } else { - stylePopup.left = nEventX + document.body.scrollLeft + 20; - } - - stylePopup.visibility = "visible"; - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - document.onclick = PopupMenu_HandleClick; - - } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - - if (gbBsNS6) - { - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - } - else - { - nEventX = window.event.clientX; - nEventY = window.event.clientY; - } - _BSPSGetClientSize(); - layerPopup.innerHTML = strMenu; - - if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20; - } - - if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20; - } - } else { - nEventX += 20; - } - layerPopup.style.top = nEventY; - layerPopup.style.left = nEventX; - // set again to avoid the stupid frash in netscape 6. - layerPopup.innerHTML = strMenu; - layerPopup.style.visibility = "visible"; - //window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onclick) - gOlddocumentClick = document.onclick; - window.onclick = PopupMenu_HandleClick; - } - else if (gbBsNS4) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - stylePopup = layerPopup.document; - stylePopup.write(strMenu); - stylePopup.close(); - var e = fn_arguments[0]; - nEventX = e.pageX; - nEventY = e.pageY; - _BSPSGetClientSize(); - if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) { - nEventY += 20; - } else { - nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20; - } - layerPopup.top = nEventY; - - if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) { - if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) { - nEventX = 5; - } else { - nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20; - } - } else { - nEventX += 20; - } - - layerPopup.left = nEventX; - - layerPopup.visibility = "show"; - - window.captureEvents(Event.MOUSEDOWN); - if (!gOlddocumentClick && document.onmousedown) - gOlddocumentClick = document.onmousedown; - window.onmousedown = PopupMenu_HandleClick; - } - - window.gbInPopupMenu = true; - window.gbPopupMenuTimeoutExpired = false; - setTimeout("PopupMenu_Timeout();", 100); - return false; -} - -function PopupMenu_Timeout() -{ - window.gbPopupMenuTimeoutExpired = true; -} - -function PopupMenu_Over(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupOver"; - return; -} - -function PopupMenu_Out(e) -{ - if (gbBsIE4||gbBsOpera7) - e.srcElement.className = "PopupNotOver"; - else if (gbBsNS6) - e.target.parentNode.className = "PopupNotOver"; - return; -} - -function PopupMenu_HandleClick(e) -{ - if (window.gbPopupMenuTimeoutExpired) { - window.gbInPopupMenu = false; - if (gbBsNS4 && !gbBsNS6) { - window.releaseEvents(Event.MOUSEDOWN); - } - - var layerPopup = null; - if (gbBsNS4&&!gbBsNS6) { - layerPopup = document.layers.PopupMenu; - layerPopup.visibility = "hide"; - } else { - layerPopup = getElement("PopupMenu"); - layerPopup.style.visibility = "hidden"; - } - - if (gOlddocumentClick) - { - if (gbBsNS4 && !gbBsNS6) - document.onmousedown = gOlddocumentClick; - else - document.onclick = gOlddocumentClick; - } - } - return; -} - -function BSSCPopup_ClickMac() -{ - if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7)) - { - var bClickOnAnchor = false; - var el; - if ((window.event != null) && - (window.event.srcElement != null)) - { - el = window.event.srcElement; - while (el != null) - { - if ((el.tagName == "A") || (el.tagName == "AREA")) { - bClickOnAnchor = true; - break; - } - if (el.tagName == "BODY") { - break; - } - el = getParentNode(el); - } - } - if (BSSCPopup_IsPopup()) - { - if (!bClickOnAnchor) { - parent.window.gPopupWindow = null; - self.close(); - } - } - else - { - bClosePopupWindow = true; - if ((bClickOnAnchor) && - (el.href) && - ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1))) - { - bClosePopupWindow = false; - } - if (bClosePopupWindow) - { - if (window.gPopupWindow != null && !window.gPopupWindow.closed ) - { - window.gPopupWindow.close(); - } - } - } - } -} - -function BsPopupOnClick() -{ - if (!gbBsIE4 && !gbBsOpera7) - return; - - BSSCPopup_ClickMac(); -} - -function _BSSCOnError(message) -{ - if(-1 != message.indexOf("denied") - || -1 != message.indexOf("Object required")) - return true; -} - -//End to support previous relative topics - -/// Section End - General and relative topics (JavaScript 1.0) - -/// Section Begin - Popup (JavaScript 1.0) -//Begin to support previous popup functions - -//variables used to isolate the browser type -var gBsStyVisShow = null; -var gBsStyVisHide = null; -var gBsClientWidth = 640; -var gBsClientHeight = 480; - -// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others. -var gBRateH_W = 0.618; // 1.618 Golden cut. -var gBMaxXOfParent = 0.8; -var gBMaxYOfParent = 0.8; -var gBscrollHeight = 16; -var gBscrollWidth = 16; -var gBpermitXDelta = 3; -var gBpermitYDelta = 3; - - -var arrayPopupURL = new Array(); -var arrayAbsPopupURL = new Array(); - -var arrayDirty = new Array(); - -function setAbsPopupURL(nIndex, strURL) -{ - arrayAbsPopupURL[nIndex] = strURL; -} - -function getAbsPopupURL(nIndex) -{ - if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null; - else - return arrayAbsPopupURL[nIndex]; -} - -function getPopupURL(nIndex) -{ - if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null; - else - return arrayPopupURL[nIndex]; -} - -function getPopupID(nIndex) -{ - return gstrPopupID + nIndex; -} - -function getPopupShadowID(nIndex) -{ - return gstrPopupShadowID + nIndex; -} - -function getPopupTopicID(nIndex) -{ - return gstrPopupTopicID + nIndex; -} - -function getPopupIFrameID(nIndex) -{ - return gstrPopupIFrameID + nIndex; -} - -function getPopupIFrameName(nIndex) -{ - return gstrPopupIFrameName + nIndex; -} - - -function getPopupTopicStyle(nIndex) -{ - return getElement(getPopupTopicID(nIndex)).style; -} - -function getPopupShadowStyle(nIndex) -{ - return getElement(getPopupShadowID(nIndex)).style; -} - -function getPopupIFrame(nIndex) -{ - if (gbBsNS6) - return eval("window.frames['" + getPopupIFrameName(nIndex) + "']"); - else - return eval("document.frames['" + getPopupIFrameName(nIndex) + "']"); -} - -function getPopupDivStyle(nIndex) -{ - return getElement(getPopupID(nIndex)).style; -} - -function getPopupIFrameStyle(nIndex) -{ - return getElement(getPopupIFrameID(nIndex)).style; -} - - -function findDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) { - if (arrayPopupURL[i] == strURL) { - return i; - } - } - return -1; -} - -var gnToken = -1; -function takeToken() -{ - gnToken ++; - if (gnToken > 10000) gnToken = 0; - return gnToken; -} - -function IsValidToken(nToken) -{ - return (gnToken == nToken); -} - -function addDiv(strURL) -{ - for (var i = 0; i < arrayPopupURL.length; i ++) { - if (arrayPopupURL[i] == null) { - arrayPopupURL[i] = strURL; - return i; - } - } - arrayPopupURL[i] = strURL; - arrayDirty[i] = true; - return i; -} - -function setDirty() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - arrayDirty[i] = true; -} - -function IsDirty(nIndex) -{ - if (nIndex == -1) - return true; - else - if (arrayDirty.length > nIndex) - return arrayDirty[nIndex]; - else - return true; -} - -function hideAll() -{ - for (var i = 0; i < arrayPopupURL.length; i ++ ) - { - getPopupDivStyle(i).visibility = gBsStyVisHide; - getPopupIFrameStyle(i).visibility = gBsStyVisHide; - } -} - -function getCurrentPopupIFrame() -{ - for (var i = 0; i < arrayPopupURL.length; i ++) - if (getPopupDivStyle(i).visibility == gBsStyVisShow) - return getPopupIFrame(i); - return null; -} - -function setClear(nIndex) -{ - if (nIndex != -1) - arrayDirty[nIndex] = false; -} - -function _BSSCCreatePopupDiv(strURL) -{ - var nIndex = findDiv(strURL); - if (nIndex == -1 ) { - nIndex = addDiv(strURL); - BsPopup_CreateDiv(nIndex); - } - else { - if (IsDirty(nIndex)) { - if("object" == typeof(getPopupIFrame(nIndex).document)) - getPopupIFrame(nIndex).document.location.href = strURL; - } - } - return nIndex; -} - -//Here is the browser type -function _BSPSGetBrowserInfo() -{ - if (gbBsNS4&&!gbBsNS6) - { - gBsStyVisShow = "show"; - gBsStyVisHide = "hide"; - } - else - { - gBsStyVisShow = "visible"; - gBsStyVisHide = "hidden"; - } -} - -_BSPSGetBrowserInfo(); - -//Get client size info -function _BSPSGetClientSize() -{ - if (gbBsNS4||gbBsKonqueror3||gbBsSafari) - { - gBsClientWidth = innerWidth; - gBsClientHeight = innerHeight; - } - else if (gbBsIE4 || gbBsOpera7) - { - gBsClientWidth = document.body.clientWidth; - gBsClientHeight = document.body.clientHeight; - } -} - -var gstrPopupID = 'BSSCPopup'; -var gstrPopupShadowID = 'BSSCPopupShadow'; -var gstrPopupTopicID = 'BSSCPopupTopic'; -var gstrPopupIFrameID = 'BSSCPopupIFrame'; -var gstrPopupIFrameName = 'BSSCPopupIFrameName'; - -var gstrPopupSecondWindowName = 'BSSCPopup'; - -var gPopupWindow = null; -var gnPopupClickX = 0; -var gnPopupClickY = 0; - -var gnPopupScreenClickX = 0; -var gnPopupScreenClickY = 0; - -var gbPopupTimeoutExpired = false; - -function DHTMLPopupSupport() -{ - if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) { - return true; - } - return false; -} - -function BSSCPopup_IsPopup() -{ - if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) { - return true; - } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) { - return true; - } else { - return false; - } -} - -// If there is a hyperlink in a popup window, display the hyperlink in -// the original window. (bsscright) -if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) { - document.write(""); -} - -// Local functions. -function BsPopup_CreateDiv(nIndex) -{ - if(!DHTMLPopupSupport()) - return; - // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone. - var strPopupDiv = ""; - - var objBody = getElementsByTag(document, "BODY")[0]; - if( typeof(objBody) != "object" ) - return; - - insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv); -} - -function handleLoadNS() -{ - if (this.id) - { - var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length)); - BSSCPopup_PostWork(nIndex); - } -} - -function BSSCPopup_PostWork(nIndex) -{ - getPopupDivStyle(nIndex).visibility = gBsStyVisShow; - getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow; - - setClear(nIndex); - window.gbPopupTimeoutExpired = true; - - BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document); - if (gbBsNS6) - getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false); - else - getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked; - - if (!gbOrignalOnMouseDown && document.onmousedown) - gbOrignalOnMouseDown = document.onmousedown; - - if (gbBsNS6) - document.addEventListener("mousedown", BSSCPopupParentClicked,false); - else - document.onmousedown = BSSCPopupParentClicked; -} - -function BSSCPopup_Timeout(nIndex, nToken) -{ - if (!IsValidToken(nToken)) return; - - if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") && - (getPopupIFrame(nIndex).document.body != null))) { - BSSCPopup_PostWork(nIndex); - } else { - setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100); - } -} - -// VH 08/10/00 -// do not change target to parent if the href is using javascript -function BSSCPopup_ChangeTargettoParent(tagsObject) -{ - var collA = getElementsByTag(tagsObject, "A"); - BSSCPopup_ChangeTargettoParent2(collA); - - var collIMG = getElementsByTag(tagsObject,"IMG"); - BSSCPopup_ChangeTargettoParent2(collIMG); -} - -function BSSCPopup_ChangeTargettoParent2(colls) -{ - if (colls != null) { - for (var j = 0; j < colls.length; j ++ ) - { - var strtemp = colls[j].href; - if (strtemp) - { - strtemp = strtemp.toLowerCase(); - if (strtemp.indexOf("javascript:") == -1) - if (colls[j].target == "") - colls[j].target = "_parent"; - } - } - } -} - -function BSPSPopupTopicWinHelp(strURL) -{ - _BSSCPopup(strURL); - return; -} - -function _BSSCPopup(strURL, width, height) -{ - var cuswidth = 0; - var cusheight = 0; - if ("undefined" != typeof(width) && "undefined" != typeof(height)) { - cuswidth = width; - cusheight= height; - } - - if (DHTMLPopupSupport()) { - var nToken = takeToken(); // take token first. - var nIndex = _BSSCCreatePopupDiv(strURL); - window.gbPopupTimeoutExpired = false; - var ntWidth = gBsClientWidth; - var ntHeight = gBsClientHeight; - _BSPSGetClientSize(); - if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) { - setDirty(); - } - - if (IsDirty(nIndex)) { - if (gbBsMac) { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight +")", 400); - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100); - } - } - else { - MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight); - } - } else { - _BSSCPopup2(strURL, cuswidth, cusheight); - } - return; -} - -if (gbBsIE55) -{ - var ehlpdhtm_fOldBefureUnload = window.onbeforeunload; - var gnBsUnload=0; - window.onbeforeunload = window_BUnload; -} - -function window_BUnload() -{ - gnBsUnload++; - if (gnBsUnload>1) - return; - for (var i = 0; i < arrayPopupURL.length; i ++) - removeThis(document.all(getPopupID(i))); - arrayPopupURL.length = 0; - if (ehlpdhtm_fOldBefureUnload) - ehlpdhtm_fOldBefureUnload(); -} - -function _BSSCPopup2(strURL, width, height) -{ - if (gbBsOpera6&&gbBsMac) - { - var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName); - wmTemp.close(); - setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100); - } - else - _BSSCPopup3(strURL, width, height); -} - -function _BSSCPopup3(strURL, width, height) -{ - if (window.name == gstrPopupSecondWindowName) { - window.location = strURL; - } else { - if (!gbBsMac || !gbBsNS4) { - BSSCHidePopupWindow(); - } - var nX = 0; - var nY = 0; - var nHeight = 300; - var nWidth = 400; - if (width > 0 && height > 0) { - nHeight = height; - nWidth = width; - } - _BSPSGetClientSize(); - - nX = window.gnPopupScreenClickX; - nY = window.gnPopupScreenClickY; - - if (nY + nHeight + 40 > screen.availHeight) { - nY = screen.availHeight - nHeight - 40; - } - if (nX + nWidth + 40 > screen.availWidth) { - nX = screen.availWidth - nWidth - 40; - } - - // Launch a separate window - var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes"; - if (gbBsNS) { - if (gbBsNS6) { - strParam += ",Height=" + nHeight + ",Width=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - else { - strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth; - strParam += ",screenX=" + nX + ",screenY=" + nY; - strParam += ",dependent=yes"; - } - } - else { - strParam += ",height=" + nHeight + ",width=" + nWidth; - strParam += ",left=" + nX + ",top=" + nY; - } - if (gbBsSafari) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - window.gPopupWindow = window.open(strURL, "", strParam); - window.gPopupWindow.name = gstrPopupSecondWindowName; - window.gPopupWindow.moveTo(nX, nY); - widnow.gPopupWindow.document.location.reload(); - } - else - { - var wmTemp=null; - if (gbBsKonqueror3) - { - if (window.gPopupWindow) - window.gPopupWindow.close(); - } - if (gbBsOpera&&gbBsMac) - { - wmTemp= window.open(document.location.href, "Temp", strParam); - } - window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam); - if (!gbBsIE) - window.gPopupWindow.focus(); - - if (wmTemp) - wmTemp.close(); - } - - if (gbBsNS4) - setEventHandle(); - else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) - setTimeout("setPopupFocus();", 100); - } - return; -} - -function setEventHandle() -{ - window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - window.gPopupWindow.onblur = NonIEPopup_HandleBlur; -} - -function setPopupFocus() -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleBlur(e) -{ - window.gPopupWindow.focus(); -} - -function NonIEPopup_HandleClick(e) -{ - // Because navigator will give the event to the handler before the hyperlink, let's - // first route the event to see if we are clicking on a Popup menu in a popup. - document.routeEvent(e); - - // If a popup menu is active then don't do anything with the click - if (window.gPopupWindow.gbInPopupMenu) { - window.gPopupWindow.captureEvents(Event.CLICK); - window.gPopupWindow.onclick = NonIEPopup_HandleClick; - return false; - } - - // Close the popup window - if(e.target.href) - { - if(e.target.href.indexOf("javascript:")==-1) - { - if (e.target.target=="") - window.location.href = e.target.href; - else - window.open(e.target.href, e.target.target); - this.close(); - } - } - else - this.close(); - return false; -} - -function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (!window.getPopupIFrame(nIndex).document) { - _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight); - return; - } - - if (!IsValidToken(nToken)) return; - - if (gbBsNS6) - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - return; - } - - if ((window.getPopupIFrame(nIndex).document.readyState == "complete") && - (window.getPopupIFrame(nIndex).document.body != null)) { - 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. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } - else - { - setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url. - BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight); - } - } else { - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - } -} - -function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight) -{ - if (window.gbPopupTimeoutExpired) return; - - if (!IsValidToken(nToken)) return; - - getPopupDivStyle(nIndex).visibility = gBsStyVisHide; - getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide; - - // Determine the width and height for the window - _BSPSGetClientSize(); - - var size = new BSSCSize(0, 0); - - if (cuswidth <= 0 || cusheight <= 0) - BSSCGetContentSize(window.getPopupIFrame(nIndex), size); - else { - size.x = cuswidth; - size.y = cusheight; - } - - // Determine the width and height for the window - var nWidth = size.x; - var nHeight = size.y; - - // for small popup size, we should allow any size. - // The popup size should be ok if bigger than 0 - if (nWidth < 0 || nHeight < 0) return; // there must be something terribly wrong. - - getPopupDivStyle(nIndex).width = nWidth; - getPopupDivStyle(nIndex).height = nHeight; - - getPopupShadowStyle(nIndex).width = nWidth; - getPopupShadowStyle(nIndex).height = nHeight; - getPopupTopicStyle(nIndex).width = nWidth; - getPopupTopicStyle(nIndex).height = nHeight; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).width = nWidth + 2; - getPopupShadowStyle(nIndex).height = nHeight + 2; - getPopupTopicStyle(nIndex).width = nWidth + 2; - getPopupTopicStyle(nIndex).height = nHeight + 2; - } - - getPopupIFrameStyle(nIndex).width = nWidth; - getPopupIFrameStyle(nIndex).height = nHeight; - if (gbBsIE55 || gbBsNS6) - { - getPopupIFrameStyle(nIndex).top = 0; - getPopupIFrameStyle(nIndex).left = 0; - } - - var strURL = getPopupURL(nIndex); - if (strURL.indexOf("#") != -1&&gbBsNS6) - getPopupIFrame(nIndex).location.reload(); - else if (strURL.indexOf("#") != -1||gbBsNS6) - getPopupIFrame(nIndex).location.href = strURL; // reload again, this will fix the bookmark misunderstand in IE5. - - MoveDivAndShow(nIndex, nToken, cuswidth, cusheight); -} - -function getScrollLeft() -{ - if (document.body.scrollLeft) - return document.body.scrollLeft; - else if (window.pageXOffset) - return window.pageXOffset; - else - return 0; -} - -function getScrollTop() -{ - if (document.body.scrollTop) - return document.body.scrollTop; - else if (window.pageYOffset) - return window.pageYOffset; - else - return 0; -} - - -function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight) -{ - if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again. - window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex); - setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200); - return; - } - - // Determine the position of the window - var nClickX = window.gnPopupClickX; - var nClickY = window.gnPopupClickY; - var nTop = 0; - var nLeft = 0; - - var nWidth = parseInt(getPopupDivStyle(nIndex).width); - var nHeight = parseInt(getPopupDivStyle(nIndex).height); - - if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) { - nTop = nClickY + 10; - } else { - nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20; - } - if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) { - nLeft = nClickX; - } else { - nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8; - } - - if (nTop < getScrollTop()) nTop = getScrollTop() + 1; - if (nLeft< getScrollLeft()) nLeft = getScrollLeft() + 1; - - getPopupDivStyle(nIndex).left = nLeft; - getPopupDivStyle(nIndex).top = nTop; - - // Set the location of the background blocks - getPopupShadowStyle(nIndex).left = 6; - getPopupShadowStyle(nIndex).top = 6; - if (gbBsIE55) - { - getPopupShadowStyle(nIndex).left = 4; - getPopupShadowStyle(nIndex).top = 4; - } - - if (gbBsMac&&gbBsIE4) { - // Total hack on the iMac to get the IFrame to position properly - getPopupIFrameStyle(nIndex).pixelLeft = 100; - getPopupIFrameStyle(nIndex).pixelLeft = 0; - // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it - getPopupIFrame(nIndex).window.BSSCOnLoad(); - } - - if (gbBsNS6&&IsDirty(nIndex)) - getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false); - else - BSSCPopup_Timeout(nIndex , nToken ); - return; -} - -function BSSCSize(x, y) -{ - this.x = x; - this.y = y; -} - -function BSSCGetContentSize(thisWindow, size) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4) - return; - - if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) { - size.x = 320; - size.y = 180; - return; - } - - // Resize the width until it is wide enough to handle the content - // The trick is to start wide and determine when the scrollHeight changes - // because then we know a scrollbar is necessary. We can then go back - // to the next widest size (for no scrollbar) - - var ClientRate = gBsClientHeight / gBsClientWidth; - - - var GoldenSize = new BSSCSize(0,0); - GoldenSize.x = gBsClientWidth * gBMaxXOfParent; - GoldenSize.y = gBsClientHeight *gBMaxYOfParent ; - - if (ClientRate > gBRateH_W) { - GoldenSize.y = GoldenSize.x * gBRateH_W; - } - else { - GoldenSize.x = GoldenSize.y / gBRateH_W; - } - - // Try to using parent specified max x. - var x = 0; - var maxgoldx = GoldenSize.x; - var maxx = gBsClientWidth * gBMaxXOfParent; - - // This double resize causes the document to re-render (and we need it to) - if (!gbBsIE5) - thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4. - - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(1, 1); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight); - - var miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - - 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 - { - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight); - - miny = thisWindow.document.body.scrollHeight + gBscrollHeight; - maxy = gBsClientHeight * gBMaxYOfParent; - - if (miny > maxy) { // the popup must have a scroll, OK let it be. - miny = maxy; - size.x = maxx; - size.y = maxy; - thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little. - } - else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent. - size.y = miny; - - // downsize from maxx , now I try to using binary divide. - x = maxx; - deltax = -maxx/2; - //j = 0; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight; - thisWindow.document.body.scroll = 'no'; - } - } - else { - if (thisWindow.document.body.scrollWidth > maxgoldx) { - size.x = maxx; - size.y = miny; - thisWindow.document.body.scroll = 'yes'; - } - else { - // downsize from maxgoldx , now I try to using binary divide. - x = maxgoldx; - deltax = -maxgoldx/2; - while (true) { - x = x + deltax; - thisWindow.resizeTo(x, miny); - thisWindow.resizeTo(x, miny); - diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W; - if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter - deltax = Math.abs(deltax) /2; - else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter - deltax = -Math.abs(deltax) /2; - else - // the y is close enough to wanted. - break; - if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore. - break; - } - size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth; - size.y = thisWindow.document.body.scrollHeight ; - thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little. - thisWindow.resizeTo(size.x, size.y); - if (thisWindow.document.body.scrollWidth > size.x) - { - size.x = thisWindow.document.body.scrollWidth; - } - if (thisWindow.document.body.scrollHeight > size.y) - { - size.y = thisWindow.document.body.scrollHeight; - } - } - } - thisWindow.resizeTo(size.x, size.y); - thisWindow.resizeTo(size.x, size.y); - return; -} - -function BSSCPopupParentClicked() -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - - window.gbPopupTimeoutExpired = false; - - return true; -} - -function isInsideHyperLink(obj) -{ - if (obj&&obj!=getParentNode(obj)) - { - if (obj.tagName=="A"||obj.tagName=="IMG") - return true; - else - return isInsideHyperLink(getParentNode(obj)); - } - else - return false; -} - -function BSSCPopupClicked(e) -{ - if (!window.gbPopupTimeoutExpired) { - return false; - } - - var popupIFrame = getCurrentPopupIFrame(); - if (popupIFrame == null) { - return true; - } - - if (gbBsIE4 && (!((popupIFrame.window.event != null) && - (popupIFrame.window.event.srcElement != null) && - isInsideHyperLink(popupIFrame.window.event.srcElement)))) { - document.onmousedown = gbOrignalOnMouseDown; - - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } - else if (gbBsNS6 && (!((e != null) && - (e.target!= null) && isInsideHyperLink(e.target)))) - { - document.addEventListener("mousedown", gbOrignalOnMouseDown,false); - // Simply hide the popup - hideAll(); - window.gbPopupTimeoutExpired = false; - return true; - } -} - -//trace the mouse over's position for hotspot -function BSPSPopupOnMouseOver(event) -{ - if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX; - window.gnPopupScreenClickY = event.screenY; - } else if (gbBsSafari) { - window.gnPopupClickX = event.clientX + getScrollLeft(); - window.gnPopupClickY = event.clientY + getScrollTop(); - window.gnPopupScreenClickX = event.screenX + window.screenX; - window.gnPopupScreenClickY = event.screenY + window.screenY; - } else if (gbBsNS4) { - window.gnPopupClickX = event.pageX - window.pageXOffset; - window.gnPopupClickY = event.pageY - window.pageYOffset; - window.gnPopupScreenClickX = event.screenX - window.pageXOffset; - window.gnPopupScreenClickY = event.screenY - window.pageYOffset; - } -} - -function BSSCHidePopupWindow() -{ - if (window.gPopupWindow != null) { - if (gbBsNS4) { - if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) { - window.gPopupWindow.close(); - window.gPopupWindow = null; - } - } - } - return; -} - -// Add the PopupOnClick to the onclick array. -if (typeof(BsscRegisterOnClick) != "undefined") -{ - BsscRegisterOnClick(BsPopupOnClick); -} -//End to support previous popup functions - -/// Section End - Popup (JavaScript 1.0) - -/// Section Begin - Embedded Stub (JavaScript 1.0) - -function BSSCCreatePopupDiv() -{ - return; -} - -function WritePopupMenuLayer() -{ - if (BsscHasExtJs()) {_WritePopupMenuLayer();} -} - -function BSSCPopup(strURL, width, height) -{ - var re = new RegExp("'", 'g'); - strURL = strURL.replace(re, "%27"); - - if (BsscHasExtJs()) { - _BSSCPopup(strURL, width, height); - }else{ - //Create a temporary window first to ensure the real popup comes up on top - var wndTemp = null; - if (!gbBsNS3) { - wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4"); - } - // Create the real popup window - var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400"); - // Close the temporary - if (!gbBsNS3) { - wndTemp.close(); - } else { - wndPopup.focus(); - } - } -} - -var gbWndTemp = null, gbWndPopupLinks = null; -var gbstrParaTotal = ""; - -function PopupMenu_Invoke() -{ - if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function') - { - if (Number(gsSkinVersion) > 2 && IsFlashSupported()) - { - return wfRelatedTopic(PopupMenu_Invoke.arguments); - } - } - if (BsscHasExtJs()) { - return _PopupMenu_Invoke(PopupMenu_Invoke.arguments); - } - if (gbBsNS3Before || gbBsIE3Before ) { - var argLen = PopupMenu_Invoke.arguments.length; - if (argLen < 5) { - window.document.location.href = PopupMenu_Invoke.arguments[3]; - return false; - } - gbWndTemp = null; - gbWndPopupLinks = null; - gbstrParaTotal = ""; - for (var i = 0; i < (argLen - 2) / 2; i++) { - var strParaLine = ""; - if (gbBsNS2){ - strParaLine += "" - strParaLine += PopupMenu_Invoke.arguments[2 * i + 2]; - strParaLine += ""; - } else { - strParaLine += ""); - if (gbBsNS2) { - gbWndPopupLinks.document.write(""); - } else { - //YJ: IE301,302 and NS3.x works fine - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("script>"); - gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}"); - gbWndPopupLinks.document.write("<"); - gbWndPopupLinks.document.write("/script>"); - } - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.write(gbstrParaTotal); - gbWndPopupLinks.document.write(""); - gbWndPopupLinks.document.close(); - - // Close the temporary - if (!gbBsNS3 && gbWndTemp != null) { - gbWndTemp.close(); - }else { - gbWndPopupLinks.focus(); - } - - return true; - } - return false; -} - -/// Section End - Embedded Stub (JavaScript 1.0) - -//// Segment End -- (JavaScript 1.0) - -//// Segment Begin -- (JavaScript 1.2) -/// Section Begin - kadov DHTM (JavaScript 1.2) - -//Begin to support extended and dropdown text effects. -function kadovIsParagraph(el) -{ - return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false; -} - -function kadovInitEachChild(el) -{ - for(var i=0; i "") ) - child.style.setAttribute( "x-on-pageload", "" ); - } - - var href = child.getAttribute("href") - if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 ) - kadovFilePopupInit(child.id); // Init for Popup - else if( child.className == "dropspot" || child.className == "expandspot" || - child.className == "glossterm" ) - kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text - else if( child.className == "trigger") - kadovInitTrigger(child.id);// Init for Trigger - else - { - kadovInitEffects(child.id);// Init for DHTML effects - CEngine.SetOneTargetInitialState( child.id ); - } - } - - if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") ) - child.start = "mouseover";// to start a AVI file. fileopen doesn't work - - kadovInitEachChild(child); - } -} - -function kadovRetrieveTextInner(el) -{ - var x = ""; - if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" )) - return x; - - if( kadovIsParagraph(el) ) - { - var strNewID = " "; - if( el.id != "" ) - strNewID += "id=" + el.id + "_NewSpan "; - x = "" + el.innerHTML + ""; - } - else - { - for(var i=0; i 0 ) - if( (nTagClose - nTagOpen) != nDistance ) - return strRawHTML; - - var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ; - return kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose ); -} - -function kadovAdjustObjectTag(strRawHTML, nStartPos) -{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings - - //Is there any DTC? - var strDTCTagOpen = ''; - var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos ); - if( nDTCTagOpen < 0 ) - return strRawHTML; - var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen ); - if( nDTCTagClose < nDTCTagOpen) - return strRawHTML; // no Design Time Controls; - - //Is the DTC HTML Help Control? - var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11'; - var strRTObjTagClose = ''; - var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen ); - if( nRTObjTagOpen < nDTCTagOpen ) - return strRawHTML; - var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen ); - if( nRTObjTagClose < nRTObjTagOpen ) - return strRawHTML; // is not a HTML help control - - // Is it a related Topics html help control? - var strRTObjLabel = ''; - } - - // to insert the reconstructed item params into runtime object tag - var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length); - return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length); -} - -function kadovTextPopupOnLoad( el ) -{ - if( typeof(el) == "string" ) - el = getElement(el); - - var src = el.getAttribute( "x-use-popup" ); - var bNeedMove=true; - if(!src&&el.id) - { - for (var i=0;i"); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - - //work around the bug in HH.exe that highlight the phrases when use Search tab - //this approach is just removing the tag inserted by Microsoft in the runtime - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "", 52); - - var strStyle = " style='display:none; position:relative;"; - var newDiv = "
" + strCleanHTML + "
"; - - removeThis(srcDiv); // empty the original DIV tag - var elParentPra = kadovFindParentParagraph(el); - if( elParentPra ) - insertAdjacentHTML(elParentPra, "afterEnd", newDiv ); - } - else if( type == "expanding" ) - { - var inner = kadovRetrieveTextInner(srcDiv); - if( inner == "" ) - inner = srcDiv.innerHTML; - var strAdjust = kadovAdjustObjectTag(inner,0); - var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, ""); - strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, ""); - var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext"; - var newSpan = ""; - removeThis(srcDiv); // empty the original DIV tag - insertAdjacentHTML(el, "afterEnd", newSpan ); - } - } - } - else - { - srcDiv.style.display = "none"; - } - return 0; -} - -function getElementsByTag(obj,sTagName) -{ - if(obj.getElementsByTagName) - return obj.getElementsByTagName(sTagName); - else if(obj.all) - return obj.all.tags(sTagName); - return null; -} - -function getElement(sID) -{ - if(document.getElementById) - return document.getElementById(sID); - else if(document.all) - return document.all(sID); - return null; -} - -function getParentNode(obj) -{ - if(obj.parentNode) - return obj.parentNode; - else if(obj.parentElement) - return obj.parentElement; - return null; -} - -function getChildNodes(obj) -{ - if(obj.childNodes) - { - var children = new Array(); - for (var i = 0; i < obj.childNodes.length; i++) - { - if (obj.childNodes[i].nodeType == 1) - children[children.length] = obj.childNodes[i]; - } - return children; - } - else if(obj.children) - return obj.children; - return null; -} - -function removeThis(obj) -{ - if(obj.parentNode) - obj.parentNode.removeChild(obj); - else - obj.outerHTML=""; -} - -function kadovTextPopup( el ) -{ - if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 ) - return; - - var bNeedMove=true; - - if (window.event) - window.event.cancelBubble = true; - - if( typeof(el) == "string" ) - el = getElement(el); - - if (!el||el==window) - return; - - var src = el.getAttribute( "x-use-popup" ); - if(!src&&el.id) - { - for (var i=0;i= 0 && nNext < values.length ) - { - functions[nIdx] = values.substr( nStart, nNext-nStart+1); - nStart = nNext + 1; - nIdx++; - nNext = values.indexOf( "\)", nStart); - } - - for( var i=0; i= 0 ) - { - nPageClick = arrForClickCount[j].indexOf("="); - if( nPageClick > 0 ) - { - nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1; - break; - } - } - } - var args = srcargs; - if( j < arrForClickCount.length ) - {// to strip out the "clicks=99" from the arguments string - args = ""; - for( var k = 0; k < arrForClickCount.length; k ++ ) - { - if( k != j ) - { - args += arrForClickCount[k]; - if( k < arrForClickCount.length - 1 ) - args += ","; - } - } - } - bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes ); - } -} - -function kadovTranslateProp( prop ) -{ - switch( prop ) - { - case "x-on-hover" : return "bsschover"; - case "x-on-pageclick" : return "bsscpageclick"; - case "x-on-pageload" : return "bsscpageload"; - case "x-on-trigger-1" : return "bssctrigger1"; - case "x-on-trigger-2" : return "bssctrigger2"; - } - return null; -} -//End to convert iWrite format to RoboEditor Format for DHTML effects - -//Begin the definition of one entry to DHTML effects -function bsscFXInit( trigger_ID, target_ID, event_type, - action_type, action_setting, event_addional ) -{ - if( (!gbBsWindows && !gbBsSunOS && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID - return; // we don't support Navigator yet - - if( typeof(event_type) == "string" ) - event_type = event_type.toLowerCase(); - if( typeof(action_type) == "string" ) - action_type = action_type.toLowerCase(); - if( typeof(action_setting) == "string" ) - action_setting = action_setting.toLowerCase(); - - // to get the target element then add it to the target list - var eleTarget = CCSSP.GetObject( target_ID ); - if( (eleTarget != null) && (event_type != null) && (action_type != null) ) - { - CEngine.AddOneTarget( target_ID, eleTarget ); - CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional); - } - - // to validate the trigger_ID parameter - if( typeof(trigger_ID) == "string" && trigger_ID != "" ) - CEngine.BuildTriggerObject( trigger_ID, target_ID ); -} -//End the definition of one entry to DHTML effects - -/// Section End - kadov DHTM (JavaScript 1.2) - -/// Section Begin - CCSSP DHTM (JavaScript 1.2) - -//Begin JavaScript libary for cross-platform positioning object. -function CCSSP(){} // constructor of CCSSP class - -CCSSP.GetObject = function( obj ) -{//convert object name string or reference into a valid object reference - if( typeof(obj) == "object" ) - return obj; - else if( typeof(obj) == "string" && obj != "") - { - if( gbBsNS4 ) - return eval("document." + obj); - else - return eval("document.all(\"" + obj + "\")"); - } - else - return null; -} - -CCSSP.MoveObjectTo = function(obj, x, y) -{//positioning an object at a specific pixel coordinate - if( gbBsNS4 ) - obj.moveTo(x,y); - else - { - obj.style.pixelLeft = x; - obj.style.pixelTop = y; - } -} - -CCSSP.MoveObjectBy = function(obj, dx, dy) -{//moveing a object by x and/or y pixel - if( gbBsNS4 ) - obj.moveBy(dx,dy); - else - { - obj.style.pixelLeft += dx; - obj.style.pixelTop += dy; - } -} - -CCSSP.SetObjectBGColor = function(obj, color) -{//set the background color of an object - if( gbBsNS4 ) - obj.bgColor = color; - else - obj.style.backgroundColor = color; -} - -CCSSP.ShowObject = function(obj, bShow) -{// set the object to be visible or invisible - if( gbBsNS4 ) - obj.visibility = (bShow == true) ? 'show' : 'hide'; - else - obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space. -} - -CCSSP.GetObjectLeft = function(obj) -{// retrieve the x coordinate of a posionable object - if( gbBsNS4 ) - return obj.left; - else - return obj.style.pixelLeft; -} - -CCSSP.GetObjectTop = function(obj) -{// retrieve the y coordinate of a posionable object - if( gbBsNS4 ) - return obj.top; - else - return obj.style.pixelTop; -} - -CCSSP.GetObjectContainLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageX; - else - { - if( obj == document.body ) - return obj.clientLeft; - else - return obj.offsetLeft; - } -} - -CCSSP.GetObjectWindowLeft = function(obj) -{// retrieve the x coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageX; - else - { - var nOffsetWindowLeft = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element); - return nOffsetWindowLeft; - } -} - -CCSSP.GetObjectContainTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to it's parent element - if( gbBsNS4 ) - return obj.pageY; - else - { - if( obj == document.body ) - return obj.clientTop; - else - return obj.offsetTop; - } -} - -CCSSP.GetObjectWindowTop = function(obj) -{// retrieve the y coordinate of a posionable object relative to browser window - if( gbBsNS4 ) - return obj.pageY; - else - { - var nOffsetWindowTop = 0; - for(var element = obj; element; element = element.offsetParent) - nOffsetWindowTop += CCSSP.GetObjectContainTop(element); - return nOffsetWindowTop; - } -} - -CCSSP.GetObjectHeight = function(obj) -{// retrieve the height of a posionable object - if( gbBsNS4 ) - return obj.clip.height; - else - return obj.offsetHeight; -} - -CCSSP.GetObjectWidth = function(obj) -{// retrieve the width of a posionable object - if( gbBsNS4 ) - return obj.clip.width; - else - return obj.offsetWidth; -} - -CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler ) -{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined - if (gbBsNS4 && !gbBsNS6) - return ; - - var oldHandler = ""; - - if (gbBsMac &&gbBsIE4&&!gbBsIE5) - { - if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown") - { //search for - - - - - - - - diff --git a/doc/salome/gui/GUI/index_csh.htm b/doc/salome/gui/GUI/index_csh.htm deleted file mode 100755 index ba099aa30..000000000 --- a/doc/salome/gui/GUI/index_csh.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -GUI Module Reference Manual - - - - - - - - - - - - - \ 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 index 6c22f70fc..000000000 --- a/doc/salome/gui/GUI/index_rhc.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -GUI Module Reference Manual - - - - - - - - - - - - - \ 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 index 000000000..4f132abae --- /dev/null +++ b/doc/salome/gui/GUI/input/about_salome.doc @@ -0,0 +1,12 @@ +/*! + +\page about_salome_page About SALOME + +
    +
  • \subpage intro_to_salome_page
  • +
  • \subpage salome_architecture_page
  • +
  • \subpage installing_salome_page "Installing SALOME"
  • +
  • \subpage running_salome_page
  • +
+ +*/ \ 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 index 000000000..3c4d0e3cc --- /dev/null +++ b/doc/salome/gui/GUI/input/creating_new_study.doc @@ -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. + +To create a new study: + +\par +From the main menu select File > New or in the standard toolbar +click "New document" button. + +\image html newsticn.jpg ""New document" 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. + +To create a new window for a definite study: +
    +
  1. Make your study \b active: maximize it (if it minimized) or click on +the top control zone of the study window. +
  2. +
  3. \n From the main menu select Window > New Window and from the submenu +choose the viewer, which will be activated in a new window. +
  4. +
+ +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 index 000000000..b45a8ed50 --- /dev/null +++ b/doc/salome/gui/GUI/input/displaying_studies.doc @@ -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 Split +Vertically or Split Horizontally. + +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 index 000000000..cafc03eed --- /dev/null +++ b/doc/salome/gui/GUI/input/editing_studies.doc @@ -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: + +To copy/paste a definite object: +\par +In the main toolbar click "Copy"/"Paste" button or from the main menu +choose Edit > Copy/Paste option. + +\image html copy-paste.jpg ""Copy" and "Paste" 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 index 000000000..651ef2e7e --- /dev/null +++ b/doc/salome/gui/GUI/input/geometry_preferences.doc @@ -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. + +
    +
  • General
  • +
      +
    • Default Display Mode - allows to choose between wireframe +or shading.
    • +
    • Default Shading Color - allows to select default shading +color.
    • +
    • Default Wireframe Color - allows to select default +wireframe color (to be applied to any lines not being free boundaries +or isolated lines).
    • +
    • Color of free boundaries - allows to select default color for free boundaries.
    • +
    • Color of edges, vectors and wires - allows to select +default color for edges, vectors and wires (isolated lines).
    • +
    • Color of points - allows to select default color for +vertices.
    • +
    • Color of isolines - allows to select default color for +isolines.
    • +
    • Step Value for Spin Boxes - allows to define the increment +of values set in spin boxes.
    • +
    +
+ +
    +
  • Marker of Points
  • +
      +
    • Type - allows to select the symbol for representation of +points (cross, asterisk, etc.).
    • +
    • Size - allows to define the size of the marker from 1 +(smallest) to 7 (largest).
    • +
    +
+ +*/ \ 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 index 000000000..a06873543 --- /dev/null +++ b/doc/salome/gui/GUI/input/getting_started.doc @@ -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 + +    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. +
Study represents a working document in which you can realize all +operations connected with the SALOME functionality. +
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 index 000000000..3d4f43ce0 --- /dev/null +++ b/doc/salome/gui/GUI/input/gui_module_chapter.doc @@ -0,0 +1,39 @@ +/*! + +\page gui_module_page GUI module + +
    +
  • \subpage introduction_to_gui_page
  • +
  • \subpage getting_started_page
  • +
  • \subpage salome_desktop_page
  • +
  • \subpage study_management_page
  • +
      +
    • \ref creating_new_study_page
    • +
    • \ref opening_studies_page
    • +
    • \ref saving_and_closing_studies_page
    • +
    • \ref editing_studies_page
    • +
    • \ref displaying_studies_page
    • +
    • \ref working_with_python_scripts_page
    • +
    • \ref setting_study_properties_page
    • +
    +
  • \subpage using_object_browser_page
  • +
  • \subpage using_registry_tool_page
  • +
  • \subpage using_catalog_generator_page "Using Catalog Generator"
  • +
  • \subpage viewers_page
  • +
      +
    • \ref occ_3d_viewer_page
    • +
    • \ref vtk_3d_viewer_page
    • +
    • \ref plot2d_viewer_page
    • +
    +
  • \subpage setting_preferences_page
  • +
      +
    • \ref setting_preferences_subpage
    • +
    • \ref select_color_and_font_page
    • +
    • \ref salome_preferences_page
    • +
    • \ref geometry_preferences_page
    • +
    • \ref mesh_preferences_page
    • +
    • \ref postpro_preferences_page
    • +
    +
+ +*/ diff --git a/doc/salome/gui/GUI/input/index.doc b/doc/salome/gui/GUI/input/index.doc new file mode 100644 index 000000000..1f340a405 --- /dev/null +++ b/doc/salome/gui/GUI/input/index.doc @@ -0,0 +1,51 @@ +/*! + +\mainpage GUI Module Reference Documentation + +
    +
  • \subpage introduction_page
  • +
  • \subpage about_salome_page
  • +
      +
    • \ref intro_to_salome_page
    • +
    • \ref salome_architecture_page
    • +
    • \ref installing_salome_page
    • +
    • \ref running_salome_page
    • +
    +
  • \subpage gui_module_page "GUI module"
  • +
      +
    • \ref introduction_to_gui_page
    • +
    • \ref getting_started_page
    • +
    • \ref salome_desktop_page
    • +
    • \ref study_management_page
    • +
        +
      • \ref creating_new_study_page
      • +
      • \ref opening_studies_page
      • +
      • \ref saving_and_closing_studies_page
      • +
      • \ref editing_studies_page
      • +
      • \ref displaying_studies_page
      • +
      • \ref working_with_python_scripts_page
      • +
      • \ref setting_study_properties_page
      • +
      +
    +
  • \ref using_object_browser_page
  • +
  • \ref using_registry_tool_page
  • +
  • \ref using_catalog_generator_page "Using Catalog Generator"
  • +
  • \ref viewers_page
  • +
      +
    • \ref occ_3d_viewer_page
    • +
    • \ref vtk_3d_viewer_page
    • +
    • \ref plot2d_viewer_page
    • +
    +
  • \ref setting_preferences_page
  • +
      +
    • \ref setting_preferences_subpage
    • +
    • \ref select_color_and_font_page
    • +
    • \ref salome_preferences_page
    • +
    • \ref geometry_preferences_page
    • +
    • \ref mesh_preferences_page
    • +
    • \ref postpro_preferences_page
    • +
    +
+ + +*/ diff --git a/doc/salome/gui/GUI/input/installing_salome.doc b/doc/salome/gui/GUI/input/installing_salome.doc new file mode 100644 index 000000000..e0f26afe6 --- /dev/null +++ b/doc/salome/gui/GUI/input/installing_salome.doc @@ -0,0 +1,961 @@ +/*! + +\page installing_salome_page SALOME Installation Wizard Help + +
+
    +
  • \ref installing_products "Installing products with the Installation Wizard" +
      +
    • \ref gui_mode_install "GUI mode" +
    • \ref batch_mode_install "Batch mode" +
    • \ref environment_files "Environment files" +
    +
  • \ref notes_on_check "Notes on check products version procedure" +
  • \ref pick_up_env "Pick up the environment" +
  • \ref modifying_xml "Modifying XML configuration file" +
  • \ref installation_scripts "Implementing installation scripts for the new products" +
  • \ref finish_buttons "Customizing Readme page buttons" +
+
+\anchor installing_products +

Installing products with the Installation Wizard

+ +The Installation Wizard can be launched in two modes: \b GUI and \b +batch. +
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: +

[ 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: + +-g / --gui +\par +Runs the Installation Wizard in the GUI mode (this is the default +mode). + +-b / --batch +\par +Runs the Installation Wizard in the terminal mode. + +-f FILE / --file=FILE +\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 Linux Mandrake 10.1 the config_Mandrake_10.1.xml file +will be used by default. If no appropriate file is found, the file +config.xml will be used. This file refers to the basic target platform +which is Linux Mandrake 10.1 for SALOME 3.0 and newer. If config.xml +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. + +-d DIR / --target=DIR +\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 ${HOME}/salome_\, +see \ref modifying_xml "here" for more details). + +-t DIR / --tmp=DIR +\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). + +-a / --all-from-sources +\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 Note, that this is a time-consuming operation which can take +more than 24 hours depending on the computer. + +-h / --help +\par +Prints help information on the Installation Wizard's use. + +-v / --version +\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 Linux Mandrake 10.1. +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. + +
+\anchor gui_mode_install +

GUI mode

+ +The Installation Wizard GUI has been developed using +Trolltech's Qt 3.0.5 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
Figure 1: "Introduction" page
+ +In the second page you are proposed to enter the target directory +where the SALOME platform should be installed to. You can also click +"Browse..." 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
Figure 2: "Installation settings"
+ +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 --all-from-sources (-a) option of +the \b runInstall script (see \ref installing_products "here"). + +\Note Installation of all products from sources is a long-time +operation. + +To switch to the \b advanced option, click "More..." (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 +gcc, Python, Qt 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 "Automatic +dependencies" 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
Figure 3: "Installation settings" page in the 'advanced' mode
+ +If you want to use native products (like \b gcc, \b tcl, etc.), select "use +native" option. +\n Special button in the right part of the page - "Unselect All" - +allows to reset quickly all products to the "not install" state. +

+There are also two checkboxes on this page: "SALOME sources" +and "SALOME binaries". These three-state checkboxes allow +quick selecting/unselecting sources/binaries packages of SALOME +modules for installation. +

+In addition, when some SALOME sources are selected, one more check box +becomes available: "Build SALOME sources". If this option is +turned on, the selected SALOME modules will be built and installed +from sources. + +\note 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 (see \ref figure_4 "Figure 4" below). + +\anchor figure_4 +\image html productpage2.png +\n
Figure 4: "Build SALOME sources" check box +usage
+ +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. +

+The "Disk space required:" field displays how much disk space +on the hard drive is required for installation of selected products. + +\note 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. + +The installation procedure uses a special directory to store temporary +files. The "Space for temporary files:" 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 "Browse..." 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 +INSTALLWORKXXXXX 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 You are strongly recommended not to use directory names +containing spaces. Otherwise you can experience +some troubles with the installation. + +To proceed further click "Next". 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
Figure 5: "Check your choice" page
+ +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 "Next" to +follow to the \ref figure_6 "next page". + +\anchor figure_6 +\image html progresspage1.png +\n
Figure 6: "Installation progress" page
+ +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 In the current implementation it is not possible to resume +the stopped installation process; it will be re-started from the very +beginning. + +\anchor figure_7 +\image html progresspage.png +\n
Figure 7: "Installation progress" page: installation in progress
+ +The "Installation Status" 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 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. + +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
Figure 8: "Finish installation" page
+ +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). + +
+\anchor batch_mode_install +

Batch mode

+ +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
Figure 9: Batch mode
+ +
+\anchor environment_files +

Environment files

+ +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 KERNEL module sources +and KERNEL module binaries 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. + +
+
+\anchor notes_on_check +

Notes on check products version procedure

+ +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 Linux Mandrake +10.1; 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. + +
    +
  • gcc 3.4.1 +\n\n Version number is checked by gcc -dumpversion 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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". +

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.

    +
  • +
  • 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.
    +\note netgen 4.5 provided with the SALOME installation Wizard has been patched to improve its performance. +
  • +
  • Numeric 23.7 +\n\n Version number is checked by python -c 'import Numeric; print +Numeric.__version__' 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.

    +
  • +
  • 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.

    +
  • +
  • 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".

    +
  • +
  • \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 \_SRC_DIR environment variable for each SALOME \b +MODULE sources package installed (where \b MODULE is KERNEL, GUI, +GEOM, ...).

    +
  • +
  • \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 \_ROOT_DIR environment +variable for each SALOME \b MODULE binaries package installed (where +\b MODULE is KERNEL, GUI, GEOM, ...).

    +
  • +
+ +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: "You have +newer version of gcc installed on your computer than that is required +(3.4.1). Continue?". 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. + +
+
+\anchor pick_up_env +

Pick up the environment

+ +Please, read the following information carefully . This section +describes how the installation procedure generates the environment +scripts for the SALOME platform being installed. +

+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_.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. +

+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). +

+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. + +
+
+\anchor modifying_xml +

Modifying XML configuration file

+ +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 + + [ ] + [ caption= ] + [ copyright= ] + [ license= ] + [ os= ] + /> + ] + [ ] + [ tempdir= ] + /> + ] + [