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"])
])
AC_REQUIRE([AC_PROG_CXXCPP])dnl
AC_REQUIRE([AC_LINKER_OPTIONS])dnl
+AC_REQUIRE([OPTIONS_VTK])dnl
+
AC_CHECKING(for VTK)
AC_LANG_SAVE
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=""
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=""
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
# 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,
echo ---------------------------------------------
echo
-OPTIONS_VTK
CHECK_VTK
echo
CHECK_CPPUNIT
+echo
+echo ---------------------------------------------
+echo Testing libxml2
+echo ---------------------------------------------
+echo
+
+CHECK_LIBXML
+
echo
echo ---------------------------------------------
echo Summary
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"
./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 \
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="JavaScript">\r
-<!--\r
-\r
-var gArrayCsh = new Array();\r
-\r
-var gstrWindowOption = "";\r
-var gstrURL = "";\r
-var gbWithNavPane = false;\r
-\r
-function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
-{\r
- this.strAliasId = strAliasId;\r
- this.nTopicNum = nTopicNum;\r
- this.strUrl = strUrl;\r
-}\r
-\r
-\r
-//Try to get to topic number from hash string\r
-function GetTopicNumberAuto(strMayBeNumber)\r
-{\r
- var nNum = -1;\r
- if (strMayBeNumber.length >= 1)\r
- {\r
- var strTmp = strMayBeNumber;\r
- var iEnd = strTmp.length;\r
- for (var i=0; i<iEnd; i++)\r
- {\r
- var ch = strTmp.charAt(i);\r
- if (!((ch == "0") || (ch == "1") ||\r
- (ch == "2") || (ch == "3") ||\r
- (ch == "4") || (ch == "5") ||\r
- (ch == "6") || (ch == "7") ||\r
- (ch == "8") || (ch == "9")))\r
- return GetTopicNumberById(strTmp);\r
- }\r
- nNum = parseInt(strTmp);\r
- }\r
- return nNum;\r
-}\r
-\r
-function GetTopicNumber(strHashString)\r
-{\r
- var nTopicEndPos = strHashString.indexOf(',')\r
- if (nTopicEndPos == -1) { // no window option.\r
- return GetTopicNumberOnly(strHashString);\r
- }\r
- else {\r
- var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
- var strWithNavPane = 'withnavpane=true';\r
- if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
- {\r
- if (strWindowOption.length > strWithNavPane.length)\r
- gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
- else\r
- gstrWindowOption = "";\r
- gbWithNavPane = true;\r
- }\r
- else\r
- gstrWindowOption = strWindowOption;\r
- return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos)); \r
- }\r
-}\r
-\r
-function GetTopicNumberOnly(strTopicString)\r
-{\r
- var nEqualPos = strTopicString.indexOf('=');\r
- if (nEqualPos == -1) {\r
- return GetTopicNumberAuto(strTopicString);\r
- }\r
- else {\r
- var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
- if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
- return parseInt(strValue);\r
- } else if (strTopicString.toLowerCase().indexOf("context") == 0) {\r
- return GetTopicNumberById(strValue);\r
- } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
- gstrURL = strValue;\r
- return -1;\r
- }\r
-\r
- }\r
-}\r
-\r
-//Find HomePage of the WebHelp system\r
-// we try to get the topic from remote project if it exists.\r
-function RedirectToHomePage()\r
-{\r
- if (parent && parent != this && parent.goNext)\r
- {\r
- var sHome = parent.goNext();\r
- if (sHome != "")\r
- RedirectTo(sHome);\r
- }\r
-}\r
-\r
-function getHomePage()\r
-{\r
- if (parent && parent != this && parent.getRelHomePage)\r
- {\r
- return parent.getRelHomePage(document.location.href);\r
- }\r
- return "";\r
-}\r
-\r
-function addRemoteProject(strPath)\r
-{\r
- if (parent && parent != this && parent.addProject)\r
- {\r
- parent.addProject(strPath);\r
- }\r
-}\r
-\r
-//Redirect page to...\r
-function RedirectTo(strUrl)\r
-{\r
- if (gstrWindowOption.length != 0) {\r
- var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
- // close current window and rename the stub window to current window.\r
- if (wnd)\r
- wnd.focus();\r
- if (parent)\r
- parent.close();\r
- }\r
- else {\r
- parent.document.location.href = strUrl;\r
- window.focus();\r
- }\r
-}\r
-\r
-//Prompt the user that we can not find...\r
-function FailToFind(strMsg)\r
-{\r
- RedirectToHomePage();\r
-}\r
-\r
-//Find topic by topic number (defined in h file)\r
-function FindTopicByTopicNum(nTopicNum)\r
-{\r
- var i = 0;\r
- var iEnd = gArrayCsh.length;\r
- for (i=0; i<iEnd; i++)\r
- {\r
- if (gArrayCsh[i].nTopicNum == nTopicNum)\r
- {\r
- var strURL = gArrayCsh[i].strUrl;\r
- if (gbWithNavPane)\r
- {\r
- var strHomePage = getHomePage();\r
- if (strHomePage.length != 0)\r
- strURL = strHomePage + strURL;\r
- } \r
- RedirectTo(strURL);\r
- return true;\r
- }\r
- }\r
- FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
- return false;\r
-}\r
-\r
-var oldPrefix = "HelpIdFromHTMLHelp_"\r
-//Find topic by topic id (alias id defined in ali file)\r
-function GetTopicNumberById(strTopicId)\r
-{\r
- if (strTopicId.indexOf(oldPrefix) == 0)\r
- {\r
- strTopicId = strTopicId.substring(oldPrefix.length);\r
- }\r
-\r
- var i = 0;\r
- var iEnd = gArrayCsh.length;\r
- for (i=0; i<iEnd; i++)\r
- {\r
- if (gArrayCsh[i].strAliasId.toLowerCase() == strTopicId.toLowerCase())\r
- {\r
- return gArrayCsh[i].nTopicNum;\r
- }\r
- }\r
- gstrURL = "";\r
- return -1;\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
-{\r
- gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-\r
-function getHash()\r
-{\r
- if (parent && parent != this)\r
- return parent.location.hash;\r
- else\r
- return "";\r
-}\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-\r
-\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-//Find CSH according to hash string after this page\r
-if (getHash().length > 0)\r
-{\r
- // VH 05/16/00 now support \r
- // TopicID=\r
- // TopicNumber=\r
- // RemoteURL= \r
- // and WindowsOptions\r
- // with the format #a=xxx,b=xxx,c=xxx...\r
- var strHashString = getHash().toString();\r
- // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
- // so here need to change it back.\r
- strHashString = strHashString.substring(1,strHashString.length);\r
- strHashString = strHashString.replace("%072%057%057", "://");\r
- var nTopicNum = GetTopicNumber(strHashString);\r
-\r
- if (nTopicNum != -1)\r
- {\r
- FindTopicByTopicNum(nTopicNum);\r
- }\r
- else\r
- {\r
- if (gstrURL.length > 0) \r
- RedirectTo(gstrURL);\r
- else\r
- RedirectToHomePage();\r
- }\r
-}\r
-else\r
-{\r
- RedirectToHomePage();\r
-}\r
-//-->\r
-</script>\r
-<noscript>\r
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
-</noscript>\r
-</body>\r
-</html>\r
-\r
-\r
-\r
-\r
-\r
-\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="JavaScript">\r
-<!--\r
-\r
-var gArrayCsh = new Array();\r
-\r
-var gstrWindowOption = "";\r
-var gstrURL = "";\r
-var gbWithNavPane = false;\r
-\r
-function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
-{\r
- this.strAliasId = strAliasId;\r
- this.nTopicNum = nTopicNum;\r
- this.strUrl = strUrl;\r
-}\r
-\r
-\r
-//Try to get to topic number from hash string\r
-function GetTopicNumberAuto(strMayBeNumber)\r
-{\r
- var nNum = -1;\r
- if (strMayBeNumber.length >= 1)\r
- {\r
- var strTmp = strMayBeNumber;\r
- var iEnd = strTmp.length;\r
- for (var i=0; i<iEnd; i++)\r
- {\r
- var ch = strTmp.charAt(i);\r
- if (!((ch == "0") || (ch == "1") ||\r
- (ch == "2") || (ch == "3") ||\r
- (ch == "4") || (ch == "5") ||\r
- (ch == "6") || (ch == "7") ||\r
- (ch == "8") || (ch == "9")))\r
- return GetTopicNumberById(strTmp);\r
- }\r
- nNum = parseInt(strTmp);\r
- }\r
- return nNum;\r
-}\r
-\r
-function GetTopicNumber(strHashString)\r
-{\r
- var nTopicEndPos = strHashString.indexOf(',')\r
- if (nTopicEndPos == -1) { // no window option.\r
- return GetTopicNumberOnly(strHashString);\r
- }\r
- else {\r
- var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
- var strWithNavPane = 'withnavpane=true';\r
- if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
- {\r
- if (strWindowOption.length > strWithNavPane.length)\r
- gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
- else\r
- gstrWindowOption = "";\r
- gbWithNavPane = true;\r
- }\r
- else\r
- gstrWindowOption = strWindowOption;\r
- return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos)); \r
- }\r
-}\r
-\r
-function GetTopicNumberOnly(strTopicString)\r
-{\r
- var nEqualPos = strTopicString.indexOf('=');\r
- if (nEqualPos == -1) {\r
- return GetTopicNumberAuto(strTopicString);\r
- }\r
- else {\r
- var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
- if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
- return parseInt(strValue);\r
- } else if (strTopicString.toLowerCase().indexOf("topicid") == 0) {\r
- return GetTopicNumberById(strValue);\r
- } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
- gstrURL = strValue;\r
- return -1;\r
- }\r
-\r
- }\r
-}\r
-\r
-//Find HomePage of the WebHelp system\r
-// we try to get the topic from remote project if it exists.\r
-function RedirectToHomePage()\r
-{\r
- if (parent && parent != this && parent.goNext)\r
- {\r
- var sHome = parent.goNext();\r
- if (sHome != "")\r
- RedirectTo(sHome);\r
- }\r
-}\r
-\r
-function getHomePage()\r
-{\r
- if (parent && parent != this && parent.getRelHomePage)\r
- {\r
- return parent.getRelHomePage(document.location.href);\r
- }\r
- return "";\r
-}\r
-\r
-function addRemoteProject(strPath)\r
-{\r
- if (parent && parent != this && parent.addProject)\r
- {\r
- parent.addProject(strPath);\r
- }\r
-}\r
-\r
-//Redirect page to...\r
-function RedirectTo(strUrl)\r
-{\r
- if (gstrWindowOption.length != 0) {\r
- var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
- // close current window and rename the stub window to current window.\r
- wnd.focus();\r
- if (parent)\r
- parent.close();\r
- }\r
- else {\r
- parent.document.location.href = strUrl;\r
- window.focus();\r
- }\r
-}\r
-\r
-//Prompt the user that we can not find...\r
-function FailToFind(strMsg)\r
-{\r
- RedirectToHomePage();\r
-}\r
-\r
-//Find topic by topic number (defined in h file)\r
-function FindTopicByTopicNum(nTopicNum)\r
-{\r
- var i = 0;\r
- var iEnd = gArrayCsh.length;\r
- for (i=0; i<iEnd; i++)\r
- {\r
- if (gArrayCsh[i].nTopicNum == nTopicNum)\r
- {\r
- var strURL = gArrayCsh[i].strUrl;\r
- if (gbWithNavPane)\r
- {\r
- var strHomePage = getHomePage();\r
- if (strHomePage.length != 0)\r
- strURL = strHomePage + strURL;\r
- } \r
- RedirectTo(strURL);\r
- return true;\r
- }\r
- }\r
- FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
- return false;\r
-}\r
-\r
-//Find topic by topic id (alias id defined in ali file)\r
-function GetTopicNumberById(strTopicId)\r
-{\r
- var i = 0;\r
- var iEnd = gArrayCsh.length;\r
- for (i=0; i<iEnd; i++)\r
- {\r
- if (gArrayCsh[i].strAliasId == strTopicId)\r
- {\r
- return gArrayCsh[i].nTopicNum;\r
- }\r
- }\r
- gstrURL = "";\r
- return -1;\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
-{\r
- gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-\r
-function getHash()\r
-{\r
- if (parent && parent != this)\r
- return parent.location.hash;\r
- else\r
- return "";\r
-}\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-\r
-\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-//Find CSH according to hash string after this page\r
-if (getHash().length > 0)\r
-{\r
- // VH 05/16/00 now support \r
- // TopicID=\r
- // TopicNumber=\r
- // RemoteURL= \r
- // and WindowsOptions\r
- // with the format #a=xxx,b=xxx,c=xxx...\r
- var strHashString = getHash().toString();\r
- // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
- // so here need to change it back.\r
- strHashString = strHashString.substring(1,strHashString.length);\r
- strHashString = strHashString.replace("%072%057%057", "://");\r
- var nTopicNum = GetTopicNumber(strHashString);\r
-\r
- if (nTopicNum != -1)\r
- {\r
- FindTopicByTopicNum(nTopicNum);\r
- }\r
- else\r
- {\r
- if (gstrURL.length > 0) \r
- RedirectTo(gstrURL);\r
- else\r
- RedirectToHomePage();\r
- }\r
-}\r
-else\r
-{\r
- RedirectToHomePage();\r
-}\r
-//-->\r
-</script>\r
-<noscript>\r
- <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
-</noscript>\r
-</body>\r
-</html>\r
-\r
-\r
-\r
-\r
-\r
-\r
+++ /dev/null
-BODY { \r
- background-color:#ffffff; \r
- font-family:"Times New Roman" , serif; }\r
-H1 { \r
- font-weight:bold; \r
- font-size:24.0pt; }\r
-LI.kadov-H1 { \r
- font-weight:bold; \r
- font-size:24.0pt; }\r
-H2 { \r
- font-weight:bold; \r
- font-size:18.0pt; }\r
-LI.kadov-H2 { \r
- font-weight:bold; \r
- font-size:18.0pt; }\r
-H3 { \r
- font-weight:bold; \r
- font-size:14.0pt; }\r
-LI.kadov-H3 { \r
- font-weight:bold; \r
- font-size:14.0pt; }\r
-H4 { \r
- font-weight:bold; \r
- font-size:12.0pt; }\r
-LI.kadov-H4 { \r
- font-weight:bold; \r
- font-size:12.0pt; }\r
-H5 { \r
- font-weight:bold; \r
- font-size:10.0pt; }\r
-LI.kadov-H5 { \r
- font-weight:bold; \r
- font-size:10.0pt; }\r
-H6 { \r
- font-weight:bold; \r
- font-size:8.0pt; }\r
-LI.kadov-H6 { \r
- font-weight:bold; \r
- font-size:8.0pt; }\r
-P { \r
- font-size:12.0pt; \r
- margin-top:0pt; \r
- margin-bottom:0pt; }\r
-LI.kadov-P { \r
- font-size:12.0pt; }\r
-A.expandspot { \r
- color:#008000; \r
- cursor:hand; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-SPAN.expandtext { \r
- font-style:italic; \r
- font-weight:normal; \r
- color:#ff0000; }\r
-A.dropspot { \r
- cursor:hand; \r
- color:#008000; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-A.glossterm { \r
- color:#800000; \r
- cursor:hand; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-SPAN.glosstext { \r
- font-style:italic; \r
- font-weight:normal; \r
- color:#0000ff; }\r
-OL { \r
- margin-top:0px; \r
- margin-bottom:0px; }\r
-UL { \r
- margin-top:0px; \r
- margin-bottom:0px; }\r
-A:active { }\r
-A:hover { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-A:link { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-A:visited { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-P.TODO { \r
- font-weight:normal; \r
- font-style:italic; \r
- font-family:"Arial Black" , sans-serif; }\r
-LI.kadov-P-CTODO { \r
- font-weight:normal; \r
- font-style:italic; \r
- font-family:"Arial Black" , sans-serif; }\r
+++ /dev/null
-BODY { \r
- background-color:#ffffff; \r
- font-family:"Times New Roman" , serif; }\r
-H1 { \r
- font-weight:bold; \r
- font-size:24.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H1 { \r
- font-weight:bold; \r
- font-size:24.0pt; }\r
-H2 { \r
- font-weight:bold; \r
- font-size:18.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H2 { \r
- font-weight:bold; \r
- font-size:18.0pt; }\r
-H3 { \r
- font-weight:bold; \r
- font-size:14.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H3 { \r
- font-weight:bold; \r
- font-size:14.0pt; }\r
-H4 { \r
- font-weight:bold; \r
- font-size:12.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H4 { \r
- font-weight:bold; \r
- font-size:12.0pt; }\r
-H5 { \r
- font-weight:bold; \r
- font-size:10.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H5 { \r
- font-weight:bold; \r
- font-size:10.0pt; }\r
-H6 { \r
- font-weight:bold; \r
- font-size:8.0pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-H6 { \r
- font-weight:bold; \r
- font-size:8.0pt; }\r
-P { \r
- font-size:12.0pt; \r
- margin-top:1pt; \r
- margin-bottom:1pt; \r
- font-family:"Times New Roman" , serif; }\r
-LI.kadov-P { \r
- font-size:12.0pt; }\r
-A.expandspot { \r
- color:#008000; \r
- cursor:hand; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-SPAN.expandtext { \r
- font-style:italic; \r
- font-weight:normal; \r
- color:#ff0000; }\r
-A.dropspot { \r
- cursor:hand; \r
- color:#008000; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-A.glossterm { \r
- color:#800000; \r
- cursor:hand; \r
- font-style:italic; \r
- x-text-underline:off; \r
- x-text-overline:off; \r
- x-text-line-through:off; \r
- text-decoration:none none none; }\r
-SPAN.glosstext { \r
- font-style:italic; \r
- font-weight:normal; \r
- color:#0000ff; }\r
-OL { \r
- margin-top:0px; \r
- margin-bottom:0px; \r
- font-family:"Times New Roman" , serif; }\r
-UL { \r
- margin-top:0px; \r
- margin-bottom:0px; \r
- font-family:"Times New Roman" , serif; }\r
-A:active { }\r
-A:hover { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-A:link { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-A:visited { \r
- x-text-underline:Off; \r
- text-decoration:none; }\r
-P.TODO { \r
- font-weight:normal; \r
- font-style:italic; \r
- font-family:"Arial Black" , sans-serif; }\r
-LI.kadov-P-CTODO { \r
- font-weight:normal; \r
- font-style:italic; \r
- font-family:"Arial Black" , sans-serif; }\r
-ol ol { \r
- margin-top:1px; }\r
-ol ul { \r
- margin-top:1px; }\r
-ul ul { \r
- margin-top:1px; }\r
-ul ol { \r
- margin-top:1px; }\r
--- /dev/null
+#---------------------------------------------------------------------------
+# 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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Dump Study</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; margin-left:40px; }\r
-img_whs2 { border:none; width:461px; height:270px; float:none; border-style:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { margin-left:48px; }\r
-p.whs5 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs6 { margin-left:0px; }\r
-p.whs7 { margin-left:40px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs6 {margin-left:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nStudy management\nWorking with Python Scripts");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Working with Python Scripts</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>SALOME </B></span>Platform can be launched \r
- in the batch mode, without Graphical User Interface, and operated with \r
- the use of Python scripts, which can fulfill most of the necessary tasks, \r
- however, the process of scripting is quite time consuming and rather error-prone. \r
- </p>\r
-\r
-<p>This problem has been resolved by the possibility to automatically generate \r
- a set of Python scripts from data created with SALOME GUI, which greatly \r
- increases the productivity of using SALOME platform in the batch mode. \r
- This mechanism can convert a SALOMEDS Study in one or several Python scripts, \r
- which can be stored and imported later to re-create the content of the \r
- original study. The first script is a SALOMEDS document, which re-creates \r
- the SALOMEDS Study, adds the stored Salome components to the SALOMEDS \r
- and automatically calls Python scripts of the second type containing component \r
- specific Python function calls. This architecture gives great flexibility \r
- in manual modification of the generated scripts because you can modify \r
- only one of the component specific Python scripts without touching others, \r
- thus avoiding expert knowledge of Python API of unused components. </p>\r
-\r
-<p> </p>\r
-\r
-<p>To Dump a SALOME \r
- Study in one or several scripts, in the main menu select <span style="font-weight: bold;"><B>File</B></span> \r
- --> <span style="font-weight: bold;"><B>Dump study</B></span></p>\r
-\r
-<p>The following dialog box allowing to browse for the location and define \r
- the name for a Python file will appear: </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1"><img src="pics/dumpstudy.png" x-maintain-ratio="TRUE" width="461px" height="270px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Publish \r
- in study - </B></span>if checked in, the component objects created by Python \r
- commands will be published in the created Study when the script is played, \r
- otherwise the objects will not be published in the Study.</p></li>\r
- \r
- <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Save \r
- GUI state</B></span> - if checked in, the current application layout will \r
- be saved in the Python file. </p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p class="whs5">To \r
- confirm your choice click <span style="font-weight: bold;"><B>Save</B></span>.</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs6">Reversibly it is possible to load a saved \r
- Python Script selecting in the main menu <span style="font-weight: bold;"><B>File</B></span> \r
- -> <span style="font-weight: bold;"><B>Load Script</B></span>. </p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs7"><img src="pics/loadscript.png" x-maintain-ratio="TRUE" width="461px" height="270px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs5">To \r
- confirm your choice click <span style="font-weight: bold;"><B>Open.</B></span></p>\r
-\r
-<p> </p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE SYSTEM "ehelpopt.dtd">\r
-<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="28977072_6eb4_11d8_af12_000102ad571a">\r
-</FILE-OPTIONS>\r
-<EHELP-OPTIONS FORMAT-VERSION="1.0">\r
- <OPTIONS ENABLED="NO" EMBEDDED="YES" MAIN-WINDOW-ONLY="NO" COMMUNITY-NOTIFY="NO" FIRST-PAGE="NOT-SET">\r
- </OPTIONS>\r
- <BUTTON-LABEL>WebSearch\r
- </BUTTON-LABEL>\r
-</EHELP-OPTIONS>
\ No newline at end of file
+++ /dev/null
-// eHelp® Corporation Dynamic HTML JavaScript \r
-// Copyright© 1998-2003 eHelp® Corporation.All rights reserved.\r
-// Version=4.82\r
-\r
-// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.\r
-\r
-//// Segment Begin -- (JavaScript 1.0)\r
-\r
-/// Section Begin - General and relative topics(JavaScript 1.0)\r
-\r
-//{{HH_SYMBOL_SECTION\r
-var HH_ChmFilename = "";\r
-var HH_WindowName = "";\r
-var HH_GlossaryFont = "";\r
-var HH_Glossary = "";\r
-var HH_Avenue = "";\r
-var HH_ActiveX = false;\r
-//}}HH_SYMBOL_SECTION\r
-\r
-//Begin to support previous generic parameters\r
-//Get the information about the browser.\r
-var gstrBsAgent = navigator.userAgent.toLowerCase();\r
-var gnBsVer = parseInt(navigator.appVersion);\r
-\r
-var gbBsOpera = (gstrBsAgent.indexOf('opera') != -1);\r
-var gbBsKonqueror = (gstrBsAgent.indexOf('konqueror') != -1);\r
-var gbBsSafari = (gstrBsAgent.indexOf('safari') != -1);\r
-var gbBsIE = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
-var gbBsNS = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
-\r
-var gbBsMac = (gstrBsAgent.indexOf('mac') != -1);\r
-var gbBsWindows = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
-var gbBsSunOS = (gstrBsAgent.indexOf("sunos") != -1);\r
-\r
-var gbBsIE3Before = ((gbBsIE) && (gnBsVer <= 2));\r
-var gbBsNS3Before = ((gbBsNS) && (gnBsVer <= 3));\r
-\r
-var gbBsNS2 = ((gbBsNS) && (gnBsVer <= 2));\r
-var gbBsNS3 = ((gbBsNS) && (gnBsVer == 3));\r
-var gbBsIE300301 = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1)));\r
-var gbBsIE302 = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1));\r
-\r
-var gbBsNS4 = ((gbBsNS) && (gnBsVer >= 4));\r
-var gbBsNS6 = ((gbBsNS) && (gnBsVer >= 5));\r
-var gbBsNS7 = false;\r
-\r
-var gbBsIE4 = ((gbBsIE) && (gnBsVer >= 4));\r
-var gbBsIE5 = false;\r
-var gbBsIE55 = false;\r
-\r
-var gbBsOpera6 = false;\r
-var gbBsOpera7 = false;\r
-\r
-var gbBsKonqueror3 = false;\r
-\r
-\r
-\r
-gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;;\r
-if (gbBsIE)\r
-{\r
- if (parseInt(navigator.appVersion) >= 4) {\r
- gbBsIE4 = true;\r
- if (gbBsIE4) {\r
- var nPos = gstrBsAgent.indexOf("msie");\r
- var strIEversion = gstrBsAgent.substring(nPos + 5);\r
- var nVersion = parseFloat(strIEversion);\r
- if (nVersion >= 5)\r
- gbBsIE5 = true;\r
- if (nVersion >= 5.5)\r
- gbBsIE55 = true;\r
- }\r
- }\r
-}\r
-if (gbBsNS6)\r
-{\r
- var nPos=gstrBsAgent.indexOf("gecko");\r
- if(nPos!=-1)\r
- {\r
- var nPos2=gstrBsAgent.indexOf("/", nPos);\r
- if(nPos2!=-1)\r
- {\r
- var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));\r
- if (nVersion>=20020823)\r
- gbBsNS7=true;\r
- }\r
- } \r
-}\r
-if (gbBsOpera)\r
-{\r
- var nPos = gstrBsAgent.indexOf("opera");\r
- if(nPos!=-1)\r
- {\r
- var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));\r
- if (nVersion >= 6)\r
- {\r
- gbBsOpera6=true;\r
- if (nVersion >=7)\r
- gbBsOpera7=true; \r
- }\r
- }\r
-}\r
-if (gbBsKonqueror)\r
-{\r
- var nPos = gstrBsAgent.indexOf("konqueror");\r
- if(nPos!=-1)\r
- {\r
- var nVersion = parseFloat(gstrBsAgent.substring(nPos+10));\r
- if (nVersion >= 3)\r
- {\r
- gbBsKonqueror3=true;\r
- }\r
- }\r
-}\r
-\r
-function insertAdjacentHTML(obj, where, htmlStr)\r
-{\r
- if (gbBsIE || gbBsOpera7)\r
- {\r
- obj.insertAdjacentHTML(where, htmlStr);\r
- }\r
- else if (gbBsNS6 || gbBsSafari)\r
- {\r
- var r = obj.ownerDocument.createRange();\r
- r.setStartBefore(obj);\r
- var parsedHTML = r.createContextualFragment(htmlStr);\r
- \r
- switch (where){\r
- case 'beforeBegin':\r
- obj.parentNode.insertBefore(parsedHTML,obj);\r
- break;\r
- case 'afterBegin':\r
- obj.insertBefore(parsedHTML,obj.firstChild);\r
- break;\r
- case 'beforeEnd':\r
- obj.appendChild(parsedHTML);\r
- break;\r
- case 'afterEnd':\r
- if (obj.nextSibling){\r
- obj.parentNode.insertBefore(parsedHTML,obj.nextSibling);\r
- } else {\r
- obj.parentNode.appendChild(parsedHTML);\r
- }\r
- break;\r
- }\r
- }\r
-}\r
-\r
-// Utilities functions.\r
-function BsscHasExtJs()\r
-{\r
- if( gbBsIE3Before || gbBsNS3Before)\r
- return false;\r
- return true;\r
-}\r
-\r
-// Register event handler\r
-var gBsOnLoads = new Array(); // An array holds all the onload event handler.\r
-var gBsOnClicks = new Array(); // An array holds all the onClick event handler.\r
-var gBsOnUnLoads = new Array(); // An array holds all the OnUnLoad event handler.\r
-var gBsOnMouseOvers = new Array(); // An array holds all the OnMouseOver event handler.\r
-var gBsOnMouseOuts = new Array(); // An array holds all the OnMouseOut event handler.\r
-\r
-var gbOrignalOnMouseDown = null;\r
-\r
-function BsscRegisterOnLoad(funcHandler)\r
-{\r
- var nLength = gBsOnLoads.length;\r
- gBsOnLoads[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnClick(funcHandler)\r
-{\r
- var nLength = gBsOnClicks.length;\r
- gBsOnClicks[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnUnLoad(funcHandler)\r
-{\r
- var nLength = gBsOnUnLoads.length;\r
- gBsOnUnLoads[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnMouseOver(funcHandler)\r
-{\r
- var nLength = gBsOnMouseOvers.length;\r
- gBsOnMouseOvers[nLength] = funcHandler;\r
-}\r
-\r
-function BsscRegisterOnMouseOut(funcHandler)\r
-{\r
- var nLength = gBsOnMouseOuts.length;\r
- gBsOnMouseOuts[nLength] = funcHandler;\r
-}\r
-\r
-function BsGeneralOnLoad()\r
-{\r
- if (!gbBsIE4 && !gbBsNS4)\r
- return;\r
-\r
- // Make everything visible in navigator\r
- if (gbBsNS4 && !gbBsNS6) {\r
- // Make some special effects items visible\r
- for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {\r
- document.layers[iLayer].visibility = "show";\r
- document.layers[iLayer].left = 0;\r
- }\r
- }\r
-}\r
-\r
-// If resize the netscape browser, need to reload it.\r
-function BsReDo()\r
-{\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-// End of the local functions.\r
-\r
-// The following functions are used by the html files.\r
-function BSSCOnLoad()\r
-{\r
- if( !BsscHasExtJs() )\r
- return;\r
- for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--)\r
- gBsOnLoads[nElement]();\r
-}\r
-\r
-function BSSCOnClick()\r
-{\r
- if (!BsscHasExtJs()) return;\r
- \r
- for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--)\r
- gBsOnClicks[nElement]();\r
-}\r
-\r
-function BSSCOnUnload()\r
-{\r
- if (!BsscHasExtJs()) return;\r
- for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)\r
- gBsOnUnLoads[nElement]();\r
-}\r
-\r
-function BSSCOnMouseOver()\r
-{\r
- if (!BsscHasExtJs()) return;\r
- for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)\r
- gBsOnMouseOvers[nElement]();\r
-}\r
-\r
-function BSSCOnMouseOut()\r
-{\r
- if (!BsscHasExtJs()) return;\r
- for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--)\r
- {\r
- gBsOnMouseOuts[nElement]();\r
- }\r
-}\r
-// End of invocation of the event handle functions.\r
-\r
-// Add the GereralOnLoad to the onload array.\r
-if (typeof(BsscRegisterOnLoad) != "undefined")\r
-{\r
- BsscRegisterOnLoad(BsGeneralOnLoad);\r
-}\r
-if (gbBsNS4&&!gbBsNS6) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = BsReDo;\r
-}\r
-//End to support previous generic parameters\r
-\r
-//Begin to support previous HHActiveX invoking\r
-function BsHHActivateComponents()\r
-{\r
- if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))\r
- {\r
- var objBody = getElementsByTag(document,"BODY")[0];\r
- if( typeof(objBody) == "object" )\r
- {\r
- insertAdjacentHTML(objBody, "beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
- if (HHComponentActivator.object)\r
- HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);\r
- }\r
- }\r
-}\r
-\r
-function BsHHActivXOnLoad()\r
-{ \r
- if( gbBsIE4 )\r
- BsHHActivateComponents(); \r
-}\r
-\r
-if( typeof(BsscRegisterOnLoad) != "undefined" )\r
-{\r
- BsscRegisterOnLoad(BsHHActivXOnLoad);\r
-}\r
-//End to support previous HHActiveX invoking\r
-\r
-//Begin to support previous relative topics\r
-//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here\r
-var gbPopupMenuTimeoutExpired = false;\r
-var gbInPopupMenu = false;\r
-var gbPopupMenuTopicList = null;\r
-var gOlddocumentClick = null;\r
-\r
-//////////////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Popup Menu code\r
-//\r
-//////////////////////////////////////////////////////////////////////////////////////////\r
-\r
-var g_bIsPopupMenuInit = false;\r
-function _WritePopupMenuLayer()\r
-{\r
- if (!g_bIsPopupMenuInit)\r
- {\r
- if (gbBsNS4&&!gbBsNS6) {\r
-//Do not try to write ininle styles for NS! NS can not handle it and will not stop downloading the html page...\r
- document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");\r
- } else{\r
- document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
- if (!(gbBsNS4&&!gbBsNS6)) {\r
- document.write("<STYLE TYPE='text/css'>");\r
- if (gbBsMac&&gbBsIE4) {\r
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
- } else {\r
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
- }\r
- document.write("</STYLE>");\r
- }\r
- }\r
- g_bIsPopupMenuInit = true;\r
- }\r
-}\r
-\r
-//Seek for the bsscright frame \r
-function _SeekFrameByName( cRoot, strName )\r
-{\r
- if( cRoot == null ) return null;\r
- if( cRoot.frames == null ) return null;\r
- if( cRoot.frames[strName] != null ) return cRoot.frames[strName];\r
- for (var i=0; i<cRoot.frames.length; i++)\r
- {\r
- var cObj = null;\r
- if (!gbBsNS6) \r
- cObj = _SeekFrameByName( cRoot.frames(i).document, strName );\r
- else\r
- cObj = _SeekFrameByName( cRoot.frames[i], strName );\r
- if( cObj != null ) return cObj;\r
- };\r
- return null;\r
-}\r
-function _GetFrameByName( cRoot, strName )\r
-{\r
- if( cRoot == null ) return null;\r
- var cRet = _SeekFrameByName(cRoot, strName);\r
- if( cRet != null ) return cRet;\r
- if (cRoot.parent != cRoot)\r
- return _GetFrameByName( cRoot.parent, strName );\r
- else\r
- return null;\r
-}\r
-\r
-var gfn_arguments = null;\r
-function _PopupMenu_Invoke(fn_arguments)\r
-{\r
- gfn_arguments = fn_arguments;\r
- if (gbBsOpera6&&gbBsMac)\r
- {\r
- var wndOldPopupLinks= window.open(document.location.href, "popuplinks");\r
- wndOldPopupLinks.close();\r
- setTimeout("_PopupMenu_Invoke_2();",100);\r
- }\r
- else\r
- {\r
- _PopupMenu_Invoke_2();\r
- }\r
-}\r
-\r
-function _PopupMenu_Invoke_2()\r
-{\r
- var fn_arguments = gfn_arguments;\r
- gfn_arguments = null;\r
- \r
- // Make sure we have reasonable arguments\r
- var argLen = fn_arguments.length;\r
- if (argLen < 3) {\r
- return false;\r
- }\r
-\r
- // Check to see if we only have one target\r
- var strTarget = "";\r
- var targetDoc = null;\r
- if (fn_arguments[1] == '') {\r
- if (BSSCPopup_IsPopup()) {\r
- targetDoc = parent;\r
- strTarget = "TARGET= _parent";\r
- }\r
- else\r
- targetDoc = window.document;\r
- } else {\r
- targetDoc = _GetFrameByName( parent, fn_arguments[1] );\r
-\r
- strTarget = "TARGET='" + fn_arguments[1] + "'";\r
- }\r
-\r
- if ((!gbBsIE4 && !gbBsNS4 && !gbBsOpera7 && !gbBsKonqueror3 &&!gbBsSafari) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
- \r
- var argLen = fn_arguments.length;\r
-\r
- // Create the window that the hyperlinks will go into\r
- var nHeight = argLen * 15;\r
- var nWidth = 400;\r
- var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
- strParam += ",height=" + nHeight + ",width=200";\r
- strParam += ",resizable";\r
-\r
- var wndTemp=null;\r
- // Create a temporary window first to ensure the real popup comes up on top\r
- if (!gbBsOpera)\r
- wndTemp = window.open("", "temp", strParam);\r
-\r
- // Create the real popup window\r
- var wndPopupLinks=null;\r
- if (gbBsOpera&&gbBsMac)\r
- {\r
- wndTemp = window.open(document.location.href, "temp", strParam);\r
- wndPopupLinks= window.open(document.location.href, "popuplinks", strParam);\r
- }\r
- else\r
- wndPopupLinks= window.open("", "popuplinks", strParam);\r
- wndPopupLinks.document.open("text/html");\r
-\r
- // Close the temporary\r
- if (wndTemp)\r
- wndTemp.close();\r
-\r
- var sHTML="<html><head></head>";\r
- sHTML+="<body onBlur=\'self.focus();\'>";\r
- var strParaLine = "";\r
- for (var i = 0; i < (argLen - 2) / 2; i++) {\r
- strParaLine = "";\r
- strParaLine += "<a href=\"javascript:";\r
- if (gbBsIE) {\r
- strParaLine += "onBlur=null; ";\r
- }\r
- strParaLine += "opener.location=\'";\r
- strParaLine += fn_arguments[2 * i + 3];\r
- strParaLine += "\';close();\"";\r
- strParaLine += strTarget;\r
-\r
- strParaLine += ">";\r
- strParaLine += fn_arguments[2 * i + 2];\r
- strParaLine += "</a>";\r
- strParaLine += "<br>";\r
- sHTML+=strParaLine;\r
- }\r
- sHTML+="</body></html>";\r
- wndPopupLinks.document.write(sHTML);\r
- wndPopupLinks.document.close();\r
- window.gbInPopupMenu = true;\r
- if (!gbBsIE) {\r
- wndPopupLinks.focus();\r
- }\r
- return false;\r
- }\r
-\r
- if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||\r
- ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {\r
- // Get the place that we will be putting the topic into\r
- var strURL = "";\r
- if (isNaN(fn_arguments[2]) || (gbPopupMenuTopicList == null)) {\r
- strURL = fn_arguments[3];\r
- }\r
- else {\r
- strURL = gbPopupMenuTopicList[fn_arguments[2]].strURL;\r
- }\r
-\r
- if (targetDoc != null) {\r
- targetDoc.location.href = strURL;\r
- }\r
- else {\r
- if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
- window.open(strURL, fn_arguments[1]);\r
- else\r
- window.open(strURL);\r
- } \r
- window.gbInPopupMenu = true;\r
- return false;\r
- }\r
- \r
- var strMenu = "";\r
- if (gbBsNS4&&!gbBsNS6) {\r
- strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';\r
- } else {\r
- strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
- if (gbBsMac) {\r
- strMenu += ' CELLPADDING=4';\r
- } else {\r
- strMenu += ' CELLPADDING=2';\r
- } \r
- strMenu += ' BGCOLOR=#c0c0c0>';\r
- }\r
- // Add each of the items\r
- var i = 2;\r
- while (i <= argLen - 1) {\r
- strMenu += '<TR><TD><NOBR>'\r
- // If the destination is a number then look it up in the topic list\r
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '"' + strTarget;\r
- } else {\r
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList[fn_arguments[i]].strURL + '"' + strTarget;\r
- }\r
- strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
- strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
- strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
- strMenu += '>';\r
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
- strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
- } else {\r
- strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + '</SPAN>';\r
- }\r
- strMenu += '</A></DIV></NOBR></TD></TR>';\r
-\r
- if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
- i += 2;\r
- } else {\r
- i += 1;\r
- }\r
- }\r
- strMenu += "</TABLE>";\r
-\r
- if (gbBsMac) {\r
- // totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.\r
- strMenu +="<TABLE></TABLE>";\r
- }\r
-\r
- var layerPopup = null;\r
- var stylePopup = null;\r
- var nEventX = 0;\r
- var nEventY = 0;\r
- var nWindowWidth = 0;\r
- if (gbBsIE4 || gbBsOpera7) {\r
-\r
- layerPopup = getElement("PopupMenu");\r
- layerPopup.innerHTML = strMenu;\r
- stylePopup = layerPopup.style;\r
-\r
- _BSPSGetClientSize();\r
-\r
- // Get the position of the item causing the event (relative to its parent)\r
- nEventX = window.event.clientX;\r
- nEventY = window.event.clientY;\r
-\r
- if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
- nEventY += document.body.scrollTop + 10;\r
- } else {\r
- nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
- }\r
- stylePopup.top = nEventY;\r
- \r
- var nPopupWidth = layerPopup.scrollWidth;\r
- if (gbBsMac) {\r
- nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup.\r
- }\r
- if (nEventX + nPopupWidth + 20 > gBsClientWidth) {\r
- if (gBsClientWidth - nPopupWidth < 5) {\r
- stylePopup.left = 5;\r
- } else {\r
- stylePopup.left = gBsClientWidth - nPopupWidth - 5;\r
- }\r
- } else {\r
- stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
- }\r
-\r
- stylePopup.visibility = "visible";\r
- if (!gOlddocumentClick && document.onclick)\r
- gOlddocumentClick = document.onclick;\r
- document.onclick = PopupMenu_HandleClick;\r
-\r
- } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) {\r
- layerPopup = getElement("PopupMenu");\r
- layerPopup.style.visibility = "hidden";\r
- \r
- if (gbBsNS6)\r
- {\r
- var e = fn_arguments[0];\r
- nEventX = e.pageX;\r
- nEventY = e.pageY;\r
- }\r
- else\r
- {\r
- nEventX = window.event.clientX;\r
- nEventY = window.event.clientY;\r
- }\r
- _BSPSGetClientSize();\r
- layerPopup.innerHTML = strMenu;\r
-\r
- if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) {\r
- nEventY += 20;\r
- } else {\r
- nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
- }\r
-\r
- if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
- if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
- nEventX = 5;\r
- } else {\r
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
- }\r
- } else {\r
- nEventX += 20;\r
- }\r
- layerPopup.style.top = nEventY;\r
- layerPopup.style.left = nEventX;\r
- // set again to avoid the stupid frash in netscape 6.\r
- layerPopup.innerHTML = strMenu;\r
- layerPopup.style.visibility = "visible";\r
- //window.captureEvents(Event.MOUSEDOWN);\r
- if (!gOlddocumentClick && document.onclick)\r
- gOlddocumentClick = document.onclick;\r
- window.onclick = PopupMenu_HandleClick;\r
- }\r
- else if (gbBsNS4) {\r
- layerPopup = document.layers.PopupMenu;\r
- layerPopup.visibility = "hide";\r
- stylePopup = layerPopup.document;\r
- stylePopup.write(strMenu);\r
- stylePopup.close();\r
- var e = fn_arguments[0];\r
- nEventX = e.pageX;\r
- nEventY = e.pageY;\r
- _BSPSGetClientSize();\r
- if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) {\r
- nEventY += 20;\r
- } else {\r
- nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20;\r
- }\r
- layerPopup.top = nEventY;\r
-\r
- if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) {\r
- if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) {\r
- nEventX = 5;\r
- } else {\r
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20;\r
- }\r
- } else {\r
- nEventX += 20;\r
- }\r
-\r
- layerPopup.left = nEventX;\r
-\r
- layerPopup.visibility = "show";\r
-\r
- window.captureEvents(Event.MOUSEDOWN);\r
- if (!gOlddocumentClick && document.onmousedown)\r
- gOlddocumentClick = document.onmousedown;\r
- window.onmousedown = PopupMenu_HandleClick;\r
- }\r
-\r
- window.gbInPopupMenu = true;\r
- window.gbPopupMenuTimeoutExpired = false;\r
- setTimeout("PopupMenu_Timeout();", 100);\r
- return false;\r
-}\r
-\r
-function PopupMenu_Timeout()\r
-{\r
- window.gbPopupMenuTimeoutExpired = true;\r
-}\r
-\r
-function PopupMenu_Over(e)\r
-{\r
- if (gbBsIE4||gbBsOpera7)\r
- e.srcElement.className = "PopupOver";\r
- else if (gbBsNS6)\r
- e.target.parentNode.className = "PopupOver";\r
- return;\r
-}\r
-\r
-function PopupMenu_Out(e)\r
-{\r
- if (gbBsIE4||gbBsOpera7)\r
- e.srcElement.className = "PopupNotOver";\r
- else if (gbBsNS6)\r
- e.target.parentNode.className = "PopupNotOver";\r
- return;\r
-}\r
-\r
-function PopupMenu_HandleClick(e)\r
-{\r
- if (window.gbPopupMenuTimeoutExpired) {\r
- window.gbInPopupMenu = false;\r
- if (gbBsNS4 && !gbBsNS6) {\r
- window.releaseEvents(Event.MOUSEDOWN);\r
- }\r
-\r
- var layerPopup = null;\r
- if (gbBsNS4&&!gbBsNS6) {\r
- layerPopup = document.layers.PopupMenu;\r
- layerPopup.visibility = "hide";\r
- } else {\r
- layerPopup = getElement("PopupMenu");\r
- layerPopup.style.visibility = "hidden";\r
- }\r
- \r
- if (gOlddocumentClick)\r
- {\r
- if (gbBsNS4 && !gbBsNS6)\r
- document.onmousedown = gOlddocumentClick;\r
- else\r
- document.onclick = gOlddocumentClick;\r
- }\r
- }\r
- return;\r
-}\r
-\r
-function BSSCPopup_ClickMac()\r
-{\r
- if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7))\r
- { \r
- var bClickOnAnchor = false;\r
- var el;\r
- if ((window.event != null) &&\r
- (window.event.srcElement != null))\r
- {\r
- el = window.event.srcElement;\r
- while (el != null)\r
- {\r
- if ((el.tagName == "A") || (el.tagName == "AREA")) {\r
- bClickOnAnchor = true;\r
- break;\r
- }\r
- if (el.tagName == "BODY") {\r
- break;\r
- }\r
- el = getParentNode(el);\r
- }\r
- }\r
- if (BSSCPopup_IsPopup())\r
- {\r
- if (!bClickOnAnchor) {\r
- parent.window.gPopupWindow = null;\r
- self.close();\r
- }\r
- }\r
- else\r
- {\r
- bClosePopupWindow = true;\r
- if ((bClickOnAnchor) &&\r
- (el.href) &&\r
- ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1)))\r
- {\r
- bClosePopupWindow = false;\r
- }\r
- if (bClosePopupWindow)\r
- {\r
- if (window.gPopupWindow != null && !window.gPopupWindow.closed )\r
- {\r
- window.gPopupWindow.close();\r
- }\r
- }\r
- }\r
- }\r
-}\r
-\r
-function BsPopupOnClick()\r
-{\r
- if (!gbBsIE4 && !gbBsOpera7)\r
- return;\r
-\r
- BSSCPopup_ClickMac();\r
-}\r
-\r
-function _BSSCOnError(message)\r
-{\r
- if(-1 != message.indexOf("denied") \r
- || -1 != message.indexOf("Object required"))\r
- return true;\r
-}\r
-\r
-//End to support previous relative topics\r
-\r
-/// Section End - General and relative topics (JavaScript 1.0)\r
-\r
-/// Section Begin - Popup (JavaScript 1.0)\r
-//Begin to support previous popup functions\r
-\r
-//variables used to isolate the browser type\r
-var gBsStyVisShow = null;\r
-var gBsStyVisHide = null;\r
-var gBsClientWidth = 640;\r
-var gBsClientHeight = 480;\r
-\r
-// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.\r
-var gBRateH_W = 0.618; // 1.618 Golden cut.\r
-var gBMaxXOfParent = 0.8; \r
-var gBMaxYOfParent = 0.8;\r
-var gBscrollHeight = 16;\r
-var gBscrollWidth = 16;\r
-var gBpermitXDelta = 3;\r
-var gBpermitYDelta = 3;\r
-\r
-\r
-var arrayPopupURL = new Array();\r
-var arrayAbsPopupURL = new Array();\r
-\r
-var arrayDirty = new Array();\r
-\r
-function setAbsPopupURL(nIndex, strURL)\r
-{\r
- arrayAbsPopupURL[nIndex] = strURL;\r
-}\r
-\r
-function getAbsPopupURL(nIndex)\r
-{\r
- if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null;\r
- else \r
- return arrayAbsPopupURL[nIndex];\r
-}\r
-\r
-function getPopupURL(nIndex)\r
-{\r
- if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null;\r
- else \r
- return arrayPopupURL[nIndex];\r
-}\r
-\r
-function getPopupID(nIndex)\r
-{\r
- return gstrPopupID + nIndex;\r
-}\r
-\r
-function getPopupShadowID(nIndex)\r
-{\r
- return gstrPopupShadowID + nIndex;\r
-}\r
-\r
-function getPopupTopicID(nIndex)\r
-{\r
- return gstrPopupTopicID + nIndex;\r
-}\r
-\r
-function getPopupIFrameID(nIndex)\r
-{\r
- return gstrPopupIFrameID + nIndex;\r
-}\r
-\r
-function getPopupIFrameName(nIndex)\r
-{\r
- return gstrPopupIFrameName + nIndex;\r
-}\r
-\r
-\r
-function getPopupTopicStyle(nIndex)\r
-{\r
- return getElement(getPopupTopicID(nIndex)).style;\r
-}\r
-\r
-function getPopupShadowStyle(nIndex)\r
-{\r
- return getElement(getPopupShadowID(nIndex)).style;\r
-}\r
-\r
-function getPopupIFrame(nIndex)\r
-{\r
- if (gbBsNS6)\r
- return eval("window.frames['" + getPopupIFrameName(nIndex) + "']");\r
- else\r
- return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
-}\r
-\r
-function getPopupDivStyle(nIndex)\r
-{\r
- return getElement(getPopupID(nIndex)).style;\r
-}\r
-\r
-function getPopupIFrameStyle(nIndex)\r
-{\r
- return getElement(getPopupIFrameID(nIndex)).style;\r
-}\r
-\r
-\r
-function findDiv(strURL)\r
-{\r
- for (var i = 0; i < arrayPopupURL.length; i ++ ) {\r
- if (arrayPopupURL[i] == strURL) {\r
- return i;\r
- }\r
- }\r
- return -1;\r
-}\r
-\r
-var gnToken = -1;\r
-function takeToken()\r
-{\r
- gnToken ++;\r
- if (gnToken > 10000) gnToken = 0;\r
- return gnToken;\r
-}\r
-\r
-function IsValidToken(nToken)\r
-{\r
- return (gnToken == nToken);\r
-}\r
-\r
-function addDiv(strURL)\r
-{\r
- for (var i = 0; i < arrayPopupURL.length; i ++) {\r
- if (arrayPopupURL[i] == null) {\r
- arrayPopupURL[i] = strURL;\r
- return i;\r
- }\r
- } \r
- arrayPopupURL[i] = strURL;\r
- arrayDirty[i] = true;\r
- return i;\r
-}\r
-\r
-function setDirty()\r
-{\r
- for (var i = 0; i < arrayPopupURL.length; i ++ )\r
- arrayDirty[i] = true;\r
-}\r
-\r
-function IsDirty(nIndex)\r
-{\r
- if (nIndex == -1)\r
- return true;\r
- else \r
- if (arrayDirty.length > nIndex) \r
- return arrayDirty[nIndex];\r
- else\r
- return true;\r
-}\r
-\r
-function hideAll()\r
-{\r
- for (var i = 0; i < arrayPopupURL.length; i ++ )\r
- {\r
- getPopupDivStyle(i).visibility = gBsStyVisHide;\r
- getPopupIFrameStyle(i).visibility = gBsStyVisHide;\r
- }\r
-}\r
-\r
-function getCurrentPopupIFrame()\r
-{\r
- for (var i = 0; i < arrayPopupURL.length; i ++)\r
- if (getPopupDivStyle(i).visibility == gBsStyVisShow)\r
- return getPopupIFrame(i);\r
- return null;\r
-}\r
-\r
-function setClear(nIndex)\r
-{\r
- if (nIndex != -1)\r
- arrayDirty[nIndex] = false;\r
-}\r
-\r
-function _BSSCCreatePopupDiv(strURL)\r
-{\r
- var nIndex = findDiv(strURL);\r
- if (nIndex == -1 ) {\r
- nIndex = addDiv(strURL);\r
- BsPopup_CreateDiv(nIndex);\r
- }\r
- else {\r
- if (IsDirty(nIndex)) {\r
- if("object" == typeof(getPopupIFrame(nIndex).document))\r
- getPopupIFrame(nIndex).document.location.href = strURL;\r
- }\r
- }\r
- return nIndex;\r
-}\r
-\r
-//Here is the browser type \r
-function _BSPSGetBrowserInfo()\r
-{\r
- if (gbBsNS4&&!gbBsNS6)\r
- {\r
- gBsStyVisShow = "show";\r
- gBsStyVisHide = "hide";\r
- }\r
- else\r
- {\r
- gBsStyVisShow = "visible";\r
- gBsStyVisHide = "hidden";\r
- }\r
-}\r
-\r
-_BSPSGetBrowserInfo();\r
-\r
-//Get client size info\r
-function _BSPSGetClientSize()\r
-{\r
- if (gbBsNS4||gbBsKonqueror3||gbBsSafari)\r
- {\r
- gBsClientWidth = innerWidth;\r
- gBsClientHeight = innerHeight;\r
- }\r
- else if (gbBsIE4 || gbBsOpera7)\r
- {\r
- gBsClientWidth = document.body.clientWidth;\r
- gBsClientHeight = document.body.clientHeight;\r
- }\r
-}\r
-\r
-var gstrPopupID = 'BSSCPopup';\r
-var gstrPopupShadowID = 'BSSCPopupShadow';\r
-var gstrPopupTopicID = 'BSSCPopupTopic';\r
-var gstrPopupIFrameID = 'BSSCPopupIFrame';\r
-var gstrPopupIFrameName = 'BSSCPopupIFrameName';\r
-\r
-var gstrPopupSecondWindowName = 'BSSCPopup';\r
-\r
-var gPopupWindow = null;\r
-var gnPopupClickX = 0;\r
-var gnPopupClickY = 0;\r
-\r
-var gnPopupScreenClickX = 0;\r
-var gnPopupScreenClickY = 0;\r
-\r
-var gbPopupTimeoutExpired = false;\r
-\r
-function DHTMLPopupSupport()\r
-{\r
- if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) {\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-function BSSCPopup_IsPopup()\r
-{\r
- if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {\r
- return true;\r
- } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) {\r
- return true;\r
- } else {\r
- return false;\r
- }\r
-}\r
-\r
-// If there is a hyperlink in a popup window, display the hyperlink in\r
-// the original window. (bsscright)\r
-if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) {\r
- document.write("<base target=\"bsscright\">");\r
-}\r
-\r
-// Local functions.\r
-function BsPopup_CreateDiv(nIndex)\r
-{\r
- if(!DHTMLPopupSupport())\r
- return;\r
- // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.\r
- var strPopupDiv = "<DIV ID='" + getPopupID(nIndex) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>";\r
- strPopupDiv += "<DIV ID='" + getPopupShadowID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#C0C0C0;\"></DIV>";\r
- strPopupDiv += "<DIV ID='" + getPopupTopicID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0; background-color:#FFFFFF;border:1px #000000 outset;\">";\r
- strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";\r
- strPopupDiv += "</DIV></DIV>";\r
-\r
- var objBody = getElementsByTag(document, "BODY")[0];\r
- if( typeof(objBody) != "object" )\r
- return;\r
-\r
- insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv);\r
-}\r
-\r
-function handleLoadNS()\r
-{\r
- if (this.id)\r
- {\r
- var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length));\r
- BSSCPopup_PostWork(nIndex);\r
- }\r
-}\r
-\r
-function BSSCPopup_PostWork(nIndex)\r
-{\r
- getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
- getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow;\r
-\r
- setClear(nIndex);\r
- window.gbPopupTimeoutExpired = true;\r
-\r
- BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
- if (gbBsNS6)\r
- getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false);\r
- else\r
- getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;\r
-\r
- if (!gbOrignalOnMouseDown && document.onmousedown)\r
- gbOrignalOnMouseDown = document.onmousedown;\r
-\r
- if (gbBsNS6)\r
- document.addEventListener("mousedown", BSSCPopupParentClicked,false);\r
- else\r
- document.onmousedown = BSSCPopupParentClicked;\r
-}\r
-\r
-function BSSCPopup_Timeout(nIndex, nToken)\r
-{\r
- if (!IsValidToken(nToken)) return;\r
-\r
- if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
- (getPopupIFrame(nIndex).document.body != null))) {\r
- BSSCPopup_PostWork(nIndex);\r
- } else {\r
- setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);\r
- }\r
-}\r
-\r
-// VH 08/10/00 \r
-// do not change target to parent if the href is using javascript\r
-function BSSCPopup_ChangeTargettoParent(tagsObject)\r
-{\r
- var collA = getElementsByTag(tagsObject, "A");\r
- BSSCPopup_ChangeTargettoParent2(collA);\r
-\r
- var collIMG = getElementsByTag(tagsObject,"IMG");\r
- BSSCPopup_ChangeTargettoParent2(collIMG);\r
-}\r
-\r
-function BSSCPopup_ChangeTargettoParent2(colls)\r
-{\r
- if (colls != null) {\r
- for (var j = 0; j < colls.length; j ++ )\r
- {\r
- var strtemp = colls[j].href;\r
- if (strtemp)\r
- {\r
- strtemp = strtemp.toLowerCase();\r
- if (strtemp.indexOf("javascript:") == -1)\r
- if (colls[j].target == "")\r
- colls[j].target = "_parent";\r
- }\r
- }\r
- }\r
-}\r
-\r
-function BSPSPopupTopicWinHelp(strURL)\r
-{\r
- _BSSCPopup(strURL);\r
- return;\r
-}\r
-\r
-function _BSSCPopup(strURL, width, height)\r
-{\r
- var cuswidth = 0;\r
- var cusheight = 0;\r
- if ("undefined" != typeof(width) && "undefined" != typeof(height)) {\r
- cuswidth = width;\r
- cusheight= height;\r
- }\r
- \r
- if (DHTMLPopupSupport()) {\r
- var nToken = takeToken(); // take token first.\r
- var nIndex = _BSSCCreatePopupDiv(strURL);\r
- window.gbPopupTimeoutExpired = false;\r
- var ntWidth = gBsClientWidth;\r
- var ntHeight = gBsClientHeight;\r
- _BSPSGetClientSize();\r
- if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
- setDirty();\r
- }\r
-\r
- if (IsDirty(nIndex)) {\r
- if (gbBsMac) {\r
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight +")", 400);\r
- } else {\r
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
- }\r
- }\r
- else {\r
- MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
- }\r
- } else {\r
- _BSSCPopup2(strURL, cuswidth, cusheight);\r
- }\r
- return;\r
-}\r
-\r
-if (gbBsIE55)\r
-{\r
- var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;\r
- var gnBsUnload=0;\r
- window.onbeforeunload = window_BUnload;\r
-}\r
- \r
-function window_BUnload()\r
-{\r
- gnBsUnload++;\r
- if (gnBsUnload>1)\r
- return;\r
- for (var i = 0; i < arrayPopupURL.length; i ++)\r
- removeThis(document.all(getPopupID(i)));\r
- arrayPopupURL.length = 0; \r
- if (ehlpdhtm_fOldBefureUnload)\r
- ehlpdhtm_fOldBefureUnload();\r
-}\r
-\r
-function _BSSCPopup2(strURL, width, height)\r
-{\r
- if (gbBsOpera6&&gbBsMac)\r
- {\r
- var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName);\r
- wmTemp.close();\r
- setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100);\r
- }\r
- else\r
- _BSSCPopup3(strURL, width, height);\r
-}\r
- \r
-function _BSSCPopup3(strURL, width, height)\r
-{\r
- if (window.name == gstrPopupSecondWindowName) {\r
- window.location = strURL;\r
- } else {\r
- if (!gbBsMac || !gbBsNS4) {\r
- BSSCHidePopupWindow();\r
- }\r
- var nX = 0;\r
- var nY = 0;\r
- var nHeight = 300;\r
- var nWidth = 400;\r
- if (width > 0 && height > 0) {\r
- nHeight = height;\r
- nWidth = width;\r
- }\r
- _BSPSGetClientSize();\r
-\r
- nX = window.gnPopupScreenClickX;\r
- nY = window.gnPopupScreenClickY;\r
-\r
- if (nY + nHeight + 40 > screen.availHeight) {\r
- nY = screen.availHeight - nHeight - 40;\r
- }\r
- if (nX + nWidth + 40 > screen.availWidth) {\r
- nX = screen.availWidth - nWidth - 40;\r
- }\r
-\r
- // Launch a separate window\r
- var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
- if (gbBsNS) {\r
- if (gbBsNS6) {\r
- strParam += ",Height=" + nHeight + ",Width=" + nWidth;\r
- strParam += ",screenX=" + nX + ",screenY=" + nY;\r
- strParam += ",dependent=yes";\r
- }\r
- else {\r
- strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;\r
- strParam += ",screenX=" + nX + ",screenY=" + nY;\r
- strParam += ",dependent=yes";\r
- }\r
- }\r
- else {\r
- strParam += ",height=" + nHeight + ",width=" + nWidth;\r
- strParam += ",left=" + nX + ",top=" + nY;\r
- }\r
- if (gbBsSafari)\r
- {\r
- if (window.gPopupWindow)\r
- window.gPopupWindow.close(); \r
- window.gPopupWindow = window.open(strURL, "", strParam);\r
- window.gPopupWindow.name = gstrPopupSecondWindowName;\r
- window.gPopupWindow.moveTo(nX, nY);\r
- widnow.gPopupWindow.document.location.reload();\r
- } \r
- else\r
- {\r
- var wmTemp=null;\r
- if (gbBsKonqueror3)\r
- {\r
- if (window.gPopupWindow)\r
- window.gPopupWindow.close();\r
- }\r
- if (gbBsOpera&&gbBsMac)\r
- {\r
- wmTemp= window.open(document.location.href, "Temp", strParam);\r
- }\r
- window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
- if (!gbBsIE)\r
- window.gPopupWindow.focus();\r
- \r
- if (wmTemp)\r
- wmTemp.close();\r
- }\r
-\r
- if (gbBsNS4)\r
- setEventHandle();\r
- else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3)\r
- setTimeout("setPopupFocus();", 100);\r
- }\r
- return;\r
-}\r
-\r
-function setEventHandle()\r
-{\r
- window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR);\r
- window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
- window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
-}\r
-\r
-function setPopupFocus()\r
-{\r
- window.gPopupWindow.focus();\r
-}\r
-\r
-function NonIEPopup_HandleBlur(e)\r
-{\r
- window.gPopupWindow.focus();\r
-}\r
-\r
-function NonIEPopup_HandleClick(e)\r
-{\r
- // Because navigator will give the event to the handler before the hyperlink, let's\r
- // first route the event to see if we are clicking on a Popup menu in a popup.\r
- document.routeEvent(e);\r
-\r
- // If a popup menu is active then don't do anything with the click\r
- if (window.gPopupWindow.gbInPopupMenu) {\r
- window.gPopupWindow.captureEvents(Event.CLICK);\r
- window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
- return false;\r
- }\r
-\r
- // Close the popup window\r
- if(e.target.href)\r
- {\r
- if(e.target.href.indexOf("javascript:")==-1) \r
- {\r
- if (e.target.target=="")\r
- window.location.href = e.target.href;\r
- else\r
- window.open(e.target.href, e.target.target);\r
- this.close();\r
- }\r
- } \r
- else\r
- this.close();\r
- return false;\r
-}\r
-\r
-function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)\r
-{ \r
- if (!window.getPopupIFrame(nIndex).document) {\r
- _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);\r
- return;\r
- }\r
- \r
- if (!IsValidToken(nToken)) return;\r
-\r
- if (gbBsNS6)\r
- {\r
- setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
- BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
- return;\r
- }\r
- \r
- if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&\r
- (window.getPopupIFrame(nIndex).document.body != null)) {\r
- if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.\r
- window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
- }\r
- else\r
- {\r
- setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
- BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
- }\r
- } else {\r
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
- }\r
-}\r
-\r
-function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)\r
-{\r
- if (window.gbPopupTimeoutExpired) return;\r
-\r
- if (!IsValidToken(nToken)) return;\r
-\r
- getPopupDivStyle(nIndex).visibility = gBsStyVisHide;\r
- getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide;\r
-\r
- // Determine the width and height for the window\r
- _BSPSGetClientSize();\r
-\r
- var size = new BSSCSize(0, 0);\r
-\r
- if (cuswidth <= 0 || cusheight <= 0)\r
- BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
- else {\r
- size.x = cuswidth;\r
- size.y = cusheight;\r
- }\r
-\r
- // Determine the width and height for the window\r
- var nWidth = size.x;\r
- var nHeight = size.y;\r
-\r
- // for small popup size, we should allow any size.\r
- // The popup size should be ok if bigger than 0\r
- if (nWidth < 0 || nHeight < 0) return; // there must be something terribly wrong. \r
-\r
- getPopupDivStyle(nIndex).width = nWidth;\r
- getPopupDivStyle(nIndex).height = nHeight;\r
-\r
- getPopupShadowStyle(nIndex).width = nWidth;\r
- getPopupShadowStyle(nIndex).height = nHeight;\r
- getPopupTopicStyle(nIndex).width = nWidth;\r
- getPopupTopicStyle(nIndex).height = nHeight;\r
- if (gbBsIE55)\r
- {\r
- getPopupShadowStyle(nIndex).width = nWidth + 2;\r
- getPopupShadowStyle(nIndex).height = nHeight + 2;\r
- getPopupTopicStyle(nIndex).width = nWidth + 2;\r
- getPopupTopicStyle(nIndex).height = nHeight + 2;\r
- }\r
-\r
- getPopupIFrameStyle(nIndex).width = nWidth;\r
- getPopupIFrameStyle(nIndex).height = nHeight;\r
- if (gbBsIE55 || gbBsNS6)\r
- {\r
- getPopupIFrameStyle(nIndex).top = 0;\r
- getPopupIFrameStyle(nIndex).left = 0;\r
- }\r
- \r
- var strURL = getPopupURL(nIndex);\r
- if (strURL.indexOf("#") != -1&&gbBsNS6)\r
- getPopupIFrame(nIndex).location.reload();\r
- else if (strURL.indexOf("#") != -1||gbBsNS6)\r
- getPopupIFrame(nIndex).location.href = strURL; // reload again, this will fix the bookmark misunderstand in IE5.\r
- \r
- MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);\r
-}\r
-\r
-function getScrollLeft()\r
-{\r
- if (document.body.scrollLeft)\r
- return document.body.scrollLeft;\r
- else if (window.pageXOffset)\r
- return window.pageXOffset;\r
- else\r
- return 0;\r
-}\r
-\r
-function getScrollTop()\r
-{\r
- if (document.body.scrollTop)\r
- return document.body.scrollTop;\r
- else if (window.pageYOffset)\r
- return window.pageYOffset;\r
- else\r
- return 0;\r
-}\r
-\r
-\r
-function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)\r
-{\r
- if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.\r
- window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
- setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
- return;\r
- }\r
-\r
- // Determine the position of the window\r
- var nClickX = window.gnPopupClickX;\r
- var nClickY = window.gnPopupClickY;\r
- var nTop = 0;\r
- var nLeft = 0;\r
-\r
- var nWidth = parseInt(getPopupDivStyle(nIndex).width);\r
- var nHeight = parseInt(getPopupDivStyle(nIndex).height);\r
-\r
- if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) {\r
- nTop = nClickY + 10;\r
- } else {\r
- nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20;\r
- }\r
- if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) {\r
- nLeft = nClickX;\r
- } else {\r
- nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8;\r
- }\r
-\r
- if (nTop < getScrollTop()) nTop = getScrollTop() + 1;\r
- if (nLeft< getScrollLeft()) nLeft = getScrollLeft() + 1;\r
-\r
- getPopupDivStyle(nIndex).left = nLeft;\r
- getPopupDivStyle(nIndex).top = nTop;\r
-\r
- // Set the location of the background blocks\r
- getPopupShadowStyle(nIndex).left = 6;\r
- getPopupShadowStyle(nIndex).top = 6;\r
- if (gbBsIE55)\r
- {\r
- getPopupShadowStyle(nIndex).left = 4;\r
- getPopupShadowStyle(nIndex).top = 4;\r
- }\r
-\r
- if (gbBsMac&&gbBsIE4) {\r
- // Total hack on the iMac to get the IFrame to position properly\r
- getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
- getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
- // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it\r
- getPopupIFrame(nIndex).window.BSSCOnLoad();\r
- }\r
-\r
- if (gbBsNS6&&IsDirty(nIndex))\r
- getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false);\r
- else\r
- BSSCPopup_Timeout(nIndex , nToken );\r
- return;\r
-}\r
-\r
-function BSSCSize(x, y)\r
-{\r
- this.x = x;\r
- this.y = y;\r
-}\r
-\r
-function BSSCGetContentSize(thisWindow, size)\r
-{\r
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4)\r
- return;\r
-\r
- if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) {\r
- size.x = 320;\r
- size.y = 180;\r
- return;\r
- }\r
-\r
- // Resize the width until it is wide enough to handle the content\r
- // The trick is to start wide and determine when the scrollHeight changes\r
- // because then we know a scrollbar is necessary. We can then go back\r
- // to the next widest size (for no scrollbar)\r
-\r
- var ClientRate = gBsClientHeight / gBsClientWidth;\r
-\r
- \r
- var GoldenSize = new BSSCSize(0,0);\r
- GoldenSize.x = gBsClientWidth * gBMaxXOfParent;\r
- GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;\r
-\r
- if (ClientRate > gBRateH_W) {\r
- GoldenSize.y = GoldenSize.x * gBRateH_W;\r
- }\r
- else {\r
- GoldenSize.x = GoldenSize.y / gBRateH_W;\r
- }\r
-\r
- // Try to using parent specified max x.\r
- var x = 0;\r
- var maxgoldx = GoldenSize.x;\r
- var maxx = gBsClientWidth * gBMaxXOfParent;\r
- \r
- // This double resize causes the document to re-render (and we need it to)\r
- if (!gbBsIE5)\r
- thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.\r
- \r
- thisWindow.resizeTo(1, 1);\r
- thisWindow.resizeTo(1, 1);\r
- thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
- thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
- \r
- var miny = thisWindow.document.body.scrollHeight + gBscrollHeight;\r
- \r
- if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can\r
- {\r
- thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
- thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
- \r
- miny = thisWindow.document.body.scrollHeight + gBscrollHeight;\r
- maxy = gBsClientHeight * gBMaxYOfParent;\r
- \r
- if (miny > maxy) { // the popup must have a scroll, OK let it be.\r
- miny = maxy;\r
- size.x = maxx;\r
- size.y = maxy;\r
- thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little.\r
- }\r
- else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.\r
- size.y = miny;\r
- \r
- // downsize from maxx , now I try to using binary divide.\r
- x = maxx;\r
- deltax = -maxx/2;\r
- //j = 0;\r
- while (true) {\r
- x = x + deltax;\r
- thisWindow.resizeTo(x, miny);\r
- thisWindow.resizeTo(x, miny);\r
- diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate;\r
- if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
- deltax = Math.abs(deltax) /2;\r
- else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
- deltax = -Math.abs(deltax) /2;\r
- else \r
- // the y is close enough to wanted.\r
- break;\r
- if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
- break;\r
- }\r
- size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
- size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight; \r
- thisWindow.document.body.scroll = 'no';\r
- }\r
- }\r
- else {\r
- if (thisWindow.document.body.scrollWidth > maxgoldx) {\r
- size.x = maxx; \r
- size.y = miny; \r
- thisWindow.document.body.scroll = 'yes';\r
- }\r
- else {\r
- // downsize from maxgoldx , now I try to using binary divide.\r
- x = maxgoldx;\r
- deltax = -maxgoldx/2;\r
- while (true) {\r
- x = x + deltax;\r
- thisWindow.resizeTo(x, miny);\r
- thisWindow.resizeTo(x, miny);\r
- diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W;\r
- if (diffy > gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
- deltax = Math.abs(deltax) /2;\r
- else if (diffy < -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
- deltax = -Math.abs(deltax) /2;\r
- else \r
- // the y is close enough to wanted.\r
- break;\r
- if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
- break;\r
- }\r
- size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
- size.y = thisWindow.document.body.scrollHeight ;\r
- thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.\r
- thisWindow.resizeTo(size.x, size.y);\r
- if (thisWindow.document.body.scrollWidth > size.x)\r
- {\r
- size.x = thisWindow.document.body.scrollWidth;\r
- }\r
- if (thisWindow.document.body.scrollHeight > size.y)\r
- {\r
- size.y = thisWindow.document.body.scrollHeight;\r
- }\r
- }\r
- }\r
- thisWindow.resizeTo(size.x, size.y);\r
- thisWindow.resizeTo(size.x, size.y);\r
- return;\r
-}\r
-\r
-function BSSCPopupParentClicked()\r
-{\r
- if (!window.gbPopupTimeoutExpired) {\r
- return false;\r
- }\r
- \r
- document.onmousedown = gbOrignalOnMouseDown;\r
-\r
- // Simply hide the popup\r
- hideAll();\r
-\r
- window.gbPopupTimeoutExpired = false;\r
-\r
- return true;\r
-}\r
-\r
-function isInsideHyperLink(obj)\r
-{\r
- if (obj&&obj!=getParentNode(obj))\r
- {\r
- if (obj.tagName=="A"||obj.tagName=="IMG")\r
- return true;\r
- else\r
- return isInsideHyperLink(getParentNode(obj));\r
- }\r
- else\r
- return false;\r
-}\r
-\r
-function BSSCPopupClicked(e)\r
-{\r
- if (!window.gbPopupTimeoutExpired) {\r
- return false;\r
- }\r
-\r
- var popupIFrame = getCurrentPopupIFrame();\r
- if (popupIFrame == null) {\r
- return true;\r
- }\r
-\r
- if (gbBsIE4 && (!((popupIFrame.window.event != null) &&\r
- (popupIFrame.window.event.srcElement != null) &&\r
- isInsideHyperLink(popupIFrame.window.event.srcElement)))) {\r
- document.onmousedown = gbOrignalOnMouseDown;\r
- \r
- // Simply hide the popup\r
- hideAll();\r
- window.gbPopupTimeoutExpired = false;\r
- return true;\r
- }\r
- else if (gbBsNS6 && (!((e != null) &&\r
- (e.target!= null) && isInsideHyperLink(e.target))))\r
- {\r
- document.addEventListener("mousedown", gbOrignalOnMouseDown,false);\r
- // Simply hide the popup\r
- hideAll();\r
- window.gbPopupTimeoutExpired = false;\r
- return true; \r
- }\r
-}\r
-\r
-//trace the mouse over's position for hotspot\r
-function BSPSPopupOnMouseOver(event)\r
-{\r
- if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) {\r
- window.gnPopupClickX = event.clientX + getScrollLeft();\r
- window.gnPopupClickY = event.clientY + getScrollTop();\r
- window.gnPopupScreenClickX = event.screenX;\r
- window.gnPopupScreenClickY = event.screenY;\r
- } else if (gbBsSafari) {\r
- window.gnPopupClickX = event.clientX + getScrollLeft();\r
- window.gnPopupClickY = event.clientY + getScrollTop();\r
- window.gnPopupScreenClickX = event.screenX + window.screenX;\r
- window.gnPopupScreenClickY = event.screenY + window.screenY;\r
- } else if (gbBsNS4) {\r
- window.gnPopupClickX = event.pageX - window.pageXOffset;\r
- window.gnPopupClickY = event.pageY - window.pageYOffset;\r
- window.gnPopupScreenClickX = event.screenX - window.pageXOffset;\r
- window.gnPopupScreenClickY = event.screenY - window.pageYOffset;\r
- }\r
-}\r
-\r
-function BSSCHidePopupWindow()\r
-{\r
- if (window.gPopupWindow != null) {\r
- if (gbBsNS4) {\r
- if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {\r
- window.gPopupWindow.close();\r
- window.gPopupWindow = null;\r
- }\r
- }\r
- }\r
- return;\r
-}\r
-\r
-// Add the PopupOnClick to the onclick array.\r
-if (typeof(BsscRegisterOnClick) != "undefined")\r
-{\r
- BsscRegisterOnClick(BsPopupOnClick);\r
-}\r
-//End to support previous popup functions\r
-\r
-/// Section End - Popup (JavaScript 1.0)\r
-\r
-/// Section Begin - Embedded Stub (JavaScript 1.0)\r
-\r
-function BSSCCreatePopupDiv()\r
-{\r
- return;\r
-}\r
-\r
-function WritePopupMenuLayer()\r
-{\r
- if (BsscHasExtJs()) {_WritePopupMenuLayer();}\r
-}\r
-\r
-function BSSCPopup(strURL, width, height)\r
-{\r
- var re = new RegExp("'", 'g');\r
- strURL = strURL.replace(re, "%27");\r
-\r
- if (BsscHasExtJs()) { \r
- _BSSCPopup(strURL, width, height);\r
- }else{\r
- //Create a temporary window first to ensure the real popup comes up on top\r
- var wndTemp = null;\r
- if (!gbBsNS3) {\r
- wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
- }\r
- // Create the real popup window\r
- var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");\r
- // Close the temporary\r
- if (!gbBsNS3) {\r
- wndTemp.close();\r
- } else {\r
- wndPopup.focus();\r
- }\r
- }\r
-}\r
-\r
-var gbWndTemp = null, gbWndPopupLinks = null;\r
-var gbstrParaTotal = "";\r
-\r
-function PopupMenu_Invoke()\r
-{\r
- if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function')\r
- {\r
- if (Number(gsSkinVersion) > 2 && IsFlashSupported())\r
- {\r
- return wfRelatedTopic(PopupMenu_Invoke.arguments);\r
- }\r
- }\r
- if (BsscHasExtJs()) {\r
- return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);\r
- }\r
- if (gbBsNS3Before || gbBsIE3Before ) {\r
- var argLen = PopupMenu_Invoke.arguments.length;\r
- if (argLen < 5) {\r
- window.document.location.href = PopupMenu_Invoke.arguments[3];\r
- return false;\r
- }\r
- gbWndTemp = null;\r
- gbWndPopupLinks = null;\r
- gbstrParaTotal = "";\r
- for (var i = 0; i < (argLen - 2) / 2; i++) {\r
- var strParaLine = "";\r
- if (gbBsNS2){\r
- strParaLine += "<a href=\"";\r
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
- strParaLine += "\">"\r
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
- strParaLine += "</a>";\r
- } else {\r
- strParaLine += "<a href=\"javascript:";\r
- strParaLine += "gotoUrl(\'";\r
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
- strParaLine += "\');\"";\r
- if (PopupMenu_Invoke.arguments[1] != '') {\r
- strParaLine += " TARGET='" + PopupMenu_Invoke.arguments[1] + "'";\r
- }\r
- strParaLine += ">";\r
- strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
- strParaLine += "</a>";\r
- }\r
- strParaLine += "<br>";\r
- gbstrParaTotal += strParaLine;\r
- }\r
- var nHeight = argLen * 15;\r
- var nWidth = 400;\r
- var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
- strParam += ",height=" + nHeight + ",width=200,resizable";\r
- \r
- //Create a temporary window first to ensure the real popup comes up on top\r
- //var wndTemp = null;\r
- if (!gbBsNS3) {\r
- gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
- } \r
- gbWndPopupLinks = window.open("", "popuplinks", strParam);\r
-\r
- setTimeout("Wait_PopupMenuReady()", 100);\r
- }\r
- return true;\r
-}\r
-\r
-function Wait_PopupMenuReady() \r
-{\r
- if (gbWndPopupLinks != null && "object" == typeof(gbWndPopupLinks.document)) {\r
- PopupMenu_InvokeReady();\r
- }\r
- else \r
- setTimeout("Wait_PopupMenuReady()", 100);\r
-}\r
-\r
-function PopupMenu_InvokeReady()\r
-{\r
- if (gbWndPopupLinks != null) {\r
- gbWndPopupLinks.document.open("text/html");\r
- gbWndPopupLinks.document.write("<html><head>");\r
- if (gbBsNS2) {\r
- gbWndPopupLinks.document.write("<base href=\"" + location +"\">");\r
- } else {\r
- //YJ: IE301,302 and NS3.x works fine\r
- gbWndPopupLinks.document.write("<");\r
- gbWndPopupLinks.document.write("script>");\r
- gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}");\r
- gbWndPopupLinks.document.write("<");\r
- gbWndPopupLinks.document.write("/script>");\r
- }\r
- gbWndPopupLinks.document.write("</head><body onBlur=\'self.focus();\'>");\r
- gbWndPopupLinks.document.write(gbstrParaTotal);\r
- gbWndPopupLinks.document.write("</body></html>");\r
- gbWndPopupLinks.document.close();\r
-\r
- // Close the temporary\r
- if (!gbBsNS3 && gbWndTemp != null) {\r
- gbWndTemp.close();\r
- }else {\r
- gbWndPopupLinks.focus();\r
- }\r
-\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-/// Section End - Embedded Stub (JavaScript 1.0)\r
-\r
-//// Segment End -- (JavaScript 1.0)\r
-\r
-//// Segment Begin -- (JavaScript 1.2)\r
-/// Section Begin - kadov DHTM (JavaScript 1.2)\r
-\r
-//Begin to support extended and dropdown text effects.\r
-function kadovIsParagraph(el)\r
-{\r
- return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;\r
-}\r
-\r
-function kadovInitEachChild(el)\r
-{ \r
- for(var i=0; i<getChildNodes(el).length; i++)\r
- {\r
- var child = getChildNodes(el)[i];\r
- if( child.tagName == "SCRIPT" || child.tagName == "!" )\r
- continue;\r
-\r
- if( child.id != "" )\r
- {\r
- // to wipe out the onload effects\r
- if (gbBsIE4&&!gbBsMac)\r
- {\r
- var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
- if( (onLoadEffect != null) && (onLoadEffect > "") )\r
- child.style.setAttribute( "x-on-pageload", "" );\r
- }\r
- \r
- var href = child.getAttribute("href")\r
- if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )\r
- kadovFilePopupInit(child.id); // Init for Popup\r
- else if( child.className == "dropspot" || child.className == "expandspot" || \r
- child.className == "glossterm" )\r
- kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text\r
- else if( child.className == "trigger")\r
- kadovInitTrigger(child.id);// Init for Trigger\r
- else\r
- {\r
- kadovInitEffects(child.id);// Init for DHTML effects\r
- CEngine.SetOneTargetInitialState( child.id );\r
- }\r
- }\r
- \r
- if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )\r
- child.start = "mouseover";// to start a AVI file. fileopen doesn't work\r
-\r
- kadovInitEachChild(child);\r
- }\r
-}\r
-\r
-function kadovRetrieveTextInner(el)\r
-{ \r
- var x = "";\r
- if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))\r
- return x;\r
-\r
- if( kadovIsParagraph(el) )\r
- {\r
- var strNewID = " ";\r
- if( el.id != "" )\r
- strNewID += "id=" + el.id + "_NewSpan ";\r
- x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";\r
- }\r
- else\r
- {\r
- for(var i=0; i<getChildNodes(el).length; i++)\r
- x += kadovRetrieveTextInner( getChildNodes(el)[i] );\r
- }\r
- return x;\r
-}\r
-\r
-function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )\r
-{ \r
- var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );\r
- if( nTagOpen < 0 )\r
- return strRawHTML;\r
-\r
- var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);\r
- if( nTagClose < nTagOpen )\r
- return strRawHTML;\r
- \r
- if( typeof(nDistance) == "number" && nDistance > 0 )\r
- if( (nTagClose - nTagOpen) != nDistance )\r
- return strRawHTML;\r
- \r
- var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;\r
- return kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );\r
-}\r
-\r
-function kadovAdjustObjectTag(strRawHTML, nStartPos)\r
-{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings\r
- \r
- //Is there any DTC?\r
- var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';\r
- var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';\r
- var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );\r
- if( nDTCTagOpen < 0 )\r
- return strRawHTML;\r
- var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );\r
- if( nDTCTagClose < nDTCTagOpen)\r
- return strRawHTML; // no Design Time Controls;\r
- \r
- //Is the DTC HTML Help Control?\r
- var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';\r
- var strRTObjTagClose = '</OBJECT>';\r
- var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );\r
- if( nRTObjTagOpen < nDTCTagOpen )\r
- return strRawHTML;\r
- var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );\r
- if( nRTObjTagClose < nRTObjTagOpen )\r
- return strRawHTML; // is not a HTML help control\r
- \r
- // Is it a related Topics html help control?\r
- var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';\r
- if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )\r
- return strRawHTML;\r
- \r
- // does the commented object tag contain a items parameters \r
- var strRTItemsOpen = '<param name="Items" value="';\r
- var strRTItemsClose = '$$**$$" >';\r
- var strRTItemsClose2 = '$$**$$">';\r
-\r
- var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);\r
- if( nRTItemsOpen < nDTCTagOpen )\r
- return strRawHTML;\r
- var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);\r
- if (nRTItemsClose == -1)\r
- nRTItemsClose = strRawHTML.indexOf(strRTItemsClose2, nRTItemsOpen);\r
- if( nRTItemsClose < nRTItemsOpen )\r
- return strRawHTML;\r
- \r
- // found a items string\r
- var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);\r
- if( strItems.length < 1 )\r
- return strRawHTML;\r
- \r
- // to reconstruct the item(s) param tag(s)\r
- var strItemsArray = strItems.split('$$**$$');\r
- if( strItemsArray.length < 1 )\r
- return strRawHTML;\r
- var strRunTimeItemParam = "";\r
- for( var i = 0; i < strItemsArray.length; i++ )\r
- {\r
- strRunTimeItemParam += '<PARAM NAME="Item' + (i+1);\r
- strRunTimeItemParam += '"' + ' VALUE="';\r
- strRunTimeItemParam += strItemsArray[i];\r
- strRunTimeItemParam += '">';\r
- }\r
- \r
- // to insert the reconstructed item params into runtime object tag\r
- var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);\r
- return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);\r
-}\r
-\r
-function kadovTextPopupOnLoad( el )\r
-{\r
- if( typeof(el) == "string" )\r
- el = getElement(el);\r
-\r
- var src = el.getAttribute( "x-use-popup" );\r
- var bNeedMove=true;\r
- if(!src&&el.id)\r
- {\r
- for (var i=0;i<gPopupData.length;i++)\r
- if (gPopupData[i].el==el.id)\r
- {\r
- src=gPopupData[i].popupId;\r
- bNeedMove=false;\r
- break;\r
- }\r
- }\r
- if(!src)\r
- src = el.style.getAttribute( "x-use-popup" ); \r
- if (!src) \r
- return 0;\r
-\r
- var name = src;\r
- if( src.substr(0,1) == "#" ) \r
- name = src.substr(1, src.length-1);\r
- var srcDiv = getElement(name);\r
- if( !srcDiv )\r
- return 1;\r
-\r
- if (bNeedMove)\r
- {\r
- var type = el.getAttribute( "x-popup-type" );\r
- if (!type)\r
- type = el.style.getAttribute("x-popup-type");\r
- if (!type) \r
- return 1; \r
- var setup = el.getAttribute( "x-tmp-setup" );\r
- var newId = name;\r
- if( newId.indexOf( "_tmp") <= 0 )\r
- newId += "_tmp";\r
-\r
- if( !setup)\r
- {\r
- el.setAttribute( "x-tmp-setup", 1 );\r
-\r
- if( type == "pulldown" )\r
- {\r
- var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
- var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
- \r
- //work around the bug in HH.exe that highlight the phrases when use Search tab\r
- //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
- \r
- var strStyle = " style='display:none; position:relative;";\r
- var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
-\r
- removeThis(srcDiv); // empty the original DIV tag\r
- var elParentPra = kadovFindParentParagraph(el);\r
- if( elParentPra )\r
- insertAdjacentHTML(elParentPra, "afterEnd", newDiv );\r
- }\r
- else if( type == "expanding" )\r
- {\r
- var inner = kadovRetrieveTextInner(srcDiv);\r
- if( inner == "" )\r
- inner = srcDiv.innerHTML;\r
- var strAdjust = kadovAdjustObjectTag(inner,0);\r
- var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
- strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
- var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
- var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + "> " + strCleanHTML + "</span>";\r
- removeThis(srcDiv); // empty the original DIV tag\r
- insertAdjacentHTML(el, "afterEnd", newSpan );\r
- }\r
- }\r
- }\r
- else\r
- {\r
- srcDiv.style.display = "none";\r
- }\r
- return 0;\r
-}\r
-\r
-function getElementsByTag(obj,sTagName)\r
-{\r
- if(obj.getElementsByTagName)\r
- return obj.getElementsByTagName(sTagName);\r
- else if(obj.all)\r
- return obj.all.tags(sTagName);\r
- return null;\r
-}\r
-\r
-function getElement(sID)\r
-{\r
- if(document.getElementById)\r
- return document.getElementById(sID);\r
- else if(document.all)\r
- return document.all(sID);\r
- return null;\r
-}\r
-\r
-function getParentNode(obj)\r
-{\r
- if(obj.parentNode)\r
- return obj.parentNode;\r
- else if(obj.parentElement)\r
- return obj.parentElement;\r
- return null;\r
-}\r
-\r
-function getChildNodes(obj)\r
-{\r
- if(obj.childNodes)\r
- {\r
- var children = new Array();\r
- for (var i = 0; i < obj.childNodes.length; i++)\r
- {\r
- if (obj.childNodes[i].nodeType == 1)\r
- children[children.length] = obj.childNodes[i];\r
- }\r
- return children;\r
- }\r
- else if(obj.children)\r
- return obj.children;\r
- return null; \r
-}\r
-\r
-function removeThis(obj)\r
-{\r
- if(obj.parentNode)\r
- obj.parentNode.removeChild(obj);\r
- else\r
- obj.outerHTML="";\r
-}\r
-\r
-function kadovTextPopup( el )\r
-{\r
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 )\r
- return;\r
-\r
- var bNeedMove=true;\r
- \r
- if (window.event)\r
- window.event.cancelBubble = true;\r
-\r
- if( typeof(el) == "string" )\r
- el = getElement(el);\r
-\r
- if (!el||el==window)\r
- return;\r
- \r
- var src = el.getAttribute( "x-use-popup" );\r
- if(!src&&el.id)\r
- {\r
- for (var i=0;i<gPopupData.length;i++)\r
- if (gPopupData[i].el==el.id)\r
- {\r
- src=gPopupData[i].popupId;\r
- bNeedMove=false;\r
- break;\r
- }\r
- }\r
- if(!src)\r
- src = el.style.getAttribute( "x-use-popup" ); \r
- if(!src)\r
- return;\r
- \r
- var name = src;\r
- if( src.substr(0,1) == "#" ) \r
- if (bNeedMove)\r
- name = src.substr(1, src.length-1) + "_tmp";\r
- else\r
- name = src.substr(1, src.length-1);\r
-\r
- var srcDiv = getElement(name);\r
- if( !srcDiv )\r
- return;\r
-\r
- if( srcDiv )\r
- {\r
- if( srcDiv.style.display == "" )\r
- srcDiv.style.display = "none";\r
- else\r
- {\r
- srcDiv.style.display = "";\r
- if( typeof(srcDiv.bInitialized) == "undefined" )\r
- {\r
- srcDiv.bInitialized = true;\r
- kadovInitEffects(name);\r
- kadovInitEachChild(srcDiv);\r
- }\r
- }\r
- }\r
- if(gbBsIE4)\r
- event.returnValue=false;\r
- return;\r
-}\r
-\r
-function kadovFindParentParagraph( el )\r
-{\r
- if( typeof(el) == "string" )\r
- el = getElement(el);\r
- if( (!el) || el.tagName == "BODY" )\r
- return null;\r
- if( kadovIsParagraph(getParentNode(el)) )\r
- return getParentNode(el);\r
- else\r
- return kadovFindParentParagraph( getParentNode(el) );\r
-}\r
-\r
-//Begin HTML code invoked function\r
-function kadovRegisterEventHandler( obj, strEvent, strEventHandler )\r
-{\r
- if( !gbBsIE4 )\r
- return;\r
- CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );\r
-}\r
-\r
-function textPopupData(el, popupId)\r
-{\r
- this.el = el;\r
- this.popupId = "#"+popupId;\r
-}\r
-\r
-var gPopupData = new Array();\r
-\r
-function kadovTextPopupInit( el, popupId)\r
-{\r
- if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3)\r
- return;\r
- \r
- if( typeof(el) == "string" )\r
- {\r
- if (popupId)\r
- {\r
- gPopupData[gPopupData.length]=new textPopupData(el, popupId);\r
- }\r
- el = getElement(el);\r
- }\r
- \r
- if( el != null )\r
- {\r
- CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(\"" + el.id +"\");" );\r
- CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(\"" + el.id +"\");" );\r
- }\r
-}\r
-//End HTML code invoked function\r
-\r
-//End to support extended and dropdown text effects.\r
-\r
-//Begin to convert iWrite format to RoboEditor Format for DHTML effects\r
-function kadovInitTriggersInHead( )\r
-{\r
- if( Object.xDelayedInitElements )\r
- {\r
- var x = Object.xDelayedInitElements;\r
- for(i=0; i<x.length; i++)\r
- kadovInitTrigger( x[i] );\r
- }\r
-}\r
-\r
-//Begin HTML code invoked function\r
-function kadovFilePopupInit( el )\r
-{\r
- if( typeof(el) == "string" )\r
- el = getElement(el);\r
-\r
- if( el != null )\r
- CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );\r
-}\r
-\r
-function kadovInitTrigger( element )\r
-{\r
- if( !gbBsIE4 )\r
- return;\r
- var srcElement = element;\r
- if( typeof(srcElement) == "string" )\r
- {\r
- srcElement = getElement(element,0);\r
- if(srcElement == null)\r
- return;\r
- }\r
- \r
- if( !kadovIsParentVisible(srcElement) )\r
- return;\r
-\r
- var targets = srcElement.getAttribute( "x-targets" );\r
- if (!targets)\r
- targets = srcElement.style.getAttribute("x-targets");\r
- if (!targets)\r
- return; \r
- var arrOneTarget = targets.split( "," );\r
- for( var i = 0; i < arrOneTarget.length; i ++ )\r
- bsscFXInit( element, arrOneTarget[i], null, null, null, null );\r
-}\r
-\r
-function kadovIsParentVisible( el )\r
-{\r
- if( typeof(el) == "string" )\r
- el = getElement(el);\r
- if( (!el) || el.tagName == "BODY" )\r
- return true;\r
- if( el.style.display == 'none' ) //el.visibility == 'hidden' || \r
- return false;\r
- else\r
- return kadovIsParentVisible( getParentNode(el) );\r
-}\r
-\r
-function kadovInitEffects( element )\r
-{\r
- if( !gbBsIE4 )\r
- return;\r
- var srcElement = element;\r
- if( typeof(srcElement) == "string" )\r
- {\r
- srcElement = getElement(element,0);\r
- if(srcElement == null)\r
- return;\r
- }\r
- \r
- if( !kadovIsParentVisible(srcElement) )\r
- return;\r
- \r
- kadovInitEffect( srcElement, "x-on-hover" );\r
- kadovInitEffect( srcElement, "x-on-pageclick" );\r
- kadovInitEffect( srcElement, "x-on-pageload" );\r
- kadovInitEffect( srcElement, "x-on-trigger-1" );\r
- kadovInitEffect( srcElement, "x-on-trigger-2" );\r
-}\r
-//End HTML code invoked function\r
-\r
-function kadovInitEffect( element, prop )\r
-{\r
- var values = null;\r
- if( element.getAttribute( "currentStyle" ) && element.currentStyle.getAttribute)\r
- values = element.currentStyle.getAttribute( prop );\r
- else if (element.style.getAttribute)\r
- values = element.style.getAttribute( prop );\r
- if( !values )\r
- return;\r
-\r
- var functions = new Array();\r
- var nIdx = 0, nStart = 0;\r
- var nNext = values.indexOf( "\)", 0);\r
- while( nNext >= 0 && nNext < values.length )\r
- {\r
- functions[nIdx] = values.substr( nStart, nNext-nStart+1);\r
- nStart = nNext + 1;\r
- nIdx++;\r
- nNext = values.indexOf( "\)", nStart);\r
- }\r
- \r
- for( var i=0; i<functions.length; i++)\r
- {\r
- var id = element.getAttribute( "id" );\r
- var translatedProp = kadovTranslateProp(prop);\r
-\r
- var lp = functions[i].indexOf( "(" );\r
- var fnname = functions[i].substring(0, lp);\r
- var srcargs = functions[i].substring(lp+1, functions[i].length-1);\r
- \r
- var nClickTimes = 1;\r
- var arrForClickCount = srcargs.split( "," );\r
- for( var j = 0; j < arrForClickCount.length; j++ )\r
- {// to locate and get the "clicks=99" settings\r
- var nPageClick = arrForClickCount[j].indexOf("clicks");\r
- if( nPageClick >= 0 )\r
- {\r
- nPageClick = arrForClickCount[j].indexOf("=");\r
- if( nPageClick > 0 )\r
- {\r
- nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;\r
- break;\r
- }\r
- }\r
- }\r
- var args = srcargs;\r
- if( j < arrForClickCount.length )\r
- {// to strip out the "clicks=99" from the arguments string\r
- args = "";\r
- for( var k = 0; k < arrForClickCount.length; k ++ )\r
- {\r
- if( k != j )\r
- {\r
- args += arrForClickCount[k];\r
- if( k < arrForClickCount.length - 1 )\r
- args += ",";\r
- }\r
- }\r
- }\r
- bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );\r
- }\r
-}\r
-\r
-function kadovTranslateProp( prop )\r
-{\r
- switch( prop )\r
- {\r
- case "x-on-hover" : return "bsschover";\r
- case "x-on-pageclick" : return "bsscpageclick";\r
- case "x-on-pageload" : return "bsscpageload";\r
- case "x-on-trigger-1" : return "bssctrigger1";\r
- case "x-on-trigger-2" : return "bssctrigger2";\r
- }\r
- return null;\r
-}\r
-//End to convert iWrite format to RoboEditor Format for DHTML effects\r
-\r
-//Begin the definition of one entry to DHTML effects\r
-function bsscFXInit( trigger_ID, target_ID, event_type, \r
- action_type, action_setting, event_addional )\r
-{\r
- if( (!gbBsWindows && !gbBsSunOS && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID\r
- return; // we don't support Navigator yet\r
- \r
- if( typeof(event_type) == "string" )\r
- event_type = event_type.toLowerCase();\r
- if( typeof(action_type) == "string" )\r
- action_type = action_type.toLowerCase();\r
- if( typeof(action_setting) == "string" )\r
- action_setting = action_setting.toLowerCase();\r
- \r
- // to get the target element then add it to the target list\r
- var eleTarget = CCSSP.GetObject( target_ID );\r
- if( (eleTarget != null) && (event_type != null) && (action_type != null) )\r
- {\r
- CEngine.AddOneTarget( target_ID, eleTarget );\r
- CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);\r
- }\r
- \r
- // to validate the trigger_ID parameter\r
- if( typeof(trigger_ID) == "string" && trigger_ID != "" )\r
- CEngine.BuildTriggerObject( trigger_ID, target_ID );\r
-} \r
-//End the definition of one entry to DHTML effects\r
-\r
-/// Section End - kadov DHTM (JavaScript 1.2)\r
-\r
-/// Section Begin - CCSSP DHTM (JavaScript 1.2)\r
-\r
-//Begin JavaScript libary for cross-platform positioning object.\r
-function CCSSP(){} // constructor of CCSSP class\r
-\r
-CCSSP.GetObject = function( obj )\r
-{//convert object name string or reference into a valid object reference\r
- if( typeof(obj) == "object" )\r
- return obj;\r
- else if( typeof(obj) == "string" && obj != "")\r
- {\r
- if( gbBsNS4 )\r
- return eval("document." + obj);\r
- else\r
- return eval("document.all(\"" + obj + "\")");\r
- }\r
- else\r
- return null;\r
-}\r
-\r
-CCSSP.MoveObjectTo = function(obj, x, y)\r
-{//positioning an object at a specific pixel coordinate\r
- if( gbBsNS4 )\r
- obj.moveTo(x,y);\r
- else\r
- {\r
- obj.style.pixelLeft = x;\r
- obj.style.pixelTop = y;\r
- }\r
-}\r
-\r
-CCSSP.MoveObjectBy = function(obj, dx, dy)\r
-{//moveing a object by x and/or y pixel\r
- if( gbBsNS4 )\r
- obj.moveBy(dx,dy);\r
- else\r
- {\r
- obj.style.pixelLeft += dx;\r
- obj.style.pixelTop += dy;\r
- }\r
-}\r
-\r
-CCSSP.SetObjectBGColor = function(obj, color)\r
-{//set the background color of an object\r
- if( gbBsNS4 )\r
- obj.bgColor = color;\r
- else\r
- obj.style.backgroundColor = color;\r
-}\r
-\r
-CCSSP.ShowObject = function(obj, bShow)\r
-{// set the object to be visible or invisible\r
- if( gbBsNS4 )\r
- obj.visibility = (bShow == true) ? 'show' : 'hide';\r
- else\r
- obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.\r
-}\r
-\r
-CCSSP.GetObjectLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object\r
- if( gbBsNS4 )\r
- return obj.left;\r
- else\r
- return obj.style.pixelLeft;\r
-}\r
-\r
-CCSSP.GetObjectTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object\r
- if( gbBsNS4 )\r
- return obj.top;\r
- else\r
- return obj.style.pixelTop;\r
-}\r
-\r
-CCSSP.GetObjectContainLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object relative to it's parent element\r
- if( gbBsNS4 )\r
- return obj.pageX;\r
- else\r
- {\r
- if( obj == document.body )\r
- return obj.clientLeft;\r
- else\r
- return obj.offsetLeft;\r
- }\r
-}\r
-\r
-CCSSP.GetObjectWindowLeft = function(obj)\r
-{// retrieve the x coordinate of a posionable object relative to browser window\r
- if( gbBsNS4 )\r
- return obj.pageX;\r
- else\r
- {\r
- var nOffsetWindowLeft = 0;\r
- for(var element = obj; element; element = element.offsetParent)\r
- nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element);\r
- return nOffsetWindowLeft;\r
- }\r
-}\r
-\r
-CCSSP.GetObjectContainTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object relative to it's parent element\r
- if( gbBsNS4 )\r
- return obj.pageY;\r
- else\r
- {\r
- if( obj == document.body )\r
- return obj.clientTop;\r
- else\r
- return obj.offsetTop;\r
- }\r
-}\r
-\r
-CCSSP.GetObjectWindowTop = function(obj)\r
-{// retrieve the y coordinate of a posionable object relative to browser window\r
- if( gbBsNS4 )\r
- return obj.pageY;\r
- else\r
- {\r
- var nOffsetWindowTop = 0;\r
- for(var element = obj; element; element = element.offsetParent)\r
- nOffsetWindowTop += CCSSP.GetObjectContainTop(element);\r
- return nOffsetWindowTop;\r
- }\r
-}\r
-\r
-CCSSP.GetObjectHeight = function(obj)\r
-{// retrieve the height of a posionable object\r
- if( gbBsNS4 )\r
- return obj.clip.height;\r
- else\r
- return obj.offsetHeight;\r
-}\r
-\r
-CCSSP.GetObjectWidth = function(obj)\r
-{// retrieve the width of a posionable object\r
- if( gbBsNS4 )\r
- return obj.clip.width;\r
- else\r
- return obj.offsetWidth;\r
-}\r
-\r
-CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )\r
-{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined\r
- if (gbBsNS4 && !gbBsNS6)\r
- return ;\r
- \r
- var oldHandler = "";\r
-\r
- if (gbBsMac &&gbBsIE4&&!gbBsIE5)\r
- {\r
- if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")\r
- { //search for <SCRIPT> tag which define the event handler\r
- for( var i = 0; i < document.scripts.length; i++ ) \r
- {\r
- var script = document.scripts[i];\r
- if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
- {\r
- oldHandler = script.innerHTML;\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- var oldInlineHandler = srcObj[rawEventName.toLowerCase()];\r
- if( oldInlineHandler != null && typeof(oldInlineHandler) != "undefined")\r
- {\r
- var functionDefinition = oldInlineHandler.toString();\r
- var bodyStart = functionDefinition.indexOf( "{" );\r
- var bodyEnd = functionDefinition.lastIndexOf( "}" );\r
- if( bodyStart > 0 || bodyEnd > bodyStart )\r
- oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );\r
- }\r
- else if( gbBsIE4 )\r
- { //search for <SCRIPT> tag which define the event handler\r
- for( var i = 0; i < document.scripts.length; i++ ) \r
- {\r
- var script = document.scripts[i];\r
- if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
- {\r
- oldHandler = script.innerHTML;\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- if( oldHandler.indexOf(funcHandler) >= 0 )\r
- return;// to prevent register the funtion twice.\r
-\r
- if( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window\r
- {// other raw events will apply to layer\r
- var noOn = rawEventName.substring(2, rawEventName.length);\r
- if( typeof(noOn) == "string" && noOn.length > 3 ) {\r
- if (srcObj.captureEvents)\r
- srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
- }\r
- }\r
- \r
- var newHandler = oldHandler;\r
- if( newHandler.length == 0 )\r
- newHandler = funcHandler;\r
- else\r
- newHandler += "; " + funcHandler;\r
- \r
- srcObj[rawEventName.toLowerCase()] = new Function( newHandler );\r
-}\r
-\r
-CCSSP.GetWindowHeight = function()\r
-{// retrieve the height of available content in browser window\r
- if( gbBsNS4 )\r
- return window.innerHeight;\r
- else\r
- return document.body.clientHeight;\r
-}\r
-\r
-CCSSP.GetWindowBottom = function()\r
-{// retrieve the bottom postion of browser window\r
- if( gbBsNS4 )\r
- return window.outerHeight + window.pageYOffset;\r
- else\r
- return document.body.clientHeight + document.body.scrollTop;\r
-}\r
-\r
-CCSSP.GetWindowWidth = function()\r
-{// retrieve the width of available content in browser window\r
- if( gbBsNS4 )\r
- return window.innerWidth;\r
- else\r
- return document.body.clientWidth;\r
-}\r
-\r
-CCSSP.GetWindowRight = function()\r
-{// retrieve the right postion of browser window\r
- if( gbBsNS4 )\r
- return window.outerWidth + window.pageXOffset;\r
- else\r
- return document.body.clientWidth + document.body.scrollLeft;\r
-}\r
-\r
-CCSSP.TrimString = function( objString, subtrim )\r
-{// to trim the "subtrim" in the beginning and ending of a string object\r
- if( typeof(subtrim) != "string" || subtrim == null )\r
- return objString;\r
- var strHead = objString.substring(0, 1);\r
- var strRear = objString.substring(objString.length-1, objString.length);\r
- if( strHead != subtrim && strRear != subtrim )\r
- return objString;\r
- \r
- var spacePos = objString.indexOf(subtrim);\r
- if( spacePos < 0 )\r
- return objString;\r
- else if( spacePos == objString.length - 1 )\r
- return objString.substring(0, spacePos);\r
- else\r
- {\r
- var newString = objString.substring( spacePos + 1, objString.length);\r
- return CCSSP.TrimString( newString, subtrim );\r
- }\r
-}\r
-\r
-CCSSP.TrimSpace = function( objString )\r
-{\r
- var Trim1 = CCSSP.TrimString( objString, " ");\r
- return CCSSP.TrimString( Trim1, "\'");\r
-}\r
-\r
-CCSSP.GetEventElement = function( navEventObject )\r
-{// to get the element who fired the current event\r
- if(gbBsNS4) \r
- if (gbBsNS6)\r
- return null;\r
- else\r
- navEventObject.target;\r
- else\r
- return event.srcElement;\r
-}\r
-\r
-CCSSP.PrepareFilter = function( Obj )\r
-{//to prepare for making the filter work\r
- Obj.style.filter = "";\r
- if( Obj.style.width != "" || Obj.style.height != "" || Obj.style.position == "absolute" )\r
- return;\r
- Obj.style.height = CCSSP.GetObjectHeight(Obj);\r
-}\r
-\r
-CCSSP.IsDescendant = function( progenitor, progeny )\r
-{\r
- if( typeof(progeny) == "undefined" || progeny == null )\r
- return false;\r
- else if( progeny == progenitor )\r
- return true; \r
- else if( progeny.id == progenitor.id ) \r
- return true; \r
- else if( getParentNode(progeny) == getParentNode(progenitor))\r
- return false;\r
- else\r
- return CCSSP.IsDescendant( progenitor, getParentNode(progeny));\r
-}\r
-\r
-CCSSP.IsTextTag = function( Obj )\r
-{\r
- if( typeof( Obj.tagName ) == "undefined" )\r
- return false;\r
- return( Obj.tagName.indexOf("H") == 0 || Obj.tagName == "P" || \r
- Obj.tagName == "FONT" || Obj.tagName == "SPAN" );\r
-}\r
-\r
-//End JavaScript libary for cross-platform positioning object.\r
-\r
-/// Section End - CCSSP DHTM (JavaScript 1.2)\r
-\r
-/// Section Begin - CCSSP DHTM 1 (JavaScript 1.2)\r
-\r
-//Begin the definition of class CTrigger\r
-function CTrigger( TriggerElement )\r
-{\r
- // object : the trigger element. Never be null. \r
- this.eleTrigger = TriggerElement;\r
- \r
- // number : the click counter number: only 3 values: 0,1,2;\r
- this.nCounter = 0; \r
- \r
- //object as associative array of string:\r
- // the associate target ID strings; one element at least. \r
- this.objStrTarget = new Object();\r
- this.eleTrigger.style.cursor = "hand";\r
- if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )\r
- this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map\r
-}\r
-\r
-CTrigger.prototype.AddTargetID = function( strTargetID )\r
-{// add one target ID string to the objStrTarget\r
- if( typeof(strTargetID) != "string" )\r
- return ;\r
- if( typeof(this.objStrTarget[strTargetID]) != "string" )\r
- this.objStrTarget[strTargetID] = strTargetID;\r
-}\r
-\r
-CTrigger.prototype.OnTriggerClick = function()\r
-{// to activate all asociated target\r
- var strEventType = ( (this.nCounter++)% 2 == 0 ) ? \r
- "bssctrigger1" : "bssctrigger2";\r
- \r
- // to enumerate associative target element's ID string\r
- for( var strTargetID in this.objStrTarget ) \r
- CEngine.SendEventToOneTarget( strTargetID, strEventType );\r
-}\r
-//End the definition of class CTrigger\r
-\r
-//Begin the definition of class CTarget\r
-function CTarget( TargetElement )\r
-{\r
- // object : the target element. Never be null.\r
- this.eleTarget = TargetElement;\r
- this.objManager = new Object(); // object: the event manager\r
-} \r
-\r
-CTarget.nPageClickCounter = 0;// static class property.\r
-\r
-CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )\r
-{// return the action agency ( effect )object's refernece \r
- switch( str_action_type )\r
- {\r
- case "show":return new CAgencyShow( this.eleTarget, true ) ;\r
- case "hide":return new CAgencyShow( this.eleTarget, false ) ;\r
-\r
- case "flyin" : \r
- return new CAgencyFly(this.eleTarget, action_setting, true);\r
- case "flyout" : \r
- return new CAgencyFly(this.eleTarget, action_setting, false);\r
- case "spiralin" : \r
- return new CAgencySpiral(this.eleTarget, action_setting, true);\r
- case "spiralout" : \r
- return new CAgencySpiral(this.eleTarget, action_setting, false);\r
- case "zoomin" :\r
- return new CAgencyZoom(this.eleTarget, action_setting, true);\r
- case "zoomout" : \r
- return new CAgencyZoom(this.eleTarget, action_setting, false);\r
- case "elastic" : \r
- return new CAgencyElastic(this.eleTarget, action_setting);\r
- \r
- case "fadein" : \r
- return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
- case "fadeout" :\r
- return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
- case "rockrollstatic" :\r
- case "rockroll" :\r
- return (gbBsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
- \r
- case "glow":\r
- return (gbBsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
- case "dropshadow":\r
- return (gbBsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
- case "transition" :\r
- return (gbBsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
- case "blur" :\r
- return (gbBsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
-\r
- case "fliph" : // all these 4 do NOT need any parameters\r
- case "flipv" :\r
- case "invert":\r
- case "gray" :\r
- return (gbBsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
- \r
- case "fontchange": // the effects below change the style on the fly, so won't work in Navigator\r
- return (gbBsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
- case "boderchange": \r
- case "stylechange":\r
- return (gbBsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
-\r
- default: return null;\r
- }\r
-}\r
-\r
-CTarget.prototype.SetEventManager = function( \r
- one_event_type,str_action_type,action_setting,event_additional)\r
-{// to set the event manager with specified action \r
- if( typeof( one_event_type ) != "string" || \r
- typeof( str_action_type ) != "string"||\r
- typeof( action_setting ) != "string" )\r
- return false;\r
- if( typeof(this.objManager[one_event_type]) == "undefined" )\r
- {\r
- this.objManager[one_event_type] = new Object();\r
- this.objManager[one_event_type].length = 0;\r
- }\r
- \r
- var eventAgency = this.GetAgencyObject(str_action_type,action_setting);\r
- if( eventAgency != null )\r
- {\r
- var ct = this.objManager[one_event_type].length ++;\r
- this.objManager[one_event_type][ct] = eventAgency;\r
- \r
- if( one_event_type == "bsscpageclick" )\r
- {// to deal with the "number of pageclick" stuff\r
- if( typeof(event_additional) == "number" )\r
- this.objManager[one_event_type][ct].nPageClick = event_additional;\r
- else // set the default number \r
- this.objManager[one_event_type][ct].nPageClick = 1;\r
- \r
- if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||\r
- (this.objManager[one_event_type][ct].nPageClick < \r
- this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )\r
- this.objManager.nMinPageClickIndex = ct;\r
- }\r
- \r
- //hide the object blindly,SetState function will take care of the final correct state\r
- if( ((one_event_type == "bsscpageclick") && \r
- (this.objManager[one_event_type][ct].nPageClick == 1)) ||\r
- one_event_type == "bsscpageload" ||\r
- one_event_type == "bssctrigger1" )\r
- CCSSP.ShowObject( this.eleTarget, false );\r
- \r
- if( one_event_type == "bssctrigger1" || one_event_type == "bssctrigger2" )\r
- if( typeof( this.strTriggerEvent ) == "undefined" )\r
- this.strTriggerEvent = ( one_event_type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1";\r
- \r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-CTarget.prototype.OnEvent = function( strBsscEvent )\r
-{// response to the event ( bssc format )\r
- if( typeof(this.objManager[strBsscEvent]) == "object" )\r
- { // to get the event agency from the event manager\r
- var eventAgency = this.objManager[strBsscEvent];\r
- for( var i = 0; i < eventAgency.length; i++ )\r
- {\r
- if( strBsscEvent == "bsscpageclick" && \r
- eventAgency[i].nPageClick != CTarget.nPageClickCounter )\r
- continue;\r
- else if( strBsscEvent == "bsschover" && event.type == "mouseout" )\r
- eventAgency[i].EndEffect();\r
- else // to invoke the unified function in effect object \r
- eventAgency[i].UpdateEffect(); \r
- }\r
- }\r
-}\r
-\r
-CTarget.prototype.SetState = function( strBsscEvent )\r
-{\r
- if( typeof(this.objManager[strBsscEvent]) != "object" )\r
- return false;\r
-\r
- // to get the event agency from the event manager\r
- var eventAgency = this.objManager[strBsscEvent];\r
- \r
- if( strBsscEvent == "bsscpageclick" )\r
- {// we only set the initial state for the minium number of pageclick \r
- eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();\r
- return true;\r
- }\r
- else\r
- {\r
- for( var i = 0; i < eventAgency.length; i++ )\r
- eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object \r
- if( i > 0 )\r
- return true;\r
- else\r
- return false;\r
- }\r
-}\r
-//End the definition of class CTarget\r
-\r
-//Begin the definition of CEngine class\r
-function CEngine(){}// all properities are going be "class" properities\r
-\r
-// object : as associative array of trigger objects\r
-CEngine.objTrigger = new Object();\r
-// object : as associative array of target objects \r
-CEngine.objTarget = new Object(); \r
-\r
-// Array : each element is a CAgencyXXX animation object\r
-CEngine.arrAnimation = new Array();\r
-CEngine.PerformAnimation = function( nIndex )\r
-{// animation : update effects function\r
- CEngine.arrAnimation[nIndex].UpdateEffect();\r
-}\r
-\r
-CEngine.AddOneTrigger = function(TriggerID,TriggerElement)\r
-{// add one Trigger object into the trigger array\r
- if( typeof(TriggerID) != "string" || TriggerElement == null ||\r
- typeof(TriggerElement) != "object" )\r
- return;\r
- if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )\r
- CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);\r
-}\r
- \r
-CEngine.AddOneTarget = function(TargetID, TargetElement)\r
-{// add one Target object into the target array\r
- if( typeof(TargetID) != "string" || TargetElement == null ||\r
- typeof(TargetElement) != "object" )\r
- return;\r
- if( typeof(CEngine.objTarget[TargetID]) != "object" )\r
- CEngine.objTarget[TargetID] = new CTarget( TargetElement );\r
-}\r
-\r
-CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )\r
-{// to activate one target object\r
- if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
- {\r
- if( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )\r
- {//now, the "bssctrigger1" and "bssctrigger2" work like a toggle\r
- if( strBsscEvent == CEngine.objTarget[strTargetID].strTriggerEvent )\r
- strBsscEvent = (strBsscEvent == "bssctrigger1") ? "bssctrigger2" : "bssctrigger1";\r
- CEngine.objTarget[strTargetID].strTriggerEvent = strBsscEvent;\r
- }\r
- CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );\r
- }\r
-}\r
-\r
-CEngine.SendEventToAllTarget = function( strBsscEvent )\r
-{ //to activate all target associative to the BSSC event\r
- for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
- CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );\r
-}\r
-\r
-CEngine.SetOneTargetInitialState = function( strTargetID )\r
-{// only invoked after ALL effects for the target have been set\r
- if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
- {// to get target object\r
- var objTarget = CEngine.objTarget[strTargetID];\r
- if( objTarget.SetState( "bsscpageload" ) == false )\r
- {\r
- objTarget.SetState( "bsscpageclick" );\r
- objTarget.SetState( "bssctrigger1" );\r
- }\r
- }\r
-}\r
-\r
-CEngine.AdjustPageClickCounter = function()\r
-{\r
- var nAdjustedClickCounter = CTarget.nPageClickCounter;\r
- var bAdjusted = false;\r
- for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
- {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter\r
- var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;\r
- if( objEventPageClick != null )\r
- {\r
- for( var i = 0; i < objEventPageClick.length; i++ )\r
- {\r
- var nOtherPageClick = objEventPageClick[i].nPageClick;\r
- if( nOtherPageClick == CTarget.nPageClickCounter )\r
- return;\r
- if( nOtherPageClick > CTarget.nPageClickCounter )\r
- {\r
- if( !bAdjusted )\r
- {\r
- nAdjustedClickCounter = nOtherPageClick;\r
- bAdjusted = true;\r
- }\r
- else if( nOtherPageClick < nAdjustedClickCounter )\r
- nAdjustedClickCounter = nOtherPageClick;\r
- }\r
- }\r
- }\r
- }\r
- CTarget.nPageClickCounter = nAdjustedClickCounter;\r
-}\r
-\r
-CEngine.OnPageLoad = function()\r
-{ \r
- // first, to set all target's initial state\r
- for( var strTargetID in CEngine.objTarget )\r
- CEngine.SetOneTargetInitialState( strTargetID );\r
- \r
- // to invoke all target's onpageload handler\r
- CEngine.SendEventToAllTarget( "bsscpageload" );\r
-}\r
-\r
-CEngine.OnPageClick = function()\r
-{ // to invoke all target's onpageclick handler\r
- var src = CCSSP.GetEventElement( arguments[0] );\r
- if( src == null )\r
- return;\r
- \r
- var objClickedTrigger = null;\r
- for( var strTriggerID in CEngine.objTrigger )\r
- { // to detect which trigger is clicked\r
- if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )\r
- {\r
- objClickedTrigger = CEngine.objTrigger[strTriggerID];\r
- break;\r
- }\r
- }\r
- \r
- if( objClickedTrigger != null) // the clicked trigger found\r
- objClickedTrigger.OnTriggerClick();\r
- else // no trigger is clicked\r
- { // to send PageClick event to all target\r
- CTarget.nPageClickCounter++;\r
- CEngine.AdjustPageClickCounter();\r
- CEngine.SendEventToAllTarget( "bsscpageclick" );\r
- }\r
-} \r
-\r
-CEngine.OnMouseOver = function()\r
-{ // to invoke all target's onpageload handler\r
- var src = CCSSP.GetEventElement( arguments[0] );\r
- if( src == null )\r
- return;\r
- \r
- var strHoveredTargetID = null;\r
- for( var strTargetID in CEngine.objTarget )\r
- { // to detect which Target is hovering on\r
- if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )\r
- {\r
- strHoveredTargetID = strTargetID;\r
- break;\r
- }\r
- }\r
- \r
- if( strHoveredTargetID != null ) // the hovered target found\r
- CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );\r
-}\r
-\r
-CEngine.BuildTargetObject = function(target_ID,event_type,action_type,\r
- action_setting, event_additional)\r
-{// to build target object \r
- // to get the target object\r
- if( typeof( CEngine.objTarget[target_ID] ) != "object" )\r
- return false;// the engine's AddOneTarget function might have failed.\r
- var TargetObject = CEngine.objTarget[target_ID];\r
- \r
- // to prepare the parameters for the event manager\r
- var arrEvent = event_type.split("|"); // to split the combined event_type string\r
- var arrAction = action_type.split("|");//to split the combined action_type string\r
- for( var trim = 0; trim < arrEvent.length; trim++ )\r
- arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);\r
- \r
- for( trim = 0; trim < arrAction.length; trim++ )\r
- arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);\r
- \r
- var arrSetting = new Array(); \r
- if( typeof(action_setting) == "string" )\r
- arrSetting = action_setting.split("|");// to split the combined action_setting string\r
- // to calibrate the arrays\r
- for( var i = arrSetting.length; i < arrAction.length; i++ )\r
- {\r
- if( typeof(arrSetting[i]) != "string" )\r
- arrSetting[i] = "";\r
- } \r
-\r
- // to prepare for dealing with the absolute posioning element\r
- TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );\r
- TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );\r
-\r
- if( arrEvent.length > 1 )\r
- {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"\r
- if( arrAction.length != 2 )\r
- return false; // if event is combined, there must be 2 actions\r
- for( i = 0 ; i < 2; i++ )\r
- {\r
- if( TargetObject.SetEventManager(arrEvent[i], arrAction[i], \r
- arrSetting[i], event_additional) == false )\r
- return false; // the event manager has not been set up\r
- }\r
- }\r
- else // the event_type string is not combined\r
- {\r
- for( i = 0 ; i < arrAction.length; i++ )\r
- {\r
- TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);\r
- // to validate the event manager\r
- if( typeof(TargetObject.objManager[event_type]) != "object" ||\r
- typeof(TargetObject.objManager[event_type][i]) != "object" )\r
- return false; // the event manager has not been set up\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-CEngine.BuildTriggerObject = function(trigger_ID, target_ID)\r
-{// to build the trigger object\r
- var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string\r
- for( var i = 0; i < arrTrigger.length; i ++ )\r
- {// to get the trigger element then add it to the trigger list\r
- arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );\r
- var eleTrigger = CCSSP.GetObject( arrTrigger[i] );\r
- if( eleTrigger == null )\r
- continue; // the trigger_ID string in the HTML code maybe wrong\r
- CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );\r
-\r
- // to get the target object\r
- if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )\r
- continue;// the engine's AddOneTarget function might have failed.\r
- CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );\r
- }\r
-}\r
-//End the definition of CEngine class\r
-\r
-/// Section End - CCSSP DHTM 1 (JavaScript 1.2)\r
-\r
-/// Section Begin - CCSSP DHTM 2 (JavaScript 1.2)\r
-\r
-//Begin the definition of CAgencyXXXX classes\r
-\r
-//Begin of the CAgencyShow definition\r
-function CAgencyShow( element, bIsShow )\r
-{\r
- this.ele = element;\r
- this.bIsShow = bIsShow;\r
-}\r
-\r
-CAgencyShow.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject( this.ele, !this.bIsShow );\r
-}\r
-\r
-CAgencyShow.prototype.UpdateEffect = function()\r
-{\r
- CCSSP.ShowObject( this.ele, this.bIsShow );\r
-}\r
-\r
-CAgencyShow.prototype.EndEffect = function()\r
-{\r
- CCSSP.ShowObject( this.ele, !this.bIsShow );\r
-}\r
-// End of the CAgencyShow definition\r
-\r
-// Begin of CAgencyFly definition\r
-function CAgencyFly( element, settings, bIsIn )\r
-{\r
- this.ele = element;\r
- this.bIsIn = bIsIn;\r
- this.duration = 1000; // default\r
- this.direction = "right";\r
-\r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
- case "direction" : this.direction = arrOneSet[1]; break;\r
- }\r
- }\r
- \r
- if( gbBsIE5 && this.ele.style.position != "absolute" )\r
- this.ele.style.position = "relative";\r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyFly.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencyFly.prototype.UpdateEffect = function()\r
-{\r
- if( this.timer == null )\r
- this.ResetParameters();\r
-\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- this.EndEffect();\r
- else\r
- {\r
- var newX = this.startX*(1.0-percent) + this.finalX*percent;\r
- var newY = this.startY*(1.0-percent) + this.finalY*percent;\r
- CCSSP.MoveObjectTo(this.ele, newX, newY);\r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
- }\r
-}\r
-\r
-CAgencyFly.prototype.EndEffect = function()\r
-{\r
- clearInterval( this.timer );\r
- this.timer = null;\r
-\r
- if( this.bIsIn ) // FlyIn\r
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
- else // FlyOut\r
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
- CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencyFly.prototype.ResetParameters = function()\r
-{\r
- this.PrepareEffect();\r
- CCSSP.ShowObject(this.ele, true );\r
-\r
- this.startX = 0;\r
- this.startY = 0;\r
- this.finalX = 0;\r
- this.finalY = 0; \r
- \r
- var offsetLeft = CCSSP.GetObjectWindowLeft(this.ele) + this.ele.offsetWidth;\r
- var offsetTop = CCSSP.GetObjectWindowTop(this.ele) + this.ele.offsetHeight;\r
- var offsetRight = CCSSP.GetWindowRight();\r
- var offsetBottom = CCSSP.GetWindowBottom();\r
-\r
- if( this.bIsIn )\r
- { // FlyIn\r
- this.finalX = this.ele.ABSX;\r
- this.finalY = this.ele.ABSY;\r
-\r
- switch( this.direction )\r
- {\r
- case "right": this.startX = offsetRight; this.startY = this.finalY; break;\r
- case "left": this.startX = -offsetLeft; this.startY = this.finalY; break;\r
- case "down": this.startY = offsetBottom; this.startX = this.finalX; break;\r
- case "up": this.startY = -offsetTop; this.startX = this.finalX; break;\r
- case "downright":\r
- this.startX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
- this.startY = this.startX; break;\r
- case "upright":\r
- this.startX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
- this.startY = -this.startX; break;\r
- case "upleft":\r
- this.startX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
- this.startY = this.startX; break;\r
- case "downleft":\r
- this.startX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
- this.startY = -this.startX; break;\r
- }\r
- }\r
- else\r
- { // FlyOut\r
- this.startX = this.ele.ABSX;\r
- this.startY = this.ele.ABSY;\r
-\r
- switch( this.direction )\r
- {\r
- case "right": this.finalX = offsetRight; this.finalY = this.startY; break;\r
- case "left": this.finalX = -offsetLeft; this.finalY = this.startY; break;\r
- case "down": this.finalY = offsetBottom; this.finalX = this.startX; break;\r
- case "up": this.finalY = -offsetTop; this.finalX = this.startX; break;\r
- case "downright":\r
- this.finalX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
- this.finalY = this.finalX; break;\r
- case "upright":\r
- this.finalX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
- this.finalY = -this.finalX; break;\r
- case "upleft":\r
- this.finalX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
- this.finalY = this.finalX; break;\r
- case "downleft":\r
- this.finalX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
- this.finalY = -this.finalX; break;\r
- }\r
- }\r
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
- this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyFly definition\r
-\r
-// Begin of CAgencySpiral\r
-function CAgencySpiral( element, settings, bIsIn )\r
-{\r
- this.ele = element;\r
- this.bIsIn = bIsIn;\r
- this.duration = 1000; // default\r
-\r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
- }\r
- }\r
-\r
- if( gbBsIE5 && this.ele.style.position != "absolute" )\r
- this.ele.style.position = "relative";\r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencySpiral.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencySpiral.prototype.UpdateEffect = function()\r
-{\r
- if( this.timer == null )\r
- this.ResetParameters();\r
-\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- this.EndEffect();\r
- else\r
- {\r
- var rf = (this.bIsIn)? (1.0 - percent) : percent; \r
- var t = (1.0-rf) * 4.0 * Math.PI\r
- var rxP = (this.bIsIn)? this.startX : this.finalX; \r
- var ryP = (this.bIsIn)? this.startY : this.finalY; \r
- var rx = (Math.abs(rxP) < 200) ? Math.abs(rxP) : 200;\r
- var ry = (Math.abs(ryP) < 200) ? Math.abs(ryP) : 200;\r
-\r
- var newX = Math.ceil(-rf*Math.cos(t)*rx) + this.ele.ABSX;\r
- var newY = Math.ceil(-rf*Math.sin(t)*ry) + this.ele.ABSY;\r
- CCSSP.MoveObjectTo(this.ele, newX, newY);\r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
- }\r
-}\r
-\r
-CAgencySpiral.prototype.EndEffect = function()\r
-{\r
- clearInterval( this.timer );\r
- this.timer = null;\r
- \r
- if( this.bIsIn ) // In\r
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
- else // Out\r
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
- CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencySpiral.prototype.ResetParameters = function()\r
-{\r
- this.PrepareEffect();\r
- CCSSP.ShowObject(this.ele, true );\r
- this.startX = (this.bIsIn)? CCSSP.GetWindowRight() : this.ele.ABSX;\r
- this.startY = (this.bIsIn)? CCSSP.GetWindowBottom() : this.ele.ABSY;\r
- this.finalX = (this.bIsIn)? this.ele.ABSX : CCSSP.GetWindowRight();\r
- this.finalY = (this.bIsIn)? this.ele.ABSY : CCSSP.GetWindowBottom(); \r
- \r
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
- this.startTime = (new Date()).getTime();\r
-}\r
-// End of CAgencySpiral\r
-\r
-// Begin of CAgencyElastic\r
-function CAgencyElastic( element, settings)\r
-{\r
- this.ele = element;\r
- this.duration = 1000; // default\r
- this.direction = "right";\r
-\r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
- case "direction" : this.direction = arrOneSet[1]; break;\r
- }\r
- }\r
- \r
- if( gbBsIE5 && this.ele.style.position != "absolute" )\r
- this.ele.style.position = "relative";\r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyElastic.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject(this.ele, false );\r
-}\r
-\r
-CAgencyElastic.prototype.UpdateEffect = function()\r
-{\r
- if( this.timer == null )\r
- this.ResetParameters();\r
-\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- this.EndEffect();\r
- else\r
- {\r
- var newX = this.startX;\r
- var newY = this.startY;\r
- var rf = Math.exp(-percent*3);\r
- var t = percent * 1.5 * Math.PI\r
- var rx = (Math.abs(this.startX) > Math.abs(this.startY)) ? this.startX : this.startY;\r
- switch (this.direction )\r
- {\r
- case "left": \r
- case "right" : newX = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
- case "up": \r
- case "down" : newY = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
- }\r
- CCSSP.MoveObjectTo(this.ele, newX, newY);\r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
- }\r
-}\r
-\r
-CAgencyElastic.prototype.EndEffect = function()\r
-{\r
- CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
- clearInterval( this.timer );\r
- this.timer = null;\r
-}\r
-\r
-CAgencyElastic.prototype.ResetParameters = function()\r
-{\r
- CCSSP.ShowObject(this.ele, true );\r
- this.startX = this.ele.ABSX;\r
- this.finalX = this.ele.ABSX;\r
- this.startY = this.ele.ABSY;\r
- this.finalY = this.ele.ABSY;\r
- \r
- switch (this.direction)\r
- { \r
- case "left": this.startX = -this.ele.offsetWidth; break;\r
- case "right": this.startX = this.ele.offsetWidth; break;\r
- case "up": this.startY = -this.ele.offsetHeight;break;\r
- case "down": this.startY = this.ele.offsetHeight; break;\r
- }\r
- CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
- this.startTime = (new Date()).getTime();\r
-}\r
-// End of CAgencyElastic\r
-\r
-// Begin of CAgencyZoom\r
-function CAgencyZoom( element, settings, bIsIn)\r
-{\r
- this.ele = element;\r
- this.duration = 1000; // default\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
- }\r
- }\r
-\r
- this.bIsIn = bIsIn;\r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyZoom.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject(this.ele, false);\r
-}\r
-\r
-CAgencyZoom.prototype.UpdateEffect = function()\r
-{\r
- if( this.timer == null )\r
- this.ResetParameters();\r
-\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- this.EndEffect();\r
- else\r
- {\r
- var nFactorIn = Math.ceil(50+50*percent);\r
- var nFactorOut = Math.ceil(100+200*(1-percent));\r
- var AlterFontsize = ((this.bIsIn)? nFactorIn : nFactorOut) + "%";\r
- var AlterFactor = ((this.bIsIn)? nFactorIn : nFactorOut) / 100;\r
- \r
- this.UpdateEffectAllChildren(this.ele, AlterFontsize, AlterFactor);\r
- for(var index = 0; index < this.ele.all.length; index++)\r
- this.UpdateEffectAllChildren(this.ele.all[index], AlterFontsize, AlterFactor);\r
- \r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
- }\r
-}\r
-\r
-CAgencyZoom.prototype.UpdateEffectAllChildren = function(child, FontSize, Factor)\r
-{\r
- if( CCSSP.IsTextTag(child) )\r
- child.style.fontSize = FontSize;\r
- else\r
- {\r
- if( typeof(child.orgWidth) == "number" )\r
- child.style.width = Factor * child.orgWidth;\r
- if( typeof(child.orgHeight) == "number" )\r
- child.style.height = Factor * child.orgHeight;\r
- }\r
-}\r
-\r
-CAgencyZoom.prototype.EndEffect = function()\r
-{\r
- this.EndEffectAllChildren(this.ele);\r
- for(var index = 0; index < this.ele.all.length; index++)\r
- this.EndEffectAllChildren(this.ele.all[index]);\r
- \r
- clearInterval( this.timer );\r
- this.timer = null;\r
-}\r
-\r
-CAgencyZoom.prototype.EndEffectAllChildren = function( child )\r
-{ \r
- if( CCSSP.IsTextTag(child) )\r
- child.style.fontSize = child.orgFontSize;\r
- else\r
- {\r
- if( typeof(child.intactWidth) != "undefined" )\r
- {\r
- child.width = child.intactWidth;\r
- child.height = child.intactHeight;\r
- }\r
- else if( typeof(child.style.intactPixelWidth) != "undefined" )\r
- {\r
- child.style.pixelWidth = child.style.intactPixelWidth;\r
- child.style.pixelHeight = child.style.intactPixelHeight;\r
- }\r
- }\r
-}\r
-\r
-CAgencyZoom.prototype.ResetParameters = function()\r
-{\r
- this.PrepareEffect();\r
- this.ResetParametersAllChildren( this.ele );\r
- for(var index = 0; index < this.ele.all.length; index++)\r
- this.ResetParametersAllChildren(this.ele.all[index]);\r
- \r
- this.startTime = (new Date()).getTime();\r
-}\r
-\r
-CAgencyZoom.prototype.ResetParametersAllChildren = function( child )\r
-{\r
- CCSSP.ShowObject(child, true );\r
- if( (child.tagName == "DIV") && (getParentNode(child).tagName == "TD") )\r
- child.width = "100%";// if the div is inside a cell of table, we need the this hack\r
- \r
- if( CCSSP.IsTextTag(child) )\r
- child.orgFontSize = child.style.fontSize;\r
- else\r
- {\r
- if( child.width > "" || child.height > "" )\r
- {\r
- child.orgWidth = child.intactWidth = child.width;\r
- child.orgHeight = child.intactHeight = child.height;\r
- }\r
- else if( ( typeof(child.orgWidth) != "number" ) && (typeof(child.orgHeight) != "number") )\r
- {\r
- child.orgWidth = child.style.intactPixelWidth = child.style.pixelWidth;\r
- child.orgHeight = child.style.intactPixelHeight = child.style.pixelHeight;\r
- }\r
- }\r
-}\r
-// End of CAgencyZoom\r
-\r
-//// the following effects will use IE's exclusive "filter" function ////\r
-// Begin of CAgencyAlpha definition\r
-function CAgencyAlpha( element, settings, bIsIn )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
- this.bIsIn = bIsIn;\r
-\r
- // to set the default value\r
- this.startOpacity = (this.bIsIn) ? 0 : 100;\r
- this.endOpacity = (this.bIsIn) ? 100 : 0;\r
- \r
- this.duration = 1000; // default\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
- }\r
- }\r
- \r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyAlpha.prototype.PrepareEffect = function()\r
-{// to set the visual filter function\r
- // the visual filter ONLY work when set by "Width and Height" or\r
- // absolute position for DIV, SPAN and normal tag ( such as p )\r
- // but, "absolute" cause the following elements overlap, so:\r
- CCSSP.PrepareFilter( this.ele );\r
- CCSSP.ShowObject(this.ele, !this.bIsIn );\r
-}\r
-\r
-CAgencyAlpha.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- if( this.timer == null )\r
- this.ResetParameters();\r
- if( typeof(this.ele.filters.alpha) != "object" )\r
- {\r
- this.EndEffect();\r
- return;\r
- }\r
-\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- this.EndEffect();\r
- else if( typeof(this.ele.filters.alpha) == "object" )\r
- {\r
- this.ele.filters.alpha.opacity = this.startOpacity*(1.0-percent) + this.endOpacity*percent;\r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
- }\r
-}\r
-\r
-CAgencyAlpha.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- clearInterval( this.timer );\r
- this.timer = null;\r
- this.ele.style.filter = "";\r
- CCSSP.ShowObject(this.ele, this.bIsIn );\r
-}\r
-\r
-CAgencyAlpha.prototype.ResetParameters = function()\r
-{\r
- this.PrepareEffect();\r
- CCSSP.ShowObject(this.ele, true );\r
- this.ele.style.filter = "alpha(opacity=" + this.startOpacity + ")";\r
- this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyAlpha definition\r
-\r
-// Begin of CAgencyWave definition\r
-function CAgencyWave( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- this.duration = 0; // default\r
- this.strength = 10;\r
- this.freq = 1;\r
- this.lightstrength = 1;\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "duration" : this.duration = 100000/arrOneSet[1]; break;\r
- case "strength" : this.strength = arrOneSet[1]; break;\r
- case "freq" : this.freq = arrOneSet[1]; break;\r
- case "lightstrength" : this.lightstrength = arrOneSet[1]; break;\r
- }\r
- }\r
-\r
- this.timer = null;\r
- this.aniIndex = CEngine.arrAnimation.length;\r
- CEngine.arrAnimation[this.aniIndex] = this;\r
-}\r
-\r
-CAgencyWave.prototype.PrepareEffect = function()\r
-{// to set the visual filter function\r
- CCSSP.PrepareFilter(this.ele);\r
-\r
- CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyWave.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- if( this.timer == null )\r
- this.ResetParameters();\r
- if( typeof(this.ele.filters.wave) != "object" )\r
- {\r
- this.EndEffect();\r
- return;\r
- }\r
-\r
- if( this.duration > 0 )\r
- {\r
- var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
- if( percent >= 1.0 )\r
- {\r
- this.EndEffect();\r
- return;\r
- }\r
- }\r
- \r
- this.ele.filters.wave.phase += 5;\r
- this.ele.filters.wave.phase %= 100;\r
- if( this.timer == null )\r
- this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 50 );\r
-}\r
-\r
-CAgencyWave.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- this.ele.style.filter = "";\r
- clearInterval( this.timer );\r
- this.timer = null;\r
-}\r
-\r
-CAgencyWave.prototype.ResetParameters = function()\r
-{\r
- this.PrepareEffect();\r
- this.ele.style.filter = "wave(strength=" + this.strength + ",freq=" + \r
- this.freq +", lightstrength=" + this.lightstrength +",phase=0);";\r
- this.startTime = (new Date()).getTime();\r
-}\r
-// End of the CAgencyWave definition\r
-\r
-// Begin of CAgencyGlow definition\r
-function CAgencyGlow( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- // to set the default value\r
- this.glowColor = "green";\r
- this.glowStrength = "3";\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "color" : this.glowColor = arrOneSet[1]; break;\r
- case "strength" : this.glowStrength = arrOneSet[1]; break;\r
- }\r
- }\r
-}\r
-\r
-CAgencyGlow.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.PrepareFilter(this.ele);\r
- CCSSP.ShowObject(this.ele, true );\r
- if( this.ele.style.backgroundColor != "" )\r
- {//style.backgroundColor somehow stop the visual filter\r
- this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
- this.ele.style.backgroundColor = "";\r
- }\r
-}\r
-\r
-CAgencyGlow.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- this.PrepareEffect();\r
- this.ele.style.filter = "glow(Color=" + this.glowColor + ", Strength=" + \r
- this.glowStrength + ", enabled=true" +")";\r
-}\r
-\r
-CAgencyGlow.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- this.ele.style.filter = "";\r
- if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
- this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
-}\r
-// End of the CAgencyGlow definition\r
-\r
-// Begin of CAgencyDropShadow definition\r
-function CAgencyDropShadow( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- // to set the default value\r
- this.shadowColor = "black"; \r
- this.shadowOffx = "1";\r
- this.shadowOffy = "1";\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "color" : this.shadowColor = arrOneSet[1]; break;\r
- case "offx" : this.shadowOffx = arrOneSet[1]; break;\r
- case "offy" : this.shadowOffy = arrOneSet[1]; break;\r
- }\r
- }\r
-}\r
-\r
-CAgencyDropShadow.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.PrepareFilter(this.ele);\r
- CCSSP.ShowObject(this.ele, true );\r
- \r
- if( this.ele.style.backgroundColor != "" )\r
- {//style.backgroundColor somehow stop the visual filter\r
- this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
- this.ele.style.backgroundColor = "";\r
- }\r
-}\r
-\r
-CAgencyDropShadow.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- this.PrepareEffect();\r
- this.ele.style.filter = "dropshadow(color=" + this.shadowColor + ", offx=" + \r
- this.shadowOffx + ", offy=" + this.shadowOffy + ")";\r
-}\r
-\r
-CAgencyDropShadow.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- this.ele.style.filter = "";\r
- if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
- this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
-}\r
-// End of the CAgencyDropShadow definition\r
-\r
-// Begin of CAgencyRevealTrans definition\r
-function CAgencyRevealTrans( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- // to set the default value\r
- this.duration = 1.0; //The value is specified in seconds.milliseconds format (0.0000).\r
- this.transition = 0;\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "type" : this.transition = arrOneSet[1]; break;\r
- case "duration" : this.duration = 100/arrOneSet[1]; break;\r
- }\r
- }\r
-}\r
-\r
-CAgencyRevealTrans.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.PrepareFilter(this.ele);\r
- CCSSP.ShowObject( this.ele, false);\r
-}\r
-\r
-CAgencyRevealTrans.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
- {\r
- if( this.ele.filters.RevealTrans.status == 2 )\r
- this.ele.filters.RevealTrans.stop(); \r
- }\r
-\r
- this.PrepareEffect();\r
- \r
- this.ele.style.filter = "RevealTrans(duration=" + this.duration + \r
- ", transition=" + this.transition + ")";\r
- \r
- if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
- {\r
- this.ele.filters.RevealTrans.apply();\r
- CCSSP.ShowObject( this.ele, true);\r
- this.ele.filters.RevealTrans.play(); \r
- }\r
- else\r
- CCSSP.ShowObject( this.ele, true);\r
-}\r
-\r
-CAgencyRevealTrans.prototype.EndEffect = function()\r
-{\r
- if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
- this.ele.filters.RevealTrans.stop(); \r
- this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyRevealTrans definition\r
-\r
-// Begin of CAgencyBlur definition\r
-function CAgencyBlur( element, settings )\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- // to set the default value\r
- this.strength = "5";\r
- this.direction = "90";\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "strength" : this.strength = arrOneSet[1]; break;\r
- case "direction" : this.direction = arrOneSet[1]; break;\r
- }\r
- }\r
-}\r
-\r
-CAgencyBlur.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.PrepareFilter(this.ele);\r
- CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyBlur.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- CCSSP.PrepareFilter(this.ele);\r
- this.ele.style.filter = "blur(strength=" + this.strength + \r
- ", direction=" + this.direction + ")";\r
-}\r
-\r
-CAgencyBlur.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyBlur definition\r
-\r
-// Begin of CAgencyChangeFilter definition\r
-function CAgencyChangeFilter( element, settings ) // flipH, flipV, invert, grey,\r
-{// because of "visual filter" style, this won't work in Navigator\r
- this.ele = element;\r
-\r
- // to set the default value\r
- this.filterFunction = settings;\r
-}\r
-\r
-CAgencyChangeFilter.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.PrepareFilter(this.ele);\r
- CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyChangeFilter.prototype.UpdateEffect = function()\r
-{// to set the visual filter function\r
- CCSSP.PrepareFilter(this.ele);\r
- this.ele.style.filter = this.filterFunction;\r
-}\r
-\r
-CAgencyChangeFilter.prototype.EndEffect = function()\r
-{// to remove the visual filter function\r
- this.ele.style.filter = "";\r
-}\r
-// End of the CAgencyChangeFilter definition\r
-\r
-// The effects below change the style on the fly, so they won't work in Navigator\r
-\r
-// Begin of CAgencyFontChange definition, \r
-function CAgencyFontChange( element, settings )\r
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
- this.ele = element;\r
- \r
- // to retrieve the original font style\r
- this.RetrieveOldFont( this.ele );\r
- \r
- // to set the default font to change\r
- this.newfontFamily = this.ele.oldFontFamily;\r
- this.newfColor = this.ele.oldColor;\r
- this.newtextDecoration = this.ele.oldTextDecoration;\r
- this.newfontWeight = this.ele.oldFontWeight;\r
- this.newfontStyle = this.ele.oldFontStyle;\r
- this.newfontSize = this.ele.oldFontSize;\r
- this.newBackgroundColor = this.ele.oldBackgroundColor;\r
- \r
- var arrAllSet = settings.split(",");\r
- for( var i = 0; i < arrAllSet.length; i ++ )\r
- {// to retrieve the setting\r
- arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
- var arrOneSet = arrAllSet[i].split("=");\r
- for( var j = 0; j < arrOneSet.length; j++ )\r
- arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
- switch( arrOneSet[0] )\r
- {\r
- case "font-family" : this.newfontFamily = arrOneSet[1]; break;\r
- case "color" : this.newfColor = arrOneSet[1]; break;\r
- case "underline" : this.newtextDecoration = (arrOneSet[1]=="on")? "underline" : "none"; break;\r
- case "bold" : this.newfontWeight = (arrOneSet[1]=="on")? "bold" : "normal"; break;\r
- case "italic" : this.newfontStyle = (arrOneSet[1]=="on")? "italic" : "normal"; break;\r
- case "size" : this.newfontSize = arrOneSet[1]; break;\r
- case "background-color" : this.newBackgroundColor = arrOneSet[1]; break;\r
- }\r
- }\r
-}\r
-\r
-CAgencyFontChange.prototype.RetrieveOldFont = function(objChild)\r
-{\r
- if( typeof(objChild.oldFontFamily) == "undefined" )\r
- objChild.oldFontFamily = objChild.style.fontFamily;\r
- if( typeof(objChild.oldColor) == "undefined" )\r
- objChild.oldColor = objChild.style.color;\r
- if( typeof(objChild.oldTextDecoration) == "undefined" )\r
- objChild.oldTextDecoration = objChild.style.textDecoration;\r
- if( typeof(objChild.oldFontWeight) == "undefined" )\r
- objChild.oldFontWeight = objChild.style.fontWeight;\r
- if( typeof(objChild.oldFontStyle) == "undefined" )\r
- objChild.oldFontStyle = objChild.style.fontStyle;\r
- if( typeof(objChild.oldFontSize) == "undefined" )\r
- objChild.oldFontSize = objChild.style.fontSize;\r
- if( typeof(objChild.oldBackgroundColor) == "undefined" )\r
- objChild.oldBackgroundColor = objChild.style.backgroundColor;\r
-}\r
-\r
-CAgencyFontChange.prototype.PrepareEffect = function()\r
-{\r
- // as for expanding text, the child is created after the constructor called\r
- for(var index = 0; index < this.ele.all.length; index++)\r
- this.RetrieveOldFont(this.ele.all[index]);\r
- CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyFontChange.prototype.UpdateEffect = function()\r
-{// to change the font\r
- this.PrepareEffect();\r
- this.UpdateEffectAllChildren( this.ele );\r
- for( var index = 0; index < this.ele.all.length; index++)\r
- this.UpdateEffectAllChildren(this.ele.all[index]);\r
-}\r
-\r
-CAgencyFontChange.prototype.UpdateEffectAllChildren = function(objChild)\r
-{\r
- objChild.style.fontFamily = this.newfontFamily;\r
- objChild.style.color = this.newfColor;\r
- objChild.style.textDecoration = this.newtextDecoration;\r
- objChild.style.fontWeight = this.newfontWeight;\r
- objChild.style.fontStyle = this.newfontStyle;\r
- objChild.style.fontSize = this.newfontSize;\r
- objChild.style.backgroundColor = this.newBackgroundColor;\r
-}\r
-\r
-CAgencyFontChange.prototype.EndEffect = function()\r
-{// to reinstate the original font style\r
- this.EndEffectAllChildren( this.ele );\r
- for( var index = 0; index < this.ele.all.length; index++)\r
- this.EndEffectAllChildren(this.ele.all[index]);\r
-}\r
-\r
-CAgencyFontChange.prototype.EndEffectAllChildren = function( objChild )\r
-{\r
- if( typeof(objChild.oldFontFamily) != "undefined" )\r
- objChild.style.fontFamily = objChild.oldFontFamily;\r
- if( typeof(objChild.oldColor) != "undefined" )\r
- objChild.style.color = objChild.oldColor;\r
- if( typeof(objChild.oldFontWeight) != "undefined" )\r
- objChild.style.fontWeight = objChild.oldFontWeight;\r
- if( typeof(objChild.oldFontStyle) != "undefined" )\r
- objChild.style.fontStyle = objChild.oldFontStyle;\r
- if( typeof(objChild.oldFontSize) != "undefined" )\r
- objChild.style.fontSize = objChild.oldFontSize;\r
- if( typeof(objChild.oldTextDecoration) != "undefined" )\r
- objChild.style.textDecoration = objChild.oldTextDecoration;\r
- if( typeof(objChild.oldBackgroundColor) != "undefined" )\r
- objChild.style.backgroundColor = objChild.oldBackgroundColor;\r
-}\r
-// End of the CAgencyFontChange definition\r
-\r
-// Begin of the CAgencyChangeStyle definition\r
-function CAgencyChangeStyle( element, settings )\r
-{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
- this.ele = element;\r
- \r
- // to retrieve the original style\r
- this.oldstyle = this.ele.style.cssText;\r
- \r
- // to set the default style\r
- this.newStyle = this.oldstyle;\r
- \r
- if( typeof(settings) == "string" && settings.length > 1 )\r
- this.newStyle = this.oldstyle + " " + settings;\r
-}\r
-\r
-CAgencyChangeStyle.prototype.PrepareEffect = function()\r
-{\r
- CCSSP.ShowObject(this.ele, true );\r
-}\r
-\r
-CAgencyChangeStyle.prototype.UpdateEffect = function()\r
-{// to change the style\r
- this.ele.style.cssText = this.newStyle;\r
-}\r
-\r
-CAgencyChangeStyle.prototype.EndEffect = function()\r
-{// to reinstate the original style\r
- this.ele.style.cssText = this.oldStyle;\r
-}\r
-// End of the CAgencyChangeStyle definition\r
-\r
-//End the definition of CAgencyXXXX classes\r
-\r
-//Begin to collaborate with other event handler settings \r
-CCSSP.RegisterEventHandler( window, "onload", "CEngine.OnPageLoad();BSSCOnLoad();kadovInitTriggersInHead();");\r
-CCSSP.RegisterEventHandler( document, "onclick", "CEngine.OnPageClick();BSSCOnClick();");\r
-CCSSP.RegisterEventHandler( document, "onmouseover", "CEngine.OnMouseOver();BSSCOnMouseOver();" );\r
-CCSSP.RegisterEventHandler( document, "onmouseout", "CEngine.OnMouseOver();BSSCOnMouseOut();" );\r
-CCSSP.RegisterEventHandler( window, "onunload", "BSSCOnUnload();");\r
-//End to collaborate with other event handler settings\r
-\r
-/// Section End - CCSSP DHTM 2 (JavaScript 1.2)\r
-\r
-//// Segment End -- (JavaScript 1.2)
\ No newline at end of file
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<!--(==============================================================)-->\r
-<!--(Document created with RoboEditor. )============================-->\r
-<!--(==============================================================)-->\r
-\r
-<head>\r
-\r
-<title>GEOM preferences</title>\r
-\r
-<!--(Meta)==========================================================-->\r
-\r
-<meta http-equiv=content-type content="text/html; charset=windows-1252">\r
-<meta name=topic-check-list content="Ran Smart Index">\r
-<meta name=generator content="RoboHELP by eHelp Corporation - www.ehelp.com">\r
-<meta name=generator-major-version content=0.1>\r
-<meta name=generator-minor-version content=1>\r
-<meta name=filetype content=kadov>\r
-<meta name=filetype-version content=1>\r
-<meta name=page-count content=1>\r
-<meta name=layout-height content=1052>\r
-<meta name=layout-width content=1059>\r
-\r
-\r
-<!--(Links)=========================================================-->\r
-\r
-<link rel=StyleSheet href=default.css>\r
-\r
-\r
-\r
-</head>\r
-\r
-<!--(Body)==========================================================-->\r
-\r
-\r
-<body>\r
-\r
-<h1>Geometry preferences</h1>\r
-\r
-<p>In the <span style="font-weight: bold;">Geometry</span> module you can \r
- set preferences for visualisation of geometrical figures which can be \r
- used in later sessions with this module. </p>\r
-\r
-<p> </p>\r
-\r
-<p style="font-family: 'Times New Roman', serif; margin-left: 40px;"><img \r
- src="pics/pref15.png"\r
- x-maintain-ratio=TRUE\r
- style="border: none;\r
- width: 752px;\r
- height: 588px;\r
- float: none;\r
- border-style: none;\r
- border-style: none;"\r
- width=752\r
- height=588\r
- border=0></p>\r
-\r
-<p style="font-family: 'Times New Roman', serif; margin-left: 40px;"> </p>\r
-\r
-<p style="font-family: 'Times New Roman', serif; margin-left: 40px;">For \r
- all color definitions click on the respective line to access to the <span \r
- style="font-weight: bold;"><a href="Select_Color_and_Font.htm">Select \r
- Color</a></span> dialog box. </p>\r
-\r
-<p> </p>\r
-\r
-<ul style="list-style: disc;"\r
- type=disc>\r
- \r
- <li class=kadov-p><p style="font-weight: bold; margin-left: 0px;">General</p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Default \r
- Display Mode - <span style="font-weight: normal;">allows to choose between</span> \r
- <span style="font-weight: normal;">wireframe or shading.</span></p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px;"><span style="font-weight: bold;">Default \r
- Shading Color</span> - allows to select default shading color. </p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px;"><span style="font-weight: bold;">Default \r
- Wireframe Color</span> - allows to select default wireframe color (to \r
- be applied to any lines not being free boundaries or isolated lines).</p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px;"><span style="font-weight: bold;">Color \r
- of free boundaries</span> - allows to select default color for free boundaries. \r
- </p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Color \r
- of edges, vectors and wires - <span style="font-weight: normal;">allows \r
- to select default color for edges, vectors and wires (isolated lines).</span></p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Color \r
- of points - <span style="font-weight: normal;">allows to select default \r
- color for vertices.</span></p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Color \r
- of isolines - <span style="font-weight: normal;">allows to select default \r
- color for isolines.</span></p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Step \r
- Value for Spin Boxes - <span style="font-weight: normal;">allows to define \r
- the increment of values set in spin boxes. </span><!--kadov_tag{{<spaces>}}--> <!--kadov_tag{{</spaces>}}--></p></li>\r
-</ul>\r
-\r
-<p style="margin-left: 40px; font-weight: bold;"> </p>\r
-\r
-<ul style="list-style: disc;"\r
- type=disc>\r
- \r
- <li class=kadov-p><p style="font-weight: bold; margin-left: 0px;">Marker \r
- of Points</p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Type \r
- <!--kadov_tag{{<spaces>}}--> <!--kadov_tag{{</spaces>}}-->- <span \r
- style="font-weight: normal;">allows to select the symbol for representation \r
- of points (cross, asterisk, etc.).</span></p></li>\r
- \r
- <li class=kadov-p><p style="margin-left: 40px; font-weight: bold;">Size<span \r
- style="font-weight: normal;"> - allows to define the size of the marker \r
- from 1 (smallest) to 7 (largest).</span></p></li>\r
-</ul>\r
-\r
-<p style="font-weight: bold; margin-left: 0px;"> </p>\r
-\r
-<p> </p>\r
-\r
-</body>\r
-\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var strDefaultTopic = "about:blank";\r
-var nWebhelpNavPaneMode = 1; //1: DHTML 2:Applet 3:PureHTML 4:Noframeset\r
-var bNoApplet = false;\r
-var strPaneDHTML = "whd_nvp10.htm"; //whd_nvp10.htm if tab enabled, whnframe.htm if tab disabled.\r
-var strPaneApplet = "whd_nvp20.htm";\r
-var strPaneList = "whgdata/whnvp30.htm";\r
-\r
-var strHTML = "";\r
-var strPane = "";\r
-var nViewFrameType = -1;\r
-\r
-function CMRServer()\r
-{\r
- this.m_cAgents = new Array;\r
-}\r
-var cMRServer = new CMRServer;\r
-\r
-//figure out which mode is the best\r
-if (!window.gAgent)\r
-{\r
- // low end browser, we don't even try to determine it.\r
- document.location = "whnjs.htm";\r
-}\r
-else\r
-{\r
- if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)\r
- document.location = "whnjs.htm";\r
- else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
- document.location = "whnjs.htm";\r
- else if (gbMac && gbIE4 && !gbIE5)\r
- document.location = "whnjs.htm";\r
- //figure out which mode is the best\r
- else \r
- {\r
- nViewFrameType=nWebhelpNavPaneMode;\r
- if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
- {\r
- var gbDHTML=(nWebhelpNavPaneMode==1);\r
- if (gbNav4) nViewFrameType = 2;\r
- if (gbNav4&&(gnVerMinor < 4.1)) nViewFrameType = 3;\r
- if (gbNav4&&(gnVerMinor == 4.6)) nViewFrameType = 3;\r
- if (gbIE4&&gbDHTML) nViewFrameType = 1;\r
- if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2) nViewFrameType = 3;\r
- if (gbNav6&&gbDHTML) nViewFrameType = 1;\r
- if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2) nViewFrameType = 3;\r
- if (gbMac) nViewFrameType = 3;\r
- if (gbOpera7&&nViewFrameType == 2) nViewFrameType = 3;\r
- if ((bNoApplet)&&(nViewFrameType == 2)) nViewFrameType = 3;\r
- }\r
- }\r
-}\r
-\r
-if (nViewFrameType!=-1)\r
-{\r
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
- //The colordepth of the 16 color on Windows is 1. \r
- if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
- {\r
- alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
- nViewFrameType = 3;\r
- }\r
-\r
- //figure out which one is navpane\r
- if (nViewFrameType == 1)\r
- strPane = strPaneDHTML;\r
- else if (nViewFrameType == 2)\r
- strPane = strPaneApplet;\r
- else \r
- strPane = strPaneList;\r
-\r
- var oParam = new Object();\r
- oParam.sTopic = "";\r
- var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);\r
- if (SendMessage(oMsg) && oParam.sTopic != "")\r
- strDefaultTopic = oParam.sTopic;\r
-\r
-\r
- if (nViewFrameType == 1)\r
- {\r
- //DHTML (iframe or xml based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";\r
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";\r
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
- }\r
- else if (nViewFrameType == 2)\r
- {\r
- //applet (xml based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";\r
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";\r
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
- }\r
- else if (nViewFrameType == 3)\r
- {\r
- //generic html (pure html based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\">";\r
- strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\" scrolling=\"no\"></frame>";\r
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";\r
- strHTML += "</frameset>";\r
- } \r
- else if (nViewFrameType == 4)\r
- {\r
- //no navipane at all\r
- strHTML += "<frameset id=\"whPfset\" border=\"0\" cols=\"100%,*\">";\r
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";\r
- strHTML += "</frameset>";\r
- }\r
-\r
- document.write(strHTML);\r
-\r
- RegisterListener2(window, WH_MSG_SHOWPANE);\r
- RegisterListener2(window, WH_MSG_HIDEPANE);\r
- RegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
- window.onunload = window_unload;\r
-}\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(window, WH_MSG_SHOWPANE);\r
- UnRegisterListener2(window, WH_MSG_HIDEPANE);\r
- UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId = oMsg.nMessageId;\r
- if (nMsgId == WH_MSG_SHOWPANE)\r
- {\r
- getElement("whPfset").cols = "260,*";\r
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");\r
- if (SendMessage(onMsg))\r
- {\r
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);\r
- SendMessage(onMsg);\r
- }\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_HIDEPANE)\r
- {\r
- getElement("whPfset").cols = "0,*";\r
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");\r
- SendMessage(onMsg);\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_ISPANEVISIBLE)\r
- {\r
- var n = parseInt(getElement("whPfset").cols);\r
- if (n > 0)\r
- {\r
- oMsg.oParam.bVisible = true;\r
- }\r
- return false;\r
- }\r
- return true;\r
-}\r
-//-->\r
-</script>\r
-<body>\r
-<noscript>\r
- <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>\r
-</noscript>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gCSHFileName = "whc_data.htm";\r
-var gCSHSuffixName1 = "_csh.html";\r
-var gCSHSuffixName2 = "_csh.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-gCSHFileName="cshdat_webhelp.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-var gasProj = new Array();\r
-gasProj[0] = _getPath(document.location.href);\r
-var gCurrent = 0;\r
-\r
-function addProject(strProj)\r
-{\r
- var len = gasProj.length;\r
- if (strProj)\r
- {\r
- strProj = _replaceSlash(strProj);\r
- if (strProj.lastIndexOf("/") != strProj.length - 1)\r
- strProj += "/";\r
- var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
- var bFound = false;\r
- for (var i = 0; i < len; i ++)\r
- {\r
- if (isSamePath(gasProj[i], strPPath))\r
- {\r
- bFound = true;\r
- break;\r
- }\r
- }\r
- if (!bFound)\r
- gasProj[len] = strPPath;\r
- }\r
-}\r
-\r
-function isSamePath(strPath1, strPath2)\r
-{\r
- return strPath1.toLowerCase() == strPath2.toLowerCase();\r
-}\r
-\r
-function goNext()\r
-{\r
- gCurrent ++;\r
- var len = gasProj.length;\r
- if (gCurrent >= len)\r
- return getHomePage()\r
- else\r
- frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
- return "";\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
- var strCurPPath = _getPath(strLocation);\r
- var strOriPPath = _getPath(getHomePage());\r
- var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
- var strURL = getHomePage() + "#" + strRelPath;\r
- return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
- var strHomePage;\r
- var strTmp = location.toString();\r
- var nPos = strTmp.indexOf("#");\r
- if (nPos != -1)\r
- {\r
- strHomePage = strTmp.substring(0, nPos);\r
- }\r
- else\r
- {\r
- strHomePage = strTmp;\r
- }\r
- var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
- var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
- if (nPos != -1)\r
- {\r
- strHomePage = strHomePage.substring(0,nPos);\r
- if (nPos1 != -1)\r
- strHomePage += ".html";\r
- else\r
- strHomePage += ".htm";\r
- }\r
- return strHomePage;\r
-}\r
-//-->\r
-</script>\r
-</head>\r
-<frameset rows="1,*">\r
-<frame name="dumb" src="about:blank"></frame>\r
-<frame name="csh" src="cshdat_webhelp.htm"></frame> \r
-</frameset>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gCSHFileName = "whc_data.htm";\r
-var gCSHSuffixName1 = "_rhc.html";\r
-var gCSHSuffixName2 = "_rhc.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-gCSHFileName="cshdat_robohelp.htm";\r
-//-->\r
-</script>\r
-<script language="javascript">\r
-<!--\r
-var gasProj = new Array();\r
-gasProj[0] = _getPath(document.location.href);\r
-var gCurrent = 0;\r
-\r
-function addProject(strProj)\r
-{\r
- var len = gasProj.length;\r
- if (strProj)\r
- {\r
- strProj = _replaceSlash(strProj);\r
- if (strProj.lastIndexOf("/") != strProj.length - 1)\r
- strProj += "/";\r
- var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
- var bFound = false;\r
- for (var i = 0; i < len; i ++)\r
- {\r
- if (isSamePath(gasProj[i], strPPath))\r
- {\r
- bFound = true;\r
- break;\r
- }\r
- }\r
- if (!bFound)\r
- gasProj[len] = strPPath;\r
- }\r
-}\r
-\r
-function isSamePath(strPath1, strPath2)\r
-{\r
- return strPath1.toLowerCase() == strPath2.toLowerCase();\r
-}\r
-\r
-function goNext()\r
-{\r
- gCurrent ++;\r
- var len = gasProj.length;\r
- if (gCurrent >= len)\r
- return getHomePage()\r
- else\r
- frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
- return "";\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
- var strCurPPath = _getPath(strLocation);\r
- var strOriPPath = _getPath(getHomePage());\r
- var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
- var strURL = getHomePage() + "#" + strRelPath;\r
- return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
- var strHomePage;\r
- var strTmp = location.toString();\r
- var nPos = strTmp.indexOf("#");\r
- if (nPos != -1)\r
- {\r
- strHomePage = strTmp.substring(0, nPos);\r
- }\r
- else\r
- {\r
- strHomePage = strTmp;\r
- }\r
- var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
- var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
- if (nPos != -1)\r
- {\r
- strHomePage = strHomePage.substring(0,nPos);\r
- if (nPos1 != -1)\r
- strHomePage += ".html";\r
- else\r
- strHomePage += ".htm";\r
- }\r
- return strHomePage;\r
-}\r
-//-->\r
-</script>\r
-</head>\r
-<frameset rows="1,*">\r
-<frame name="dumb" src="about:blank"></frame>\r
-<frame name="csh" src="cshdat_robohelp.htm"></frame> \r
-</frameset>\r
-</html>
\ No newline at end of file
--- /dev/null
+/*!
+
+\page about_salome_page About SALOME
+
+<ul>
+<li>\subpage intro_to_salome_page</li>
+<li>\subpage salome_architecture_page</li>
+<li>\subpage installing_salome_page "Installing SALOME"</li>
+<li>\subpage running_salome_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page creating_new_study_page Creating a new study
+
+Study is a document within GUI, an abstraction layer between actual
+document data (probably, remote data available through CORBA) and data
+presentation (in the Object Browser). It contains a tree of Data
+Object instances.
+
+<em>To create a new study:</em>
+
+\par
+From the main menu select <b>File > New</b> or in the standard toolbar
+click "New document" button.
+
+\image html newsticn.jpg ""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.
+
+<em>To create a new window for a definite study:</em>
+<ol>
+<li>Make your study \b active: maximize it (if it minimized) or click on
+the top control zone of the study window.
+</li>
+<li>\n From the main menu select <b>Window > New Window</b> and from the submenu
+choose the viewer, which will be activated in a new window.
+</li>
+</ol>
+
+The window for your study will be created with a default name \b Study1.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page displaying_studies_page Displaying studies
+
+Starting from SALOME version 3.0.0. you are able to work in a
+multi-desktop environment, which means that you can open as many
+studies as you need, place them wherever you wish on the desktop, in
+brief, work with Salome Platform like with a normal Windows
+application.
+\n Such windows as Object Browser and Python Console are dockable and
+also can be placed at any part of the desktop.
+\n Only one study window in representation area can be active. You can
+change their size and move any windows between representation
+areas. When an area becomes empty, it is not displayed.
+\n All windows are placed inside tabs where you can switch between
+them. If there are several windows (viewers) in your current study and
+you want to display more then one at the same time, you can split
+representation area into two parts, in horizontal or vertical
+direction, to create two representation areas with windows be placed
+in them. To do this, right-click on the tab and select <b>Split
+Vertically</b> or <b>Split Horizontally</b>.
+
+For example, on this screen-shot the active zone has been split
+horizontally to be able to work with OCC and VTK viewers
+simultaneously, the one of the windows was split again, at this time
+vertically to see Plot 2d graphs.
+
+\image html neo-view2.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page editing_studies_page Editing studies
+
+\b SALOME has \b Copy/Paste functionality allowing to edit your study
+within a definite component:
+
+<em>To copy/paste a definite object:</em>
+\par
+In the main toolbar click "Copy"/"Paste" button or from the main menu
+choose <b>Edit > Copy/Paste</b> option.
+
+\image html copy-paste.jpg ""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
--- /dev/null
+/*!
+
+\page geometry_preferences_page Geometry preferences
+
+In the \b Geometry module you can set preferences for visualisation of
+geometrical figures which can be used in later sessions with this
+module.
+
+\image html pref15.png
+
+\par
+For all color definitions click on the respective line to access to
+the \ref select_color_and_font_page "Select Color" dialog box.
+
+<ul>
+<li><b>General</b></li>
+<ul>
+<li><b>Default Display Mode</b> - allows to choose between wireframe
+or shading.<li>
+<li><b>Default Shading Color</b> - allows to select default shading
+color.<li>
+<li><b> Default Wireframe Color</b> - allows to select default
+wireframe color (to be applied to any lines not being free boundaries
+or isolated lines).<li>
+<li><b>Color of free boundaries</b> - allows to select default color for free boundaries.<li>
+<li><b>Color of edges, vectors and wires</b> - allows to select
+default color for edges, vectors and wires (isolated lines).<li>
+<li><b>Color of points</b> - allows to select default color for
+vertices.<li>
+<li><b>Color of isolines</b> - allows to select default color for
+isolines.<li>
+<li><b>Step Value for Spin Boxes</b> - allows to define the increment
+of values set in spin boxes.<li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Marker of Points</b></li>
+<ul>
+<li><b>Type</b> - allows to select the symbol for representation of
+points (cross, asterisk, etc.).</li>
+<li><b>Size</b> - allows to define the size of the marker from 1
+(smallest) to 7 (largest).</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\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.
+<br>Study represents a working document in which you can realize all
+operations connected with the SALOME functionality.
+<br>SALOME is a multi-study platform. It means that simultaneously you can
+work with several studies.
+
+\note To proceed working in SALOME you should create or open a new study.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page gui_module_page GUI module
+
+<ul>
+<li>\subpage introduction_to_gui_page</li>
+<li>\subpage getting_started_page</li>
+<li>\subpage salome_desktop_page</li>
+<li>\subpage study_management_page</li>
+<ul>
+<li>\ref creating_new_study_page</li>
+<li>\ref opening_studies_page</li>
+<li>\ref saving_and_closing_studies_page</li>
+<li>\ref editing_studies_page</li>
+<li>\ref displaying_studies_page</li>
+<li>\ref working_with_python_scripts_page</li>
+<li>\ref setting_study_properties_page</li>
+</ul>
+<li>\subpage using_object_browser_page</li>
+<li>\subpage using_registry_tool_page</li>
+<li>\subpage using_catalog_generator_page "Using Catalog Generator"</li>
+<li>\subpage viewers_page</li>
+<ul>
+<li>\ref occ_3d_viewer_page</li>
+<li>\ref vtk_3d_viewer_page</li>
+<li>\ref plot2d_viewer_page</li>
+</ul>
+<li>\subpage setting_preferences_page</li>
+<ul>
+<li>\ref setting_preferences_subpage</li>
+<li>\ref select_color_and_font_page</li>
+<li>\ref salome_preferences_page</li>
+<li>\ref geometry_preferences_page</li>
+<li>\ref mesh_preferences_page</li>
+<li>\ref postpro_preferences_page</li>
+</ul>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\mainpage GUI Module Reference Documentation
+
+<ul>
+<li>\subpage introduction_page</li>
+<li>\subpage about_salome_page</li>
+<ul>
+<li>\ref intro_to_salome_page</li>
+<li>\ref salome_architecture_page</li>
+<li>\ref installing_salome_page</li>
+<li>\ref running_salome_page</li>
+</ul>
+<li>\subpage gui_module_page "GUI module"</li>
+<ul>
+<li>\ref introduction_to_gui_page</li>
+<li>\ref getting_started_page</li>
+<li>\ref salome_desktop_page</li>
+<li>\ref study_management_page</li>
+<ul>
+<li>\ref creating_new_study_page</li>
+<li>\ref opening_studies_page</li>
+<li>\ref saving_and_closing_studies_page</li>
+<li>\ref editing_studies_page</li>
+<li>\ref displaying_studies_page</li>
+<li>\ref working_with_python_scripts_page</li>
+<li>\ref setting_study_properties_page</li>
+</ul>
+</ul>
+<li>\ref using_object_browser_page</li>
+<li>\ref using_registry_tool_page</li>
+<li>\ref using_catalog_generator_page "Using Catalog Generator"</li>
+<li>\ref viewers_page</li>
+<ul>
+<li>\ref occ_3d_viewer_page</li>
+<li>\ref vtk_3d_viewer_page</li>
+<li>\ref plot2d_viewer_page</li>
+</ul>
+<li>\ref setting_preferences_page</li>
+<ul>
+<li>\ref setting_preferences_subpage</li>
+<li>\ref select_color_and_font_page</li>
+<li>\ref salome_preferences_page</li>
+<li>\ref geometry_preferences_page</li>
+<li>\ref mesh_preferences_page</li>
+<li>\ref postpro_preferences_page</li>
+</ul>
+</ul>
+
+
+*/
--- /dev/null
+/*!
+
+\page installing_salome_page SALOME Installation Wizard Help
+
+<hr>
+<ul>
+<li>\ref installing_products "Installing products with the Installation Wizard"
+<ul>
+<li>\ref gui_mode_install "GUI mode"
+<li>\ref batch_mode_install "Batch mode"
+<li>\ref environment_files "Environment files"
+</ul>
+<li>\ref notes_on_check "Notes on check products version procedure"
+<li>\ref pick_up_env "Pick up the environment"
+<li>\ref modifying_xml "Modifying XML configuration file"
+<li>\ref installation_scripts "Implementing installation scripts for the new products"
+<li>\ref finish_buttons "Customizing Readme page buttons"
+</ul>
+<hr>
+\anchor installing_products
+<h1>Installing products with the <em>Installation Wizard</em></h1>
+
+The Installation Wizard can be launched in two modes: \b GUI and \b
+batch.
+<br>The root directory of the Installation Wizard contains Python
+script \b runInstall. To run the Installation Wizard just type \b runInstall.
+in the terminal window:
+<br><br>[ python ] \b runInstall [options]
+
+Without options this script will launch the SALOME Installation
+Wizard in the default mode (GUI). \n The default installation settings
+can be overridden by using command line options. Each option has a
+short and a long notation:
+
+<b>-g / --gui</b>
+\par
+Runs the Installation Wizard in the GUI mode (this is the default
+mode).
+
+<b>-b / --batch</b>
+\par
+Runs the Installation Wizard in the terminal mode.
+
+<b>-f FILE / --file=FILE</b>
+\par
+The XML configuration file to be used by the Installation Wizard. If
+this option is not used then the installation script tries to define
+the \e Linux version and use the corresponding XML file if it exists. For
+examle, for <em>Linux Mandrake 10.1</em> the <b>config_Mandrake_10.1.xml</b> file
+will be used by default. If no appropriate file is found, the file
+<b>config.xml</b> will be used. This file refers to the basic target platform
+which is <em>Linux Mandrake 10.1</em> for SALOME 3.0 and newer. If <b>config.xml</b>
+file is not found either, a warning message box is shown (in GUI mode)
+or printed to the console (in batch mode) and the Installation Wizard
+quits.
+
+<b>-d DIR / --target=DIR</b>
+\par
+The target directory SALOME platform is to be installed to.
+If used, this option overrides the default target directory, given in
+the configuration XML file (usually <b>${HOME}/salome_\<version\></b>,
+see \ref modifying_xml "here" for more details).
+
+<b>-t DIR / --tmp=DIR</b>
+\par
+The directory, which should be used for temporary files. If given,
+this option overrides the default temporary directory, given in the
+configuration xml file (usually \b /tmp, see \ref modifying_xml "here"
+for more information).
+
+<b>-a / --all-from-sources</b>
+\par
+Forces all the products to be installed from sources (including all
+SALOME modules). If this option is used, all default installation
+modes for all products are ignored.
+\n This option is helpful when the user wants to install SALOME on the
+platform which is not officially supported. In this case, the user can
+try to run the SALOME Installation Wizard with the \b -a option in order
+to build all the products from sources.
+\n <b>Note, that this is a time-consuming operation which can take
+more than 24 hours depending on the computer.</b>
+
+<b>-h / --help</b>
+\par
+Prints help information on the Installation Wizard's use.
+
+<b>-v / --version</b>
+\par
+Prints version information (\b Note: this is the Installation Wizard's
+version number, not the number of SALOME platform version).
+
+The installation procedure supports different \em Linux platforms and
+installs various installation 3d-party prerequisite products which are
+required by SALOME platform. As it was mentioned above, the basic
+target platform for SALOME 3.0 and newer is <em>Linux Mandrake 10.1</em>.
+Use of configuration XML files gives a flexible way to modify the list
+of products to be installed by the Installation Wizard without
+changing the program source code. Just create your own XML
+configuration file and implement installation scripts for the
+prerequisite products you need and then use this XML file with the
+Installation Wizard. This can be done, for example, for some Linux
+platform which is not supported directly by the Installation
+Wizard. See \ref modifying_xml "Modifying XML configuration file" and
+\ref installation_scripts "Implementing installation scripts for the new products"
+sections for more information.
+
+<br>
+\anchor gui_mode_install
+<h2>GUI mode</h2>
+
+The <b>Installation Wizard</b> GUI has been developed using
+Trolltech's <b>Qt 3.0.5</b> toolkit. After launching the Installation
+Wizard in the GUI mode the wizard window is shown to the user. This
+wizard guides the user through several subsequent pages. To navigate
+between the pages use \em "Next" and \em "Back" buttons in the lower
+part of the wizard window. The \em "Cancel" button closes the wizard
+window and quits the installation procedure after the user's
+confirmation. The \em "Help" button opens an additional window to show
+help information.
+
+The first \em "Introduction" page is shown in \ref figure_1 "Figure 1".
+Skip this page by clicking \em "Next":
+
+\anchor figure_1
+\image html intropage.png
+\n <center><b>Figure 1:</b> "Introduction" page</center>
+
+In the second page you are proposed to enter the target directory
+where the SALOME platform should be installed to. You can also click
+<em>"Browse..."</em> and choose the destination folder using the standard
+browse directory dialog box.
+\n If the directory you want to install products to does not exist you
+are prompted to confirm directory creation. If you type a wrong
+directory path, or if you do not have write permissions
+for the directory you use, the corresponding message box is shown.
+
+You can also change the temporary directory (which is used to store
+temporary files required for the installation).
+\n In the bottom part of the window the total disk space required for
+the installation and for the temporary files is displayed (see below
+for more details).
+
+In the GUI mode the Installation Wizard provides two different options
+to install the SALOME platform: \b basic (default option) and
+\b advanced. In the \b basic mode the user should enter the target
+installation directory and temporary folder. All other installation
+options are taken from the XML configuration file (see \ref figure_2 "Figure 2"):
+
+\anchor figure_2
+\image html productpage1.png
+\n <center><b>Figure 2:</b> "Installation settings"</center>
+
+In addition, you have a choice to use "Install all products from
+sources" check box. If this option is turned on, all the products will
+be installed from the sources (using their own build procedures). This
+check box corresponds to the <b>--all-from-sources (-a)</b> option of
+the \b runInstall script (see \ref installing_products "here").
+
+\Note <b>Installation of all products from sources is a long-time
+operation.</b>
+
+To switch to the \b advanced option, click <em>"More..."</em> (see
+\ref figure_3 "Figure 3" ).
+
+In the advanced mode you have a possibility to select products to be
+installed. Each product can have several options of installation: you
+have a possibility to use the native product (provided with Linux
+distribution and installed in the system folders), install already
+precompiled binaries, build the product from sources or not install it
+at all. Available options and default option are taken from the XML
+configuration file. You can mark the products you want to install by
+clicking the corresponding radio-buttons in the list view in the left
+part of the page.
+\n Note, that some products may require some other pre-requisite
+products to be installed (or these prerequisite products should be
+already available on your computer). The installation procedure has a
+special feature to automatically mark these products in the list
+view. For example, in order to install \b PyQt it is necessary to have
+<b>gcc, Python, Qt</b> and \b Sip installed. Therefore all these
+products will also be turned on when you check on \b PyQt. This
+feature can be switched off by clicking the <em>"Automatic
+dependencies"</em> checkbox. Turn on this checkbox if you want all
+prerequisite products to be automatically checked when you select some
+product to be installed. Turn off this checkbox if you want to disable
+this feature.
+
+\anchor figure_3
+\image html productpage.png
+\n <center><b>Figure 3:</b> "Installation settings" page in the 'advanced' mode</center>
+
+If you want to use native products (like \b gcc, \b tcl, etc.), select <em>"use
+native"</em> option.
+\n Special button in the right part of the page - <em>"Unselect All"</em> -
+allows to reset quickly all products to the <em>"not install"</em> state.
+<br><br>
+There are also two checkboxes on this page: <em>"SALOME sources"</em>
+and <em>"SALOME binaries"</em>. These three-state checkboxes allow
+quick selecting/unselecting sources/binaries packages of SALOME
+modules for installation.
+<br><br>
+In addition, when some SALOME sources are selected, one more check box
+becomes available: <em>"Build SALOME sources"</em>. If this option is
+turned on, the selected SALOME modules will be built and installed
+from sources.
+
+\note <b>If this check box is turned on, the corresponding SALOME
+module binaries package installation is disabled, because of SALOME
+module sources and binaries packages conflict</b> (see \ref figure_4 "Figure 4" below).
+
+\anchor figure_4
+\image html productpage2.png
+\n <center><b>Figure 4:</b> "Build SALOME sources" check box
+usage</center>
+
+The box at the right side of the page displays the information about
+currently highlighted product: name, version and short description,
+required disk space, disk space required for temporary files, list of
+prerequisites (this information is provided in the XML file) and
+current user choice.
+<br><br>
+The <em>"Disk space required:"</em> field displays how much disk space
+on the hard drive is required for installation of selected products.
+
+\note <b>Please, take into account that the displayed amount of
+required disk space is approximate and may differ when you install
+products on your hard drive.</b>
+
+The installation procedure uses a special directory to store temporary
+files. The <em>"Space for temporary files:"</em> field shows the information
+about required disk space on the hard drive for extracting and
+compiling the selected products. You can change the temporary
+directory - just type a path to the folder you want to use or click on
+the corresponding <em>"Browse..."</em> button.
+
+\note Actually, temporary files are not stored directly in the
+directory entered by the user. The Installation Wizard creates an
+additional folder in this directory named something like
+INSTALLWORK<b>XXXXX</b> where XXXXX is a unique number. This allows to launch
+several Installation Wizards simultaneously. This temporary directory
+is removed automatically when the installation finishes.
+
+The installation procedure also checks the available disk space. If
+there is not enough disk space on your hard drive you will see a
+corresponding error message box.
+
+\note <b>You are strongly recommended not to use directory names
+containing spaces</b>. Otherwise you can experience
+some troubles with the installation.
+
+To proceed further click <em>"Next"</em>. At this moment the program will make
+some tests to check installation settings: if there is enough disk
+space on the hard drive, check for native products installation,
+dependencies (prerequisites) for each product you have selected to be
+installed. If any test fails you will see the corresponding warning
+message box. Otherwise the wizard will proceed to the next page:
+
+\anchor figure_5
+\image html choicepage.png
+\n <center><b>Figure 5:</b> "Check your choice" page</center>
+
+This page summarizes the installation options you've made on the
+previous pages. You can check again your choice and change it if
+necessary by getting back to the previous page.
+\n When you are sure that everything is OK, click <em>"Next"</em> to
+follow to the \ref figure_6 "next page".
+
+\anchor figure_6
+\image html progresspage1.png
+\n <center><b>Figure 6:</b> "Installation progress" page</center>
+
+To start installation of the selected products click "Start". It
+launches the shell installation script and you will be able to see the
+output of the script in the dialog topmost frame. If any errors occur
+during the installation progress the corresponding messages will be
+printed to the log window in bold red font.
+
+It is possible to break the installation at any time by clicking
+"Stop". Then you can get back to the previous pages if you wish to
+change installation settings or restart installation by pressing again
+"Start" button.
+
+\note <b>In the current implementation it is not possible to resume
+the stopped installation process; it will be re-started from the very
+beginning.</b>
+
+\anchor figure_7
+\image html progresspage.png
+\n <center><b>Figure 7:</b> "Installation progress" page: installation in progress</center>
+
+The <em>"Installation Status"</em> frame window shows you the progress of
+installation. \c "Waiting" status means that installation of this product
+has not been started yet. The product currently being installed is
+marked as \c "Processing". All installed products have \c "Completed"
+status.
+
+You can abort installation and close the installation procedure using
+\em "Cancel" button.
+
+\note <b>This button sends the signal "SIGTERM" to the shell
+script. The script tries to clear all temporary files. The process of
+removing temporary files can take some time, so the installation
+wizard will wait 3 seconds before closing.</b>
+
+At the end of installation (all selected products have been installed
+successfully) you can go back to the previous pages to start a new
+installation or click \em "Next" to go the Readme page:
+
+\anchor figure_8
+\image html readmepage.png
+\n <center><b>Figure 8:</b> "Finish installation" page</center>
+
+In this page you can read important information about the Instalation
+Wizard itself and some tips: how to run and test SALOME or how to
+build SALOME from the sources. This is the contents of the README file
+which you can find in the root directory of the Installation Wizard.
+
+You can also launch SALOME Desktop from this page or read the Release
+Notes file by clicking on the corresponding buttons in the lower part
+of the page (see \ref modifying_xml "here" and \ref finish_buttons
+"here" for more information about customizing these buttons).
+
+<br>
+\anchor batch_mode_install
+<h2>Batch mode</h2>
+
+To launch the Installation Wizard in the batch mode use -\b b (--\b batch)
+parameter.
+\n In this mode the GUI wizard is not shown but all the installation
+status is displayed directly in the console. In the batch mode the
+user does not have a possibility to change installation settings which
+are given in the configuration file, except target and temporary
+directories which can be overridden by the corresponding command line
+options.
+\n The only exception is --\b all-from-sources (-\b a) option which enables
+special installation mode in which all the products (including SALOME
+modules) are installed from sources, ignoring the default mode defined
+in the XML configuration file (see \ref installing_products "here" for details).
+
+\anchor figure_9
+\image html batchmode.png
+\n <center><b>Figure 9:</b> Batch mode</center>
+
+<br>
+\anchor environment_files
+<h2>Environment files</h2>
+
+During the process of installation the script creates some environment
+files to simplify the procedure of launching SALOME. These shell
+scripts set all necessary environment variables for all products you
+have installed. To learn how installation scripts collects the
+environment, see \ref pick_up_env "here". These files are: \b
+salome.csh + \b salome.sh in the <b><em>KERNEL module sources</em></b>
+and <b><em>KERNEL module binaries</em></b> root directories and
+\b env_products.csh + \b env_products.sh and \b env_build.csh +
+\b env_build.sh in the target installation directory.
+
+\note there is some difference between these files: \b env_build.*
+files are optimized to be used for building SALOME modules from
+sources (see \b README file provided with the installation procedure
+on the CD). The \b env_products.* (and \b salome.*) files are
+optimized for SALOME launching. The behavior is defined by the
+environment variable \b ENV_FOR_LAUNCH which is set to \b 0 in
+env_build.* files and to \b 1 in env_products.* (salome.*) files.
+
+<br>
+<hr>
+\anchor notes_on_check
+<h2>Notes on <em>check products version</em> procedure</h2>
+
+Unfortunately there is no exact algorithm to identify the product
+version under Linux platform. The information in this section gives an
+idea how the version is checked for the native/preinstalled products
+(this information refers to the base platform <em>Linux Mandrake
+10.1</em>; and the same algorithms are used for other platforms).
+
+The general rule for all products is that the path to the binaries
+should be set via the \b PATH environment variable, path to the libraries
+should be set via the \b LD_LIBRARY_PATH variable and the python modules
+should be available via the \b PYTHONPATH variable.
+
+\note the information given in this section refers to the prerequisite
+products for SALOME version 3.2.4.
+
+<ul>
+<li>gcc 3.4.1
+\n\n Version number is checked by <b>gcc -dumpversion</b> command. The \b gcc
+executable should be in the \b PATH environment variable. Version should
+be equal to "3.4.1". It is recommended to use native gcc on Mandrake
+10.1.<br><br>
+</li>
+<li>tcl/tk 8.4.5
+\n\n Version number for \b tcl/tk can be found in tclConfig.sh and
+tkConfig.sh files (\b TCL_VERSION and \b TK_VERSION variables
+correspondingly). Version number should be equal to "8.4" (release
+number is not checked). Set the \b TCLHOME environment variable to the
+root directory of tcl/tk installation. It is recommended to use native
+tcl/tk on Mandrake 10.1.<br><br>
+</li>
+<li>boost 1.31.0
+\n\n Version number is defined by \b version.hpp file which is part of
+the boost distribution. This file defines the \b BOOST_VERSION macro
+which should be equal to "103100". In addition the existence of boost
+libraries is checked. Set the \b BOOSTDIR environment variable if you
+have a preinstalled version of boost.<br><br>
+</li>
+<li>Python 2.3.4
+\n\n Version number is checked by \b python -\b V command. The \b python
+executable should be in the \b PATH environment variable. Version
+number should be equal to "2.3.4". It is recommended to use native
+Python on Mandrake 10.1. Set the \b PYTHONHOME environment variable if
+you have a preinstalled version of Python.<br><br>
+</li>
+<li>Swig 1.3.24
+\n\n Version number is checked by \b swig -\b version command. The \b swig
+executable should be in the \b PATH environment variable. Version number
+should be equal to "1.3.24".
+<br><br>
+</li>
+<li>Qt 3.3.3
+\n\n Version number is defined by \b qglobal.h file which is part of the
+Qt distribution. This file defines \b QT_VERSION_STR macro which should be equal to "3.3.3". It is recommended to use native Qt on Mandrake 10.1.
+\n Set the \b QTDIR environment variable if you have a preinstalled version of qt.<br><br>
+</li>
+<li>msg2qm
+\n\n \b msg2qm is a Qt tool which is used to convert text *.po files
+to *.qm resource files. Unfortunately this tool is not included to the
+Linux distribution and provided only in Qt sources package. This is
+the reason why this tool is supplied with the SALOME Installation
+Wizard. There is no way to check the version number of msg2qm tool. Just set
+\b MSG2QM_ROOT environment variable if you have a preinstalled version
+of msg2qm tool.<br><br>
+</li>
+<li>Open CASCADE 6.1.2a2
+\n\n Version number is defined by \b Standard_Version.hxx file which
+is part of the Open CASCADE distribution. This file defines \b
+OCC_VERSION_MAJOR, \b OCC_VERSION_MINOR and \b OCC_VERSION_MAINTENANCE
+macros which should refer to version 6.1.2. \n Set the CASROOT
+environment variable if you have a preinstalled version of Open
+CASCADE.<br><br>
+</li>
+<li>qwt 4.2.0/0.4.2
+\n\n Version number is defined by \b qwt_global.h file which is part of
+the qwt distribution. This file defines \b QWT_VERSION_STR macro which should be equal to "4.2.0".
+\n Set the \b QWTHOME environment variable if you have a preinstalled version of qwt.<br><br>
+</li>
+<li>hdf 5-1.6.4
+\n\n Version number is defined by \b libhdf5.settings file which is
+part of the \b hdf5 distribution. Version should be equal to 1.6.4.
+\n Set the \b HDF5HOME environment variable if you have a preinstalled
+version of hdf5.<br><br>
+</li>
+<li>med 2.2.3
+\n\n Unfortunately there is no formal way to check med version
+number. We check existence of libmed.so.1.0.2 library on the
+computer. If you have any problem with a preinstalled version of med,
+please, reinstall it.
+\n Set the \b MED2HOME environment variable if you have a preinstalled
+version of med.<br><br>
+</li>
+<li>Vtk 4.2.6
+\n\n Unfortunately there is no formal way to check VTK version
+number. We just check the existence of \b libvtkCommon.so library on
+the computer and hope that it is of version we need. If you have any
+problem with a preinstalled version of Vtk, please, reinstall it.
+\n Set the \b VTKHOME environment variable if you have a preinstalled
+version of Vtk.<br><br>
+</li>
+<li>OmniORB 4.0.5, OmniORBpy 2.5, OmniNotify 2.1
+\n\n We just check existence of some omniORB libraries and executable
+on the computer, like \b libomniORB4.so.0.5, \b _omnipymodule.so.2.4,
+\b libCOSNotify4.so.0.1 and \b notifd. \n Set the \b OMNIORBDIR
+environment variable if you have a preinstalled version of omniORB
+products.<br><br>
+</li>
+<li>sip 4.1
+\n\n Version number is checked by \b sip -\b V command. The \b sip
+executable should be in the \b PATH environment variable. Version number should be equal to "4.1".
+\n Set the \b SIPDIR environment variable to the directory where you
+have sip executable preinstalled.<br><br>
+</li>
+<li>PyQt 3.13
+\n\n Version number is defined by \b pyqtconfig.py Python module file
+which is part of the \b PyQt distribution. Version should be equal to "3.13".
+\n Set the \b PYQTDIR environment variable if you have a preinstalled
+version of PyQt.<br><br>
+</li>
+<li>netgen 4.5
+\n\n Unfortunarely we can't find anything about netgen version. We
+just check if \b NETGENROOT environment variable is set. \n Set the\b
+NETGENROOT environment variable if you have a preinstalled version of
+netgen mesher.<br>
+\note netgen 4.5 provided with the SALOME installation Wizard has been patched to improve its performance.
+</li>
+<li>Numeric 23.7
+\n\n Version number is checked by <b>python -c 'import Numeric; print
+Numeric.__version__'</b> command. The \b python executable should be
+in the \b PATH environment variable and \b Numeric module should be
+available for the Python (for example it should be in the \b PYTHONPATH environment variable). Version number should be equal to "23.7". If you have any problem with a preinstalled version of Numeric 23.7, please, reinstall it.
+\n Add the directory where you have a preinstalled version of Numeric
+package to the the \b PYTHONHOME environment variable.<br><br>
+</li>
+<li>graphviz 2.2.1
+\n\n Version number is checked by \b dot -\b V command. The dot
+executable should be in the \b PATH environment variable. Version
+number should be equal to "2.2.1". \n Add \b graphviz bin directory to
+the the \b PATH environment variable.<br><br>
+</li>
+<li>doxygen 1.4.6
+\n\n Version number is checked by \b doxygen --\b version command. The
+\b doxygen executable should be in the \b PATH environment
+variable. Version number should be equal to "1.4.6".<br><br>
+</li>
+<li>\b SALOME module \b sources (3.2.4).
+\n\n For each SALOME module sources package (KERNEL, GUI, GEOM,
+etc...) the root directory contains file configure.in (configure.ac)
+which defines version information.\n Set the \b \<MODULE\>_SRC_DIR environment variable for each SALOME \b
+MODULE sources package installed (where \b MODULE is KERNEL, GUI,
+GEOM, ...).<br><br>
+</li>
+<li>\b SALOME module \b binaries (3.2.4)
+\n\n For each SALOME module binaries package (KERNEL, GUI, GEOM,
+etc...) the \b bin/salome directory contains file \b VERSION which
+defines version information.\n Set \<MODULE\>_ROOT_DIR environment
+variable for each SALOME \b MODULE binaries package installed (where
+\b MODULE is KERNEL, GUI, GEOM, ...).<br><br>
+</li>
+</ul>
+
+If you have native products installed to directories different from
+default ones (not \b /usr/bin, \b /usr/lib...), it is recommended to follow
+the above mentioned instructions. Or you should properly set \b PATH and
+\b LD_LIBRARY_PATH variables \em before starting the Installation
+Wizard. Otherwise the installation script will fail to find
+preinstalled/native products.
+
+\note for some native products (e.g. gcc, Python) the rules of version
+checking are not so strict as described above. Only major and minor
+version numbers should coincide with the prerequisite. Newer version
+of the product can also be used. If some native product has version
+number larger than that required by the installation procedure, the
+user will be prompted by the warning message like this: "<em>You have
+newer version of gcc installed on your computer than that is required
+(3.4.1). Continue?</em>". You can click "\em Yes" to proceed with the
+installation but in this case you should be aware of what you are
+doing. SALOME binaries (including other products) are compiled with
+the predefined prerequisites and most likely can not be run
+successfully if these products are not found. This can be helpful only
+if you plan to build all products from sources.
+
+<br>
+<hr>
+\anchor pick_up_env
+<h2>Pick up the <em>environment</em></h2>
+
+Please, read the following information carefully . This section
+describes how the installation procedure generates the environment
+scripts for the SALOME platform being installed.
+<br><br>
+After installing each product shell the script creates a special
+environment file for the product in its installation folder. The name
+of the file is generated from the name of product by the following
+scheme: \b env_<product_name>.sh (for example \b env_Vtk.sh for the
+Vtk). This file includes all necessary environment settings. At the
+final step of the installation the script picks up all the settings
+files and generates two common environment files from them: \b salome.sh
+and \b salome.csh for \b bash and \b csh shells correspondingly. Such approach
+helps to save time when reinstalling products and you may not bother
+about setting all environment variables manually to build/launch
+SALOME. What you simply need is to source one of these environment
+files.
+<br><br>
+This also concerns those products which are not being installed. For
+example, you install some SALOME binaries to the directory where you
+have previously installed other products. The Installation procedure
+tries to collect environment files from the target directory if it
+finds necessary products installed there. If some product is not found
+in the target directory the corresponding section of
+\b salome.sh/salome.csh files will be skipped.
+\n For native products (like \b gcc, \b tcl, etc...) the installation
+procedure tries to find them first using \b PATH / \b LD_LIBRARY_PATH
+variables and then in the system default directories (\b /usr/bin,
+\b /usr/lib etc., depending on the product).
+<br><br>
+In any case you may edit \b salome.* files after the installation
+procedure finishes, if you want.
+
+\note As it was mentioned \ref environment_files "above" there are
+other environment files which are generated by the installation
+procedure: \b env_products.csh + \b env_products.sh and \b env_build.csh +
+\b env_build.sh. These files can be found in the target installation root
+directory.
+
+<br>
+<hr>
+\anchor modifying_xml
+<h2>Modifying <em>XML</em> configuration <em>file</em></h2>
+
+You can create your own XML configuration file. The Installation
+Wizard can then take it as a command line argument to provide a list
+of products you want to install with it. The list of products and some
+other settings for the Installation Wizard are provided in the XML
+file. The default file which Installation Wizard looks for if no
+command line arguments are given, is \b config.xml.
+\n This section describes the structure of the configuration file.
+\n Optional sections/tags are in brackets.
+
+\code
+<document>
+ [ <config [ version=<install_wizard_version> ]
+ [ caption=<install_wizard_caption> ]
+ [ copyright=<install_wizard_copyright> ]
+ [ license=<install_wizard_license_info> ]
+ [ os=<target_platform> ]
+ />
+ ]
+ [ <path [ targetdir=<target_directory> ]
+ [ tempdir=<temp_directory> ]
+ />
+ ]
+ [ <button label=<button_label>
+ [ tooltip=<button_tooltip> ]
+ script=<button_script>
+ [ disable=<disable_flag> ]
+ />
+ ]
+ [ <button ...
+ />
+ ]
+ [ <product name=<product_name>
+ version=<product_version>
+ [ context=<product_context> ]
+ [ description=<product_description> ]
+ install=<installation_mode>
+ supported=<supported_installation_modes>
+ [ disable=<disable_flag> ]
+ [ pickupenv=<pickup_env_flag> ]
+ dependancies=<list_of_prerequisites>
+ installdiskspace=<install_disk_space>
+ temporarydiskspace=<tmp_disk_space>
+ script=<installation_script_name>
+ />
+ ]
+ [ <product ...
+ />
+ ]
+ ...
+</document>
+\endcode
+
+<b>\<config\> section</b>
+\n\n This is an optional section; it provides general information about
+the Installation Wizard itself.
+<br><br>
+Attributes:
+<ul>
+<li><b>version</b>
+\n\n The application version number to be shown in the caption.<br><br>
+</li>
+<li><b>caption</b>
+\n\n The application main window caption - if this string contains
+'\%1' text the title will contain the version number in this place (see
+above).<br><br>
+</li>
+<li><b>copyright</b>
+\n\n The application copyright information (shown in the first
+page).<br><br>
+</li>
+<li><b>license</b>
+\n\n The application license information (shown in the first
+page).<br><br>
+</li>
+<li><b>os</b>
+\n\n This parameter defines the directory (relative from
+./Products/BINARIES) where the Installation Wizard will search
+precompiled binaries packages. If this tag is not provided, binaries
+packages are looked for in the ./Products/BINARIES directory.<br><br>
+</li>
+</ul>
+
+<b>\<path\> section</b>
+\n\n This is an optional section; it defines default installation
+directories.
+<br><br>
+Attributes:
+<ul>
+<li><b>targetdir</b>
+\n\n The target directory - the path to the directory where products
+should be installed.<br><br>
+</li>
+<li><b>tempdir</b>
+\n\n The temporary directory - the path to the directory for the
+temporary files.<br><br>
+</li>
+</ul>
+
+<b>\<product\> section</b>
+\n\n This section describes product to be installed with the
+Installation Wizard. The XML file should include a \<product\> section
+for each product to be installed. The products appear in the tree view
+and are installed in the order they are described in the configuration
+file. It is recommended (but not obligatory) to define native products
+at the top of the list before all other products.
+<br><br>
+Attributes:
+<ul>
+<li><b>name</b>
+\n\n Product name.<br><br>
+</li>
+<li><b>version</b>
+\n\n Product version.<br><br>
+</li>
+<li><b>description</b>
+\n\n Product description (optional).<br><br>
+</li>
+<li><b>context</b>
+\n\n Context (optional). The possible values are '<b>salome
+sources</b>', '<b>salome binaries</b>' and '<b>prerequisite</b>'
+(several contexts can be given separated by ":" symbol).<br><br>
+</li>
+<li><b>supported</b>
+\n\n Supported modes of installation. Several modes can be separated
+by comma. Possible value are: <em>install sources, install binaries, use
+native</em>. The Installation script should contain the corresponding
+functions for each of the supported installation modes (see
+\ref installation_scripts "here").<br><br>
+</li>
+<li><b>install</b>
+\n\n Default (starting) installation mode.<br><br>
+</li>
+<li><b>disable</b>
+\n\n If this optional flag has 'true' value, the corresponding product
+will not appear in the list of products and will not be
+installed.<br><br>
+</li>
+<li><b>pickupenv</b>
+\n\n This flag points that pickup environment procedure should be
+performed for this product. If this flag equal to 'true', salome.sh
+and salome.csh files will be created in the product installation
+directory. Usually this option is set to true for SALOME KERNEL module
+sources and binaries package. This is an optional key, default value
+is 'false'.<br><br>
+</li>
+<li><b>dependancies</b>
+\n\n List of prerequisite products, which are necessary to build this
+product, separated by comma.<br><br>
+</li>
+<li><b>installdiskspace</b>
+\n\n Total amount of space (integer, in Kbytes), which the product
+occupies on the hard drive after the installation.<br><br>
+</li>
+<li><b>temporarydiskspace</b>
+\n\n Disk space (integer, in Kbytes) for temporary files, which is
+necessary to build the product from the sources.<br><br>
+</li>
+<li><b>script</b>
+\n\n The installation script name. This script is in charge of the
+installation of the product. It is called automatically by the
+Installation Wizard when necessary from the main program.
+See the \ref installation_scripts "next section" for more information.<br><br>
+</li>
+</ul>
+
+<b>\<button\> section</b>
+\n\n This is an optional section. It allows customization of the last
+"Finish installation" page of the Installation Wizard by adding one or
+more buttons in the lower part of the wizard's window. The script
+which is attached to each such button, can perform some specific
+action, for example, launch the application or show the Release Notes
+file by using an external program. See \ref finish_buttons "here" for
+more details about writing scripts.<br><br>
+Attributes:
+<ul>
+<li><b>label</b>
+\n\n This is the button text.<br><br>
+</li>
+<li><b>tooltip</b>
+\n\n The button tooltip (optional).<br><br>
+</li>
+<li><b>script</b>
+\n\n The script attached to the button.<br><br>
+</li>
+<li><b>disable</b>
+\n\n If this optional flag has 'true' value, the corresponding button
+will not appear in the "<em>Finish installation</em>" page - the section of XML
+file is silently ignored.<br><br>
+</li>
+</ul>
+
+\note If you add new products to be installed with Installation
+Wizard, you should also provide installation script for this
+product. See the next section for more details.
+
+<br>
+<hr>
+\anchor installation_scripts
+<h2>Implementing <em>installation scripts</em> for the new products</h2>
+
+When you want some product to be installed with the Installation
+Wizard, you should add its description \ref modifying_xml "to the configuration file"
+and create the installation script, following the rules described in this section.
+
+There are some obligatory functions which should be implemented in
+this installation script. These functions are automatically called by
+the master installation script or/and its GUI shell when it is
+necessary. \n File \b common.sh contains some service functions which can
+be used in your installation script, like \b make_env(), \b make_dir(),
+\b try_existing(), \b sort_path(), \b find_in_path(), etc.
+
+<ul>
+<li><b>check_version()</b>
+\n\n This function allows to check the version of the product already
+installed on the computer. It should try to find the product (native
+or preinstalled in the target directory) and check its version. This
+helps to avoid unnecessary reinstallation. This is an internal
+function and is not called from the master installation
+script.<br><br>
+</li>
+<li><b>try_native()</b>
+\n\n This function is called when the 'use native' installation mode
+is selected by the user. The function should try to find a native
+version of the product and define possibility of its use. It should
+create the environment file for the product in the temporary directory
+(see also the description of \b print_env() function). It is not
+necessary to implement this function if you do not provide native mode
+installation.<br><br>
+</li>
+<li><b>install_source()</b>
+\n\n This function is called when the 'install sources' installation
+mode is selected by the user. The function is responsible for building
+the product from the sources package. It should create the environment
+file for the product in the temporary directory (see also description
+of \b print_env() function). It is not necessary to implement this
+function if you do not provide sources mode installation.<br><br>
+</li>
+<li><b>install_source_and_build()</b>
+\n\n This function is called when SALOME module is installed and the
+--\b all-from-sources (-\b a) option is used (<em>"Build SALOME sources"</em>
+check box in GUI mode). This function should be used to unpack SALOME
+sources package and then call the build/install procedure for it.
+For more details please refer to the \ref installing_products "this"
+and \ref gui_mode_install "this" sections for more details.<br><br>
+</li>
+<li><b>install_binary()</b>
+\n\n This function is called when the <em>'install binaries'</em> installation
+mode is selected by the user. The function is responsible for the
+extracting of the product from the binaries package. It should create
+environment for the product in the temporary directory (see also
+description of \b print_env() function). It is not necessary to implement
+this function if you do not provide binaries mode
+installation.<br><br>
+</li>
+<li><b>try_preinstalled()</b>
+\n\n This function is called when the 'not install' installation mode
+is selected by the user. In this case the script should inspect the
+target directory to try to find an already preinstalled product, pick
+up and check the environment from there. See \ref pick_up_env "here" for more
+details.<br><br>
+</li>
+<li><b>print_env()</b>
+\n\n This function is in charge of creating the environment script. It
+should create a file with name \b env_<product_name>.sh in the temporary
+directory and then copy it into the product installation
+directory. The file should contain all necessary environment variables
+settings for the product. It will be collected during the
+'pick-up-environment' procedure.<br><br>
+</li>
+<li><b>pickup_env()</b>
+\n\n This procedure corresponds to the \b pickupenv tag of the
+configuration xml file (see previous section). It should call the
+\b make_env procedure to perform the pick-up environment procedure for
+the product.<br><br>
+</li>
+</ul>
+
+The calling signature of the product installation script is the following:
+<b>\<product_script_name\> \<function_name\> \<temp_folder\>
+\<products_directory\> \<target_directory\> \<dependancies\>
+\<product_name\></b>
+\n\n where \n\n
+<b>\<product_script_name\></b> - installation script name (described in the
+configuration xml file);\n
+<b>\<function_name\></b> - the name of function, corresponding to the selected
+installation mode: \em try_native, \em install_source, \em install_binary or
+\em try_preinstalled;\n
+<b>\<temp_folder\></b> - temporary files directory;\n
+<b>\<products_directory\></b> - directory where the sources/binaries package
+can be found. You should provide the sources package in the
+<em>\<Install_Wizard_root_directory\>/Products/SOURCES</em> directory and
+binaries package in the
+<em>\<InstallWizard_root_directory\>/Products/BINARIES/\<os_version\></em>, where
+\<os_version\> is the target platform description, which appears in the
+corresponding section of the \ref modifying_xml "configuration xml file";
+<em>\<target_directory\></em> - root target directory where the product should be installed to;
+<em>\<dependancies\></em> - single-quoted list of prerequisite products, separated by space;
+<em>\<product_name\></em> - product name itself.
+
+\b Example:
+\n <em>med-2.2.3.sh install_binary /tmp/work
+./Products/BINARIES/Mandrake10.1 /usr/salome 'gcc Hdf' med</em>
+
+Copy the created script into the
+<em>\<Install_Wizard_root_directory\>/config_files</em> sub-directory where all
+installation scripts are stored. Installation Wizard will
+automatically search and call your script during the installation
+procedure.
+
+<br>
+<hr>
+\anchor finish_buttons
+<h2>Customizing <em>Readme page</em> buttons</h2>
+
+The Installation Wizard allows customizing the look-n-feel of the last
+<em>"Finish installation"</em> page. If you want to add one or more buttons to
+this page in order to perform some specific actions at the end of the
+installation (for example, to show the Release Notes file by using
+Open Office) you can put an additional section to the XML
+configuration file. This is the \b \<button\> section (see
+\ref modifying_xml "here" for more details).
+
+To implement the action which will be performed when the user clicks
+the button, you need to create a script and put it to the
+<em>\<Install_Wizard_root_directory\>/config_files</em> directory.
+\n There are some obligatory functions which should be implemented in
+this script. These functions are automatically called by the
+Installation Wizard GUI.
+
+<ul>
+<li><b>check_enabled()</b>
+\n\n This procedure is called by the Installation Wizard when the
+<em>"Finish installation"</em> page is displayed and the status of the buttons
+should be modified according to the installation options. This
+procedure should return \b 0 if the corresponding action can be performed
+and, thus, the button should become enabled. Otherwise, it should
+return \b 1 - in this case the corresponding button will be
+disabled.<br><br>
+</li>
+<li><b>execute()</b>
+\n\n This procedure is invoked when the user clicks the button. This
+procedure should return \b 0 if the corresponding action is done
+successfully and \b 1 if any error occurs.<br><br>
+</li>
+</ul>
+
+The calling signature of the script is the following:
+\n <b>\<product_script_name\> \<function_name\> \<target_directory\>
+\<temp_folder\></b>
+\n\n where \n\n
+\b \<product_script_name\> - the script name itself (retrieved from the XML configuration xml file);
+\n \b \<function_name\> - the name of function;
+\n \b \<target_directory\> - root target directory where the product is installed to;
+\n \b \<temp_folder\> - temporary files directory;
+
+\note The standard Installation Wizard buttons "Launch SALOME" and
+"Release Notes" are implemented with this feature. Refer to scripts
+\b start_salome.sh and \b release_notes.sh for sample implementation.
+
+\note Any button (even standard) can be ignored by the Installation
+Wizard if the attribute \b \<disable\> in the XML configuration file is set
+to the "true" value.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page intro_to_salome_page Introduction to SALOME
+
+
+\b SALOME platform represents a generic open source platform for pre-
+and post-processing in numeric simulations. \b SALOME combines several
+software components, which are built in such a way that it allows to
+integrate solvers and existing meshing algorithms along with the
+specification of physical properties for a given domain. The
+originality of this approach is that the various components must
+cooperate dynamically and be
+configurable.
+
+\image html image54.jpg
+
+<br>SALOME platform integrates a number of modules each having its own function:
+<ul>
+<li>\b KERNEL : provides a common shell for all components, which can be integrated into the SALOME platform.
+<li>\b GUI : provides visual representation: basic widgets, viewers
+etc. Third party modules optionally can have GUI, but in any case they always connected with KERNEL.
+<li>\b Geometry : facilitates construction and optimization of geometrical models using a wide range of CAD functions.
+<li>\b Mesh : generates meshes on geometrical models previously created or imported by the Geometry component.
+<li>\b Supervisor : provides tools for construction of graphs and execution of calculations.
+<li>\b Post-Pro : performs data visualization.
+<li>\b MED : allows to work with MED files.
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\image html icon_about.png
+
+\page introduction_page Introduction
+
+<br>
+
+Welcome to SALOME Platform! Modern technological products (cars,
+structures, electrical or electronic equipment) are getting more and
+more complex every year and must meet increasingly severe requirements
+in terms of quality and performance. For example, for structures and
+their environment the demands to reduce risks and optimize costs are
+extremely high. It requires particularly refined simulations
+concerning structural behavior and robustness to ensure high
+reliability.
+\n The numeric modeling of a physical problem, the development of
+solutions and their integration into the design process are often
+handled in very specific environments. SALOME represents a generic
+CAD-based application for digital simulation with "high reactivity to
+market evolutions and customer expectations".
+
+SALOME is a free software that provides a generic platform for Pre and
+Post-Processing for numerical simulation. It is based on an open and
+flexible architecture made of reusable components available as free
+software.
+
+SALOME is a CAD/CAE integration platform. It provides reusable
+components for:
+<ul>
+<li>3D modeling (bottom-up construction, import, healing);
+<li>Visualization;
+<li>Computational schemas management;
+<li>Post-processing.
+</ul>
+
+SALOME is tailored for integration of custom components:
+<ul>
+<li>CAD interfaces;
+<li>Mesh generators;
+<li>Finite Element solvers with specific pre-processors.
+</ul>
+
+The SALOME platform is available in Open Source.
+
+<b>Salome Platform:</b>
+<ul>
+<li>Supports interoperability between CAD modeling and computation software (CAD-CAE link)
+<li>Makes easier the integration of new components on heterogeneous systems for numerical computation
+<li>Sets the priority to multi-physics coupling between computation software
+<li>Provides a generic user interface, user-friendly and efficient, which helps to reduce the costs and delays of carrying out the studies
+<li>Reduces training time to the specific time for learning the software solution which has been based on this platform
+<li>All functionalities are accessible through the programmatic
+integrated Python console
+</ul>
+
+\image html image65.gif
+
+<b>What can you do in SALOME? (Some of SALOME main functions)</b>
+<ul>
+<li>Define geometrical models (create/modify geometrical items), import and export them using the BREP, IGES and STEP formats;
+<li>Define meshing of these geometrical items, import and export them;
+<li>Handle physical properties and quantities attached to geometrical items, import and export them to a reusable format;
+<li>Perform computations using a solver (optionally provided): read input data, configure the solver, and write calculation results);
+<li>Visualize result fields in 3D, 2D and export images of their visualization to an appropriate format;
+<li>Manage study schemes: definition, save/restore;
+<li>Manage computation schemes: definition, execution.
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page introduction_to_gui_page Introduction to GUI
+
+\b GUI (Graphical User Interface) provides a common shell for all components, which can be integrated into the SALOME platform.
+
+\b GUI component in SALOME platform provides:
+<ul>
+<li>Common desktop environment (\ref salome_desktop_page "SALOME desktop") for all
+components</li>
+<li>Component integration and management: uploading, switching,
+component menus/toolbars handling</li>
+<li>Study management (creation, saving, loading, editing studies)</li>
+<li>Multi-window management in the framework of one study</li>
+<li>Management of objects created or imported into the SALOME
+application (\ref using_object_browser_page "Object Browser")</li>
+<li>Integrated Python interpreter</li>
+<li>Output messages window</li>
+<li>Additional tools : \ref using_catalog_generator_page "Catalogue Generator",
+\ref using_registry_tool_page "Registry tool"</li>
+<li>Standard viewers for data visualization:</li>
+<ul>
+<li>VTK 3d viewer
+<li>OCC 3d viewer
+<li>Gauss Points viewer
+<li>Plot 2d viewer
+<li>Supervision viewer
+</ul>
+</ul>
+
+
+
+Since version 3.0.0 SALOME GUI is based on SUIT (Salome User Interface
+Toolkit) that proposes very flexible, powerful and safe mechanisms of
+interaction with SALOME tool components (both CORBA and standalone),
+resources management, viewers and selection handling,
+exception/signals processing, bringing to top multi-desktop
+dockable-windowed user interface which improves the usability of
+SALOME GUI.
+\n All Graphical User Interfaces of standard modules have plug-in
+structure, i.e. each module is placed in a dynamic library which is
+loaded on demand. All modules can create their own menu items, buttons
+in toolbar, windows etc
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page mesh_preferences_page Mesh preferences
+
+In the Mesh module you can set mesh preferences, which can be used in
+later sessions with this module.
+
+<h2>General Preferences</h2>
+
+\image html pref21.png
+
+<ul>
+<li><b>Update</b></li>
+<ul>
+<li>If you toggle <b>Automatic Update</b> checkbox, the model in your
+viewer automatically updated whenever you make changes in it.</li>
+</ul>
+<li><b>Quality Controls</b></li>
+<ul>
+<li>If you toggle <b>Display entity</b>, both faces and edges of an
+object will be displayed in the viewer by default.</li>
+<li>If you toggle <b>Use precision</b> checkbox, you can display numbers in
+<b>Quality Control</b> diagrams at the necessary level of precision.</li>
+</ul>
+<li><b>Precision</b> - can be defined by the <b>Number of digits after point</b> in
+the corresponding field. By default, numbers in <b>Quality Control</b>
+diagrams are presented as integers.</li>
+<li><b>Display mode</b> - allows to set Wireframe, Shading, Nodes or Shrink
+presentation mode as default.</li>
+<li><b>Mesh export</b></li>
+<ul>
+<li>If you toggle <b>Automatically create groups for MED export</b> checkbox,
+this operation will be carried out automatically.</li>
+<li>If you toggle <b>Automatic renumbering</b> checkbox, the exported
+mesh will be renumbered automatically</li>
+</ul>
+</ul>
+
+<h2>Mesh Preferences</h2>
+
+\image html pref22.png
+
+<ul>
+<li><b>Nodes</b></li>
+<ul>
+<li><b>Color</b> - allows to select the color of nodes. Click on the
+colored line to access to the \ref select_color_and_font_page "Select Color"
+dialog box.</li>
+<li><b>Size</b> - allows to define the size of nodes.</li>
+</ul>
+<li><b>Elements</b></li>
+<ul>
+<li><b>Fill</b> - allows to select the color of surface of elements
+(seen in Shading mode). Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Outline</b> - allows to select the color of borders of
+elements. Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Back Face</b> - allows to select the color of interior surface
+of elements. Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of lines (edges and borders of elements).</li>
+<li><b>Shrink coef.</b> - allows to define relative space of elements
+compared to gaps between them in shrink mode.</li>
+</ul>
+</ul>
+
+<br><h2>Selection Preferences</h2>
+
+\image html pref23.png
+
+<ul>
+<li><b>Selection</b> - performed with mouse-indexing (preselection)
+and left-clicking on an object, whose appearance changes as defined in
+the <b>Preferences</b>.</li>
+<ul>
+<li><b>Object Color</b> - allows to select the color of mesh (edges and
+borders of meshes) of the selected entity. Click on the colored line
+to access to the \ref select_color_and_font_page "Select Color" dialog
+box.</li>
+<li><b>Element color</b> - allows to select the color of surface of selected
+elements (seen in Shading mode). Click on the colored line to access
+to the \ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of selected edges. </li>
+</ul>
+<li><b>Preselection</b> - performed with mouse-indexing on an object,
+whose appearance changes as defined in the <b>Preferences</b>.</li>
+<ul>
+<li><b>Highlight Color</b> - allows to select the color of mesh (edges and
+borders of meshes) of the entity . Click on the colored line to access
+to the \ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Width</b> - allows to define the width of preselected edges.</li>
+</ul>
+<li><b>Precision</b> - in this menu you can set the value of precision
+used for <b>Nodes</b>, <b>Elements</b> and <b>Objects</b>.</li>
+</ul>
+
+<br><h2>Scalar Bar Preferences</h2>
+
+\image html pref24.png
+
+<ul>
+<li><b>Font</b> - in this menu you can set type, face and color for
+the font of <b>Title</b> and <b>Labels</b>.</li>
+<li><b>Colors & Labels</b> - in this menu you can set the <b>number of
+colors</b> and the <b>number of labels</b> in use.<li>
+<li><b>Orientation</b> - here you can choose between vertical and
+horizontal orientation of the <b>Scalar Bar</b></li>.
+<li><b>Origin & Size Vertical & Horizontal</b> - allows to define
+placement (<b>X</b> and <b>Y</b>) and lookout (<b>Width</b> and
+<b>Height</b>) of Scalar Bars</li>
+<ul>
+<li><b>X</b>: abscissa of the point of origin (from the left
+side)</li>
+<li><b>Y</b>: ordinate of the origin of the bar (from the bottom)</li>
+</ul>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page occ_3d_viewer_page OCC 3D Viewer
+
+<b>OCC (Open CasCade) 3D viewer</b> has been developed on the basis of Open
+CASCADE Technology. This is the default viewer for Geometry Module,
+providing good representation of construction and transformation of
+geometrical objects. Only this viewer allows to work with groups and
+sub-shapes. This viewer can also work in Mesh module, however, it
+doesn't allow to visualize meshes.
+
+The functionalities of OCC viewer are available via its Viewer
+Toolbar. Buttons marked with small downward triangles have extended
+functionality which can be accessed by locking on them with left mouse
+button.
+
+\image html image95.gif "Viewer Toolbar"
+
+<hr>
+\image html image77.gif
+\n <center><b>Dump View</b> - exports an object from the viewer in bmp, png, jpg
+or jpeg image format.</center>
+<hr>
+
+\image html image88.gif
+\n <center><b>Show/Hide Trihedron</b> - shows or hides coordinate axes.</center>
+<hr>
+
+\image html image96.gif
+\n <center><b>Fit all</b> - allows to select a point to be the center of a
+scene representing all displayed objects in the visible area.</center>
+<hr>
+
+\image html image97.gif
+\n <center><b>Fit area</b> - resizes the view to place in the visible area
+only the contents of a frame drawn with pressed left mouse button.</center>
+<hr>
+
+\image html image98.gif
+\n <center><b>Zoom</b> - allows to zoom in and out.</center>
+<hr>
+
+\image html image99.gif
+\n <center><b>Panning</b> - if the represented objects are greater that the
+visible area and you don't wish to use <b>Fit all</b> functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+<hr>
+
+\image html image100.gif
+\n <center><b>Global panning</b> - represents all displayed objects in
+the visible area.</center>
+<hr>
+
+\image html view_rotation_point.png
+\n <center><b>Change rotation point</b> - allows to to choose the point around
+which the rotation is performed.</center>
+
+\image html set_rotation_point_dialog1.png
+
+<center>By default the rotation point is located in the Center of the bounding
+box of an object.</center>
+
+\image html set_rotation_point_dialog2.png
+
+<center>Unchecking <b>Use Bounding Box Center</b> checkbox allows you to
+define the coordinates of the rotation point manually.</center>
+
+<b>Set to Origin</b> button restores the default rotation point
+coordinates.\n
+<b>Select Point from View</b> button allows to select the rotation
+point in the 3D Viewer.
+<hr>
+
+\image html image89.gif
+\n <center><b>Rotation</b> - allows to rotate the selected object using the
+mouse.</center>
+
+\image html image102.gif
+
+<center>These buttons orientate the scene strictly about coordinate axes.</center>
+<hr>
+
+\image html image91.gif
+\n <center><b>Reset</b> - restores the default position (isometric) of
+objects in the scene.</center>
+<hr>
+
+\image html image103.gif
+\n <center><b>Memorise view</b> - saves the current position of
+objects in the scene.</center>
+<hr>
+
+\image html image105.gif
+\n <center><b>Restore view</b> - restores the saved position of
+objects in the scene.</center>
+<hr>
+
+\image html image86.gif
+\n <center><b>Clone view</b> - opens a new duplicate scene.</center>
+<hr>
+
+\image html image106.gif
+\n <center><b>Clipping</b> - allows to create cross-section views
+(clipping planes) of geometrical objects.</center>
+
+\image html clipping.png
+
+<ul>
+<li><b>Base point</b> - allows to define the coordinates of the base
+point for the clipping plane.</li>
+<ul>
+<li><b>Reset</b> - returns the base point to coordinate origin.</li>
+</ul>
+<li><b>Direction</b> - allows to define the orientation of the
+clipping plane.</li>
+<ul>
+<li><b>Invert</b> - allows to select which part of the object will be removed
+and which will remain after clipping.</li>
+</ul>
+<li><b>Preview</b> - allows to see the results of clipping in the
+viewer.</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page opening_studies_page Opening studies
+
+In \b SALOME all studies are stored in a special format *.hdf.
+
+<em>To open an existing study:</em>
+\par
+In the main toolbar click "Open document" button or from the main menu select <b>File > Open</b>
+option. From a standard Search File dialog box choose the required
+*.hdf file and click \b Open button.
+
+\image html open.jpg ""Open document" button"
+
+<em>To load an unloaded study (\ref saving_and_closing_studies_page
+"see also"):</em>
+\par
+From the main menu select <b>File > Connect</b> option. In the following
+dialog box select one of the studies, which has been previously
+created and unloaded and click \b Ok button:
+
+\image html loadstudy2.png
+
+\n\b Tip: After opening an existing study, you will see its structure
+in the \ref using_object_browser_page "Object Browser". It will contain the objects created with the
+help of different components during the previous study session. If you
+right-click on one of the objects and from the associated pop-up menu
+choose <b>Open With</b> option, which will automatically launch the component
+corresponding to this object.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page plot2d_viewer_page Plot 2D viewer
+
+\n <b>Plot 2d viewer</b> is destined to the representation of 2d
+plots and graphs in Post-Pro module.
+\n Its viewer toolbar gives you fast access to the following
+operations:
+
+\image html image77.gif
+<center><b>Dump View</b> - exports an object from the viewer in bmp,
+png, jpg or jpeg image format.</center>
+
+\image html image96.gif
+<center><b>Fit all</b> - scales the display to show the entire
+scene. Use this to resize the scene so that it could fit within the
+Viewer boundary.</center>
+
+\image html image97.gif
+<center><b>Fit area</b> - resizes the view to place in the visible
+area only the contents of a frame drawn with pressed left mouse
+button.</center>
+
+\image html image98.gif
+<center><b>Zoom</b> - allows to zoom in and out.</center>
+
+\image html image99.gif
+<center>\b Panning - if the represented objects are greater that the
+visible area and you don't wish to use Fit all functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+
+\image html image100.gif
+<center><b>Global panning</b> - allows to define the center of the
+scene presenting all displayed objects in the visible area.</center>
+
+\image html plot2d_points.gif
+<center><b>Draw Points</b> - represents points on the graph.</center>
+
+\image html plot2d_lines.gif
+<center><b>Draw Lines</b> - represents lines on the graph.</center>
+
+\image html plot2d_splines.gif
+<center><b>Draw Splines</b> - represents splines on the graph.</center>
+
+\image html plot2d_logarithmic_horizontal.gif
+<center><b>Horizontal axis logarithmic</b> - changes the scaling on
+horizontal axis to logarithmic.</center>
+
+\image html plot2d_logarithmic_vertical.gif
+<center><b>Vertical axis logarithmic</b> - changes the scaling on vertical
+axis to logarithmic.</center>
+
+\image html plot2d_legend.gif
+<center><b>Show Legend</b> - reveals all verbal and numerical
+information on the graphs.</center>
+
+\image html plot2d_settings.gif
+<center>\b Settings - calls a menu, in which you can specify advanced
+settings for your Plot 2d Viewer.</center>
+
+\image html plot2d_clone.gif
+<center><b>Clone view</b> - opens a new duplicate scene.</center>
+
+\anchor settings
+\n \image html plot2d_view_settings.png
+
+The options are as follows:
+<ul>
+<li><b>Main title:</b> the title of the XY plot. By default, it will
+consist of the names of the tables, on the basis of which the curve
+lines have been constructed.</li>
+<li><b>Curve type:</b> you can select from \b Points, \b Lines and \b Spline.</li>
+<li><b>Show legend:</b> here you can define the position of the
+description table on the XY plot (to the \b Left, to the \b Right, on
+\b Top or on \b Bottom).</li>
+<li><b>Marker size</b> - size of the points (markers) forming curve lines.</li>
+<li><b>Background color</b> of the XY plot.</li>
+<li><b>Scale mode:</b> here you can select the type of scaling (\b
+Linear or \b Logarithmic) along <b>X (Horizontal)</b> or <b>Y (Vertical)</b> axes.</li>
+</ul>
+
+You can define settings for each axis separately:
+<ul>
+<li>\b Horizontal or \b Vertical axis title.</li>
+<li><b>Grid/Axes marks:</b> here you can define the maximum number of major
+and minor scale divisions for a specified axis. The real number of
+intervals fits to {1,2,5}*10^N, where N is a natural number, and
+doesn't exceed the maximum.</li>
+<li><b>Save settings as default:</b> If this check box is marked, all
+XY plots will be displayed with these defined properties.</li>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page postpro_preferences_page Post-Pro Preferences
+
+In the Post-Pro module you can set preferences, default settings,
+which can be used in later sessions with this module.
+
+<h2>MED import Preferences</h2>
+
+\image html ppref1.png
+
+<ul>
+<li><b>MED files import</b></li>
+<ul>
+<li><b>Use Build Progress</b> - when this option is checked you can choose
+all other import MED options at the moment of loading of each file
+using <b>Build Progress</b> menu, otherwise the loading will be done
+according to the <b>Preferences</b> without addressing to the
+user.</li>
+<li><b>Full MED Loading</b> - when this option is checked, the MED file is
+fully loaded in the study, and no additional access to the MED file is
+needed during the session. Reversibly, when unchecked, the MED file is
+loaded on demand. This is the default behaviour in SALOME and
+recommended for big files to optimize memory usage.</li>
+<li><b>Build at once</b> - when this option is checked, you can't
+perform any operations until the MED file is fully loaded and
+processed.</li>
+<li><b>Build fields</b> - when this option is checked, the fields are
+built automatically at loading.</li>
+<li><b>Build min/max</b> - when this option is checked, minimum and
+maximum values of the time stamps are found at loading.</li>
+<li><b>Build groups</b> - when this option is checked, the groups and
+families are built automatically at loading.</li>
+<li><b>Close dialog at finish</b> - when this option is checked, the
+dialog box is closed after loading of the selected MED file. When
+unchecked, it allows loading other MED files.</li>
+</ul>
+</ul>
+
+<br><h2>Scalar Bar Preferences</h2>
+
+\image html pref31.png
+
+<ul>
+<li><b>Scalar Range</b></li>
+<ul>
+<li><b>Scalar Mode</b> - this feature allows refining the value to be
+inspected:</li>
+<ul>
+<li><b>Modulus:</b> value of a scalar or modulus of a vector.</li>
+<li><b>Component N:</b> Nth component of a vector, a tensor or a matrix.</li>
+</ul>
+<li><b>Logarithmic Scaling</b> - this checkbox toggles logarithmic
+scaling.</li>
+<li><b>Ranges to Use</b> - you can use either Field Range or Imposed Range.</li>
+</ul>
+<li><b>Min and Max for Imposed Range</b> - in this menu you can set
+the limits for your Imposed Range, if you have chosen to use it.</li>
+<li><b>Font</b> - in this menu you can set type, face and color for
+the font of <b>Title</b> and <b>Labels</b>.</li>
+<li><b>Colors & Labels</b> - in this menu you can set the <b>number of
+colors</b> and the <b>number of labels</b> in the Scalar bar.</li>
+<li><b>Orientation</b> - here you can choose between vertical and horizontal
+orientation of the Scalar Bar.</li>
+<li><b>Origin & Size Vertical & Horizontal</b> - allows to define
+placement (<b>X</b> and <b>Y</b>) and lookout (<b>Width</b> and
+<b>Height</b>) of Scalar Bars.</li>
+<ul>
+<li><b>X:</b> abscissa of the point of origin (from the left
+side)</li>
+<li><b>Y:</b> ordinate of the origin of the bar (from the bottom)</li>
+</ul>
+<li><b>Scalar bars default position</b></li>
+<ul>
+<li><b>Arrange Scalar Bars</b> - this option prevents superposition of
+scalar bars during visualisation of several fields in the same
+window. If checked, a separate scalar bar is displayed for each
+presentation.</li>
+</ul>
+</ul>
+
+<br><h2>Cut Lines Preferences</h2>
+
+\image html ppref2.png
+
+<ul>
+<li><b>CutLine Preferences</b></li>
+<ul>
+<li><b>Show preview</b> check box allows to edit the parameters of the
+presentation and simultaneously observe the preview of this
+presentation in the viewer.</li>
+<li><b>Invert all curves</b> check box allows to invert the resulting
+curves.</li>
+<li><b>Use absolute length</b> check box allows to use absolute length
+for curves.</li>
+<li><b>Generate Data Table:</b> If this check box is marked, <b>Post
+Pro</b> will automatically generate a data table on the basis of your
+Cut Lines presentation. This table will be created in the structure of
+the study.</li>
+<li><b>Generate Curves:</b> If this check box is marked, <b>Post Pro</b> will
+automatically generate curve lines on the basis of values taken from
+the generated data table. These curves will be created in the
+structure of the study and can be visualized in a XY plot.</li>
+</ul>
+</ul>
+
+<br><h2>Sweep Preferences</h2>
+
+\image html ppref3.png
+
+<ul>
+<li><b>Sweeping preferences</b></li>
+<ul>
+<li><b>Mode of the Sweeping</b> - allows to choose between Linear,
+Cosinusoidal and sinusoidal sweeping.</li>
+<li><b>Time step</b> - in this menu you can set the time of
+representation of one step.</li>
+<li><b>Number of cycles</b> - in this menu you can define the number
+of times this animation will be repeated.</li>
+<li><b>Number of steps</b> - in this menu you can define the number of
+steps, which will compose the whole animation.</li>
+<li><b>Parameter varies</b> - allows to choose the range for the
+parameter: from 0 to Pi or from Pi to -Pi.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Animation preferences</b></li>
+<ul>
+<li><b>Speed</b> - allows to define the speed of the animation.</li>
+<li><b>Cycled animation</b> - allows to start a cycled animation of the presentation.</li>
+<li><b>Use proportional timing</b> - allows to render the animation with proportional periods of time between every frame (not depending on the time stamps).</li>
+<li><b>Clean memory at each frame</b> - this option allows to optimize the performance of the operation.</li>
+</ul>
+</ul>
+
+<br><h2>Representation Preferences</h2>
+
+\image html pref33.png
+
+<ul>
+<li><b>Representation properties</b> - these checkboxes allow to
+choose the default representation type for each field presentation.</li>
+<ul>
+<li><b>Use Shading</b> - when this option is checked, the objects will
+be displayed with shading.</li>
+<li><b>Display only on creation</b> - when this option is checked, all
+previously created presentations will be automatically removed from
+the viewer when a new presentation is created and displayed. You can
+restore the previously created presentations using the Object
+Browser.</li>
+</ul>
+</ul>
+
+<br><h2>3D Cache</h2>
+
+\image.html pref40.png
+
+<ul>
+<li><b>3D Cache Preferences</b> - allow to define the mode of usage
+and the size of the 3D Cache, which enables to save in RAM and quickly
+restore the states of field animation.</li>
+<ul>
+<li><b>Memory Mode</b> - allows to define the mode of usage
+of the 3D Cache: <b>Minimal</b> actually disables the Cache,
+<b>Limited</b> Cache size depends on the current system
+configuration.</li>
+<li><b>Memory Limit</b> - allows to define the maximum size of the 3D
+Cache</li>
+</ul>
+</ul>
+
+
+<br><h2>Gauss Points Preferences</h2>
+
+\image html pref34.png
+
+<ul>
+<li><b>Primitive</b> - this menu allows user to choose the graphic
+primitive to use to present the results at Gauss points in the
+viewer.</li>
+<ul>
+<li><b>Primitive type</b> - provides choice between <b>Point
+sprites</b>, <b>Open GL points</b> and <b>Geometrical Spheres</b>.</li>
+<li><b>Maximum Size (Clamp)</b> - defines the maximum size of sprite
+points ranging from 1 to 512. By default the value is set to 256
+pixels.</li>
+<li><b>Main Texture</b> - path to the <b>Main Texture</b> (16x16
+pixels) which defines the shape of the point sprite used for
+rendering.</li>
+<li><b>Alpha Channel Texture (16*16)</b> - path to the <b>Alpha
+Channel Texture</b> which defines the texture of the point
+sprite.</li>
+<li><b>Alpha Channel Threshold</b> - defines the level of transparency
+ranging from 0 to 1.</li>
+<li><b>Geometrical Sphere Resolution</b> - defines the number of faces
+of <b>Geometry Spheres</b>.</li>
+<li><b>Notify when number of faces exceeds</b> - limitation of the
+number of faces; the user will be warned if it exceeds the given
+value.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Size</b> - in this menu you can define:</li>
+<ul>
+<li><b>Range value for min and max size</b> - these two parameters
+will be respectively multiplied by a reference length (average size of
+cells of the mesh) to define the range for minimum and maximum size of
+a point during rendering (at magnification = 100%). Default values
+are:</li>
+<ul>
+<li><b>Rainbow</b> scale: <b>min</b> = <b>10%</b>, <b>max</b> =
+<b>33%</b></li>
+<ul>
+<li>Min size is associated to the smallest real value (including
+negative values).</li>
+<li>Max size is associated to the largest real value.</li>
+</ul>
+<li><b>Bicolor</b> scale: <b>min</b> = <b>0</b> (not editable),
+<b>max</b> = <b>33%</b></li>
+<ul>
+<li>Null size is associated to the 0 scalar value.</li>
+<li>Max size is associated to the largest absolute value.</li>
+</ul>
+</ul>
+Both values are dynamically updated by the system according to the
+selected scalar bar. In the case of a Bicolor scale, the minimum value
+is set to 0 in the dialog and the control is disabled.
+<li><b>Magnification (%)</b> corresponds to the change of size of
+results at Gauss point primitives in 2D space. Acceptable values range
+from 0 to N; 100% means no magnification, 50% means half of its size,
+200% mean twice its size and so forth. By default this value is set to
+100%.</li>
+<li><b>+/- Ratio</b> corresponds to the number by which the
+magnification will be respectively multiplied or divided at edition,
+ranging from 0.01 to 10. By default this value is set to 2.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Geometry</b></li>
+<ul>
+<li><b>Size of points (%)</b> defines a value that will be multiplied
+by a reference length (representative of the average size of cells of
+the mesh) to define the size of points during rendering (at
+magnification = 100%). Default values 10%.</li>
+<li><b>Color</b> - allows to select the color of points used for
+presentations. Click on the colored line to access to the \ref
+select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Gauss Points Scalar Bar</b></li>
+<ul>
+<li><b>Active Bar</b> - this option allows to choose <b>Local</b> or
+<b>Global</b> Bar as active.</li>
+<li><b>Display Global Bar</b> - this option allows to visualize or to
+hide the Global Bar.</li>
+<li><b>Scalar Bar Mode</b> - this option allows to choose between
+<b>Bicolor</b> and <b>Rainbow</b> Scalar Bar Mode.</li>
+<li><b>Spacing</b> - allows to define Spacing from 0.01 to 1.</li>
+</ul>
+</ul>
+
+<br><br><b>Inside<b> and </b>Outside Cursor Preferences</b> allow to set
+<b>Primitives</b>, <b>Size</b> and <b>Magnification</b> for the
+respective zones.
+
+<br><h2>Picking Preferences</h2>
+
+\image html pref37.png
+
+<ul>
+<li><b>Cursor</b> - allows to adjust the Size of the cursor used for
+Picking (ranging from 0.1 to 1), the Height of the pyramids (ranging
+from 0 to 10) and the Selection cursor color.</li>
+<li><b>Tolerance</b> - defines at which distance of the cursor from
+the point it becomes selected (ranges from 0.001 to 10).</li>
+<li><b>Information window</b> - allows to define the
+<b>Transparency</b> (from 0% = opaque to 100% = transparent) and
+<b>Position</b> of the window, which can be:</li>
+<ul>
+<li><b>Centred below the point</b>, or</li>
+<li>located at <b>Top-left corner of the 3D view</b></li>
+</ul>
+<li><b>Movement of the Camera</b> can also be define by the user.</li>
+<ul>
+<li><b>Zoom at first selected point</b> - This value is used to define
+the focal distance at the first selected point (at the end of the
+movement of the camera). This value is a ratio that will be multiplied
+by the current zoom value.</li>
+<li><b>Number of steps between two positions</b> - defines the
+smoothness of camera movement at selection by the number of
+iterations. If set to 1 the camera is zoomed and centered at the point
+momentarily. Greater numbers mean very slow camera movement.</li>
+</ul>
+<li><b>Display parent mesh element</b> - allows to visualize or hide
+the patent mesh element of the selected gauss point.</li>
+</ul>
+
+<br><h2>Navigation Preferences</h2>
+
+\image html pref38.png
+
+<br>
+<ul>
+<li><b>Mouse</b></li>
+<ul>
+<li><b>Mouse Behaviour</b> - this option allows to choose one of the
+modes of work with mouse in Gauss Viewer.</li>
+<ul>
+<li><b>Salome Standard Controls</b> - allows to manipulate objects in the
+viewer with the mouse and locked Ctrl button: increase or decrease the
+zoom ratio with the left mouse button, translate object in any
+direction with the central mouse button or rotate it with the right
+mouse button.</li>
+<li><b>Keyboard Free</b> - allows to manipulate objects in the viewer
+with the mouse without locking Ctrl button. In this case the
+operations are assigned to the buttons differently: rotation is made
+with the left button, translation with the right and zoom with both
+pressed in the same time.</li>
+</ul>
+</ul>
+</ul>
+
+<ul>
+<li><b>Keyboard</b></li>
+<ul>
+<li><b>[+]/[-] Speed Increment</b> - defines the number of units by
+which the speed increases or respectively decreases after pressing [+]
+or [-] keyboard buttons.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Spacemouse</b> - a mouse-like manipulator device specially designed
+for working with 3D presentations, objects, etc. You can reassign the
+actions listed below to any of its buttons.</li>
+<ul>
+<li><b>Decrease Speed Increment</b> - decreases by 1 the speed increment used for the keyboard (same as [-] key).</li>
+<li><b>Increase Speed Increment</b> - increase by 1 the speed increment used for the keyboard (same as [+] key).</li>
+<li><b>Decrease Gauss Points Magnification</b> - divides the current magnification by the magnification ratio.</li>
+<li><b>Increase Gauss Points Magnification</b> - multiplies the current magnification by the magnification ratio.</li>
+<li><b>Dominant / combined switch</b> - toggles button to switch to dominant or combined movements.</li>
+</ul>
+</ul>
+
+<br><h2>Recorder Preferences</h2>
+
+\image html pref38.png
+
+<ul>
+<li><b>Settings</b></li>
+<ul>
+<li><b>Mode</b> - allows to choose from two recording regimes:</li>
+<ul>
+<li><b>Recording all displayed frames</b> - records exactly at the FPS rate specified by the user.</li>
+<li><b>Recording at a given FPS</b> - records only when the contents
+of the viewer change (some activity is performed). In the AVI file
+non-recorded images are substituted with the copies of the latest
+recorded image, which produces files with lower quality but requires
+less system resources. </li>
+</ul>
+<li><b>FPS</b> - allows to define the FPS (frames per second) rate for
+the clip. Set greater value for better quality.</li>
+<li><b>Quality</b> - allows to set the quality of the clip in the
+interval between 0 and 100.</li>
+<li><b>Progressive</b> - allows to record a progressive API
+file.</li>
+</ul>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page running_salome_page Running SALOME
+
+<em>To launch SALOME:</em>
+<ol>
+<li>Install the SALOME package into a definite directory (ex. \b SALOME)
+on your hard disk. It is preferable if you use the special
+installation procedure allowing to install the SALOME platform and
+all corresponding applications.</li>
+<li>The installation shell script will create a special file:
+<b>salome.csh</b> (CShell file) in your SALOME/KERNEL directory. This file
+contains all environment variables necessary for launching SALOME
+platform with other application products provided with SALOME
+installation package. You have a possibility to add one of them into
+your profile if you enter in the command console the following: <br><br>
+<tt>source salome.csh</tt>
+
+<b>Tip:</b> During the installation procedure you have a possibility to set your profile automatically.</li>
+
+<li> Launch SALOME platform, using the following Python script located
+in the <b>SALOME/KERNEL/bin/salome</b> directory:<br><br>
+<ul>
+<li>\b runSalome.py [command line options]
+</ul>
+</li>
+</ol>
+
+\anchor batch_mode_run
+
+<table>
+<tr>
+<td><h2>Options</h2></td>
+<td><h2>Description</h2></td>
+</tr>
+<tr>
+<td>--\b help or -\b h</td>
+<td>print this help</td>
+</tr>
+<tr>
+<td>--\b gui or -\b g</td>
+<td>launch with GUI</td>
+</tr>
+<tr>
+<td> --\b terminal or -\b t</td>
+<td>launch without GUI in batch mode</td>
+</tr>
+<tr>
+<td>--\b logger or -\b l</td>
+<td>redirects log messages in the file <em>logger.log</em></td>
+</tr>
+<tr>
+<td>--\b file=<b>\<FILE\></b> or -\b f=<b>\<FILE\></b></td>
+<td>redirects log messages in a custom file</td>
+</tr>
+<tr>
+<td>--\b xterm or -\b x</td>
+<td>the servers open an xterm window and log messages are displayed in this window</td>
+</tr>
+<tr>
+<td>--\b modules=\b module1,\b module2,... or -\b m=\b module1,\b module2,...</td>
+<td>list of SALOME modules which will be loaded into the module catalogue</td>
+</tr>
+<tr>
+<td>--\b embedded=<b>registry,study,moduleCatalog,cppContainer</b>,
+or -\b e=<b>registry,study,moduleCatalog,cppContainer</b></td>
+<td>embedded CORBA servers (default: registry,study,moduleCatalog,cppContainer)
+note that logger,pyContainer,supervContainer can't be embedded</td>
+</tr>
+<tr>
+<td>--\b standalone=<b>registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer</b>, or
+-\b s=<b>registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer</b></td>
+<td>standalone CORBA servers (default: pyContainer,supervContainer)</td>
+</tr>
+<tr>
+<td>--\b containers=<b>cpp,python,superv</b>
+or -\b c=<b>cpp,python,superv</b></td>
+<td>launch of cpp, python and supervision containers</td>
+</tr>
+<tr>
+<td>--\b portkill or -\b p</td>
+<td>kill SALOME launched with the current port</td>
+</tr>
+<tr>
+<td>--\b killall or -\b k</td>
+<td>kill SALOME</td>
+</tr>
+<tr>
+<td>--<b>interp</b>=<b>n</b> or -<b>i</b>=<b>n</b></td>
+<td>number of additional xterm to open, with session environment</td>
+</tr>
+<tr>
+<td>-\b z</td>
+<td>display splash screen</td>
+</tr>
+<tr>
+<td>-\b r</td>
+<td>disable centralized exception handling mechanism</td>
+</tr>
+</table>
+
+<b>Tip:</b> If the \b runSalome.py script is launched without prompting
+any options, they will be taken by default from the file <b>SalomeApp.xml
+(SALOME/GUI/share/salome/resources/SalomeApp.xml)</b>. If you are
+constantly launching SALOME with some specific options which are
+different from the defaults, you can edit this file according to your
+requirements. So the next time you run SALOME, you won't have to enter
+these numerous command console options.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page salome_architecture_page SALOME architecture
+
+
+\b SALOME architecture is based on \b CORBA technology using
+distributed system model of applications. This architecture takes the
+concept of multitier client/server to its natural conclusion. The
+distributed system model exposes all functionality of the application
+as objects, each of which can use any of the services provided by
+other objects in the system, or even objects in other systems. The
+architecture can also blur the distinction between "client" and
+"server" because the client components can also create objects that
+behave in server-like roles. This architecture provides the ultimate
+in flexibility.
+
+
+
+The distributed system architecture achieves its flexibility by
+encouraging (or enforcing) the definition of specific component
+interfaces. The interface of a component specifies to other components
+what services are offered by that component and how they are used. As
+long as the interface of a component remains constant, that
+component's implementation can change dramatically without affecting
+other components.
+
+
+
+All software components (Post-Pro, Geometry, Mesh...) integrated into
+\b SALOME platform implement predefined interfaces. Each component
+provides data for the \b SALOME study in a form of links (stored in
+the Study) to the specific data created and stored in the
+component. All components represent \b CORBA servers and it allows to
+run them on different host stations.
+
+\image html image67.gif
+
+
+It is equally possible to create engine-independent modules. These
+modules may not use CORBA at all, and can have internal data structure
+which can be written in pure C++ (or python). Such modules are located
+inside SALOME GUI process and from the point of view of the end user
+have no difference with standard components. Such modules not using
+the standard tools of SALOME platform are defined on a special
+separated level named CAM. CAM component is the basis for new SALOME
+GUI and contains all basic functionality for working with modules
+(loading; saving, closing, customization of toolbar and menu).
+
+
+
+Another fundamental piece of the \b SALOME architecture is the use of
+the Interface Definition Language (IDL). IDL, which specifies
+interfaces between CORBA components, is instrumental in ensuring
+CORBA's language independence. Because interfaces described in IDL can
+be mapped to any programming language, CORBA applications and
+components are thus independent of the language(s) used to implement
+them.
+
+
+Additional information about CORBA technology
+is available at http://www.omg.org
+
+\note In \b SALOME there is a possibility to run
+definite components in the so-called \ref batch_mode_run "batch mode" without GUI provided
+by GUI component. In this case you can work with these components with
+the help of Python commands and scripts.
+
+
+The architecture of this all-inclusive
+platform for numerical components responds to the following
+objectives:
+<ol>
+<li>\b Flexibility : the creation and modification of computation
+schemes must be easy. The developer must have easy access to all
+modeling parameters to create domain-specific tools adapted to new
+situations or to test new numerical algorithms. SALOME allows
+integration and implementation of numerical and physical components
+derived from existing code.</li>
+<li>\b Productivity : the implementation of code is simple for the
+user and the reuse of components (within other environments for
+macro-components) is noticeably facilitated.</li>
+<li> \b Performance :\b SALOME is able to more finely simulate
+phenomena that is more complex in scale and in physical coupling
+requirements. \b SALOME economically exploits the performance of used
+machines (massively parallel processors, PC clusters, etc).</li>
+<li> \b Expandability: on the one hand, software technologies and
+physical architectures evolve rapidly compared to the development
+time, validation and use of a scientific application while on the
+other hand, the development of a database model adapted to the
+totality of exchanges between components can be achieved
+incrementally. \b SALOME is able to easily follow these
+developments.</li>
+</ol>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page salome_desktop_page SALOME desktop
+
+The main SALOME Desktop consists of the following sections and
+toolbars:
+
+\image html geomview-alt.png
+
+<b>Basic parts of the SALOME Desktop:</b>
+<ul>
+<li><b>Main menu</b> - This is a set of context-sensitive menus, which will
+be updated according the functionality of the loaded component. In
+general, these menus contain all functional options of SALOME
+platform.</li>
+<li><b>Standard Toolbar</b> - This toolbar contains icons allowing
+creating/saving studies, correcting mistakes, copying/pasting
+objects.</li>
+<li><b>Components Toolbar</b> - This toolbar is destined for uploading
+components in SALOME platform.</li>
+<li><b>Module Toolbar</b> - This toolbar contains icons specific to the
+loaded module.</li>
+<li><b>Viewer Toolbar</b> - This is a set of tools destined for visualization
+of the presentations in the viewer.</li>
+</ul>
+
+ All toolbars in the
+\b SALOME Platform are context-sensitive. Loading of a definite component
+(Geometry, Post-Pro, Mesh etc.) will automatically add some additional
+toolbars specific to this component. To display/hide a definite
+toolbar, in the main menu choose <b>View > Toolbars</b>, and from this
+submenu check or uncheck the toolbar, you would like to display/hide.
+
+ By default all
+toolbars are located on the top of the SALOME desktop. But you can
+relocate toolbars by dragging with the mouse and dropping it in any
+place of the window.
+
+<b>Parts of the study window:</b>
+<ul>
+<li><b>Object Browser</b> - Management of objects created or imported into
+SALOME application.</li>
+<li>\b Viewer - This window is destined for visualization of
+presentations.</li>
+<li><b>Python console</b> - Window for Python interpreter. This window
+functions like a standard document: the pop-up menu invoked by
+right-click in this window gives access to
+<b>Copy/Paste/SelectAll/ClearAll</b> options.</li>
+</ul>
+
+ Object Browser, Python
+Console, MenuBar, etc are, in fact, separate dockable windows.
+Dockable windows can be placed in special areas, on the borders of
+desktop like toolbars. You can change the size and the position of
+dockable windows, hide them or even place outside desktop. SALOME
+saves in the same file all positions and sizes of dockable windows. It
+means that the difference in settings of the same windows (for example
+Python console) is possible between different modules (the same window
+can have different size and position when other module is
+activated). Also each module can indicate which common windows are
+necessary for working, and only they will be displayed when this
+module is active.
+
+ Starting from the
+version 3.0.0 Salome uses a <b>Multi-Desktop Approach</b>. Multi-desktop
+Approach means that now there is separate Desktop for each document
+(Study) and all windows connected to a Study (viewers, dockable
+windows etc) are placed in one container. It is very comfortable,
+because you can't mix up windows from different studies. This approach
+positively differs from the classic multi document interface in case
+if many windows are used, i.e. when one document contains a lot of
+viewers, dialogs, etc. Each desktop also has its own menu and toolbar.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page salome_preferences_page SALOME preferences
+
+To begin setting preferences for your study, select \b Preferences in the
+main menu, the following dialog box will appear:
+
+\image html pref11.png
+If you've just started your study and haven't yet loaded other
+modules, you'll be able to change only those settings, which refer to
+the whole GUI SALOME session. These settings will be valid for the
+whole study session.
+
+<h2>General Preferences</h2>
+
+<ul>
+<li><b>Study Properties</b></li>
+<ul>
+<li><b>MultiFile Save</b> - if checked in, your study will be saved in
+several HDF files (one file for the data created by each component
+used during the study session).</li>
+<li><b>ASCII Save</b> - if checked in, your study will be saved in
+ASCII format file (or files).</li>
+<li><b>Store positions of windows</b> - if checked in, positions of windows
+will be saved in a special file at the end of the current session and
+then restored for a new session.</li>
+<li><b>Store/restore last GUI state</b> - if checked in, all GUI settings are
+saved with the rest of the data whenever you save the study. When the
+study is reopened, the GUI state is restored.</li>
+</ul>
+<li><b>External browser</b></li>
+<ul>
+<li>\b Application - this option allows you to set an external browser (IE,
+Netscape) which will be used for viewing SALOME reference manuals. By
+default, Mozilla is used. Press the "<b>...</b>" button(see
+the picture below) to browse for the application you need in the data
+tree of your computer.</li>
+<li>\b Parameters</li>
+</ul>
+<li><b>Python console properties</b> - here you can quickly set the
+parameters (style, size, face) of the font used in your Python
+console.</li>
+</ul>
+\par
+For detailed settings in \ref select_color_and_font_page "Select Font"
+dialog box press the "<b>...</b>" button(see the picture below).
+
+\image html image69.gif ""..." button"
+
+<br><h2>Viewers Preferences</h2>
+
+\image html pref12.png
+
+<ul>
+<li><b>OCC and VTK 3D Viewers</b></li>
+<ul>
+<li><b>Trihedron size</b> - this submenu allows to set the size of
+coordinate axes displayed in the viewer.</li>
+<li><b>Background Color</b> - this submenu allows to select background
+color. Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Number of isolines along U</b> (or <b>V</b>) - this submenu allows to specify
+the number of isolines along the axes of coordinates.</li>
+<li><b>Relative size</b> - if checked in, trihedron axes scale to fit the
+size of the area displayed in 3D Viewer.</li>
+</ul>
+<br>
+<li><b>Plot2d Viewer</b></li>
+<ul>
+<li><b>Legend Position</b> - this submenu allows to set the default position
+of the legend, it can be located to the left, to the right, on top or
+on bottom of the graph.</li>
+<li><b>Curve Type</b> - this allows to set the representation of graphs in
+your presentations. You can see only <b>Points</b>, points connected with
+<b>Lines</b> or points connected with smooth <b>Splines</b>.</li>
+<li><b>Marker Size</b> - this submenu allows you to set the size of
+markers in your graphs</li>
+<li><b>Horizontal & Vertical Axis Scale</b> - this submenu allows you to set
+the scale for vertical and horizontal axes. It can be either <b>Linear</b> or
+<b>Logarithmic</b></li>
+<li>Background Color - this submenu allows to select the background
+color. Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+<br>
+<li><b>Graph Supervisor</b></li>
+<ul>
+<li><b>Background Color</b> - this submenu allows to select background
+color. Click on the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+<li><b>Title Color</b> - this submenu allows to select title color. Click on
+the colored line to access to the
+\ref select_color_and_font_page "Select Color" dialog box.</li>
+</ul>
+</ul>
+
+<br><h2>Directories Preferences</h2>
+
+\image html pref13.png
+
+<ul>
+<li>
+<b>Quick Directory List</b> - this section allows to create and manage
+a custom quick directory list. To add a directory in the list, press
+the "Add directory" button:
+\image html image70.gif
+
+then the "<b>...</b>" button and browse the data tree for the
+directory you need.
+The "Up" and "Down" buttons(see the picture below) help you to sort
+the directories in the list:
+\image html image73.gif
+
+\image html image75.gif
+To remove the selected directory from the list, press the "Delete"
+button:
+\image html image72.gif
+</li>
+</ul>
+
+<br><h2>Object Browser Preferences</h2>
+
+\image html pref14.png
+
+<ul>
+<li><b>Object browser settings</b></li>
+<ul>
+<li><b>Auto size for the first column</b> - this checkbox enables automatic
+resizing for the first column.</li>
+<li><b>Auto size for other columns</b> - this checkbox enables
+automatic resizing for the other columns.</li>
+</ul>
+</ul>
+
+<ul>
+<li><b>Default columns</b> - these checkboxes allow to display or hide <b>Value</b>,
+<b>Entry</b>, <b>IOR</b> and <b>Reference entry</b> columns in the Object Browser.</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page saving_and_closing_studies_page Saving and closing studies
+
+In \b SALOME a study can be saved in \b HDF binary (by default) or \b ASCII
+files (see also: \ref salome_preferences_page "Setting ASCII save option").
+
+You can also specify two options of saving your study:
+<ul>
+<li><b>In one HDF file:</b> in this case all components used during this
+study session will write their data into one common HDF file.
+</li>
+<li>
+<b>In multiple files</b> (see also: \ref salome_preferences_page
+"Setting Multifile save option") : in this
+case SALOME will create one base HDF file which will store the main
+information about the saved study and several other special files with
+particular extensions storing the data written by each component which
+has been used during this study session. Opening of this study
+requires that \b ALL saved files should be stored in the \b SAME directory.
+If you would like to copy your saved study in another directory or
+machine, you should copy all stored files. Otherwise, if you try to
+open this study, some data will be lost and it will lead to invalid
+functioning of the SALOME platform.
+</li>
+</ul>
+
+Saving a study you also save its layout, i.e. all positions and sizes
+of dockable windows. It means that the difference in settings of the
+same windows (for example Python console) is possible between
+different modules (the same window can have different size and
+position when other module is activated). Also each module can
+indicate which common windows are necessary for working, and only they
+will be displayed when this module is active.
+
+<em>To save an existing study:</em>
+\par
+In the main toolbar click "Save document" button or from the main menu
+select <b>File > Save</b> option. Your study will be automatically
+updated.
+
+\image html save.jpg ""Save document" button"
+
+\note If your study hasn't been previously saved, this option will
+call the standard Search File dialog box where you can enter the name
+for your study and save it.
+
+<em>To save a study with a new name:</em>
+\par
+From the main menu select <b>File > Save as</b> option. In the standard
+Search File dialog box enter a new name for your study and click \b Save
+button.
+
+<em>To save the current layout of the GUI:</em>
+\par
+From the main menu select <b>File > Save VISU State</b>. The current
+state of the graphic interface is published in Object Browser in the
+folder GUI states and can be at any time \b Restored, \b Renamed or \b
+Deleted. This operation saves and allows to
+restore almost all GUI settings: names, position, zooming and panning
+of viewers and all displayed objects (in Post-Pro module only).
+
+<em>To close a study:</em>
+\par
+In the main toolbar click "Close document" button or from the main menu select <b>File > Close</b>
+option or click on the cross in the upper right corner of the study
+window.
+
+\image html image94.gif ""Close document" button"
+
+\note If your study hasn't been previously saved, this option will
+call the following dialog box with several options:
+
+\image html closestudy.png
+
+\n\b Unload option allows to unload your current study from the SALOME
+Desktop. In the same working session you can reload it again (see:
+\ref opening_studies_page "Opening studies"). But if you quit the SALOME application, all changes
+in the unloaded study will be lost.
+
+*/
--- /dev/null
+/*!
+
+\page select_color_and_font_page Select Color and Font
+
+<b>Select Color</b> and <b>Select Font</b> menus are used in many
+Preferences.
+
+<br><h2>Select color</h2>
+
+\image html selectcolor.png
+
+This menu allows to choose from either predefined <b>Basic Colors</b>
+grouped in the upper left corner of the window or <b>Custom Colors</b>, which
+you can define yourselves. To define a Custom Color, click on one of
+the Custom Color cells, select the color you need in the field of
+colors or by typing in its numeric parameters in the lower right
+corner of the window, then click <b>Add to Custom Colors</b> button. The
+chosen color will be added to <b>Custom Colors</b> table.
+
+<br><h2>Select font</h2>
+
+\image html selectfont.png
+
+This menu provides a wide choice of \b Fonts, <b>Font Styles</b> and
+\b Sizes. Characters can be underlined or struck out. It is possible to
+preview them in the \b Sample window. \b Script dialog-box gives the
+possibility to use not only Latin and Latin Extended but also
+Cyrillic, Greek, Arabic, Runic and many other subsets.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page setting_preferences_subpage Setting Preferences
+
+In \b SALOME you can set preferences for each module in the common editor
+of preferences. SALOME preferences refer to the whole GUI SALOME
+session, other preferences are module-specific and are accessible only
+after you load a respective module.
+\n When you change settings (click \b OK or \b Apply button) each module
+receives the notification about what preferences are changed. You can
+also click \b Defaults button to restore default preferences or \b Close
+button to quit the menu without any changes.
+\n \b Import button allows to load a user file containing preferences
+from your home directory through a standard Import dialog box.
+
+\image html import.png
+
+This file has no extension and by default starts with
+.SalomeApprc. followed by Salome version number. There exists one file
+for each Salome version in use.
+\n The preferences, set during the current study session, are
+automatically saved in this file at the end of the session. Next time
+you launch SALOME application, these preferences will be restored.
+
+\note The preferences you set will be default preferences for all \b new
+objects, but they are not retroactive and do not automatically apply
+to the existing objects.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page setting_preferences_page Setting Preferences
+
+<ul>
+<li>\subpage setting_preferences_subpage</li>
+<li>\subpage select_color_and_font_page</li>
+<li>\subpage salome_preferences_page</li>
+<li>\subpage geometry_preferences_page</li>
+<li>\subpage mesh_preferences_page</li>
+<li>\subpage postpro_preferences_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page setting_study_properties_page Setting study properties
+
+<em>To view the properties of the current study:</em>
+\par
+From the main menu select \b File > \b Properties option. The following
+dialog box will appear:
+
+\image html studyproperties.png
+
+This dialog box gives complete information about your study.
+
+<em>To change the name of the study author:</em>
+\par
+In this dialog box click on the \b Author field and enter a new name.
+
+<em>To view the list of changes made with your study:</em>
+\par
+In this dialog box click on the \b Modifications field and scroll it
+down. Each record contains the following information: date and time of
+modification of the study, name of the user, who has made these
+changes.
+
+<em>To lock your study for modifications:</em>
+\par
+In the dialog box shown on the picture above click on the \b Locked
+field and choose \b Yes item.
+
+In this case your study will be locked for any kind of modifications
+for all users. Next time you try to edit it, you will see the
+following warning message:
+
+\image html lockedstudy.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page study_management_page Study management
+
+<ul>
+<li>\subpage creating_new_study_page</li>
+<li>\subpage opening_studies_page</li>
+<li>\subpage saving_and_closing_studies_page</li>
+<li>\subpage editing_studies_page</li>
+<li>\subpage displaying_studies_page</li>
+<li>\subpage working_with_python_scripts_page</li>
+<li>\subpage setting_study_properties_page</li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page using_catalog_generator_page Using Catalog Generator (for advanced users)
+
+SALOME platform is an open platform for
+integration of your custom components, which can used in the same way
+as typical modules provided in the standard installed package. The
+<b>Catalog Generator</b> tool serves for implementation of the interface of
+your custom component. It allows to generate from IDL description of
+your component interface its xml description. The component xml
+description allows SALOME application to know about the component and
+its services and provides the possibility to call the component
+services, for example, inside Supervisor module.
+
+If you have a look at runSalome,
+runSalomeWithPort scripts running SALOME application, which are stored
+in build/bin directory you will see that SALOME_ModuleCatalog_Server
+is started with two xml files as its input parameters:
+\b CatalogModuleGeneral.xml and \b CatalogModulePersonnel.xml. These two
+files store the descriptions of interfaces and services of all
+components, provided with typical SALOME package. To add a new
+component into SALOME platform you should either update one of these
+existing xml files with generated xml description of your component or
+create a new one.
+
+<em>To open the Catalog Generator:</em>
+\par
+From the main menu choose <b>Tools > Catalog Generator</b>, the following
+dialog box will appear:
+
+\image html cataloggenerator.png
+
+<br>In this dialog box you can specify:
+<ul>
+<li>Name and location of the IDL file describing the interface of your
+component (Click the \b Browse button to find it using the data tree).</li>
+<li>Name and location of an existing XML file, which will be updated
+with the interface of you component or name and desired location of a
+new XML file, which will be generated (Click the \b Browse button to find
+it using the data tree).</li>
+<li>Name of the author.</li>
+<li>Name of the component.</li>
+<li>Name of the user.</li>
+<li>Version.</li>
+<li>Capability of multi study support.</li>
+<li>Type of the component.</li>
+<li>Icon of your component (Click the \b Browse button to find it using
+the data tree).</li>
+</ul>
+
+\note If you have chosen to create a new xml file containing the
+description of your component, don't forget to specify it as
+input parameter for SALOME_ModuleCatalog_Server in the file, you are
+using as a running script of SALOME platform (in runSalomeWithPort,
+for example).
+
+When launching SALOME next time you will see your module alongside other components.
+
+\b Tip: You can use the <b>Catalog Generator</b> tool, if you would like to \b
+test the functionality of your new component. After implementation of
+your component interface, launch SUPERVISION module where you can try
+using the services of your new component. (see also: Adding factory
+nodes)
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page using_object_browser_page Using Object Browser
+
+The <b>Object Browser</b> in SALOME is destined for displaying the
+structure of the current study in a tree-like form. It contains:
+
+<ul>
+<li>components, loaded during the current session</li>
+<li>objects created with the help of different components (The objects
+created with the help of a definite component are located in the
+folder having the name of this component)
+</li>
+<li>references to different objects (they are highlighted in red)</li>
+</ul>
+
+\image html objectbrowser1.png
+
+\note The <b>Object Browser</b> is destined to getting quick access to
+different objects created during SALOME session. All pop-up menus
+associated with the objects displayed in the Object Browser are
+context-sensitive. So it depends on a definite currently loaded SALOME
+component what options you will see in the pop-up menu, if you
+right-click on a definite object in the Object Browser.
+
+The Object Browser may contain supplementary attributes of the objects
+displayed in additional columns. By default, these columns are not
+displayed - displaying/hiding these columns is possible through
+\ref salome_preferences_page "setting study preferences" or
+right-clicking on the attributes bar and toggling the necessary
+attributes.
+
+\image html objectbrowser2.png
+
+<ul>
+<li>\b Entry - Identification index of the object in the structure of
+the study</li>
+<li>\b IOR - Interoperable Object Reference</li>
+<li><b>Reference entry</b> - Identification index of the references
+to the objects</li>
+<li>\b Value - Displays the value of the first object attribute</li>
+</ul>
+
+\note <b>Entry, IOR and Reference entry</b> attributes are displayed for debugging purposes only.
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page using_registry_tool_page Using Registry tool
+
+\b Registry tool is in the SALOME platform is destined for providing
+information about the processes (components), which have ever been
+launched in the current study session.
+
+<em>To view the Registry:</em>
+\par
+From the main menu choose <b>Tools > Registry display</b>, the
+following dialog box will appear:
+
+\image html registry1.png
+
+\b Running tab of this dialog box displays a list of the currently
+started processes (components) with supplementary information on each
+of them divided into columns:
+
+<ul>
+<li>\b Component: name of the started component
+<li>\b PID: process identification number
+<li>\b User \b Name: name of the user launching the component
+<li>\b Machine: name of the machine, on which the process has been started
+<li>\b begins: date and time of the starting of the component
+<li>\b hello: date and time of the last call to the component
+</ul>
+
+\b History tab displays a list of all processes, which have ever been
+launched within this study session. It contains the same supplementary
+information on each of the processes (components).
+
+\b Refresh button allows to refresh the current list of processes
+(components).
+
+\b Interval button allows to set an interval for refreshment of the
+current list of processes (components).
+
+\image html registry3.png
+
+<em>To display complete information on a definite process
+(component):</em>
+\par
+Double-click on this process (component). The following window will
+appear:
+
+\image html registry4.png
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page viewers_page Viewers
+
+<ul>
+<li>\subpage occ_3d_viewer_page</li>
+<li>\subpage vtk_3d_viewer_page</li>
+<li>\subpage plot2d_viewer_page</li>
+</ul>
+
+*/
--- /dev/null
+/*!
+
+\page vtk_3d_viewer_page VTK 3D Viewer
+
+<b>VTK 3D viewer</b> is the default viewer for Mesh Module, allowing to
+visualize meshes. It is also used in Post-Pro module for all 3D
+presentations except for Gauss Points.
+
+The functionalities of VTK viewer are available via its Viewer
+Toolbar. Buttons marked with small downward triangles have extended
+functionality which can be accessed by locking on them with left mouse
+button.
+
+\image html image157.gif "Viewer Toolbar"
+
+<hr>
+\image html image77.gif
+\n <center><b>Dump View</b> - exports an object from the viewer in bmp, png, jpg
+or jpeg image format.</center>
+<hr>
+
+\image html image88.gif
+\n <center><b>Show/Hide Trihedron</b> - shows or hides coordinate axes.</center>
+<hr>
+
+\image html image96.gif
+\n <center><b>Fit all</b> - scales the presentation so that it could
+fit within the Viewer boundaries. </center>
+<hr>
+
+\image html image97.gif
+\n <center><b>Fit area</b> - resizes the view to place in the visible area
+only the contents of a frame drawn with pressed left mouse button.</center>
+<hr>
+
+\image html image98.gif
+\n <center><b>Zoom</b> - allows to zoom in and out.</center>
+<hr>
+
+\image html image99.gif
+\n <center><b>Panning</b> - if the represented objects are greater that the
+visible area and you don't wish to use <b>Fit all</b> functionality, click on
+this button and you'll be able to drag the scene to see its remote
+parts.</center>
+<hr>
+
+\image html image100.gif
+\n <center><b>Global panning</b> - allows to select a point to be the
+center of the presentation showing all displayeed objects in the
+visible ares <center>
+<hr>
+
+\image html view_rotation_point.png
+\n <center><b>Change rotation point</b> - allows to to choose the point around
+which the rotation is performed.</center>
+
+\image html set_rotation_point_dialog1.png
+
+<center>By default the rotation point is located in the Center of the bounding
+box of an object.</center>
+
+\image html set_rotation_point_dialog2.png
+
+<center>Unchecking <b>Use Bounding Box Center</b> checkbox allows you to
+define the coordinates of the rotation point manually.</center>
+
+<b>Set to Origin</b> button restores the default rotation point
+coordinates.\n
+<b>Select Point from View</b> button allows to select the rotation
+point in the 3D Viewer.
+<hr>
+
+\image html image89.gif
+\n <center><b>Rotation</b> - allows to rotate the selected object using the
+mouse.</center>
+
+\image html image102.gif
+
+<center>These buttons orientate the scene strictly about coordinate axes.</center>
+<hr>
+
+\image html image91.gif
+\n <center><b>Reset</b> - restores the default position (isometric) of
+objects in the scene.</center>
+<hr>
+
+\image html urbutton.png
+\n <center><b>Update Rate</b> - allows to define the Update Rate for
+the presentations displayed in the viewer</center>
+
+\image html updaterate.png
+
+<ul>
+<li><b>Desired Update Rate, FPS</b> - allows to set the target Update
+Rate</li>
+<li><b>Still Update Rate, FPS</b> - allows to set the Update Rate for
+the periods when both the user and the application do not perform any
+actions in the viewer</li>
+<li><b>Current Update Rate, FPS</b> - shows the Update Rate currently
+available on your configuration</li>
+<li><b>Number of Cells</b> - shows the number of cells currently in
+display</li>
+</ul>
+
+\image html image108.gif
+\n <center><b>Scaling</b> - represents objects deformed (stretched or
+stuffed) along the axes of coordinates.</center>
+<hr>
+
+\image html image109.gif
+\n <center><b>Graduated axes</b> - allows to define parameters of axes
+and graduate them.</center>
+
+\image html graduatedaxes1.png
+
+<ul>
+<li><b>Axis name</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the axis name is displayed in the
+viewer.</li>
+<li><b>Name</b> - allows to redefine the name of the axis.</li>
+<li><b>Font</b> - allows to define color and properties of the font of
+axis name.</li>
+</ul>
+<li><b>Labels</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the labels are displayed in the
+viewer.</li>
+<li><b>Number</b> - allows to define the number of labels.</li>
+<li><b>Offset</b> - allows to define the distance between labels.</li>
+<li><b>Font</b> - allows to define color and properties of the font of
+labels names.</li>
+</ul>
+<li><b>Tick marks</b></li>
+<ul>
+<li><b>Is visible</b> - if checked the tick marks are displayed in the
+viewer.</li>
+<li><b>Length</b> - allows to define the length of tick marks.</li>
+</ul>
+<li><b>Is visible</b> - if checked the axis is displayed in the
+viewer. </li>
+</ul>
+
+*/
\ No newline at end of file
--- /dev/null
+/*!
+
+\page working_with_python_scripts_page Working with Python Scripts
+
+\b SALOME Platform can be launched in the batch mode, without Graphical
+User Interface, and operated with the use of Python scripts, which can
+fulfill most of the necessary tasks, however, the process of scripting
+is quite time consuming and rather error-prone.
+\n This problem has been resolved by the possibility to automatically
+generate a set of Python scripts from data created with SALOME GUI,
+which greatly increases the productivity of using SALOME platform in
+the batch mode. This mechanism can convert a SALOME Study in one or
+several Python scripts, which can be stored and imported later to
+re-create the content of the original study. The first script is a
+SALOME document, which re-creates the SALOME Study, adds the
+stored Salome components to the SALOME and automatically calls
+Python scripts of the second type containing component specific Python
+function calls. This architecture gives great flexibility in manual
+modification of the generated scripts because you can modify only one
+of the component specific Python scripts without touching others, thus
+avoiding expert knowledge of Python API of unused components.
+
+To Dump a SALOME Study in one or several scripts, in the main menu
+select \b File --> <b>Dump study</b>
+\n The following dialog box allowing to browse for the location and
+define the name for a Python file will appear:
+
+\image html dumpstudy.png
+
+\par
+<ul>
+<li>
+<b>Publish in study</b> - if checked in, the component objects created by
+Python commands will be published in the created Study when the script
+is played, otherwise the objects will not be published in the Study.
+</li>
+<li>
+<b>Save GUI state</b> - if checked in, the current application layout will be
+saved in the Python file.
+</li>
+</ul>
+To confirm your choice click \b Save.
+
+Reversibly it is possible to load a saved Python Script selecting in
+the main menu \b File -> <b>Load Script</b>.
+
+\image html loadscript.png
+
+\par
+To confirm your choice click \b Open.
+
+*/
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Introduction to GUI</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-family:'Times New Roman' , serif; }\r
-ul.whs2 { list-style:disc; }\r
-p.whs3 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs4 { margin-left:40px; font-family:'Times New Roman' , serif; }\r
-p.whs5 { font-family:'Times New Roman' , serif; margin-left:120px; }\r
-p.whs6 { margin-left:120px; font-family:'Times New Roman' , serif; }\r
-p.whs7 { text-align:justify; }\r
-p.whs8 { margin-left:0px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs8 {margin-left:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="BSSC Special Effects" src="ehlpdhtm.js"></script><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nIntroduction to GUI");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Introduction to GUI</h1>\r
-\r
-<p class="whs1"><span style="font-family: 'Times New Roman', serif;"><span \r
- style="font-weight: bold;"><B>GUI</B></span> (Graphical User Interface) provides \r
- a common shell for all components, which can be integrated into the SALOME \r
- platform.</span></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1"><span style="font-weight: bold;"><B>GUI \r
- </B></span>component in SALOME platform provides:</p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<ul type="disc" class="whs2">\r
- \r
- <li class=kadov-p><p class="whs3">Common \r
- desktop environment (<a href="kernel/salome_pro_desktop.htm">SALOME desktop</a>) \r
- for all components</p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Component \r
- integration and management: uploading, switching, component menus/toolbars \r
- handling </p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Study \r
- management (creation, saving, loading, editing studies)</p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Multi-window \r
- management in the framework of one study</p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Management \r
- of objects created or imported into the SALOME application (<a href="kernel/using_object_browser.htm">Object \r
- Browser</a>) </p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Integrated \r
- Python interpreter </p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Output \r
- messages window</p></li>\r
- \r
- <li class=kadov-p><p class="whs3">Additional \r
- tools : <a href="kernel/using_catalog_generator.htm">Catalogue Generator</a>, \r
- <a href="kernel/using_registry.htm">Registry tool</a></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Standard \r
- viewers for data visualization:</p></li>\r
-</ul>\r
-\r
-<p class="whs5">- \r
- VTK 3d viewer,</p>\r
-\r
-<p class="whs5">- \r
- OCC 3d viewer,</p>\r
-\r
-<p class="whs5">- \r
- Gauss Points viewer</p>\r
-\r
-<p class="whs5">- \r
- Plot 2d viewer,</p>\r
-\r
-<p class="whs6">- \r
- Supervision viewer.</p>\r
-\r
-<p class="whs7"> </p>\r
-\r
-<p class="whs8">Since version 3.0.0 SALOME GUI is based on \r
- SUIT (Salome User Interface Toolkit) that proposes very flexible, powerful \r
- and safe mechanisms of interaction with SALOME tool components (both CORBA \r
- and standalone), resources management, viewers and selection handling, \r
- exception/signals processing, bringing to top multi-desktop dockable-windowed \r
- user interface which improves the usability of SALOME GUI.</p>\r
-\r
-<p class="whs8">All Graphical User Interfaces of standard \r
- modules have plug-in structure, i.e. each module is placed in a dynamic \r
- library which is loaded on demand. All modules can create their own menu \r
- items, buttons in toolbar, windows etc</p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-\r
-\r
-<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Introduction to SALOME','Introduction_to_SALOME_PRO.htm','SALOME desktop','SALOME_PRO_desktop.htm');return false;" title="Related Topics"><img src="ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
-\r
-\r
- \r
-\r
-<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
-if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
- WritePopupMenuLayer();\r
-//--></script><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-|SourceProjectName:KERNEL.hpr\r
-|DestinationProjectName:index.htm\r
-whhost.js\r
-whmsg.js\r
-whmozemu.js\r
-whproxy.js\r
-whstub.js\r
-whutils.js\r
-whver.js\r
-whform.js\r
-whphost.js\r
-whstart.js\r
-whtopic.js\r
-whframes.js\r
-whlang.js\r
-whskin_info.htm\r
-whskin_blank.htm\r
-whskin_pickup.htm\r
-whskin_homepage.htm\r
-whskin_tw.htm\r
-whnjs.htm\r
-whthost.js\r
-whtdhtml.htm\r
-whihost.js\r
-whibody.htm\r
-whiform.htm\r
-whfhost.js\r
-whfbody.htm\r
-whfform.htm\r
-whghost.js\r
-whgbody.htm\r
-whgdhtml.htm\r
-whgdef.htm\r
-whproj.js\r
-whproj.xml\r
-whproj.htm\r
-whxdata\whtoc.xml\r
-whxdata\whidx.xml\r
-whxdata\whfts.xml\r
-whxdata\whglo.xml\r
-whdata\whtoc.js\r
-whdata\whtoc.htm\r
-whdata\whtdata.js\r
-whdata\whidx.js\r
-whdata\whidx.htm\r
-whdata\whidata.js\r
-whdata\whfts.js\r
-whdata\whfts.htm\r
-whdata\whglo.js\r
-whdata\whglo.htm\r
-whdata\whgdata.js\r
-whdata\whftdata.js\r
-whdata\whfwdata.js\r
-whres.xml\r
-webhelp.jar\r
-webhelp.cab\r
-whgdata\whnvp30.htm\r
-whgdata\whnvp31.htm\r
-whgdata\whnvp32.htm\r
-whgdata\whnvp33.htm\r
-whgdata\whnvt30.htm\r
-whgdata\whnvt31.htm\r
-whgdata\whnvt32.htm\r
-whgdata\whnvt33.htm\r
-whgdata\whnvf30.htm\r
-whgdata\whnvf31.htm\r
-whgdata\whnvf32.htm\r
-whgdata\whnvf33.htm\r
-whgdata\whnvl31.htm\r
-whgdata\whnvl32.htm\r
-whgdata\whnvl33.htm\r
-whgdata\whexpbar.gif\r
-cshdat_webhelp.htm\r
-whcsh_home.htm\r
-whcshdata.htm\r
-cshdat_robohelp.htm\r
-whd_topic.xml\r
-whd_nvp10.htm\r
-whd_nvp20.htm\r
-whd_tabs.htm\r
-whd_dpns.htm\r
-whd_tab0.gif\r
-whd_tab1.gif\r
-whd_tab2.gif\r
-whd_tab3.gif\r
-whd_tab4.gif\r
-whd_tab5.gif\r
-whd_tab6.gif\r
-whd_tab7.gif\r
-whd_tab8.gif\r
-whd_toc1.gif\r
-whd_toc2.gif\r
-whd_toc3.gif\r
-whd_toc4.gif\r
-whd_show0.gif\r
-whd_show1.gif\r
-whd_show2.gif\r
-whd_hide0.gif\r
-whd_hide1.gif\r
-whd_hide2.gif\r
-whd_sync0.gif\r
-whd_sync1.gif\r
-whd_sync2.gif\r
-whd_prev0.gif\r
-whd_prev1.gif\r
-whd_prev2.gif\r
-whd_next0.gif\r
-whd_next1.gif\r
-whd_next2.gif\r
-whd_wbsh0.gif\r
-whd_wbsh1.gif\r
-whd_wbsh2.gif\r
-whidhtml.htm\r
-whfdhtml.htm\r
-index_hha.hhk\r
-index.hhc\r
-index.hhk\r
-dump_study.htm\r
-geom_preferences.htm\r
-introduction_to_gui.htm\r
-kernel\about_salome_pro_architecture.htm\r
-kernel\about_salome_pro_help_system.htm\r
-kernel\creating_a_new_study.htm\r
-kernel\displaying_studies.htm\r
-kernel\editing_studies.htm\r
-kernel\getting_properties_of_the_study.htm\r
-kernel\getting_started2.htm\r
-kernel\introduction.htm\r
-kernel\introduction_to_salome_pro.htm\r
-kernel\navigating_topics.htm\r
-kernel\opening_studies.htm\r
-kernel\readme.html\r
-kernel\running_salome_pro.htm\r
-kernel\salome_pro_desktop.htm\r
-kernel\saving_a_study.htm\r
-kernel\setting_preferences.htm\r
-kernel\using_catalog_generator.htm\r
-kernel\using_left-hand_tabs.htm\r
-kernel\using_object_browser.htm\r
-kernel\using_registry.htm\r
-mesh_preferences.htm\r
-occ_3d_viewer.htm\r
-post-pro_preferences.htm\r
-select_color_and_font.htm\r
-setting_preferences.htm\r
-vtk_3d_viewer.htm\r
-ehelp.xml\r
-robohhre.lng\r
-texture_horiz_ltbluebubbles.jpg\r
-index.glo\r
-default.css\r
-kernel\progresspage.png\r
-pics\set_rotation_point_dialog1.png\r
-kernel\choicepage.png\r
-pics\registry1.png\r
-pics\open.jpg\r
-pics\set_rotation_point_dialog2.png\r
-pics\image91.gif\r
-pics\icon_about.png\r
-pics\registry3.png\r
-pics\studyproperties.png\r
-pics\graduatedaxes1.png\r
-pics\image100.gif\r
-pics\registry4.png\r
-pics\cataloggenerator.png\r
-tip1.gif\r
-kernel\batchmode.png\r
-kernel\readmepage.png\r
-pics\ppref1.png\r
-pics\pref31.png\r
-pics\save.jpg\r
-pics\image157.gif\r
-pics\image102.gif\r
-kernel\productpage1.png\r
-pics\ppref2.png\r
-pics\pref21.png\r
-image70.gif\r
-pics\newsticn.jpg\r
-pics\image103.gif\r
-pics\image95.gif\r
-kernel\productpage2.png\r
-kernel\logocorp.png\r
-pics\ppref3.png\r
-pics\pref33.png\r
-pics\pref22.png\r
-pics\pref11.png\r
-image71.gif\r
-pics\clipping.png\r
-pics\image96.gif\r
-kernel\progresspage1.png\r
-pics\pref34.png\r
-pics\pref23.png\r
-pics\pref12.png\r
-image94.gif\r
-closestudy.png\r
-image72.gif\r
-pics\copy-paste.jpg\r
-pics\image86.gif\r
-pics\image105.gif\r
-pics\image97.gif\r
-pics\pref24.png\r
-pics\pref13.png\r
-pics\selectfont.png\r
-pics\view2.png\r
-image54.jpg\r
-image73.gif\r
-pics\selectcolor.png\r
-pics\image106.gif\r
-pics\view_rotation_point.png\r
-pics\image98.gif\r
-kernel\intropage.png\r
-kernel\application.png\r
-pics\pref14.png\r
-pics\dumpstudy.png\r
-pics\neo-view2.png\r
-pics\image99.gif\r
-pics\image88.gif\r
-pics\image77.gif\r
-pics\pref37.png\r
-pics\pref15.png\r
-image75.gif\r
-i_blue.jpg\r
-pics\image108.gif\r
-pics\image89.gif\r
-pics\pref38.png\r
-image65.gif\r
-note1.gif\r
-pics\image109.gif\r
-pics\pref39.png\r
-pics\import.png\r
-pics\objectbrowser1.png\r
-pics\objectbrowser2.png\r
-image67.gif\r
-kernel\productpage.png\r
-pics\loadscript.png\r
-pics\geomview-alt.png\r
-pics\lockedstudy.png\r
-pics\loadstudy2.png\r
-image68.gif\r
-image69.gif\r
-index.ppf\r
-ehlpdhtm.js\r
-ss_btn_related_topics.gif\r
-default_ns.css\r
-whxdata\whtdata0.xml\r
-whxdata\whftdata0.xml\r
-whxdata\whfwdata0.xml\r
-whxdata\whgdata0.xml\r
-whdata\whtdata0.htm\r
-whdata\whftdata0.htm\r
-whdata\whfwdata0.htm\r
-whdata\whgdata0.htm\r
-whgdata\whlstt0.htm\r
-whgdata\whlstt1.htm\r
-whgdata\whlstt2.htm\r
-whgdata\whlstt3.htm\r
-whgdata\whlstt4.htm\r
-whgdata\whlstt5.htm\r
-whgdata\whlstt6.htm\r
-whgdata\whlsti0.htm\r
-whgdata\whlstfl0.htm\r
-whgdata\whlstfl1.htm\r
-whgdata\whlstfl2.htm\r
-whgdata\whlstfl3.htm\r
-whgdata\whlstfl4.htm\r
-whgdata\whlstfl5.htm\r
-whgdata\whlstfl6.htm\r
-whgdata\whlstfl7.htm\r
-whgdata\whlstfl8.htm\r
-whgdata\whlstfl9.htm\r
-whgdata\whlstfl10.htm\r
-whgdata\whlstfl11.htm\r
-whgdata\whlstfl12.htm\r
-whgdata\whlstfl13.htm\r
-whgdata\whlstfl14.htm\r
-whgdata\whlstfl15.htm\r
-whgdata\whlstfl16.htm\r
-whgdata\whlstfl17.htm\r
-whgdata\whlstfl18.htm\r
-whgdata\whlstfl19.htm\r
-whgdata\whlstfl20.htm\r
-whgdata\whlstfl21.htm\r
-whgdata\whlstfl22.htm\r
-whgdata\whlstfl23.htm\r
-whgdata\whlstfl24.htm\r
-whgdata\whlstfl25.htm\r
-whgdata\whlstfl26.htm\r
-whgdata\whlstf0.htm\r
-whgdata\whlstf1.htm\r
-whgdata\whlstf2.htm\r
-whgdata\whlstf3.htm\r
-whgdata\whlstf4.htm\r
-whgdata\whlstf5.htm\r
-whgdata\whlstf6.htm\r
-whgdata\whlstf7.htm\r
-whgdata\whlstf8.htm\r
-whgdata\whlstf9.htm\r
-whgdata\whlstf10.htm\r
-whgdata\whlstf11.htm\r
-whgdata\whlstg0.htm\r
-index.htm\r
-index_csh.htm\r
-index_rhc.htm\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>MESH preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; border-style:none; width:752px; height:646px; float:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { margin-left:48px; }\r
-p.whs5 { font-weight:bold; margin-left:0px; }\r
-p.whs6 { margin-left:0px; font-weight:bold; }\r
-p.whs7 { font-weight:bold; margin-left:48px; }\r
-p.whs8 { margin-left:0px; font-weight:normal; }\r
-p.whs9 { margin-left:38px; }\r
-p.whs10 { margin-left:38px; font-weight:bold; }\r
-p.whs11 { font-weight:bold; margin-left:38px; }\r
-p.whs12 { font-weight:normal; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs5 {margin-left:1pt; }";\r
- strNSS += "p.whs6 {margin-left:1pt; }";\r
- strNSS += "p.whs8 {margin-left:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nSetting Preferences\nMesh preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Mesh preferences</h1>\r
-\r
-<p>In the Mesh module you can set mesh preferences, which can be used in \r
- later sessions with this module. </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1">General Preferences</p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/pref21.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Update</p></li>\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1"> <span \r
- style="font-weight: normal;">If you toggle</span> \r
- Automatic Update<span style="font-weight: normal;"> checkbox, the model \r
- in your viewer automatically updated whenever you make changes in it.</span></p></li>\r
- </ul>\r
- \r
- <li class=kadov-p><p class="whs1">Quality Controls.</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Display entity, </B></span>both faces and edges \r
- of an object will be displayed in the viewer by default .<span style="font-weight: bold;"> \r
- <B></B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Use precision</B></span> checkbox, you can display \r
- numbers in<span style="font-weight: bold;"><B> Quality Control</B></span> diagrams \r
- at the necessary level of precision.</p></li>\r
- \r
- <li class=kadov-p><p class="whs5">Precision \r
- - <span style="font-weight: normal;">can be defined by</span> <span style="font-weight: normal;">the \r
- </span>Number of digits after point<span style="font-weight: normal;"> \r
- in the corresponding field. By default, numbers in </span>Quality Control<span \r
- style="font-weight: normal;"> diagrams are presented as integers.</span> \r
- </p></li>\r
- \r
- <li class=kadov-p><p class="whs5">Display \r
- mode - <span style="font-weight: normal;">allows to set Wireframe, Shading, \r
- Nodes or Shrink presentation mode as default.</span> </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs6">Mesh \r
- export </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">If you toggle <span \r
- style="font-weight: bold;"><B>Automatically create groups for MED export</B></span> \r
- checkbox, this operation will be carried out automatically.</p></li>\r
-</ul>\r
-\r
-<p class="whs7"> </p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs6">Mesh Preferences</p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs1"><img src="pics/pref22.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Nodes</B></span> \r
- </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Color</B></span> \r
- - allows \r
- to select the color of nodes. Click on the colored line to access to the \r
- <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select \r
- Color</a></B></span> dialog box. </p></li>\r
- \r
- <li class=kadov-p><p class="whs10">Size \r
- - <span style="font-weight: normal;">allows to define the size of nodes.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs1">Elements</p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Fill \r
- </B></span> - \r
- allows to select the color of surface of elements (seen in Shading mode). \r
- Click on the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Outline</B></span> \r
- - allows to select the color of borders of elements. Click on the colored \r
- line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select \r
- Color</a></B></span> dialog box. </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Back \r
- Face</B></span> - allows to select the color of interior surface of elements. \r
- Click on the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of lines (edges and borders of elements).</p></li>\r
- \r
- <li class=kadov-p><p class="whs10">Shrink \r
- coef. - <span style="font-weight: normal;">allows to define relative space \r
- of elements compared to gaps between them in shrink mode</span></p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1">Selection Preferences</p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/pref23.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Selection - <span style="font-weight: normal;">performed \r
- with mouse-indexing (preselection) and left-clicking on an object, whose \r
- appearance changes as defined in the</span> Preferences.</p></li>\r
- \r
- <li class=kadov-p><p class="whs11">Object \r
- Color - <span style="font-weight: normal;">allows \r
- to select the color of mesh (edges and borders of meshes) of the selected \r
- entity. Click on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs11">Element \r
- color - <span style="font-weight: normal;">allows to select the color \r
- of surface of selected elements (seen in Shading mode).</span> <span style="font-weight: normal;">Click \r
- on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of selected edges.</p></li>\r
- \r
- <li class=kadov-p><p class="whs1">Preselection - <span \r
- style="font-weight: normal;">performed with mouse-indexing on an object, \r
- whose appearance changes as defined in the</span> Preferences.</p></li>\r
- \r
- <li class=kadov-p><p class="whs11">Highlight \r
- Color - <span style="font-weight: normal;">allows \r
- to select the color of mesh (edges and borders of meshes) of the entity \r
- . Click on the colored line to access to the <a href="select_color_and_font.htm" style="font-weight: bold;">Select \r
- Color</a> dialog box.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Width</B></span> \r
- - allows to define the width of preselected edges.</p></li>\r
- \r
- <li class=kadov-p><p class="whs1">Precision<span style="font-weight: normal;"> \r
- - in this menu you can set the value of precision used for </span>Nodes<span \r
- style="font-weight: normal;"> and </span>Elements<span style="font-weight: normal;">.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1">Scalar Bar Preferences</p>\r
-\r
-<p class="whs12"> </p>\r
-\r
-<p class="whs12"><img src="pics/pref24.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Font - </B></span>in \r
- this menu you can set type, face and color for the font of<span style="font-weight: bold;"><B> \r
- Title</B></span> and<span style="font-weight: bold;"><B> Labels.</B></span></p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Colors & \r
- Labels - </B></span>in this menu you can set the<span style="font-weight: bold;"><B> \r
- number of colors </B></span>and the<span style="font-weight: bold;"><B> number \r
- of labels</B></span> in use<span style="font-weight: bold;"><B>.</B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs1">Orientation - <span \r
- style="font-weight: normal;">here you can choose between vertical and \r
- horizontal orientation of the</span> Scalar Bar.</p></li>\r
- \r
- <li class=kadov-p><p class="whs5">Origin \r
- & Size Vertical & Horizontal - a<span style="font-weight: normal;">llows \r
- to define placement (</span>X <span style="font-weight: normal;">and</span> \r
- Y<span style="font-weight: normal;">) and lookout (</span>Width and Height) \r
- <span style="font-weight: normal;">of Scalar Bars</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs11">X: \r
- <span style="font-weight: normal;">abscissa of the point of origin (from \r
- the left side)</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs11">Y: \r
- <span style="font-weight: normal;">ordinate of the origin of the bar (from \r
- the bottom)</span></p></li>\r
-</ul>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>OCC 3D Viewer</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-img_whs1 { border:none; border-style:none; width:313px; height:26px; float:none; }\r
-ul.whs2 { list-style:disc; }\r
-img_whs3 { border:none; border-style:none; width:26px; height:25px; float:none; }\r
-img_whs4 { border:none; border-style:none; width:27px; height:25px; float:none; }\r
-img_whs5 { border:none; border-style:none; width:24px; height:23px; float:none; }\r
-img_whs6 { border:none; border-style:none; width:24px; height:24px; float:none; }\r
-img_whs7 { border:none; border-style:none; width:25px; height:24px; float:none; }\r
-img_whs8 { border:none; border-style:none; width:23px; height:23px; float:none; }\r
-p.whs9 { margin-top:0pt; margin-bottom:0pt; }\r
-img_whs10 { border:none; border-style:none; width:20px; height:20px; float:none; }\r
-p.whs11 { margin-left:80px; }\r
-img_whs12 { border:none; border-style:none; width:410px; height:255px; float:none; }\r
-img_whs13 { border:none; border-style:none; width:26px; height:26px; float:none; }\r
-img_whs14 { border:none; border-style:none; width:78px; height:147px; float:none; }\r
-img_whs15 { border:none; border-style:none; width:26px; height:24px; float:none; }\r
-img_whs16 { border:none; border-style:none; width:28px; height:29px; float:none; }\r
-img_whs17 { border:none; border-style:none; width:29px; height:26px; float:none; }\r
-img_whs18 { border:none; border-style:none; width:395px; height:280px; float:none; }\r
-p.whs19 { margin-left:40px; }\r
-p.whs20 { margin-left:84px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs9 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nViewers\nOCC 3D Viewer");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>OCC 3D Viewer</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>OCC (Open CasCade) 3D viewer</B></span> \r
- has been developed on the basis of Open CASCADE Technology. This is the \r
- default viewer for Geometry Module, providing good representation of construction \r
- and transformation of geometrical objects. Only this viewer allows to \r
- work with groups and sub-shapes. This viewer can also work in Mesh module, \r
- however, it doesn't allow to visualize meshes. </p>\r
-\r
-<p> </p>\r
-\r
-<p>The functionalities of OCC viewer are available via its Viewer Toolbar. \r
- Buttons marked with small downward triangles have extended functionality \r
- which can be accessed by locking on them with left mouse button. </p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/image95.gif" x-maintain-ratio="TRUE" width="313px" height="26px" border="0" class="img_whs1"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs2">\r
- \r
- <li class=kadov-p><p><img src="pics/image77.gif" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs3"> <span style="font-weight: bold;"><B>Dump \r
- View</B></span> - exports an object from the viewer in bmp, png, jpg or jpeg \r
- image format. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image88.gif" x-maintain-ratio="TRUE" width="27px" height="25px" border="0" class="img_whs4"> <span style="font-weight: bold;"><B>Show/Hide \r
- Trihedron</B></span> - shows or hides coordinate axes. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image96.gif" x-maintain-ratio="TRUE" width="24px" height="23px" border="0" class="img_whs5"> <span \r
- style="font-weight: bold;"><B>Fit all - </B></span>allows \r
- to select a point to be the center of a scene representing all displayed \r
- objects in the visible area.<span style="font-weight: bold;"> <B></B></span></p></li>\r
- \r
- <li class=kadov-p><p> <img src="pics/image97.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs6"> <span style="font-weight: bold;"><B>Fit area</B></span> - resizes \r
- the view to place in the visible area only the contents of a frame drawn \r
- with pressed left mouse button.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image98.gif" x-maintain-ratio="TRUE" width="25px" height="24px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Zoom</B></span> \r
- - allows \r
- to zoom in and out. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image99.gif" x-maintain-ratio="TRUE" width="23px" height="23px" border="0" class="img_whs8"> <span style="font-weight: bold;"><B>Panning</B></span> \r
- - if the represented objects are greater that the visible area and you \r
- don't wish to use <span style="font-weight: bold;"><B>Fit all</B></span> functionality, \r
- click on this button and you'll be able to drag the scene to see its remote \r
- parts. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image100.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs6"> <span style="font-weight: bold;"><B>Global \r
- panning</B></span> - represents all displayed objects in the visible area. \r
- </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs2">\r
- \r
- <li class=kadov-p><p class="whs9"><img src="pics/view_rotation_point.png" x-maintain-ratio="TRUE" width="20px" height="20px" border="0" class="img_whs10"> <span style="font-weight: bold;"><B>Change rotation point</B></span> \r
- - allows to to choose the point around which the rotation is performed. \r
- </p></li>\r
-</ul>\r
-\r
-<p class="whs11"><img src="pics/set_rotation_point_dialog1.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11">By default the rotation point is located \r
- in the Center of the bounding box of an object. </p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11"><img src="pics/set_rotation_point_dialog2.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11">Unchecking <span style="font-weight: bold;"><B>Use \r
- Bounding Box Center</B></span> box allows you to define the coordinates of \r
- the rotation point manually. </p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11"><span style="font-weight: bold;"><B>Set to Origin</B></span> \r
- button restores the default rotation point coordinates.</p>\r
-\r
-<p class="whs11"><span style="font-weight: bold;"><B>Select Point \r
- from View</B></span> button allows to select the rotation point in the 3D \r
- Viewer</p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs2">\r
- \r
- <li class=kadov-p><p><img src="pics/image89.gif" x-maintain-ratio="TRUE" width="26px" height="26px" border="0" class="img_whs13"> <span style="font-weight: bold;"><B>Rotation</B></span> \r
- - allows to rotate the selected object using the mouse. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image102.gif" x-maintain-ratio="TRUE" width="78px" height="147px" border="0" class="img_whs14"> These buttons orientate the scene \r
- strictly about coordinate axes.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image91.gif" x-maintain-ratio="TRUE" width="26px" height="26px" border="0" class="img_whs13"> <span style="font-weight: bold;"><B>Reset</B></span> \r
- - restores the default position (isometric) of objects in the scene.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image103.gif" x-maintain-ratio="TRUE" width="26px" height="24px" border="0" class="img_whs15"> <span style="font-weight: bold;"><B>Memorise \r
- view</B></span> - saves the current position of objects in the scene</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image105.gif" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs3"> <span style="font-weight: bold;"><B>Restore \r
- view - </B></span>restores the<span style="font-weight: bold;"> <B></B></span>saved \r
- position of objects in the scene</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image86.gif" x-maintain-ratio="TRUE" width="28px" height="29px" border="0" class="img_whs16"> <span style="font-weight: bold;"><B>Clone \r
- view</B></span> - opens a new duplicate scene.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image106.gif" x-maintain-ratio="TRUE" width="29px" height="26px" border="0" class="img_whs17"> <span style="font-weight: bold;"><B>Clipping \r
- -</B></span> allows to create cross-section views (clipping planes) of geometrical \r
- objects.</p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p class="whs11"><img src="pics/clipping.png" x-maintain-ratio="TRUE" width="395px" height="280px" border="0" class="img_whs18"></p>\r
-\r
-<p class="whs19"> </p>\r
-\r
-<ul type="disc" class="whs2">\r
- \r
- <li class=kadov-p><p class="whs19"><span style="font-weight: bold;"><B>Base \r
- point</B></span> - allows to define the coordinates of the base point for \r
- the clipping plane. Click </p></li>\r
- \r
- <li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Reset</B></span> \r
- - returns the base point to coordinate origin. </p></li>\r
- \r
- <li class=kadov-p><p class="whs19"><span style="font-weight: bold;"><B>Direction</B></span> \r
- - allows to define the orientation of the clipping plane.</p></li>\r
- \r
- <li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Invert</B></span> \r
- - allows to select which part of the object will be removed and which \r
- will remain after clipping. </p></li>\r
- \r
- <li class=kadov-p><p class="whs19"><span style="font-weight: bold;"><B>Preview</B></span> \r
- - allows to see the results of clipping in the viewer.</p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Post-Pro Preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; width:752px; height:646px; float:none; border-style:none; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { font-weight:bold; margin-left:38px; }\r
-p.whs5 { margin-left:38px; }\r
-p.whs6 { font-weight:normal; }\r
-p.whs7 { font-weight:bold; margin-left:57px; }\r
-p.whs8 { font-weight:bold; margin-left:0px; }\r
-p.whs9 { margin-left:0px; font-weight:bold; }\r
-p.whs10 { margin-left:38px; font-weight:bold; }\r
-p.whs11 { margin-left:36px; }\r
-p.whs12 { margin-left:0px; text-align:justify; }\r
-ol.whs13 { list-style:disc; }\r
-p.whs14 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
-p.whs15 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:bold; }\r
-img_whs16 { border:none; width:752px; height:646px; float:none; }\r
-p.whs17 { font-weight:bold; margin-left:36px; }\r
-p.whs18 { margin-left:0px; text-align:justify; font-weight:bold; }\r
-p.whs19 { margin-left:0px; text-align:justify; font-weight:normal; }\r
-p.whs20 { text-align:justify; font-weight:bold; margin-left:38px; }\r
-ul.whs21 { list-style:square; }\r
-p.whs22 { font-style:normal; }\r
-p.whs23 { margin-left:76px; }\r
-p.whs24 { text-align:justify; font-weight:bold; margin-left:0px; }\r
-p.whs25 { margin-left:38px; text-align:justify; font-weight:bold; }\r
-p.whs26 { text-align:justify; font-weight:bold; margin-left:76px; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs8 {margin-left:1pt; }";\r
- strNSS += "p.whs9 {margin-left:1pt; }";\r
- strNSS += "p.whs12 {margin-left:1pt; }";\r
- strNSS += "p.whs14 {margin-left:1pt; }";\r
- strNSS += "p.whs15 {margin-left:1pt; }";\r
- strNSS += "p.whs18 {margin-left:1pt; }";\r
- strNSS += "p.whs19 {margin-left:1pt; }";\r
- strNSS += "p.whs24 {margin-left:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nSetting Preferences\nPost-Pro Preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Post-Pro Preferences</h1>\r
-\r
-<p>In the Post-Pro module you can set preferences, default settings, which \r
- can be used in later sessions with this module. </p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1"><span><B>MED import Preferences</B></span></p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/ppref1.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">MED files import </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Use \r
- Build Progress - <span style="font-weight: normal;">when this option is \r
- checked you can choose all other import MED options at the moment of loading \r
- of each file using </span>Build Progress<span style="font-weight: normal;"> \r
- menu, otherwise the loading will be done according to the </span>Preferences<span \r
- style="font-weight: normal;"> without addressing to the user.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Full \r
- MED Loading - <span style="font-weight: normal;">when this option is checked, \r
- the MED file is fully loaded in the study, and no additional access to \r
- the MED file is needed during the session. Reversibly, when unchecked, \r
- the MED file is loaded on demand. This is the default behaviour in SALOME \r
- and recommended for big files to optimize memory usage.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Build \r
- at once</B></span> - when this option is checked, you can't perform any operations \r
- until the MED file is fully loaded and processed. </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Build \r
- fields - <span style="font-weight: normal;">when \r
- this</span> <span style="font-weight: normal;">option is checked, the \r
- fields are built automatically at loading. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Build \r
- min/max - <span style="font-weight: normal;">when this option is checked, \r
- minimum and maximum values of the time stamps are found at loading. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Build \r
- groups - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
- is checked, the groups and families are built automatically at loading. \r
- </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Close \r
- dialog at finish - <span style="font-weight: normal;">when this option \r
- is checked, the dialog box is closed after loading of the selected MED \r
- file. When unchecked, it allows loading other MED files. </span></p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1">Scalar Bar Preferences</p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/pref31.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Scalar Range </p></li>\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Scalar \r
- Mode</B></span> - this feature allows refining the value to be inspected:</p></li>\r
- \r
- <li class=kadov-p><p class="whs7">Modulus: \r
- <span style="font-weight: normal;">value of a scalar or modulus of a vector.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs7">Component \r
- N: <span style="font-weight: normal;">Nth component of a vector, a tensor \r
- or a matrix..</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Logarithmic \r
- Scaling</B></span> - this checkbox toggles logarithmic scaling.</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Ranges \r
- to Use</B></span> - you can use either Field Range or Imposed Range.<span \r
- style="margin-left: 0px;"> </span><span style="margin-left: 0px; text-indent: 12px;">.</span></p></li>\r
- </ul>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Min and Max for \r
- Imposed Range</B></span> - in this menu you \r
- can set the limits for your Imposed Range, if you have chosen to use it.</p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Font - </B></span>in \r
- this menu you can set type, face and color for the font of<span style="font-weight: bold;"><B> \r
- Title</B></span> and<span style="font-weight: bold;"><B> Labels.</B></span></p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Colors & \r
- Labels - </B></span>in this menu you can set the<span style="font-weight: bold;"><B> \r
- number of colors </B></span>and the<span style="font-weight: bold;"><B> number \r
- of labels</B></span> in the Scalar bar<span style="font-weight: bold;"><B>.</B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs1">Orientation - <span \r
- style="font-weight: normal;">here you can choose between vertical and \r
- horizontal orientation of the</span> <span style="font-weight: normal;">Scalar \r
- Bar.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs8">Origin \r
- & Size Vertical & Horizontal - a<span style="font-weight: normal;">llows \r
- to define placement (</span>X <span style="font-weight: normal;">and</span> \r
- Y<span style="font-weight: normal;">) and lookout (</span>Width and Height) \r
- <span style="font-weight: normal;">of Scalar Bars</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">X: \r
- <span style="font-weight: normal;">abscissa of the point of origin (from \r
- the left side)</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Y: \r
- <span style="font-weight: normal;">ordinate of the origin of the bar (from \r
- the bottom)</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs9">Scalar \r
- bars default position</p></li>\r
- \r
- <li class=kadov-p><p class="whs10">Arrange \r
- Scalar Bars - <span style="font-weight: normal;">this option prevents \r
- superposition of scalar bars during visualisation of several fields in \r
- the same window. If checked, a separate scalar bar is displayed for each \r
- presentation.</span></p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p class="whs1">Cut Lines Preferences</p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1"><img src="pics/ppref2.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">CutLine Preferences \r
- </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Show \r
- preview </B></span>check box allows to edit the parameters of the presentation \r
- and simultaneously observe the preview of this presentation in the viewer.</p></li>\r
- \r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Invert \r
- all curves</B></span> check box allows to invert the resulting curves. </p></li>\r
- \r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Use \r
- absolute length </B></span>check box allows to use absolute length for curves. \r
- </p></li>\r
- \r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Generate \r
- Data Table: </B></span>If this check box is marked, <span style="font-weight: bold;"><B>Post \r
- Pro</B></span> will automatically generate a data table on the basis of your \r
- Cut Lines presentation. This table will be created in the structure of \r
- the study. <span style="font-weight: bold;"><B> </B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Generate \r
- Curves: </B></span>If this check box is marked, <span style="font-weight: bold;"><B>Post \r
- Pro</B></span> will \r
- automatically generate curve lines on the basis of values taken from the \r
- generated data table. These curves will be created in the structure of \r
- the study and can be visualized in a XY plot. </p></li>\r
-</ul>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs1"><span><B>Sweep Preferences</B></span></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs6"><img src="pics/ppref3.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Sweeping preferences</p></li>\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs12"><span \r
- style="font-weight: bold;"><B>Time step -</B></span> in this menu you can set \r
- the<span style="font-weight: bold;"> <B></B></span>time of representation of \r
- one step.</p></li>\r
- \r
- <li class=kadov-p><p class="whs12"><span \r
- style="font-weight: bold;"><B>Number of cycles -</B></span> in this menu you \r
- can define the number of times this animation will be repeated.</p></li>\r
- \r
- <li class=kadov-p><p class="whs12"><span \r
- style="font-weight: bold;"><B>Number of steps</B></span> - in this menu you can \r
- define the number of steps, which will compose the whole animation.</p></li>\r
- </ul>\r
-</ul>\r
-\r
-<p class="whs12"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Animation preferences</p></li>\r
-</ul>\r
-\r
-<ol type="disc" class="whs13">\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs14"><span style="font-weight: bold;"><B>Speed</B></span> \r
- - allows to define the speed of the animation.</p></li>\r
- \r
- <li class=kadov-p><p class="whs14"><span style="font-weight: bold;"><B>Cycled \r
- animation</B></span> - allows to start a cycled animation of the presentation.</p></li>\r
- \r
- <li class=kadov-p><p class="whs15">Use proportional \r
- timing -<span style="font-weight: normal;"> allows to render the animation \r
- with proportional periods of time between every frame (not depending on \r
- the time stamps).</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs15">Clean memory at \r
- each frame - <span style="font-weight: normal;">this option allows to \r
- optimize the performance of the operation.</span></p></li>\r
- </ul>\r
-</ol>\r
-\r
-<p class="whs12"> </p>\r
-\r
-<p class="whs4"> </p>\r
-\r
-<p class="whs9">Representation Preferences</p>\r
-\r
-<p class="whs9"> </p>\r
-\r
-<p class="whs8"><img src="pics/pref33.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs16"></p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Representation properties \r
- - <span style="font-weight: normal;">these checkboxes allow to choose \r
- the default representation type for each field presentation.</span><span \r
- style="margin-left: 40px; text-align: justify;"> </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Use \r
- Shading - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
- is checked, the objects will be displayed with shading.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Display \r
- only on creation<span style="font-weight: normal;"> - when this option \r
- is checked, all previously created presentations will be automatically \r
- removed from the viewer when a new presentation is created and displayed. \r
- You can restore the previously created presentations using the Object \r
- Browser. </span></p></li>\r
-</ul>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8">Gauss Points Preferences</p>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<p class="whs8"><img src="pics/pref34.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Primitive - <span style="font-weight: normal;">this \r
- menu allows user to choose the graphic primitive to use to present the \r
- results at Gauss points in the viewer.</span><span style="margin-left: 40px; text-align: justify;"> \r
- </span></p></li>\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs18">Primitive type \r
- - <span style="font-weight: normal;">provides choice between </span>Point \r
- sprites<span style="font-weight: normal;">, </span>Open GL points<span \r
- style="font-weight: normal;"> and </span>Geometrical Spheres<span style="font-weight: normal;">.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs19"><span style="font-weight: bold;"><B>Maximum \r
- Size</B></span> <span style="font-weight: bold;"><B>(Clamp)</B></span> - defines \r
- the maximum size of sprite points ranging from 1 to 512. By default the \r
- value is set to 256 pixels. </p></li>\r
- \r
- <li class=kadov-p><p class="whs18">Main Texture - \r
- <span style="font-weight: normal;">path \r
- to the </span>Main Texture<span style="font-weight: normal;"> (16x16 pixels) \r
- which defines the shape of the point sprite used for rendering.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs12"><span \r
- style="font-weight: bold;"><B>Alpha Channel Texture (16*16) -</B></span> path \r
- to the <span style="font-weight: bold;"><B>Alpha Channel Texture</B></span> which \r
- defines the transparency of the point sprite.</p></li>\r
- \r
- <li class=kadov-p><p class="whs18">Alpha Channel Threshold \r
- - <span style="font-weight: normal;">defines the level of transparency \r
- ranging from 0 to 1.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs18">Geometrical Sphere \r
- Resolution - <span style="font-weight: normal;">defines the number of \r
- faces of</span> Geometry Spheres.</p></li>\r
- \r
- <li class=kadov-p><p class="whs18">Notify when number \r
- of faces exceeds -<span style="font-weight: normal;"> limitation of the \r
- number of faces;</span> <span style="font-weight: normal;">the user will \r
- be warned if it exceeds the given value.</span></p></li>\r
- </ul>\r
-</ul>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Size - in this menu \r
- you can define</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">Range value for min \r
- and max size - <span style="font-weight: normal;">these two parameters \r
- will be respectively multiplied by a reference length (average size of \r
- cells of the mesh) to define the range for minimum and maximum size of \r
- a point during rendering (at magnification = 100%). Default values are:</span></p></li>\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li style="list-style: circle;"\r
- type=circle\r
- class=kadov-p><p><span style="font-weight: bold;"><B>Rainbow</B></span> \r
- scale: <span style="font-weight: bold;"><B>min = 10%</B></span>, <span style="font-weight: bold;"><B>max \r
- = 33%</B></span></p></li>\r
- \r
- <ul type="square" class="whs21">\r
- \r
- <li class=kadov-p><p class="whs22">Min size \r
- is associated to the smallest real value (including negative values).</p></li>\r
- \r
- <li class=kadov-p><p class="whs22">Max size \r
- is associated to the largest real value.</p></li>\r
- </ul>\r
- \r
- <li style="list-style: circle;"\r
- type=circle\r
- class=kadov-p><p><span style="font-weight: bold;"><B>Bicolor</B></span> \r
- scale: <span style="font-weight: bold;"><B>min = 0</B></span> (not editable), \r
- <span style="font-weight: bold;"><B>max = 33%</B></span></p></li>\r
- \r
- <ul type="square" class="whs21">\r
- \r
- <li class=kadov-p><p class="whs22">Null size \r
- is associated to the 0 scalar value.</p></li>\r
- \r
- <li class=kadov-p><p class="whs22">Max size \r
- is associated to the largest absolute value.</p></li>\r
- </ul>\r
- </ul>\r
- </ul>\r
-</ul>\r
-\r
-<p class="whs23">Both values are dynamically updated by the \r
- system according to the selected scalar bar. In the case of a <span style="font-weight: bold;"><B>Bicolor</B></span> \r
- scale, the minimum value is set to 0 in the dialog and the control is \r
- disabled.</p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Magnification \r
- (%)</B></span> corresponds to the change of size of results at Gauss point \r
- primitives in 2D space. Acceptable values range from 0 to N; 100% means \r
- no magnification, 50% means half of its size, 200% mean twice its size \r
- and so forth. By default this value is set to 100%.</p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>+/- \r
- Ratio</B></span> corresponds to the number by which the magnification will \r
- be respectively multiplied or divided at edition, ranging from 0.01 to \r
- 10. By default this value is set to 2.</p></li>\r
-</ul>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Geometry </p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Size \r
- of points (%) </B></span>defines a value that will be multiplied by a reference \r
- length (representative of the average size of cells of the mesh) to define \r
- the size of points during rendering (at magnification = 100%). Default \r
- values 10%.</p></li>\r
- \r
- <li class=kadov-p><p class="whs17">Background \r
- Color - <span style="font-weight: normal;"> allows \r
- to select the color of points used for presentations. Click on the colored \r
- line to access to the </span><a href="select_color_and_font.htm">Select \r
- Color</a><span style="font-weight: normal;"> dialog box. </span></p></li>\r
-</ul>\r
-\r
-<p class="whs18"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Gauss Points Scalar \r
- Bar</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Active \r
- Bar - <span style="font-weight: normal;">this option allows to choose</span> \r
- Local<span style="font-weight: normal;"> or</span> Global <span style="font-weight: normal;">Bar \r
- as active.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Display \r
- Global Bar - <span style="font-weight: normal;">this option allows to \r
- visualize or to hide the Global Bar.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Scalar \r
- Bar Mode - <span style="font-weight: normal;">this option allows to choose</span> \r
- <span style="font-weight: normal;">between</span> Bicolor <span style="font-weight: normal;">and</span> \r
- Rainbow <span style="font-weight: normal;">Scalar Bar Mode.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Spacing \r
- - <span style="font-weight: normal;">allows to define Spacing from 0.01 \r
- to 1.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs18"> </p>\r
-\r
-<p class="whs8">Inside <span style="font-weight: normal;">and</span> \r
- Outside Cursor Preferences<span style="font-weight: normal;"> allow to \r
- set</span> Primitives, Size<span style="font-weight: normal;"> and</span> \r
- Magnification<span style="font-weight: normal;"> for the respective zones.</span> \r
- </p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs24">Picking Preferences</p>\r
-\r
-<p class="whs24"> </p>\r
-\r
-<p class="whs24"><img src="pics/pref37.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs7"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Cursor</B></span> \r
- - allows to adjust the Size of the cursor used for Picking (ranging from \r
- 0.1 to 1), the Height of the pyramids (ranging from 0 to 10) and the Selection \r
- cursor color. </p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Tolerance</B></span> \r
- - defines at which distance of the cursor from the point it becomes selected \r
- (ranges from 0.001 to 10). </p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Information window \r
- -</B></span> allows to define the <span style="font-weight: bold;"><B>Transparency</B></span> \r
- (from 0% = opaque to 100% = transparent) and <span style="font-weight: bold;"><B>Position</B></span> \r
- of the window, which can be: </p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Centred \r
- below the point</B></span>, or</p></li>\r
- \r
- <li class=kadov-p><p class="whs5">located at <span style="font-weight: bold;"><B>Top-left \r
- corner of the 3D view</B></span></p></li>\r
- \r
- <li class=kadov-p><p class="whs9">Movement \r
- of the Camera <span style="font-weight: normal;">can also be define by \r
- the user. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: bold;"><B>Zoom \r
- at first selected point -</B></span> This value is used to define the focal \r
- distance at the first selected point (at the end of the movement of the \r
- camera). This value is a ratio that will be multiplied by the current \r
- zoom value.</p></li>\r
- \r
- <li class=kadov-p><p class="whs10">Number \r
- of steps between two positions - <span style="font-weight: normal;">defines \r
- the smoothness of camera movement at selection by the number of iterations. \r
- If set to 1 the camera is zoomed and centered at the point momentarily. \r
- Greater numbers mean very slow camera movement.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs8">Display \r
- parent mesh element - <span style="font-weight: normal;">allows to visualize \r
- or hide the patent mesh element of the selected gauss point.</span> </p></li>\r
-</ul>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p class="whs24">Navigation Preferences</p>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p class="whs24"><img src="pics/pref38.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs25"> </p>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Mouse</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">Mouse Behaviour - <span \r
- style="font-weight: normal;">this option allows to choose one of the modes \r
- of work with mouse in Gauss Viewer. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs26">Salome Standard Controls \r
- - <span style="font-weight: normal;">allows to manipulate objects in the \r
- viewer with the mouse and locked Ctrl button: increase or decrease the \r
- zoom ratio with the left mouse button, translate object in any direction \r
- with the central mouse button or rotate it with the right mouse button. \r
- </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs26">Keyboard Free - <span \r
- style="font-weight: normal;">allows to manipulate objects in the viewer \r
- with the mouse without locking Ctrl button</span>. <span style="font-weight: normal;">In \r
- this case the operations are assigned to the buttons differently: rotation \r
- is made with the left button, translation with the right and zoom with \r
- both pressed in the same time.</span> </p></li>\r
-</ul>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Keyboard</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">[+]/[-] Speed Increment \r
- - <span style="font-weight: normal;">defines the number of units by which \r
- the speed increases or respectively decreases after pressing [+] or [-] \r
- keyboard buttons.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs17"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Spacemouse -<span style="font-weight: normal;"> \r
- a mouse-like manipulator device specially designed for working with 3D \r
- presentations, objects, etc. You can reassign the actions listed below \r
- to any of its buttons. </span></p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">Decrease Speed Increment \r
- - <span style="font-weight: normal;">decreases by 1 the speed increment \r
- used for the keyboard (same as [-] key).</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Increase Speed Increment \r
- - <span style="font-weight: normal;">increase by 1 the speed increment \r
- used for the keyboard (same as [+] key).</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Decrease Gauss Points \r
- Magnification - <span style="font-weight: normal;">divides the current \r
- magnification by the magnification ratio.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Increase Gauss Points \r
- Magnification -<span style="font-weight: normal;"> multiplies the current \r
- magnification by the magnification ratio.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Dominant / combined \r
- switch -<span style="font-weight: normal;"> toggles button to switch to \r
- dominant or combined movements.</span></p></li>\r
-</ul>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p class="whs24">Recorder Preferences</p>\r
-\r
-<p class="whs24"> </p>\r
-\r
-<p class="whs24"><img src="pics/pref39.png" x-maintain-ratio="TRUE" width="752px" height="646px" border="0" class="img_whs2"></p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1">Settings</p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">Mode - <span style="font-weight: normal;">allows \r
- to choose from</span> <span style="font-weight: normal;">two recording \r
- regimes:</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs26">Recording all displayed \r
- frames - <span style="font-weight: normal;">records exactly at the FPS \r
- rate specified by the user.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs26">Recording at a given \r
- FPS - <span style="font-weight: normal;">records only when the contents \r
- of the viewer change (some activity is performed). In \r
- the AVI file non-recorded images are substituted with the copies of the \r
- latest recorded image, which produces files with lower quality but requires \r
- less system resources.</span> </p></li>\r
- \r
- <li class=kadov-p><p class="whs20">FPS - <span style="font-weight: normal;">allows \r
- to define the FPS (frames per second) rate for the clip. Set greater value \r
- for better quality. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Quality - <span style="font-weight: normal;">allows \r
- to set the quality of the clip in the interval between 0 and 100.</span> \r
- </p></li>\r
- \r
- <li class=kadov-p><p class="whs20">Progressive - <span \r
- style="font-weight: normal;">allows to record a progressive API file.</span> \r
- </p></li>\r
-</ul>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p class="whs20"> </p>\r
-\r
-<p> </p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-[GlossaryTab]\r
-TabCaption=&Glossary\r
-TermCaption=&Term\r
-DefinitionCaption=&Definition For:\r
-\r
-[BrowseSequence]\r
-PreCaption=Previous\r
-PreTooltip=Previous Topic\r
-NextCaption=Next\r
-NextTooltip=Next Topic\r
-BlockTooltip=Select Block\r
-\r
-[Common]\r
-Contents=Contents\r
-Index=Index\r
-Search=Search\r
-Glossary=Glossary\r
-Logo/Author=Powered By\r
-Show=Show\r
-Hide=Hide\r
-SyncToc=SyncToc\r
-Prev=<<\r
-Next=>>\r
-Disabled Prev=<<\r
-Disabled Next=>>\r
-Seperate = |\r
-\r
-[WebHelp]\r
-Cancel=Cancel\r
-CantOpenURLorFile=Can't open URL or file\r
-CompletingContents=Completing Contents...\r
-Display=Display\r
-Term=Term:\r
-Definition=Definition:\r
-Done=Done\r
-Find=Find\r
-IndexInputPrompt=Type in the keyword to find:\r
-RelateTopicListPrompt=Click a topic, then click Display.\r
-LoadingData=Loading data, please wait...\r
-LoadingContents=Loading contents, please wait...\r
-LoadingContentsData=Loading, click here to cancel...\r
-LoadingFTS=Reading Search Data...\r
-LoadingIndex=Loading Index...\r
-LoadingTOCItem=Loading Table of Contents:\r
-Searching=Searching...\r
-FtsInputPrompt=Type in the word(s) to search for:\r
-TopicsFound=Topics Found\r
-BrowserLimitedMessage=Your browser does not support frames. We recommend that you update your browser to a version that supports frames.\r
-SuggestViewNoFrameMessage=To view the Help system without frames click on this\r
-SuggestViewNoFrameMsg2=hyperlink.\r
-TopicsNotFound=No Topics Found.\r
-CantSearch=Cannot search for that phrase.\r
-JS_alert_appletNotLoad = Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.\r
-JS_alert_colorlimitation=WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.\r
-Blank_topic_text=This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink.\r
-JS_alert_ProjectLoadingFail=Could not load correctly, please click Refresh.\r
-JS_alert_cantLoadProject=Can't load project:\r
-JS_alert_ErrorInLoading=Error in Loading navigation component. Please regenerate WebHelp.\r
-IndexBtnText=Go\r
-FtsBtnText=Go\r
-ToolBarSearchBtnText=Go\r
-InTopicSearchBtnText=Go\r
-SearchLabel=Search\r
-SearchPrompt=- Search -\r
-PreTooltip=Previous Topic\r
-NextTooltip=Next Topic\r
-WebSearch=WebSearch\r
-SyncTocTooltip=Sync TOC\r
-Book=Book\r
-Page=Page\r
-Remote_Page=Remote Page\r
-Show_Navigation_Component=Show Navigation Component\r
-Hide_Navigation_Component=Hide Navigation Component\r
-nls_edit_label=Type in your question:\r
-nls_button_go_hint=Go Search\r
-nls_button_go_text=Go\r
-nls_body_instruction=Enter your question in the text box above, then click GO.\r
-nls_body_empty=Sorry, we were unable to find a good answer for your question.\r
-IndexSelectTopicTitle=Select a Topic\r
-IndexSelectTopicLabel=Select a topic, then click Display\r
-IndexSelectTopicError=Please select a topic.\r
-IndexAlphabetBookmarks=ABCDEFGHIJKLMNOPQRSTUVWXYZ\r
-MergeError1=The merged Help system\r
-MergeError2=is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.\r
-PoweredBy=Powered by\r
-GeneratedBy=Generated by\r
-Author=Author\r
-About=About\r
-Print=Print\r
-\r
-[PrintedDoc]\r
-TableOfContents=Table Of Contents\r
-TitlePage=Title Page\r
-ChapterFileNamePrefix=Chapter_\r
-TitlePageFileName=Chapter__Title_Page.doc\r
-CrossReferencePrefix=See\r
-GlossaryHeadingStyleName=Glossary Heading\r
-GlossaryTermStyleName=Glossary Term\r
-GlossaryDefinitionStyleName=Glossary Definition\r
-TitlePageTitleStyleName=Title Page Title\r
-TocPageTitleStyleName=Table of Contents Page Title\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Select Color and Font</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { margin-left:40px; }\r
-img_whs2 { border:none; width:492px; height:392px; float:none; border-style:none; }\r
-p.whs3 { font-family:'Times New Roman' , serif; }\r
-img_whs4 { border:none; width:510px; height:393px; float:none; border-style:none; }\r
-p.whs5 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nSetting Preferences\nSelect Color and Font");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Select Color and Font</h1>\r
-\r
-<p><span style="font-weight: bold;"><B>Select Color</B></span> and <span style="font-weight: bold;"><B>Select \r
- Font</B></span> menus are used in many Preferences.</p>\r
-\r
-<h3>Select color</h3>\r
-\r
-<p class="whs1"><img src="pics/selectcolor.png" x-maintain-ratio="TRUE" width="492px" height="392px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<p class="whs3">This menu allows \r
- to choose from either predefined <span style="font-weight: bold;"><B>Basic \r
- Colors </B></span>grouped in the upper left corner of the window or <span \r
- style="font-weight: bold;"><B>Custom Colors,</B></span> which you can define \r
- yourselves. To define a Custom Color, click on one of the Custom Color \r
- cells, select the color you need in the field of colors or by typing in \r
- its numeric parameters in the lower right corner of the window, then click \r
- <span style="font-weight: bold;"><B>Add to Custom Colors</B></span> button. The \r
- chosen color will be added to <span style="font-weight: bold;"><B>Custom \r
- Colors</B></span> table. </p>\r
-\r
-<h3>Select Font</h3>\r
-\r
-<p class="whs1"><img src="pics/selectfont.png" x-maintain-ratio="TRUE" width="510px" height="393px" border="0" class="img_whs4"></p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs5"><span \r
- style="font-weight: normal;">This menu provides a wide choice of </span>Fonts, \r
- Font Styles <span style="font-weight: normal;">and</span> Sizes. <span \r
- style="font-weight: normal;">Characters can be underlined or struck out. \r
- It is possible to preview them in the</span> Sample <span style="font-weight: normal;">window.</span> \r
- <span style="font-family: 'Times New Roman', serif; font-weight: bold;"><B>Script</B></span><span \r
- style="font-family: 'Times New Roman', serif; font-weight: normal;"> dialog-box \r
- gives the possibility to use not only Latin and Latin Extended but also \r
- Cyrillic, Greek, Arabic, Runic and many other subsets. </span></p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Setting Preferences</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-img_whs1 { border:none; width:541px; height:309px; float:none; border-style:none; }\r
-p.whs2 { font-family:'Times New Roman' , serif; }\r
-p.whs3 { margin-left:0px; background-image:url('texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
-img_whs4 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
-p.whs5 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs3 {margin-left:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nSetting Preferences\nSetting Preferences");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>Setting Preferences</h1>\r
-\r
-<p>In <span style="font-weight: bold;"><B>SALOME </B></span>you can set preferences \r
- for each module in the common editor of preferences. SALOME preferences \r
- refer to the whole GUI SALOME session, other preferences are module-specific \r
- and are accessible only after you load a respective module. </p>\r
-\r
-<p>When you change settings (click <span style="font-weight: bold;"><B>OK</B></span> \r
- or <span style="font-weight: bold;"><B>Apply</B></span> button) each module receives \r
- the notification about what preferences are changed. You can also click \r
- <span style="font-weight: bold;"><B>Defaults</B></span> button to restore default \r
- preferences or <span style="font-weight: bold;"><B>Close</B></span> button to \r
- quit the menu without any changes. </p>\r
-\r
-<p><span style="font-weight: bold;"><B>Import</B></span> button allows to load \r
- a user file containing preferences from your home directory through a \r
- standard Import dialog box.</p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/import.png" x-maintain-ratio="TRUE" width="541px" height="309px" border="0" class="img_whs1"></p>\r
-\r
-<p> </p>\r
-\r
-<p>This file has no extension and by default starts with .SalomeApprc. \r
- followed by Salome version number. There exists one file for each Salome \r
- version in use.</p>\r
-\r
-<p>The preferences, set during the current study session, are automatically \r
- saved in this file at the end of the session. Next time you launch SALOME \r
- application, these preferences will be restored.</p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs3"><img src="note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs4">The preferences you set \r
- will be default preferences for all <span style="font-weight: bold;"><B>new</B></span> \r
- objects, but they are not retroactive and do not automatically apply to \r
- the existing objects. </p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+</head>
+<body>
+<hr style="width: 100%; height: 2px;">
+<div style="text-align: center;">Copyright © 2003-2007 CEA, EDF<br>
+</div>
+</body>
+</html>
--- /dev/null
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>$title</title>
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<hr>
+<center>
+SALOME documentation central
+</center>
+<hr>
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>VTK 3D Viewer</title>\r
-<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
-<!--\r
-if (navigator.appName !="Netscape")\r
-{ document.write("<link rel='stylesheet' href='default.css'>");}\r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-p.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
-img_whs2 { border:none; width:301px; height:26px; float:none; }\r
-ul.whs3 { list-style:disc; }\r
-img_whs4 { border:none; width:26px; height:25px; float:none; border-style:none; }\r
-img_whs5 { border:none; width:27px; height:25px; float:none; border-style:none; }\r
-img_whs6 { border:none; width:24px; height:23px; float:none; border-style:none; }\r
-img_whs7 { border:none; width:24px; height:24px; float:none; border-style:none; }\r
-img_whs8 { border:none; width:25px; height:24px; float:none; border-style:none; }\r
-img_whs9 { border:none; width:23px; height:23px; float:none; border-style:none; }\r
-img_whs10 { border:none; width:20px; height:20px; float:none; border-style:none; }\r
-p.whs11 { margin-left:80px; }\r
-img_whs12 { border:none; width:410px; height:255px; float:none; border-style:none; }\r
-img_whs13 { border:none; width:26px; height:26px; float:none; border-style:none; }\r
-img_whs14 { border:none; width:78px; height:147px; float:none; border-style:none; }\r
-img_whs15 { border:none; border-style:none; width:28px; height:25px; float:none; }\r
-img_whs16 { border:none; border-style:none; width:27px; height:27px; float:none; }\r
-p.whs17 { font-weight:bold; margin-left:88px; }\r
-img_whs18 { border:none; border-style:none; width:350px; height:453px; float:none; }\r
-ol.whs19 { list-style:disc; }\r
-p.whs20 { font-weight:bold; margin-top:0pt; margin-bottom:0pt; }\r
-p.whs21 { font-weight:bold; margin-left:36px; margin-top:0pt; margin-bottom:0pt; }\r
-p.whs22 { font-weight:bold; margin-left:0px; margin-top:0pt; margin-bottom:0pt; }\r
-p.whs23 { margin-left:0px; font-weight:bold; margin-top:0pt; margin-bottom:0pt; }\r
--->\r
-</style><script type="text/javascript" language="JavaScript">\r
-<!--\r
-if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
-{\r
- var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs20 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs21 {margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs22 {margin-left:1pt;margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS += "p.whs23 {margin-left:1pt;margin-top:1pt;margin-bottom:1pt; }";\r
- strNSS +="</style>";\r
- document.write(strNSS);\r
-}\r
-//-->\r
-</script>\r
-<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
-<!--\r
-function reDo() {\r
- if (innerWidth != origWidth || innerHeight != origHeight)\r
- location.reload();\r
-}\r
-if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
-}\r
-onerror = null; \r
-//-->\r
-</script>\r
-<style type="text/css">\r
-<!--\r
-div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
-p.WebHelpNavBar { text-align:right; }\r
--->\r
-</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
-<script type="text/javascript" language="javascript" src="whver.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
-<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- addTocInfo("GUI module\nViewers\nVTK 3D Viewer");\r
-addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
-addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
-\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("index.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(4);\r
-//-->\r
-</script>\r
-<h1>VTK 3D Viewer</h1>\r
-\r
-<p class="whs1"><span style="font-weight: bold;"><B>VTK \r
- 3D viewer</B></span> is the default viewer for Mesh Module, allowing to visualize \r
- meshes. It is also used in Post-Pro module for all 3D presentations except \r
- for Gauss Points.</p>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs1">The functionalities of \r
- VTK viewer are available via its Viewer Toolbar. Buttons marked with small \r
- downward triangles have extended functionality which can be accessed by \r
- locking on them with left mouse button. </p>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/image157.gif" x-maintain-ratio="TRUE" width="301px" height="26px" border="0" class="img_whs2"></p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><img src="pics/image77.gif" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs4"> <span style="font-weight: bold;"><B>Dump \r
- View</B></span> - exports an object from the viewer in bmp, png, jpg or jpeg \r
- image format. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image88.gif" x-maintain-ratio="TRUE" width="27px" height="25px" border="0" class="img_whs5"> <span style="font-weight: bold;"><B>Show/Hide \r
- Trihedron</B></span> - shows or hides coordinate axes. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image96.gif" x-maintain-ratio="TRUE" width="24px" height="23px" border="0" class="img_whs6"> <span \r
- style="font-weight: bold;"><B>Fit all - </B></span>allows \r
- to select a point to be the center of a scene representing all displayed \r
- objects in the visible area.<span style="font-weight: bold;"> <B></B></span></p></li>\r
- \r
- <li class=kadov-p><p> <img src="pics/image97.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Fit area</B></span> - resizes \r
- the view to place in the visible area only the contents of a frame drawn \r
- with pressed left mouse button.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image98.gif" x-maintain-ratio="TRUE" width="25px" height="24px" border="0" class="img_whs8"> <span style="font-weight: bold;"><B>Zoom</B></span> \r
- - allows \r
- to zoom in and out. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image99.gif" x-maintain-ratio="TRUE" width="23px" height="23px" border="0" class="img_whs9"> <span style="font-weight: bold;"><B>Panning</B></span> \r
- - if the represented objects are greater that the visible area and you \r
- don't wish to use <span style="font-weight: bold;"><B>Fit all</B></span> functionality, \r
- click on this button and you'll be able to drag the scene to see its remote \r
- parts. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image100.gif" x-maintain-ratio="TRUE" width="24px" height="24px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Global \r
- panning</B></span> - represents all displayed objects in the visible area. \r
- </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs1"><img src="pics/view_rotation_point.png" x-maintain-ratio="TRUE" width="20px" height="20px" border="0" class="img_whs10"> <span style="font-weight: bold;"><B>Change rotation point</B></span> \r
- - allows to to choose the point around which the rotation is performed. \r
- </p></li>\r
-</ul>\r
-\r
-<p class="whs11"><img src="pics/set_rotation_point_dialog1.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11">By default the rotation point is located \r
- in the Center of the bounding box of an object. </p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11"><img src="pics/set_rotation_point_dialog2.png" x-maintain-ratio="TRUE" width="410px" height="255px" border="0" class="img_whs12"></p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11">Unchecking <span style="font-weight: bold;"><B>Use \r
- Bounding Box Center</B></span> box allows you to define the coordinates of \r
- the rotation point manually. </p>\r
-\r
-<p class="whs11"> </p>\r
-\r
-<p class="whs11"><span style="font-weight: bold;"><B>Set to Origin</B></span> \r
- button restores the default rotation point coordinates.</p>\r
-\r
-<p class="whs11"><span style="font-weight: bold;"><B>Select Point \r
- from View</B></span> button allows to select the rotation point in the 3D \r
- Viewer</p>\r
-\r
-<p> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p><img src="pics/image89.gif" x-maintain-ratio="TRUE" width="26px" height="26px" border="0" class="img_whs13"> <span style="font-weight: bold;"><B>Rotation</B></span> \r
- - allows to rotate the selected object using the mouse. </p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image102.gif" x-maintain-ratio="TRUE" width="78px" height="147px" border="0" class="img_whs14"> These buttons orientate the scene \r
- strictly about coordinate axes.</p></li>\r
- \r
- <li class=kadov-p><p><img src="pics/image91.gif" x-maintain-ratio="TRUE" width="26px" height="26px" border="0" class="img_whs13"> <span style="font-weight: bold;"><B>Reset</B></span> \r
- - restores the default position (isometric) of objects in the scene.</p></li>\r
- \r
- <li class=kadov-p><p class="whs1"><img src="pics/image108.gif" x-maintain-ratio="TRUE" width="28px" height="25px" border="0" class="img_whs15"> <span style="font-weight: bold;"><B>Scaling</B></span> - represents \r
- objects deformed (stretched or stuffed) along the axes of coordinates</p></li>\r
- \r
- <li class=kadov-p><p class="whs1"> <span \r
- style="font-weight: bold;"><B><img src="pics/image109.gif" x-maintain-ratio="TRUE" width="27px" height="27px" border="0" class="img_whs16">Graduated axes - </B></span>allows to define parameters of axes \r
- and graduate them.</p></li>\r
-</ul>\r
-\r
-<p class="whs1"> </p>\r
-\r
-<p class="whs17"><img src="pics/graduatedaxes1.png" x-maintain-ratio="TRUE" width="350px" height="453px" border="0" class="img_whs18"></p>\r
-\r
-<ol type="disc" class="whs19">\r
- \r
- <ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs20">Axis name </p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Is visible - <span \r
- style="font-weight: normal;">if checked the axis name is displayed in \r
- the viewer.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Name<span style="font-weight: normal;"> \r
- - allows to redefine the name of the axis.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Font<span style="font-weight: normal;"> \r
- - allows to define color and properties of the font of axis name. </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs22">Labels<span style="font-weight: normal;"> \r
- </span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Is visible - <span \r
- style="font-weight: normal;">if checked the labels are displayed in the \r
- viewer.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Number<span style="font-weight: normal;"> \r
- - allows to define the number of labels.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Offset<span style="font-weight: normal;"> \r
- - allows to define the distance between labels.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Font<span style="font-weight: normal;"> \r
- - allows to define color and properties of the font of labels names.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs23">Tick marks </p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Is visible - <span \r
- style="font-weight: normal;">if checked the tick marks are displayed in \r
- the viewer.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs21">Length<span style="font-weight: normal;"> \r
- - allows to define the length of tick marks</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs23">Is visible <span \r
- style="font-weight: normal;">if checked the axis is displayed in the viewer.</span></p></li>\r
- </ul>\r
-</ol>\r
-\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<script language="javascript1.2" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(gbIE4||gbNav61)\r
-{\r
- document.write("<body></body>");\r
-}\r
-else\r
-{\r
- document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");\r
-}\r
-var gCSHFileName="whcshdata.htm";\r
-\r
-var gHomePage="index.htm";\r
-var gaProj=new Array();\r
-gaProj[0]=new Object();\r
-gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));\r
-gaProj[0].nLoadState=0;\r
-var gCurrent=0;\r
-\r
-var gsTopicURL="";\r
-var gnCurProj=0;\r
-var gnCommand=-1;\r
-var CMD_SHOWTOC=1;\r
-var CMD_SHOWINDEX=2;\r
-var CMD_SHOWSEARCH=3;\r
-var CMD_SHOWGLOSSARY=4;\r
-var CMD_SHOWNONE=0;\r
-\r
-var RHWO_LOCATION=0x01; /*need location bar?*/\r
-var RHWO_MENUBAR=0x02; /*need menubar?*/ \r
-var RHWO_RESIZABLE=0x04; /*resizable window?*/\r
-var RHWO_TOOLBAR=0x08; /*need toolbar?*/\r
-var RHWO_STATUS=0x10; /*need statusbar?*/\r
-var RHWO_SCROLLBARS=0x20; /*need scrollbars?*/\r
-\r
-var gsStr="";\r
-var gnId=-1;\r
-var gsWindow="";\r
-var gsJava="false";\r
-var gbUseStr=false;\r
-var gbURLReady=false;\r
-var goWnd=new Object();\r
-goWnd.sName="whCshDefault";\r
-goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
-goWnd.sBLeft="49%";\r
-goWnd.sBTop="0";\r
-goWnd.sBWidth="49%";\r
-goWnd.sBHeight="49%";\r
-goWnd.nPanes=1;\r
-var goFullWnd=new Object();\r
-goFullWnd.sName="whDefault";\r
-goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
-goFullWnd.sBLeft="20%";\r
-goFullWnd.sBTop="0";\r
-goFullWnd.sBWidth="79%";\r
-goFullWnd.sBHeight="79%";\r
-goFullWnd.nPanes=2;\r
-\r
-var goNewWnd=null;\r
-var gbLoadWnd=false;\r
-var gsURL="";\r
-\r
-function showCSH(sParam)\r
-{\r
- //id=\r
- //str=\r
- //url=\r
- //cmd=\r
- //with the format #<a=xxx>>b=xxx>>c=xxx...\r
- parseParam(sParam);\r
- SwitchURL();\r
-}\r
-\r
-function IsWndReady()\r
-{\r
- if(gaProj[0].nLoadState==0)\r
- {\r
- var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);\r
- gaProj[0].nLoadState=1;\r
- setTimeout("loadFail("+0+");",3000);\r
- loadDataCsh(sCshFile);\r
- gbLoadWnd=true;\r
- return false;\r
- }\r
- else\r
- return true;\r
-}\r
-\r
-function SwitchURL()\r
-{\r
- if(gbURLReady)\r
- {\r
- var sURL="";\r
- var oWnd=null;\r
- if(gsTopicURL)\r
- {\r
- sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;\r
- oWnd=goWnd;\r
- }\r
- else\r
- {\r
- if(gnCommand!=-1)\r
- sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;\r
- else\r
- sURL=_getPath(document.location.href)+gHomePage;\r
- oWnd=goFullWnd;\r
- }\r
- if(gsWindow)\r
- {\r
- if(!IsWndReady())\r
- return false;\r
- if(gaProj[gnCurProj].aWnd)\r
- {\r
- var aWnd=gaProj[gnCurProj].aWnd;\r
- var bFound=false;\r
- for(var i=0;i<aWnd.length;i++)\r
- {\r
- if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())\r
- {\r
- oWnd=aWnd[i];\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- if(!bFound&&gnCurProj!=0)\r
- {\r
- var aWnd=gaProj[0].aWnd;\r
- for(var j=0;j<aWnd.length;j++)\r
- {\r
- if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())\r
- {\r
- oWnd=aWnd[j];\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- if(sURL&&oWnd)\r
- {\r
- strURLOpt="";\r
- if(oWnd.sCaption)\r
- strURLOpt+=">>cap="+oWnd.sCaption;\r
- if(oWnd.nPanes==1)\r
- strURLOpt+=">>pan="+oWnd.nPanes;\r
- else if(oWnd.nPanes==2)\r
- {\r
- strURLOpt+=">>pan="+oWnd.nPanes;\r
- if(oWnd.nPOptions)\r
- strURLOpt+=">>pot="+oWnd.nPOptions;\r
- if(oWnd.sPButtons)\r
- strURLOpt+=">>pbs="+oWnd.sPButtons;\r
- if(oWnd.sPDefBtn)\r
- strURLOpt+=">>pdb="+oWnd.sPDefBtn;\r
- }\r
- if(strURLOpt)\r
- {\r
- if(sURL.indexOf("#")==-1)\r
- sURL+="#";\r
- sURL+=strURLOpt;\r
- }\r
- if(gsJava=="false")\r
- {\r
- var strOpt=getBrowserOptionString(oWnd);\r
- var sNewName=convertWindowName(oWnd.sName);\r
- if(gbNav4)\r
- {\r
- if (gbNav6)\r
- {\r
- gsURL = sURL;\r
- goNewWnd=window.open("about:blank",sNewName,strOpt);\r
- setTimeout("postWindowNSOpen();",100);\r
- }\r
- else\r
- {\r
- window.open("about:blank",sNewName,strOpt);\r
- var oNewWnd=window.open(sURL,sNewName);\r
- window.close();\r
- oNewWnd.focus();\r
- }\r
- }\r
- else\r
- {\r
- if(gbIE5)\r
- {\r
- window.open("about:blank",sNewName,strOpt);\r
- goNewWnd=window.open(sURL,sNewName);\r
- }\r
- else\r
- {\r
- gsURL = sURL; // IE4 had hard time to handle bookmark.\r
- goNewWnd=window.open("about:blank",sNewName,strOpt);\r
- }\r
- setTimeout("postWindowOpen();",100);\r
- }\r
- }\r
- else\r
- document.location=sURL;\r
- }\r
- }\r
-}\r
-\r
-function convertWindowName(strName)\r
-{\r
- var strNewName = strName;\r
- var strResultName = "";\r
- var re=new RegExp("_","g");\r
- strNewName = strName.replace(re,"__");\r
- for (var i=0;i<strNewName.length;i++)\r
- if (!(strNewName[i] == '_' ||\r
- (strNewName[i] <= '9' && strNewName[i] >= '0') ||\r
- (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||\r
- (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))\r
- {\r
- strResultName += "_" + strNewName.charCodeAt(i);\r
- }\r
- else\r
- strResultName += strNewName[i];\r
- return strResultName;\r
-}\r
-\r
-function postWindowNSOpen()\r
-{\r
- if(goNewWnd)\r
- {\r
- if (gsURL)\r
- goNewWnd.document.location.href=gsURL;\r
- window.close();\r
- goNewWnd.focus();\r
- }\r
-}\r
-\r
-function postWindowOpen()\r
-{\r
- if(goNewWnd)\r
- {\r
- if (gsURL&&!gbIE5&&gbIE4)\r
- goNewWnd.document.location.href=gsURL;\r
- goNewWnd.focus();\r
- }\r
-}\r
-\r
-function parseParam(sParam)\r
-{\r
- if(sParam)\r
- {\r
- var nBPos=0;\r
- do\r
- {\r
- var nPos=sParam.indexOf(">>",nBPos);\r
- if(nPos!=-1)\r
- {\r
- if(nPos>0)\r
- {\r
- var sPart=sParam.substring(nBPos,nPos);\r
- parsePart(sPart);\r
- }\r
- nBPos=nPos+2;\r
- }\r
- else\r
- {\r
- var sPart=sParam.substring(nBPos);\r
- parsePart(sPart);\r
- break;\r
- }\r
- }while(nBPos<sParam.length);\r
- }\r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
- if(sPart.toLowerCase().indexOf("id=")==0)\r
- {\r
- fetchURLById(sPart.substring(3));\r
- gbURLReady=false;\r
- }\r
- else if(sPart.toLowerCase().indexOf("str=")==0)\r
- {\r
- fetchURLByStr(sPart.substring(4));\r
- gbURLReady=false;\r
- }\r
- else if(sPart.toLowerCase().indexOf("url=")==0)\r
- {\r
- gsTopicURL=sPart.substring(4);\r
- gbURLReady=true;\r
- }\r
- else if(sPart.toLowerCase().indexOf("cmd=")==0)\r
- {\r
- var sCmd=sPart.substring(4);\r
- if(sCmd.toLowerCase()=="toc")\r
- {\r
- gnCommand=CMD_SHOWTOC;\r
- }\r
- else if(sCmd.toLowerCase()=="idx")\r
- {\r
- gnCommand=CMD_SHOWINDEX;\r
- }\r
- else if(sCmd.toLowerCase()=="fts")\r
- {\r
- gnCommand=CMD_SHOWSEARCH;\r
- }\r
- else if(sCmd.toLowerCase()=="glo")\r
- {\r
- gnCommand=CMD_SHOWGLOSSARY;\r
- }\r
- else if(sCmd.toLowerCase()=="none")\r
- {\r
- gnCommand=CMD_SHOWNONE;\r
- }\r
- gbURLReady=true;\r
- }\r
- else if(sPart.toLowerCase().indexOf("wnd=")==0)\r
- {\r
- gsWindow=_browserStringToText(sPart.substring(4));\r
- }\r
- else if(sPart.toLowerCase().indexOf("java=")==0)\r
- {\r
- gsJava=sPart.substring(5);\r
- }\r
-}\r
-\r
-function fetchURLById(sId)\r
-{\r
- var nId=parseInt(sId);\r
- gsTopicURL="";\r
- fetchURL("",nId,false);\r
-}\r
-\r
-function fetchURLByStr(sStr)\r
-{\r
- gsTopicURL="";\r
- fetchURL(sStr,0,true);\r
-}\r
-\r
-function fetchURL(sStr,nId,bUseStr)\r
-{\r
- var bNeedLoad=false;\r
- var bFound=false;\r
- for(var i=0;i<gaProj.length;i++)\r
- {\r
- if(gaProj[i].nLoadState==3)\r
- {\r
- if(gaProj[i].aCsh)\r
- {\r
- for(var j=0;j<gaProj[i].aCsh.length;j++)\r
- {\r
- var sTopicURL="";\r
- if(bUseStr)\r
- {\r
- if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())\r
- sTopicURL=gaProj[i].aCsh[j].strUrl;\r
- }\r
- else\r
- {\r
- if(gaProj[i].aCsh[j].nTopicNum==nId)\r
- sTopicURL=gaProj[i].aCsh[j].strUrl;\r
- }\r
- if(sTopicURL)\r
- {\r
- if(i!=0)\r
- {\r
- gnCurProj=i;\r
- if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)\r
- {\r
- var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);\r
- gsTopicURL=sRelPath+sTopicURL;\r
- }\r
- else\r
- gsTopicURL=gaProj[i].sProjPath+sTopicURL;\r
- }\r
- else\r
- gsTopicURL=sTopicURL;\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- }\r
- \r
- }\r
- else if(gaProj[i].nLoadState==0)\r
- {\r
- gsStr=sStr;\r
- gnId=nId;\r
- gbUseStr=bUseStr;\r
- var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);\r
- gaProj[i].nLoadState=1;\r
- setTimeout("loadFail("+i+");",3000);\r
- loadDataCsh(sCshFile);\r
- bNeedLoad=true;\r
- }\r
- if(bFound||bNeedLoad)\r
- break;\r
- }\r
- if(!bNeedLoad)\r
- {\r
- gbURLReady=true;\r
- SwitchURL();\r
- }\r
-}\r
-\r
-function loadDataCsh(sFile)\r
-{\r
- if(gbIE4||gbNav61)\r
- loadData(sFile);\r
- else\r
- {\r
- window.frames[0].location=sFile;\r
- }\r
-}\r
-\r
-function loadFail(nProj)\r
-{\r
- if(gaProj[nProj].nLoadState==1)\r
- {\r
- gaProj[nProj].nLoadState=2;\r
- if(!gbLoadWnd)\r
- fetchURL(gsStr,gnId,gbUseStr);\r
- else\r
- SwitchURL();\r
- }\r
-}\r
-\r
-function putCshData(strProj,aCsh,aWnd,aRmtProj)\r
-{\r
- if(strProj)\r
- {\r
- strProj=_replaceSlash(strProj);\r
- if(strProj.lastIndexOf("/")!=strProj.length-1)\r
- strProj+="/";\r
- for(var i=0;i<gaProj.length;i++)\r
- {\r
- if(gaProj[i].sProjPath)\r
- {\r
- if(isSamePath(gaProj[i].sProjPath,strProj))\r
- {\r
- gaProj[i].nLoadState=3;\r
- gaProj[i].aCsh=aCsh;\r
- gaProj[i].aWnd=aWnd;\r
- break;\r
- }\r
- }\r
- }\r
- if(aRmtProj&&aRmtProj.length)\r
- {\r
- for(var j=0;j<aRmtProj.length;j++)\r
- {\r
- var strRPath=_getFullPath(strProj,aRmtProj[j]);\r
- var bFound=false;\r
- for (var k=0;k<gaProj.length;k++)\r
- {\r
- if(gaProj[k].sProjPath)\r
- {\r
- if(isSamePath(gaProj[k].sProjPath,strRPath))\r
- {\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- }\r
- if(!bFound)\r
- {\r
- var len=gaProj.length;\r
- gaProj[len]=new Object();\r
- gaProj[len].sProjPath=strRPath;\r
- gaProj[len].nLoadState=0;\r
- }\r
- }\r
- }\r
- if(!gbLoadWnd)\r
- fetchURL(gsStr,gnId,gbUseStr);\r
- else\r
- SwitchURL();\r
- \r
- }\r
-}\r
-\r
-function isSamePath(strPath1,strPath2)\r
-{\r
- return strPath1.toLowerCase()==strPath2.toLowerCase();\r
-}\r
-\r
-function getRelHomePage(strLocation)\r
-{\r
- var strCurPPath=_getPath(strLocation);\r
- var strOriPPath=_getPath(getHomePage());\r
- var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);\r
- var strURL=getHomePage()+"#"+strRelPath;\r
- return strURL;\r
-}\r
-\r
-function getHomePage()\r
-{\r
- var strHomePage;\r
- var strTmp=location.toString();\r
- var nPos=strTmp.indexOf("#");\r
- if(nPos!=-1)\r
- {\r
- strHomePage=strTmp.substring(0,nPos);\r
- }\r
- else\r
- {\r
- strHomePage=strTmp;\r
- }\r
- return strHomePage;\r
-}\r
-\r
-function getBrowserOptionString(oWnd)\r
-{\r
- var strOpts="";\r
- if(oWnd.bUseDefault)\r
- return strOpts;\r
- if(oWnd.nBOptions&RHWO_LOCATION)\r
- strOpts+="location=yes";\r
- else\r
- strOpts+="location=no";\r
- if(oWnd.nBOptions&RHWO_TOOLBAR)\r
- strOpts+=",toolbar=yes"; \r
- else\r
- strOpts+=",toolbar=no"; \r
- if(oWnd.nBOptions&RHWO_MENUBAR)\r
- strOpts+=",menubar=yes"; \r
- else\r
- strOpts+=",menubar=no";\r
- if(oWnd.nBOptions&RHWO_STATUS)\r
- strOpts+=",status=yes"; \r
- else\r
- strOpts+=",status=no"; \r
- if(oWnd.nBOptions&RHWO_SCROLLBARS)\r
- strOpts+=",scrollbars=yes";\r
- else\r
- strOpts+=",scrollbars=no"; \r
- if(oWnd.nBOptions&RHWO_RESIZABLE)\r
- strOpts+=",resizable=yes";\r
- else\r
- strOpts+=",resizable=no";\r
- if(oWnd.sBTop)\r
- {\r
- var nTop=getSValue(oWnd.sBTop,screen.height);\r
- strOpts+=",top="+nTop;\r
- strOpts+=",screenY="+nTop;\r
- }\r
- if(oWnd.sBLeft)\r
- {\r
- var nLeft=getSValue(oWnd.sBLeft,screen.width);\r
- strOpts+=",left="+nLeft;\r
- strOpts+=",screenX="+nLeft;\r
- }\r
- if(oWnd.sBWidth)\r
- {\r
- var nWidth=getSValue(oWnd.sBWidth,screen.width);\r
- strOpts+=",width="+nWidth;\r
- strOpts+=",outerWidth="+nWidth;\r
- }\r
- if(oWnd.sBHeight)\r
- {\r
- var nHeight=getSValue(oWnd.sBHeight,screen.height);\r
- strOpts+=",height="+nHeight;\r
- strOpts+=",outerHeight="+nHeight;\r
- }\r
- return strOpts;\r
-}\r
-\r
-function getSValue(sValue,nLength)\r
-{\r
- var nValue=0;\r
- var nPos=sValue.indexOf("%");\r
- if(nPos!=-1)\r
- {\r
- if(nPos>0)\r
- {\r
- var nPart=parseInt(sValue.substring(0,nPos));\r
- nValue=nLength*nPart/100;\r
- }\r
- }\r
- else\r
- nValue=parseInt(sValue);\r
- return nValue;\r
-}\r
-\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
- if(document.location.hash.length>0)\r
- {\r
- showCSH(document.location.hash.substring(1));\r
- }\r
-\r
- if(gsJava=="false")\r
- window.moveTo(screen.width,screen.height);\r
-}\r
-//-->\r
-</script>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="javascript1.2" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="JavaScript">\r
-<!--\r
-var gaCsh=new Array();\r
-\r
-var gaWindow=new Array();\r
-\r
-var gaRmtProj=new Array();\r
-\r
-var gsProjPath=_getPath(document.location.href);\r
-\r
-function CshEntityItem(strAliasId,nTopicNum,strUrl)\r
-{\r
- this.strAliasId=strAliasId;\r
- this.nTopicNum=nTopicNum;\r
- this.strUrl=strUrl;\r
-}\r
-\r
-function CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
-{\r
- this.sName=sWName;\r
- this.bUseDefault=bBUseDefault;\r
- if(!this.bUseDefault)\r
- {\r
- this.nBOptions=nWBOptions;\r
- this.sBLeft=sWBLeft;\r
- this.sBTop=sWBTop;\r
- this.sBWidth=sWBWidth;\r
- this.sBHeight=sWBHeight;\r
- }\r
- this.sCaption=sWCaption;\r
- this.nPanes=nWPanes;\r
- if(this.nPanes==2)\r
- {\r
- this.nPOptions=nWPOptions;\r
- this.sPButtons=sWPButtons;\r
- this.sPDefBtn=sWPDefBtn;\r
- }\r
-}\r
-\r
-function addRemoteProject(sPath)\r
-{\r
- if(sPath.length!=0)\r
- {\r
- if(sPath.lastIndexOf("/")!=sPath.length-1)\r
- sPath+="/";\r
- gaRmtProj[gaRmtProj.length]=sPath; \r
- }\r
-}\r
-\r
-//Set Context-sensitive help entity...\r
-function SetCsh(n,strAliasId,nTopicNum,strUrl)\r
-{\r
- gaCsh[n]=new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
-}\r
-\r
-function addWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
-{\r
- gaWindow[gaWindow.length]=new CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn);\r
-}\r
-\r
-\r
-\r
-\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
- if(parent&&parent!=this&&parent.putCshData)\r
- {\r
- parent.putCshData(gsProjPath,gaCsh,gaWindow,gaRmtProj);\r
- }\r
-}\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Navigator Pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body border=0 topmargin=0 bottommargin=0 rightmargin=0 leftmargin=0 scroll=no>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whphost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsNavReDirect="whgdata/whnvp30.htm";\r
-var gbReDirectThis=false;\r
- var bPreferXML = false;\r
- var strProjectFileXML = "whproj.xml";\r
- var strProjectFileHTM = "whproj.htm"; \r
-if(window.gbWhPHost)\r
-{\r
- addProject(bPreferXML, strProjectFileXML, strProjectFileHTM);\r
- addPane("toc","whtdhtml.htm");\r
- addPane("fts","whfdhtml.htm");\r
- addPane("glo","whgdhtml.htm");\r
- setShowPane("toc");\r
-\r
-}\r
-else\r
- document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Navigation Pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-</head>\r
-<frameset rows="30, *" border="0" frameborder="0">\r
- <frame name="navtabs" title="tab selection frame" src="whd_tabs.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
- <frame name="navpane title="navigation frame" src="whd_dpns.htm" ></frame>\r
-</frameset>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>navigation pane</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsInitPane="toc";\r
-var gsCurrentPane="";\r
-var gbLoading = "unknown";\r
-var gbTryTime = 0;\r
-var gbMaxTryTime = 6;\r
-var gbPassPhase0 = 0;\r
-var gbretried = 0;\r
-var gbmaxretry = 3;\r
-var gbretrytime = new Array();\r
-\r
-var origWidth = 0;\r
-var origHeight = 0;\r
-\r
-gbretrytime[0]= 5000;\r
-gbretrytime[1]= 30000;\r
-gbretrytime[2]= 60000;\r
-\r
-function addPane(sName, sFile)\r
-{\r
-}\r
-\r
-function setShowPane(sName)\r
-{\r
- gsInitPane=sName;\r
-}\r
-\r
- addPane("toc","whtdhtml.htm");\r
- addPane("fts","whfdhtml.htm");\r
- addPane("glo","whgdhtml.htm");\r
- setShowPane("toc");\r
-\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
- UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
- UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
- UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
- UnRegisterListener2(this, WH_MSG_SYNCTOC);\r
- UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
- UnRegisterListener2(this, WH_MSG_GETPANEINFO);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- var bHidePane=false;\r
- var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
- if (SendMessage(oMsg))\r
- {\r
- if(oMsg.oParam>0)\r
- {\r
- if(oMsg.oParam==1)\r
- gsInitPane="toc";\r
- else if(oMsg.oParam==2)\r
- gsInitPane="idx";\r
- else if(oMsg.oParam==3)\r
- gsInitPane="fts";\r
- else if(oMsg.oParam==4)\r
- gsInitPane="glo";\r
- }\r
- else if(oMsg.oParam==0)\r
- {\r
- bHidePane=true;\r
- }\r
- }\r
- if (bHidePane)\r
- {\r
- oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
- SendMessage(oMsg);\r
- }\r
- else if (gsInitPane == "toc")\r
- {\r
- oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
- SendMessage(oMsg); \r
- }\r
- else if (gsInitPane=="idx")\r
- {\r
- oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
- SendMessage(oMsg); \r
- }\r
- else if (gsInitPane=="fts")\r
- {\r
- oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
- SendMessage(oMsg); \r
- }\r
- else if (gsInitPane=="glo")\r
- {\r
- oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
- SendMessage(oMsg); \r
- }\r
-}\r
-\r
-function CheckLoadingPhase0()\r
-{\r
- if (!gbPassPhase0) {\r
- setTimeout("CheckLoadingPhase0()", 1000);\r
- document.applets[0];\r
- gbPassPhase0 = 1;\r
- }\r
- else {\r
- CheckLoadingPhase1();\r
- }\r
-}\r
-\r
-function CheckLoadingPhase1()\r
-{\r
- if (gbNav4) {\r
- if ("unknown" == gbLoading && document.readystate < 4) {\r
- setTimeout("CheckLoadingPhase1()", 1000);\r
- }\r
- else if ("unknown" == gbLoading) {\r
- CheckLoadingPhase2();\r
- }\r
- }\r
-}\r
-\r
-function CheckLoadingPhase2()\r
-{\r
- if (gbNav4) {\r
- gbTryTime ++;\r
- if ("unknown" == gbLoading) {\r
- if (gbTryTime <= gbMaxTryTime )\r
- setTimeout("CheckLoadingPhase2()", 1000);\r
- else {\r
- if (gnVerMinor != 4.60) {\r
- alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");\r
- }\r
- } \r
- }\r
- }\r
-}\r
-\r
-function CheckAppletLoaded()\r
-{\r
- if (typeof(document.webhelp) == "undefined")\r
- {\r
- document.location.reload();\r
- if (gbretried < gbmaxretry)\r
- {\r
- gbretried ++;\r
- setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
- }\r
- }\r
-}\r
-\r
-function reDo() \r
-{\r
- if (innerWidth != origWidth || innerHeight != origHeight) \r
- {\r
- //reloaded applet if nessary\r
- gbretried = 0;\r
-\r
- if (gnVerMinor == 4.60) \r
- {\r
- //reload the applet again.\r
- document.location.reload();\r
- gbretried ++;\r
- }\r
- setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
- }\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if (oMsg)\r
- { \r
- var nMsgId = oMsg.nMessageId;\r
- var WebHelpApplet = null;\r
- if (gbNav4)\r
- {\r
- WebHelpApplet = document.applets["WebHelp"];\r
- if (!WebHelpApplet.Command)\r
- document.location="whgdata/whnvp30.htm";\r
- }\r
- else\r
- WebHelpApplet = WebHelp;\r
-\r
- if(nMsgId==WH_MSG_GETPANEINFO)\r
- {\r
- oMsg.oParam=gsCurrentPane;\r
- return false;\r
- }\r
- else if (gbLoading!="unknown"||gbNav6)\r
- {\r
- if (nMsgId == WH_MSG_SHOWTOC)\r
- {\r
- gsCurrentPane="toc";\r
- WebHelpApplet .Command("Contents", null);\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if (nMsgId == WH_MSG_SHOWIDX)\r
- {\r
- gsCurrentPane="idx";\r
- WebHelpApplet .Command("Index", null);\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if (nMsgId == WH_MSG_SHOWFTS)\r
- {\r
- gsCurrentPane="fts";\r
- WebHelpApplet .Command("Search", null);\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if (nMsgId == WH_MSG_SHOWGLO)\r
- {\r
- gsCurrentPane="glo";\r
- WebHelpApplet .Command("Glossary", null);\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if (nMsgId == WH_MSG_SYNCTOC)\r
- {\r
- gsCurrentPane="toc";\r
- var oTopicParam = oMsg.oParam;\r
- if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)\r
- {\r
- var sPPath = _browserStringToText(oTopicParam.sPPath);\r
- var sParam = "";\r
- for (var i = 0; i < oTopicParam.aPaths.length; i ++)\r
- {\r
- sParam += oTopicParam.aPaths[i] + "\r\r";\r
- }\r
- WebHelpApplet.Command("SyncToc", sPPath, sParam);\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_SEARCHTHIS)\r
- {\r
- gsCurrentPane="fts";\r
- WebHelpApplet .Command("Search", oMsg.oParam);\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-function getInitTocInfo()\r
-{\r
- // send message ask for the first time sync toc info.\r
- var oParam = new Object();\r
- oParam.oTocInfo = null;\r
- var oMsg = new whMessage(WH_MSG_GETTOCPATHS, this, 1, oParam);\r
- if (SendMessage(oMsg ))\r
- {\r
- var oTopicParam = oMsg.oParam.oTocInfo;\r
- if (oTopicParam && oTopicParam.aPaths && oTopicParam.aPaths.length > 0 && oTopicParam.sPPath)\r
- {\r
- var sPPath = _browserStringToText(oTopicParam.sPPath);\r
- var sParam = "";\r
- for (var i = 0; i < oTopicParam.aPaths.length; i ++)\r
- {\r
- sParam += oTopicParam.aPaths[i] + "\r\r";\r
- }\r
- var WebHelpApplet;\r
- if (gbNav4)\r
- WebHelpApplet = document.applets["WebHelp"];\r
- else\r
- WebHelpApplet = WebHelp;\r
- WebHelpApplet.Command("SyncToc", sPPath, sParam);\r
- }\r
- }\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
- RegisterListener2(this, WH_MSG_SHOWTOC);\r
- RegisterListener2(this, WH_MSG_SHOWIDX);\r
- RegisterListener2(this, WH_MSG_SHOWFTS);\r
- RegisterListener2(this, WH_MSG_SHOWGLO);\r
- RegisterListener2(this, WH_MSG_SYNCTOC);\r
- RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
- RegisterListener2(this, WH_MSG_GETPANEINFO);\r
-\r
- window.onunload = window_unload;\r
- window.onload=window_OnLoad;\r
- window.onerror = null;\r
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
-\r
- if (gbNav4 && !gbNav6 && gbWindows) {\r
- setTimeout("CheckLoadingPhase0()", 1000);\r
- }\r
-\r
- if (gbNav4) \r
- {\r
- origWidth = innerWidth;\r
- origHeight = innerHeight;\r
- onresize = reDo;\r
- }\r
-}\r
-else\r
- document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" bgcolor="c0c0c0">\r
-<applet code=WebHelp.class name=WebHelp archive=webhelp.jar width=100% height=100% MAYSCRIPT hspace=0 vspace=0>\r
-<PARAM name=ProjectFile value=whproj.xml><PARAM name=ResourceFile value=whres.xml>\r
-<PARAM name=Frame value=bsscright>\r
-<PARAM name=cabbase value=webhelp.cab>\r
-</applet>\r
-</body>\r
-</html>\r
+++ /dev/null
-<HTML>\r
-<HEAD>\r
-<TITLE>WebHelp Tabs Frame in Navigation Pane</TITLE>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<!-- WebHelp version 5.10 -->\r
-</HEAD>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgColor="#c0c0c0"\r
-var gsBgImage="";\r
-var gnCurPane=0;\r
-var gsFirstPane="";\r
-var goTocFont=null;\r
-var goIdxFont=null;\r
-var goFtsFont=null;\r
-var goGloFont=null;\r
-var gPane=new Array();\r
-var gShowFirst=0;\r
-var gnTabType=0;\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
- UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
- UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
- UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-}\r
-\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Toc") goTocFont=vFont;\r
- else if(sType=="Idx") goIdxFont=vFont;\r
- else if(sType=="Fts") goFtsFont=vFont;\r
- else if(sType=="Glo") goGloFont=vFont;\r
-}\r
-\r
-function TocWriteClassStyle()\r
-{\r
- var sStyle="<STYLE TYPE='text/css'>";\r
- sStyle+=".TextTabToc {"+getFontStyle(goTocFont)+"}";\r
- sStyle+=".TextTabIdx {"+getFontStyle(goIdxFont)+"}";\r
- sStyle+=".TextTabFts {"+getFontStyle(goFtsFont)+"}";\r
- sStyle+=".TextTabGlo {"+getFontStyle(goGloFont)+"}";\r
- sStyle+="A:hover {text-decoration:underline;}";\r
- sStyle+="</STYLE>";\r
- document.write(sStyle);\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- if(sBgColor!=null&&sBgColor.length>0)\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
- if(sBgImage!=null&&sBgImage.length>0)\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function selectToc()\r
-{\r
- var oMessage=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
- SendMessage(oMessage);\r
-}\r
-\r
-function selectIdx()\r
-{\r
- var oMessage=new whMessage(WH_MSG_SHOWIDX,this,1,null);\r
- SendMessage(oMessage);\r
-}\r
-function selectFts()\r
-{\r
- var oMessage=new whMessage(WH_MSG_SHOWFTS,this,1,null);\r
- SendMessage(oMessage);\r
-}\r
-\r
-function selectGlo()\r
-{\r
- var oMessage=new whMessage(WH_MSG_SHOWGLO,this,1,null);\r
- SendMessage(oMessage);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if(oMsg)\r
- {\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SHOWTOC)\r
- {\r
- setTimeout("showTabByName(\"toc\");",1);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWIDX)\r
- {\r
- setTimeout("showTabByName(\"idx\");",1);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWFTS)\r
- {\r
- setTimeout("showTabByName(\"fts\");",1);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWGLO)\r
- {\r
- setTimeout("showTabByName(\"glo\");",1);\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-function showTabByName(sTabName)\r
-{\r
- for(var i=0;i<gPane.length;i++)\r
- {\r
- if(gPane[i]==sTabName)\r
- {\r
- showTab(i);\r
- break;\r
- }\r
- }\r
-}\r
-\r
-function showTab(n)\r
-{\r
- gnCurPane=n;\r
- if(gnTabType==0)\r
- {\r
- if(n<gPane.length)\r
- {\r
- if(document.images["TocTab"]&&document.images["TocTab"]!=null){\r
- if(gPane[n]=="toc")\r
- document.images["TocTab"].src=getBtnImage("toc",1);\r
- else\r
- document.images["TocTab"].src=getBtnImage("toc",0);\r
- }\r
- if(document.images["IndexTab"]&&document.images["IndexTab"]!=null){\r
- if(gPane[n]=="idx")\r
- document.images["IndexTab"].src=getBtnImage("idx",1);\r
- else\r
- document.images["IndexTab"].src=getBtnImage("idx",0);\r
- }\r
- if(document.images["FtsTab"]&&document.images["FtsTab"]!=null){\r
- if(gPane[n]=="fts")\r
- document.images["FtsTab"].src=getBtnImage("fts",1);\r
- else\r
- document.images["FtsTab"].src=getBtnImage("fts",0);\r
- }\r
- if(document.images["GloTab"]&&document.images["GloTab"]!=null){\r
- if(gPane[n]=="glo")\r
- document.images["GloTab"].src=getBtnImage("glo",1);\r
- else\r
- document.images["GloTab"].src=getBtnImage("glo",0);\r
- }\r
- }\r
- }\r
- else if(gnTabType==1)\r
- {\r
- }\r
- else if(gnTabType==2)\r
- {\r
- if(n<gPane.length)\r
- {\r
- if(document.images["tabSelection"]!=null)\r
- document.images["tabSelection"].src=getMapImage(gPane[n]);\r
- }\r
- }\r
-}\r
-\r
-function addPane(sName)\r
-{\r
- gPane[gPane.length]=sName;\r
-}\r
-\r
-function setShowPane(sName)\r
-{\r
- if(gsFirstPane!="")\r
- sName=gsFirstPane;\r
- for(var i=0;i<gPane.length;i++)\r
- {\r
- if(gPane[i]==sName)\r
- gShowFirst=i;\r
- }\r
-}\r
-\r
-function selectDefaultTab()\r
-{\r
- showTab(gShowFirst);\r
- if(document.body)\r
- {\r
- if(gsBgImage&&gsBgImage.length>0)\r
- {\r
- document.body.background=gsBgImage;\r
- }\r
- if(gsBgColor&&gsBgColor.length>0)\r
- {\r
- document.body.bgColor=gsBgColor;\r
- }\r
- }\r
-}\r
-\r
-function getTabsHTML()\r
-{\r
- var sHTML="";\r
- for(var i=0;i<gPane.length;i++)\r
- {\r
- if(gnTabType==0)\r
- sHTML+=getTabHTML(gPane[i]);\r
- else if(gnTabType==1)\r
- {\r
- if(sHTML.length>0)\r
- {\r
- sHTML+=getSeparator();\r
- }\r
- sHTML+=getTabHTMLText(gPane[i]);\r
- }\r
-\r
- }\r
- return sHTML;\r
-}\r
-\r
-function getSeparator()\r
-{\r
- var sSep="";\r
- \r
- return sSep;\r
-}\r
-\r
-function getTabHTML(sTabName)\r
-{\r
- if (sTabName == "toc")\r
- return "<a title=\"Contents\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\" onmouseover=\"mouseOverToc();\" onmouseout=\"mouseOutToc();\"><img name=\"TocTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
- else if (sTabName =="idx")\r
- return "<a title=\"Index\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\" onmouseover=\"mouseOverIdx();\" onmouseout=\"mouseOutIdx();\"><img name=\"IndexTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
- else if (sTabName == "fts")\r
- return "<a title=\"Search\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\" onmouseover=\"mouseOverFts();\" onmouseout=\"mouseOutFts();\"><img name=\"FtsTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
- else if (sTabName == "glo")\r
- return "<a title=\"Glossary\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\"onmouseover=\"mouseOverGlo();\" onmouseout=\"mouseOutGlo();\"><img name=\"GloTab\" src=\"" + getBtnImage(sTabName, 0) + "\" border=\"0\"></a>";\r
- return "";\r
-}\r
-\r
-function mouseOverToc()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "toc")\r
- {\r
- sImg = getBtnImage("toc", 3);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("toc", 2);\r
- }\r
- if (sImg.length > 0)\r
- document.images["TocTab"].src = sImg;\r
-}\r
-\r
-function mouseOverIdx()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "idx")\r
- {\r
- sImg = getBtnImage("idx", 3);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("idx", 2);\r
- }\r
- if (sImg.length > 0)\r
- document.images["IndexTab"].src = sImg;\r
-}\r
-\r
-function mouseOverFts()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "fts")\r
- {\r
- sImg = getBtnImage("fts", 3);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("fts", 2);\r
- }\r
- if (sImg.length > 0)\r
- document.images["FtsTab"].src = sImg;\r
-}\r
-\r
-function mouseOverGlo()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "glo")\r
- {\r
- sImg = getBtnImage("glo", 3);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("glo", 2);\r
- }\r
- if (sImg.length > 0)\r
- document.images["GloTab"].src = sImg;\r
-}\r
-\r
-function mouseOutToc()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "toc")\r
- {\r
- sImg = getBtnImage("toc", 1);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("toc", 0);\r
- }\r
- if (sImg.length > 0)\r
- document.images["TocTab"].src = sImg;\r
-}\r
-\r
-function mouseOutIdx()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "idx")\r
- {\r
- sImg = getBtnImage("idx", 1);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("idx", 0);\r
- }\r
- if (sImg.length > 0)\r
- document.images["IndexTab"].src = sImg;\r
-}\r
-\r
-function mouseOutFts()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "fts")\r
- {\r
- sImg = getBtnImage("fts", 1);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("fts", 0);\r
- }\r
- if (sImg.length > 0)\r
- document.images["FtsTab"].src = sImg;\r
-}\r
-\r
-function mouseOutGlo()\r
-{\r
- var sImg = "";\r
- if (gPane[gnCurPane] == "glo")\r
- {\r
- sImg = getBtnImage("glo", 1);\r
- }\r
- else\r
- {\r
- sImg = getBtnImage("glo", 0);\r
- }\r
- if (sImg.length > 0)\r
- document.images["GloTab"].src = sImg;\r
-}\r
-\r
-function getTabHTMLText(sTabName)\r
-{\r
- if (sTabName == "toc")\r
- return "<a class=\"TextTabToc\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">Contents</a> ";\r
- else if (sTabName =="idx")\r
- return "<a class=\"TextTabIdx\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">Index</a> ";\r
- else if (sTabName == "fts")\r
- return "<a class=\"TextTabFts\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">Search</a> ";\r
- else if (sTabName == "glo")\r
- return "<a class=\"TextTabGlo\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">Glossary</a> ";\r
- return "";\r
-}\r
-\r
-function getImageMap()\r
-{\r
- var sHTML = "<map name=\"tabSelectionMap\">";\r
- for (var i = 0; i < gPane.length; i ++)\r
- {\r
- sHTML += getMapArea(gPane[i]);\r
- }\r
- sHTML += "</map>";\r
- return sHTML;\r
-}\r
-\r
-function getMapArea(sTabName)\r
-{\r
- if (sTabName == "toc")\r
- return "<area title=\"Contents\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectToc();return false;\">";\r
- else if (sTabName =="idx")\r
- return "<area title=\"Index\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectIdx();return false;\">";\r
- else if (sTabName == "fts")\r
- return "<area title=\"Search\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectFts();return false;\">";\r
- else if (sTabName == "glo")\r
- return "<area title=\"Glossary\" shape=\"\" coords=\"\" href=\"javascript:void(0);\" onclick=\"selectGlo();return false;\">";\r
- return "";\r
-}\r
-\r
-function getBtnImage(sTabName, nStatus)\r
-{\r
- if (sTabName == "toc")\r
- {\r
- if (nStatus == 0)\r
- return "whd_tab2.gif";\r
- else if (nStatus == 1)\r
- return "whd_tab1.gif";\r
- else if (nStatus == 2)\r
- return "";\r
- else if (nStatus == 3)\r
- return "";\r
- }\r
- else if (sTabName =="idx")\r
- {\r
- if (nStatus == 0)\r
- return "whd_tab4.gif";\r
- else if (nStatus == 1)\r
- return "whd_tab3.gif";\r
- else if (nStatus == 2)\r
- return "";\r
- else if (nStatus == 3)\r
- return "";\r
- }\r
- else if (sTabName == "fts")\r
- {\r
- if (nStatus == 0)\r
- return "whd_tab6.gif";\r
- else if (nStatus == 1)\r
- return "whd_tab5.gif";\r
- else if (nStatus == 2)\r
- return "";\r
- else if (nStatus == 3)\r
- return "";\r
- }\r
- else if (sTabName == "glo")\r
- {\r
- if (nStatus == 0)\r
- return "whd_tab8.gif";\r
- else if (nStatus == 1)\r
- return "whd_tab7.gif";\r
- else if (nStatus == 2)\r
- return "";\r
- else if (nStatus == 3)\r
- return "";\r
- }\r
- return "";\r
-}\r
-\r
-function getMapImage(sTabName)\r
-{\r
- if (sTabName == "toc")\r
- return "";\r
- else if (sTabName =="idx")\r
- return "";\r
- else if (sTabName == "fts")\r
- return "";\r
- else if (sTabName == "glo")\r
- return "";\r
- return "";\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
- window.onload = selectDefaultTab;\r
- RegisterListener2(this, WH_MSG_SHOWTOC);\r
- RegisterListener2(this, WH_MSG_SHOWIDX);\r
- RegisterListener2(this, WH_MSG_SHOWFTS);\r
- RegisterListener2(this, WH_MSG_SHOWGLO);\r
- window.onunload = window_unload;\r
- goTocFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
- goIdxFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
- goFtsFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
- goGloFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
-\r
- if (navigator.currentNavPen)\r
- gsFirstPane = navigator.currentNavPen;\r
-\r
- setBackgroundcolor("");\r
- setBackground("whd_tab0.gif");\r
- \r
- \r
- \r
- \r
- addPane("toc","whtdhtml.htm");\r
- addPane("fts","whfdhtml.htm");\r
- addPane("glo","whgdhtml.htm");\r
- setShowPane("toc");\r
-\r
-\r
- gnTabType = 0; // 0 button. // 1 text. // 2 image mapping.\r
- TocWriteClassStyle();\r
- var sHTML = "<body scroll=\"no\" bgcolor=\"#c0c0c0\" background=\"whd_tab0.gif\" style=\"margin-top:0;margin-bottom:0;margin-left:0;margin-right:0\">";\r
- if (gPane.length > 0)\r
- {\r
- if (gnTabType == 0 || gnTabType == 1)\r
- {\r
- sHTML += "<table width=\"100%\">";\r
- sHTML += "<tr>";\r
- sHTML += "<td>";\r
- sHTML += "<nobr>";\r
- sHTML += getTabsHTML();\r
- sHTML += "</nobr></td></tr>";\r
- sHTML += " <tr><td height=\"2\"></td></tr>";\r
- sHTML += "</table>";\r
- }\r
- else if (gnTabType == 2)\r
- {\r
- sHTML += getImageMap();\r
- sHTML +="<img name=\"tabSelection\" src=\"" + getMapImage(gPane[0]) + "\" x-maintain-ratio=\"true\" usemap=\"#tabSelectionMap\"";\r
- if (gbIE)\r
- sHTML +=" style=\"border: none; width:px; height:px; float: none;\"";\r
- sHTML +=" width=\"\" height=\"\" border=\"0\">";\r
- }\r
- }\r
- sHTML += "</body>";\r
- document.write(sHTML);\r
-}\r
-else\r
- document.location.reload();\r
-\r
-if (window.gbNav6)\r
-{\r
- var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
- SendMessage(oMsg);\r
-}\r
-//-->\r
-</script>\r
-</HTML>
\ No newline at end of file
+++ /dev/null
-<?xml version='1.0' encoding='ISO-8859-1' ?>\r
-<topictemplate>\r
- <topic type="normal">\r
- <add tag="head" pos="endbefore" >\r
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_PROXY_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.setRelStartPage)\r
- {\r
- ";\r
- OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
- OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
- OutputInTopicNavBarDataButtons("addButton(\"%s\",%s, \"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%d,%d);\r\n");\r
- "\r
- }\r
-\r
-\r
- if (window.setRelStartPage)\r
- {\r
- ";\r
- OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
- OutputInTopicNavBarDataWebSearch.href("addSearchFormHref(\"%s\");\r\n");\r
- "\r
- autoSync(";WH_USER_OPTIONS.autosync_toc;");\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-"]]>\r
- </add>\r
- <add tag="body" pos="beginafter">\r
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(";WH_WEBSKIN.topic.bar.top.pos;");\r
-//-->\r
-</script>"]]> \r
- </add>\r
- <add tag="body" pos="endbefore">\r
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(";WH_WEBSKIN.topic.bar.bottom.pos;");\r
-//-->\r
-</script>";\r
-OutputInTopicNavBarDataWebSearch.form();]]> \r
- </add>\r
- </topic>\r
- <topic type="frameset">\r
- <add tag="head" pos="endbefore" >\r
- <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_FRAMESET_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>\r
-<script type=\"text/javascript\" language=\"javascript1.2\">\r
-<!--\r
-if (window.setRelStartPage)\r
-{\r
-";\r
- OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
- OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
- OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
-"\r
-if (window.autoSync)\r
- autoSync(1);\r
-}\r
-//-->\r
-</script>\r
-"]]>\r
- </add>\r
- </topic>\r
-</topictemplate>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Search Result</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whfhost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(window.gbWhFHost)\r
-{\r
- \r
- \r
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Error", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
- setActiveBgColor("#cccccc");\r
- setMargin("0pt");\r
- setIndent("9pt");\r
- FtsWriteClassStyle();\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
-</body>\r
-</html>\r
-\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Search Frame</TITLE>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-var gbIndexLayerInit = false;\r
-var strWrite="";\r
-if (window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
-{\r
- if (gbMac)\r
- strWrite="<FRAMESET ROWS='45,100%' framespacing=0 frameborder=1>";\r
- else\r
- strWrite="<FRAMESET ROWS='60,100%' framespacing=0 frameborder=1>";\r
- strWrite +="<FRAME SRC='whfform.htm' title='search form frame' name='ftsform' noresize='yes' scrolling='no'>";\r
- strWrite +="<FRAME SRC='whfbody.htm' title='search result frame' name='ftsbody' scrolling='yes'>";\r
- strWrite +="</FRAMESET>";\r
- document.write(strWrite);\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Search Form</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<style>\r
-<!--\r
-body {margin:0;}\r
--->\r
-</style>\r
-<body bgcolor="#c0c0c0">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whform.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gstrInput = "";\r
-function ftsLookup(bCR)\r
-{\r
- if (bCR)\r
- {\r
- var strInput = document.FtsInputForm.keywordField.value.toUpperCase();\r
- if (strInput != "") {\r
- var oMsg = new whMessage(WH_MSG_SEARCHFTSKEY, this, 1, strInput);\r
- if (!SendMessage(oMsg))\r
- {\r
- gstrInput = strInput;\r
- }\r
- else\r
- gstrInput = "";\r
- }\r
-\r
- if (gbMac) {\r
- document.FtsInputForm.keywordField.focus();\r
- }\r
- }\r
- return;\r
-}\r
-\r
-function beforeInit()\r
-{\r
- var oParam = new Object();\r
- oParam.sValue = "";\r
- var oMsg = new whMessage(WH_MSG_GETSEARCHS, this, 1, oParam);\r
- if (SendMessage(oMsg))\r
- {\r
- if (oParam.sValue != "" && oParam.sValue != "- Search -")\r
- {\r
- document.FtsInputForm.keywordField.value = oParam.sValue;\r
- gfunLookUp(true);\r
- }\r
- }\r
- init(); \r
-}\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
- UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
- UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
- UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
- UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
- UnRegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if (oMsg.nMessageId == WH_MSG_SHOWFTS)\r
- {\r
- document.FtsInputForm.keywordField.focus();\r
- }\r
- else if (oMsg.nMessageId == WH_MSG_SHOWIDX ||\r
- oMsg.nMessageId == WH_MSG_SHOWTOC || \r
- oMsg.nMessageId == WH_MSG_SHOWGLO)\r
- {\r
- document.FtsInputForm.keywordField.blur();\r
- }\r
- else if (oMsg.nMessageId == WH_MSG_SEARCHTHIS)\r
- {\r
- if (oMsg.oParam != "- Search -")\r
- {\r
- document.FtsInputForm.keywordField.value = oMsg.oParam;\r
- gfunLookUp(true);\r
- }\r
- }\r
- else if (oMsg.nMessageId == WH_MSG_BACKUPSEARCH)\r
- {\r
- if (gstrInput)\r
- {\r
- oMsg.oParam = gstrInput;\r
- gstrInput = "";\r
- return false;\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-if (window.gbWhForm)\r
-{\r
- RegisterListener2(this, WH_MSG_SHOWTOC);\r
- RegisterListener2(this, WH_MSG_SHOWIDX);\r
- RegisterListener2(this, WH_MSG_SHOWFTS);\r
- RegisterListener2(this, WH_MSG_SHOWGLO);\r
- RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
- RegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
- gfunLookUp = ftsLookup;\r
- gfunInit = null;\r
- gstrFormName = "FtsInputForm"\r
- gsTitle = "Type in the word(s) to search for:";\r
- gsTitle = "Type in the word(s) to search for:";\r
- setGoImage1("");\r
- \r
- \r
- \r
- \r
- \r
- \r
- setGoText("Go");\r
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
- \r
- \r
- document.write(getFormHTML());\r
- writeFormStyle();\r
- window.onload = beforeInit;\r
- window.onunload=window_unload;\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.003\r
-var gsSK2=null;\r
-var gsSK=null;\r
-var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";\r
-var gnCLF=0;\r
-var gsHelpCannotSearch="Cannot search for that phrase.";\r
-var gsNoTopics="No Topics Found.";\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSearchMsg="Searching...";\r
-var gsResultDivID="ResultDiv";\r
-var gaaFCD=new Array();\r
-var gaaFTCD=new Array();\r
-var goCF=null;\r
-var goCTF=null;\r
-var gaTI=null;\r
-var gnCurrentOp=0;\r
-var gbNot=false;\r
-var gbReady=false;\r
-var gnLoadFts=1;\r
-var gnCacheLimits=5;\r
-var gaCCD=new Array();\r
-var gbXML=false;\r
-var gaData=new Array();\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var gsMargin="0pt";\r
-var gsIndent="0pt";\r
-var gsCheckKey=null;\r
-var gnIndexNum=0;\r
-var gaFtsContentsCon=null;\r
-var gaTopicCheckInfo=null;\r
-var gnTopicCheck=0;\r
-var goFont=null;\r
-var goErrFont=null;\r
-var goHoverFont=null;\r
-var gsABgColor="#cccccc";\r
-var gbWhFHost=false;\r
-var gbFirst=false;\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Normal")\r
- goFont=vFont;\r
- else if(sType=="Error")\r
- goErrFont=vFont;\r
- else if(sType=="Hover")\r
- goHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
- gsABgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
- gsMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
- gsIndent=sIndent;\r
-}\r
-\r
-function updateCache(oCF)\r
-{\r
- var len=gaCCD.length;\r
- if(len<gnCacheLimits*gnCLF)\r
- gaCCD[len]=oCF;\r
- else{\r
- gaCCD[0].aTopics=null;\r
- gaCCD[0].aFtsKeys=null;\r
- removeItemFromArray(gaCCD,0);\r
- gaCCD[len-1]=oCF;\r
- }\r
-}\r
-\r
-function addFtsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
- gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
- if(gnLoadFts==1)\r
- {\r
- var aFCD=new Array();\r
- var aFTCD=new Array();\r
- ftsReady(aFCD,aFTCD);\r
- }\r
- else if(gnLoadFts==3)\r
- {\r
- var aTopics=new Array();\r
- putFtsTData(aTopics);\r
- }\r
- else if(gnLoadFts==2)\r
- {\r
- putFtsWData(aFtsContents);\r
- var aFtsContents=new Array();\r
- }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
- if(gnLoadFts==1)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aFCD=new Array();\r
- var aFTCD=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="chunkinfo")\r
- {\r
- var sURL=oChild.getAttribute("url");\r
- var sFirst=oChild.getAttribute("first");\r
- var sLast=oChild.getAttribute("last");\r
- if(sURL&&sFirst&&sLast)\r
- {\r
- item=new Object();\r
- item.sStartKey=sFirst;\r
- item.sEndKey=sLast;\r
- item.sFileName=sURL;\r
- aFCD[aFCD.length]=item;\r
- }\r
- }\r
- else if(oChild.nodeName=="tchunkinfo")\r
- {\r
- var sURL=oChild.getAttribute("url");\r
- var nB=parseInt(oChild.getAttribute("first"));\r
- var nE=parseInt(oChild.getAttribute("last"));\r
- if(sURL&&sFirst&&sLast)\r
- {\r
- item=new Object();\r
- item.nBegin=nB;\r
- item.nEnd=nE;\r
- item.sFileName=sURL;\r
- aFTCD[aFTCD.length]=item;\r
- }\r
-\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- ftsReady(aFCD,aFTCD);\r
- }\r
- }\r
- else if(gnLoadFts==3)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aTopics=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="topic")\r
- {\r
- var name=oChild.getAttribute("name");\r
- var sURL=oChild.getAttribute("url");\r
- if(name&&name.length>0&&sURL)\r
- {\r
- var topic=new Object();\r
- topic.sTopicTitle=name;\r
- topic.sTopicURL=sURL;\r
- aTopics[aTopics.length]=topic;\r
- }\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- putFtsTData(aTopics);\r
- }\r
- }\r
- else if(gnLoadFts==2)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var oChild=node.firstChild;\r
- var aFtsContents=new Array();\r
- while(oChild)\r
- {\r
- if(oChild.nodeName=="key")\r
- {\r
- var name=oChild.getAttribute("name");\r
- if(name&&name.length>0)\r
- {\r
- var item=new Object();\r
- item.sItemName=name;\r
- aFtsContents[aFtsContents.length]=item;\r
- var oChildChild=oChild.firstChild;\r
- while(oChildChild)\r
- {\r
- if(oChildChild.nodeName=="#text")\r
- {\r
- var sIDs=oChildChild.nodeValue;\r
- if(sIDs)\r
- {\r
- var nBPos=0;\r
- do\r
- {\r
- var nPos=sIDs.indexOf(",",nBPos);\r
- var sID=null;\r
- if(nPos!=-1)\r
- sID=sIDs.substring(nBPos,nPos);\r
- else\r
- sID=sIDs.substring(nBPos);\r
-\r
- if(sID)\r
- {\r
- var id=parseInt(sID);\r
- if(!isNaN(id))\r
- {\r
- if(!item.aTopics)\r
- item.aTopics=new Array();\r
- item.aTopics[item.aTopics.length]=id;\r
- }\r
- }\r
- nBPos=nPos+1;\r
- }while(nBPos!=0&&nBPos<sIDs.length);\r
- }\r
- }\r
- oChildChild=oChildChild.nextSibling;\r
- }\r
- }\r
- }\r
- oChild=oChild.nextSibling;\r
- }\r
- putFtsWData(aFtsContents);\r
- }\r
- }\r
-}\r
-\r
-function ftsInfo(sPPath,sDPath,sFtsFile)\r
-{\r
- this.sPPath=sPPath;\r
- this.sDPath=sDPath;\r
- this.sFtsFile=sFtsFile;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- {\r
- document.body.background=gsBgImage;\r
- }\r
- if(gsBgColor&&gsBgColor.length>0)\r
- {\r
- document.body.bgColor=gsBgColor;\r
- }\r
- writeResultDiv();\r
- loadFts();\r
- var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
- SendMessage(oMsg);\r
-}\r
-\r
-function writeResultDiv()\r
-{\r
- var sHTML="<div id=\""+gsResultDivID+"\" style=\"POSITION:absolute;\"></div>";\r
- document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-}\r
-\r
-function loadFts()\r
-{\r
- if(!gbReady)\r
- {\r
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
- if(SendMessage(oResMsg)&&oResMsg.oParam)\r
- {\r
- gbReady=true;\r
- var oProj=oResMsg.oParam;\r
- var aProj=oProj.aProj;\r
- gbXML=oProj.bXML;\r
- if(aProj.length>0)\r
- {\r
- var sLangId=aProj[0].sLangId;\r
- for(var i=0;i<aProj.length;i++)\r
- {\r
- if(aProj[i].sFts&&aProj[i].sLangId==sLangId)\r
- {\r
- addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);\r
- }\r
- }\r
- }\r
- loadFD();\r
-\r
- } \r
- }\r
-}\r
-\r
-function loadFD()\r
-{\r
- if(gnCLF<gaData.length)\r
- {\r
- gnLoadFts=1;\r
- loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);\r
- }\r
- else \r
- {\r
- var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);\r
- if (SendMessage(oMsg))\r
- {\r
- if (oMsg.oParam)\r
- {\r
- gsSK=oMsg.oParam.toLowerCase();\r
- findFTSKey();\r
- }\r
- }\r
- RegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
- }\r
-}\r
-\r
-function loadData2(sFile)\r
-{\r
- if(gbXML)\r
- loadDataXML(sFile);\r
- else\r
- loadData(sFile);\r
-}\r
-\r
-function findFTSKey()\r
-{\r
- gaTI=new Array();\r
- gnCurrentOp=1;\r
- gbNot=false;\r
- displayMsg(gsSearchMsg);\r
- if(gsSK!="")\r
- {\r
- gbFirst=true;\r
- findOneKey();\r
- }\r
-}\r
-\r
-function findOneKey()\r
-{\r
- if(gsSK && gsSK!="")\r
- {\r
- var sInput=gsSK;\r
- var sCW="";\r
- var nS=-1;\r
- var nSep=-1;\r
- for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){\r
- var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));\r
- if((nFound!=-1)&&((nS==-1)||(nFound<nS))){\r
- nS=nFound;\r
- nSep=nChar;\r
- }\r
- }\r
- if(nS==-1){\r
- sCW=sInput;\r
- sInput="";\r
- }else{\r
- sCW=sInput.substring(0,nS);\r
- sInput=sInput.substring(nS+1);\r
- }\r
-\r
- gsSK=sInput;\r
- \r
- if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){\r
- gnCurrentOp=0;\r
- gbNot=false;\r
- }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){\r
- gnCurrentOp=1;\r
- gbNot=false;\r
- }else if((sCW=="not")||\r
- ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){\r
- gbNot=!gbNot;\r
- }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){\r
- var sCurrentStem=GetStem(sCW);\r
- gsCW=sCurrentStem;\r
- ftsFindKeyword();\r
- return;\r
- }\r
- findOneKey();\r
- }\r
- else{\r
- displayTopics();\r
- checkAgain();\r
- }\r
-}\r
-\r
-function checkAgain()\r
-{\r
- gsCheckKey = "";\r
- gnIndexNum = 0;\r
- gsSK=gsSK2;\r
- gsSK2=null;\r
- if(gsSK!=null)\r
- setTimeout("findFTSKey();",1);\r
-}\r
-\r
-function displayTopics()\r
-{\r
- var sHTML="";\r
- var sLine="";\r
- for(var i=0;i<gaTI.length;i++){\r
- sLine+="<dt><nobr><a href='"+gaTI[i].sTopicURL+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
- if(i>>4<<4==i)\r
- {\r
- sHTML+=sLine;\r
- sLine="";\r
- }\r
- }\r
- if(sLine.length>0)\r
- sHTML+=sLine;\r
-\r
- if(sHTML.length==0)\r
- sHTML="<P>"+gsNoTopics+"</P>"\r
- else\r
- sHTML="<dl>"+sHTML+"</dl>";\r
-\r
- var resultDiv=getElement(gsResultDivID);\r
- if(resultDiv)\r
- resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function displayMsg(sErrorMsg)\r
-{\r
- var sHTML="<P>"+sErrorMsg+"</P>";\r
-\r
- var resultDiv=getElement(gsResultDivID);\r
- if(resultDiv)\r
- resultDiv.innerHTML=sHTML;\r
-}\r
-\r
-function ftsFindKeyword()\r
-{\r
- var sKey=gsCW;\r
- var bNeedLoad=false;\r
- var aFtsContentsCon=null;\r
- var s=0;\r
- if(sKey==null) return;\r
- if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)\r
- {\r
- aFtsContentsCon=new Array();\r
- gnCheck=0;\r
- gsCheckKey=sKey;\r
- gnTopicCheck=0;\r
- gaTopicCheckInfo=null;\r
- }\r
- else{\r
- s=gnIndexNum;\r
- aFtsContentsCon=gaFtsContentsCon;\r
- }\r
- for(var i=gnCheck;i<gaaFCD.length;i++)\r
- {\r
- var oCF=getChunkedFts(i,sKey);\r
- if(oCF)\r
- {\r
- if(!oCF.aFtsKeys&&oCF.sFileName!=null)\r
- {\r
- bNeedLoad=true;\r
- oCF.nProjId=i;\r
- goCF=oCF;\r
- gnIndexNum=s;\r
- gnCheck=i;\r
- gaFtsContentsCon=aFtsContentsCon;\r
- gnLoadFts=2;\r
- beginLoading();\r
- loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);\r
- break;\r
- }\r
- else{\r
- aFtsContentsCon[s++]=oCF;\r
- }\r
- }\r
- }\r
- if(!bNeedLoad)\r
- {\r
- var aTI=gaTopicCheckInfo;\r
- for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)\r
- {\r
- var aTIPart=getTopics(aFtsContentsCon[m],sKey);\r
- if(aTIPart==null)\r
- {\r
- gnCheck=gaaFCD.length;\r
- gnTopicCheck=m;\r
- gaTopicCheckInfo=aTI;\r
- gaFtsContentsCon=aFtsContentsCon;\r
- return;\r
- }\r
- if(m==0)\r
- aTI=aTIPart;\r
- else\r
- aTI=mergeTopics(aTI,aTIPart);\r
- }\r
- if(mergewithPreviousResult(aTI))\r
- {\r
- gbFirst=false;\r
- findOneKey();\r
- }\r
- else\r
- checkAgain();\r
- }\r
-}\r
-\r
-function mergewithPreviousResult(aTI)\r
-{\r
- if(aTI!=null&&aTI.length!=0)\r
- {\r
- var nNumTopics=aTI.length;\r
- if(gnCurrentOp==0||gbFirst){\r
- if(gbNot){\r
- displayMsg(gsHelpCannotSearch);\r
- return false;\r
- }else{\r
- var aLS,aSS;\r
- if(gaTI.length>=aTI.length)\r
- {\r
- aLS=gaTI;\r
- aSS=aTI;\r
- }\r
- else\r
- {\r
- aLS=aTI;\r
- aSS=gaTI;\r
- }\r
- var s=0;\r
- for(var i=0;i<aSS.length;i++)\r
- {\r
- var bAlreadyThere=false;\r
- for(var j=s;j<aLS.length;j++)\r
- {\r
- if(aSS[i].equalTo(aLS[j]))\r
- {\r
- bAlreadyThere=true;\r
- s=j;\r
- break;\r
- }\r
- }\r
- if(!bAlreadyThere)\r
- {\r
- insertTopic(aLS,aSS[i]);\r
- }\r
- }\r
- gaTI=aLS;\r
- }\r
- }else if(gnCurrentOp==1){\r
- if(gbNot){\r
- var s=0;\r
- for(var i=0;i<aTI.length;i++)\r
- {\r
- for(var j=s;j<gaTI.length;j++)\r
- {\r
- if(aTI[i].equalTo(gaTI[j]))\r
- {\r
- removeItemFromArray(gaTI,j);\r
- s=j;\r
- break;\r
- }\r
- }\r
- }\r
- }else{\r
- var s=0;\r
- for(var i=0;i<gaTI.length;i++)\r
- {\r
- var bFound=false;\r
- for(var j=s;j<aTI.length;j++)\r
- {\r
- if(gaTI[i].equalTo(aTI[j]))\r
- {\r
- bFound=true;\r
- s=j;\r
- }\r
- }\r
- if(!bFound)\r
- {\r
- removeItemFromArray(gaTI,i);\r
- i--;\r
- }\r
- } \r
- }\r
- }\r
- }else{\r
- if((gnCurrentOp==1)&&(!gbNot)){\r
- gaTI.length=0;\r
- }else if((gnCurrentOp==0)&&(gbNot)){\r
- displayMsg(gsHelpCannotSearch);\r
- return false;\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-function insertTopic(aTI,oTI)\r
-{\r
- var nB=0;\r
- var nE=aTI.length-1;\r
- if(nE>=0)\r
- {\r
- var nM;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)\r
- nE=nM-1;\r
- else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
- nB=nM+1;\r
- else\r
- {\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- insertItemIntoArray(aTI,nM,oTI);\r
- else\r
- {\r
- if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
- insertItemIntoArray(aTI,nM+1,oTI);\r
- else\r
- insertItemIntoArray(aTI,nM,oTI);\r
- }\r
- }\r
- else\r
- aTI[0]=oTI;\r
-}\r
-\r
-function mergeTopics(aTI1,aTI2)\r
-{\r
- var i1=0;\r
- var i2=0;\r
- var len1=aTI1.length;\r
- var len2=aTI2.length;\r
- var aTopicNew=new Array();\r
- var i=0;\r
- while(i1<len1||i2<len2)\r
- {\r
- if(i1<len1&&i2<len2)\r
- {\r
- if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)\r
- aTopicNew[i++]=aTI1[i1++];\r
- else\r
- aTopicNew[i++]=aTI2[i2++];\r
- }\r
- else if(i1<len1)\r
- aTopicNew[i++]=aTI1[i1++];\r
- else if(i2<len2)\r
- aTopicNew[i++]=aTI2[i2++];\r
- }\r
- return aTopicNew;\r
-}\r
-\r
-function getTopics(oCF,sKey)\r
-{\r
- var aTIPart=new Array();\r
- if(oCF&&oCF.aFtsKeys)\r
- {\r
- var keys=oCF.aFtsKeys;\r
- var nB=0;\r
- var nE=keys.length-1;\r
- var nM=-1;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(compare(keys[nM].sItemName,sKey)>0)\r
- nE=nM-1;\r
- else if(compare(keys[nM].sItemName,sKey)<0)\r
- nB=nM+1;\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- {\r
- if(keys[nM].aTopics)\r
- {\r
- for(var i=0;i<keys[nM].aTopics.length;i++)\r
- {\r
- var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);\r
- if(oTC.aTopics)\r
- {\r
- aTIPart[aTIPart.length]=\r
- new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,\r
- gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);\r
- }\r
- else{\r
- goCTF=oTC;\r
- gnLoadFts=3;\r
- beginLoading();\r
- loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);\r
- return null;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- return aTIPart;\r
-}\r
-\r
-function getTopicChunk(aFTCD,nTopicId)\r
-{\r
- if(aFTCD&&aFTCD.length)\r
- {\r
- var nB=0;\r
- var nE=aFTCD.length-1;\r
- var nM=-1;\r
- var bFound=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(aFTCD[nM].nBegin>nTopicId)\r
- nE=nM-1;\r
- else if(aFTCD[nM].nEnd<nTopicId)\r
- nB=nM+1;\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nB<=nE);\r
- if(bFound)\r
- return aFTCD[nM];\r
- }\r
- return null;\r
-}\r
-\r
-function endLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(oDiv)\r
- oDiv.style.visibility="hidden";\r
-}\r
-\r
-function beginLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(!oDiv)\r
- {\r
- document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());\r
- oDiv=getElement(gsLoadingDivID);\r
- }\r
- \r
- if(oDiv)\r
- {\r
- oDiv.style.top=document.body.scrollTop;\r
- oDiv.style.visibility="visible";\r
- }\r
-}\r
-\r
-function writeLoadingDiv(nIIdx)\r
-{\r
- return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-function topicInfo(sTopicTitle,sTopicURL)\r
-{\r
- this.sTopicTitle=sTopicTitle;\r
- this.sTopicURL=sTopicURL;\r
- this.equalTo=function(oTI)\r
- {\r
- return ((this.sTopicTitle==oTI.sTopicTitle)&&\r
- (this.sTopicURL==oTI.sTopicURL));\r
- }\r
-}\r
-\r
-function getChunkedFts(nIndex,sKey)\r
-{\r
- var oCF=null;\r
- if(nIndex<gaaFCD.length)\r
- {\r
- var len=gaaFCD[nIndex].length;\r
- if(len>0)\r
- {\r
- var nB=0;\r
- var nE=len-1;\r
- var bFound=false;\r
- do{\r
- var nM=(nB+nE)>>1;\r
- if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)\r
- {\r
- nB=nM+1;\r
- }\r
- else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)\r
- {\r
- nE=nM-1;\r
- }\r
- else{\r
- bFound=true;\r
- break;\r
- }\r
- }while(nE>=nB);\r
- if(bFound)\r
- oCF=gaaFCD[nIndex][nM];\r
- }\r
- }\r
- return oCF;\r
-}\r
-\r
-function ftsReady(aFCD,aFTCD)\r
-{\r
- endLoading();\r
- gaaFTCD[gnCLF]=aFTCD;\r
- gaaFCD[gnCLF++]=aFCD;\r
- setTimeout("loadFD();",1);\r
-}\r
-\r
-function putFtsTData(aTopics)\r
-{\r
- endLoading();\r
- var oCTF=goCTF;\r
- if(oCTF)\r
- {\r
- oCTF.aTopics=aTopics;\r
- setTimeout("ftsFindKeyword();",1);\r
- }\r
-}\r
-\r
-function putFtsWData(aFtsContents)\r
-{\r
- endLoading();\r
- var oCF=goCF;\r
- if(oCF)\r
- {\r
- updateCache(oCF);\r
- oCF.aFtsKeys=aFtsContents;\r
- setTimeout("ftsFindKeyword();",1);\r
- }\r
-}\r
-\r
-function IsStopWord(sCW,aFtsStopArray)\r
-{\r
- var nStopArrayLen=aFtsStopArray.length;\r
- var nB=0;\r
- var nE=nStopArrayLen-1;\r
- var nM=0;\r
- var bFound=false;\r
- var sStopWord="";\r
- while(nB<=nE){\r
- nM=(nB+nE);\r
- nM>>=1;\r
- sStopWord=aFtsStopArray[nM];\r
- if(compare(sCW,sStopWord)>0){\r
- nB=(nB==nM)?nM+1:nM;\r
- }else{\r
- if(compare(sCW,sStopWord)<0){\r
- nE=(nE==nM)?nM-1:nM;\r
- }else{\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- }\r
- return bFound;\r
-}\r
-\r
-function GetStem(szWord)\r
-{\r
- if(gaFtsStem==null||gaFtsStem.length==0)return szWord;\r
- var aStems=gaFtsStem;\r
-\r
- var nStemPos=0;\r
- var csStem="";\r
- for(var iStem=0;iStem<aStems.length;iStem++){\r
-\r
- if(aStems[iStem].length>=szWord.length-1) continue;\r
- nStemPos=szWord.lastIndexOf(aStems[iStem]);\r
- if(nStemPos>0){\r
- var cssub=szWord.substring(nStemPos);\r
- if(cssub==aStems[iStem]){\r
- csStem=szWord;\r
- if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){\r
- csStem=csStem.substring(0,nStemPos-1);\r
- }else{\r
- csStem=csStem.substring(0,nStemPos);\r
- }\r
- return csStem;\r
- }\r
- }\r
- }\r
- return szWord;\r
-}\r
-\r
-function FtsWriteClassStyle()\r
-{\r
- var sStyle="<STYLE TYPE='text/css'>\n";\r
- if (gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
- sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
- sStyle+="</STYLE>";\r
- document.write(sStyle);\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
- UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SEARCHFTSKEY)\r
- {\r
- if(oMsg.oParam)\r
- {\r
- if(gsSK==null||gsSK=="")\r
- {\r
- gsSK=oMsg.oParam.toLowerCase();\r
- findFTSKey();\r
- }\r
- else\r
- gsSK2=oMsg.oParam.toLowerCase();\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_PROJECTREADY)\r
- {\r
- loadFts();\r
- }\r
- return true;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)\r
-{\r
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
- goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");\r
- goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_BUnload;\r
- window.onunload=window_Unload;\r
- RegisterListener2(this,WH_MSG_PROJECTREADY);\r
- gbWhFHost=true;\r
-}\r
-else\r
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001\r
-var gfunLookUp;\r
-var gbInputEnable;\r
-var gfunInit;\r
-var gstrFormName= "";\r
-var gbWithButton = false;\r
-var gsTitle="";\r
-var gsOverImage = "";\r
-var gsOutImage = "";\r
-var gsClickImage = "";\r
-var gsText = "";\r
-var gsBgColor = "#c0c0c0";\r
-var gsBgImage = "";\r
-var gbInImage = 0;\r
-var gbInputEnable = 0;\r
-\r
-var goTitleFont=null;\r
-var goInputFont=null;\r
-var goNormalFont=null;\r
-var goHoverFont=null;\r
-var gnType=-1;\r
-var gbWhForm=false;\r
-\r
-function setBackground(sBgImage)\r
-{\r
- if (sBgImage != null && sBgImage.length > 0)\r
- gsBgImage = sBgImage;\r
-\r
- if (gsBgImage && gsBgImage .length > 0)\r
- {\r
- document.body.background = gsBgImage ;\r
- }\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- if (sBgColor != null && sBgColor.length > 0)\r
- gsBgColor = sBgColor;\r
-\r
- if (gsBgColor&& gsBgColor.length > 0)\r
- {\r
- document.body.bgColor = gsBgColor;\r
- }\r
-}\r
-\r
-function setBtnType(sType)\r
-{\r
- if (sType == "image")\r
- {\r
- gnType = 0;\r
- }\r
- else if (sType == "text")\r
- {\r
- gnType = 1;\r
- }\r
-}\r
-\r
-function setGoImage1(sImage1)\r
-{\r
- gsOutImage = sImage1;\r
- if (gsOutImage && gsOutImage.length > 0)\r
- gbWithButton = true;\r
-}\r
-\r
-function setGoImage2(sImage2)\r
-{\r
- gsOverImage = sImage2;\r
- if (gsOverImage && gsOverImage.length > 0)\r
- gbWithButton = true;\r
-}\r
-\r
-function setGoImage3(sImage3)\r
-{\r
- gsClickImage = sImage3;\r
- if (gsClickImage && gsClickImage.length > 0)\r
- gbWithButton = true;\r
-}\r
-\r
-function setGoText(sText)\r
-{\r
- gsText = sText;\r
- if (gsText.length > 0)\r
- gbWithButton = true;\r
-}\r
-\r
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
-{\r
- var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
- if (sType == "Title")\r
- {\r
- goTitleFont = vFont;\r
- var vFont1 = new whFont(sFontName, sFontSize, "black", sFontStyle, sFontWeight, sFontDecoration);\r
- goInputFont=vFont1; \r
- }\r
- else if (sType == "Normal")\r
- goNormalFont = vFont;\r
- else if (sType == "Hover")\r
- goHoverFont = vFont;\r
-}\r
-\r
-function writeFormStyle()\r
-{\r
- var sStyle = "<style type='text/css'>";\r
- sStyle += "p.title {" + getFontStyle(goTitleFont) + "margin-top:0;margin-bottom:0}\n";\r
- sStyle += ".inputfield {" + getFontStyle(goInputFont) +"width:100%; }\n";\r
- sStyle+="A:link {"+getFontStyle(goNormalFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goNormalFont)+"}\n";\r
- sStyle +="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
- sStyle+=".clsFormBackground{\n";\r
- if (gsBgImage)\r
- sStyle+="border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="border-top:black 1px solid;}\n";\r
-\r
- sStyle += "</style>";\r
- document.write(sStyle);\r
-}\r
-\r
-function lookupKeyDown()\r
-{\r
- if (gbInputEnable)\r
- {\r
- if (gbIE4)\r
- {\r
- if (event.keyCode == 13) //Enter key\r
- gfunLookUp(true);\r
- else\r
- gfunLookUp(false);\r
- } \r
- else\r
- gfunLookUp(false);\r
- }\r
-}\r
-\r
-function init()\r
-{\r
- if (gfunInit)\r
- gfunInit();\r
- if (!window.Array) return;\r
- document.onkeyup = lookupKeyDown;\r
-}\r
-\r
-function inputSubmit()\r
-{\r
- if ((gbInputEnable && !gbIE4)|| gbInImage)\r
- gfunLookUp(true);\r
-}\r
-\r
-function inputEnable(bEnable)\r
-{\r
- gbInputEnable = bEnable;\r
-}\r
-\r
-function inImage(bImage)\r
-{\r
- gbInImage = bImage;\r
-}\r
-\r
-function getFormHTML()\r
-{\r
- var sForm = "";\r
- sForm += "<table class=\"clsFormBackground\" width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">";\r
- sForm += "<form name=\"" + gstrFormName + "\" method=\"POST\" action=\"javascript:inputSubmit()\" style=\"width:100%\">";\r
- sForm += "<tr>";\r
- sForm += "<td>";\r
- sForm += "<p class=title><nobr>" + gsTitle + "</nobr><br><table width=\"100%\"><tr valign=\"middle\"><td width=\"100%\"><input class=\"inputfield\" type=\"text\" name=\"keywordField\" onfocus=\"inputEnable(1);\" onblur=\"inputEnable(0);\"></td>";\r
- if (gbWithButton && gnType >= 0)\r
- {\r
- sForm += "<td><a title=\"submit button\" href=\"javascript:void(0);\" onclick=\"" + gstrFormName + ".submit(); return false;\" onfocus=\"inImage(1);\" onblur=\"inImage(0);\" onmouseup=\"onMouseUp();\" onmousedown=\"onMouseDown();\" onmouseover=\"onMouseOver();\" onmouseout=\"onMouseOut();\">"\r
- if (gnType == 0)\r
- {\r
- if (!gsText)\r
- gsText="Go";\r
- sForm += "<img alt=\""+gsText+"\" id=\"go\" border=\"0\" src=\"" + gsOutImage + "\">";\r
- }\r
- else\r
- sForm += gsText ;\r
- sForm += "</a></td>";\r
- }\r
- sForm += "</tr></table></p></td></tr></form></table>";\r
- return sForm;\r
-}\r
-\r
-function onMouseOver()\r
-{\r
- if (getElement("go") && gsOverImage)\r
- getElement("go").src = gsOverImage;\r
-}\r
-\r
-function onMouseDown()\r
-{\r
- if (getElement("go") && gsClickImage)\r
- getElement("go").src = gsClickImage;\r
-}\r
-\r
-function onMouseUp()\r
-{\r
- if (getElement("go") && gsOutImage)\r
- getElement("go").src = gsOutImage;\r
-}\r
-\r
-function onMouseOut()\r
-{\r
- if (getElement("go") && gsOutImage)\r
- getElement("go").src = gsOutImage;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
-{\r
- goTitleFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
- goNormalFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
- goHoverFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "underline");\r
- gbWhForm=true;\r
-}\r
-else\r
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001\r
-// this value should be identical to the value used in whproxy.js\r
-window.whname = "wh_stub";\r
-\r
-// this file will be used by Topic and NavBar and NavPane and other components\r
-// and this file is used in child frame html.\r
-// and the whstub.js will be used in the start page.\r
-// see reference in whstub.js.\r
-// Internal Area\r
-var gbInited = false;\r
-var gWndStubPage = null;\r
-function getStubPage()\r
-{\r
- if (!gbInited)\r
- {\r
- gWndStubPage = getStubPage_inter(window);\r
- gbInited = true;\r
- }\r
- return gWndStubPage;\r
-}\r
-\r
-function getStubPage_inter(wCurrent) {\r
- if (null == wCurrent.parent || wCurrent.parent == wCurrent)\r
- return null;\r
-\r
- if (wCurrent.parent.whname && "wh_stub" == wCurrent.parent.whname) \r
- return wCurrent.parent;\r
- else\r
- if (wCurrent.parent.frames.length != 0 && wCurrent.parent != wCurrent)\r
- return getStubPage_inter(wCurrent.parent);\r
- else \r
- return null;\r
-}\r
-\r
-// Public interface begin here................\r
-function RegisterListener(framename, nMessageId)\r
-{\r
- var wStartPage = getStubPage();\r
- if (wStartPage && wStartPage != this) {\r
- return wStartPage.RegisterListener(framename, nMessageId);\r
- }\r
- else \r
- return false;\r
-}\r
-\r
-function RegisterListener2(oframe, nMessageId)\r
-{\r
- var wStartPage = getStubPage();\r
- if (wStartPage && wStartPage != this) {\r
- return wStartPage.RegisterListener2(oframe, nMessageId);\r
- }\r
- else \r
- return false;\r
-}\r
-\r
-function UnRegisterListener2(oframe, nMessageId)\r
-{\r
- var wStartPage = getStubPage();\r
- if (wStartPage && wStartPage != this && wStartPage.UnRegisterListener2) {\r
- return wStartPage.UnRegisterListener2(oframe, nMessageId);\r
- }\r
- else \r
- return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
- var nMsgId = oMessage.nMessageId;\r
- if (nMsgId == WH_MSG_ISINFRAMESET && oMessage.wSender != this)\r
- return true;\r
- var wStartPage = getStubPage();\r
- if (wStartPage && wStartPage != this && wStartPage.SendMessage) \r
- {\r
- return wStartPage.SendMessage(oMessage);\r
- }\r
- else \r
- return false;\r
-}\r
-var gbWhProxy=true;
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Glossary Term</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whhost.js"></script>\r
-<script language="javascript1.2" src="whghost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-if(window.gbWhGHost)\r
-{\r
- \r
- \r
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
- setActiveBgColor("#cccccc");\r
- setMargin("0pt");\r
- setIndent("9pt");\r
- GloWriteClassStyle();\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white">\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Glossary Definition</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goGloFont=null;\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this, WH_MSG_SHOWGLODEF);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- document.body.background=gsBgImage;\r
- if(gsBgColor&&gsBgColor.length>0)\r
- document.body.bgColor=gsBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
-{\r
- var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
- if (sType == "Normal")\r
- goGloFont = vFont;\r
-}\r
-\r
-function textToHtml_nbsp_specialcare(sText)\r
-{\r
- if (sText == null) return null;\r
- var sHTML= sText;\r
- var re = new RegExp(" ","g");\r
- sHTML= sHTML.replace(re, " ");\r
- return sHTML;\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId = oMsg.nMessageId;\r
- if (nMsgId == WH_MSG_SHOWGLODEF)\r
- {\r
- document.body.innerHTML = sDefHead + textToHtml_nbsp_specialcare(oMsg.oParam.sDef) + sDefTail;\r
- return true;\r
- }\r
-}\r
-\r
-function GDefWriteClassStyle()\r
-{\r
- var sStyle="<STYLE TYPE='text/css'>\n";\r
- if (gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- sStyle+=".definition {"+getFontStyle(goGloFont)+"margin:2;}\n";\r
- sStyle+="</STYLE>";\r
- document.write(sStyle);\r
-}\r
-\r
-if (window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer)\r
-{\r
- window.onload=window_OnLoad;\r
- window.onunload = window_Unload;\r
- goGloFont=new whFont("Verdana", "8pt", "#000000", "normal", "normal", "none");\r
- \r
- \r
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
- GDefWriteClassStyle();\r
- RegisterListener2(this, WH_MSG_SHOWGLODEF);\r
- var sDefHead = "<p class=\"definition\">";\r
- var sDefTail = "</p>";\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body bgproperties="fixed" bgcolor="white">\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Glossary</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body bgcolor=#c0c0c0 scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsBgImage="";\r
-var gsBgColor="";\r
-var goTitleFont=null;\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Title")\r
- goTitleFont=vFont;\r
-}\r
-\r
-function getTermText()\r
-{\r
- var strString="Term:";\r
-strString = "Term:";\r
- return strString;\r
-}\r
-\r
-function getDefinitionText()\r
-{\r
- var strString="Definition for:";\r
-strString = "Definition:";\r
- return strString;\r
-}\r
-\r
-function getHTML()\r
-{\r
- var sHTML="";\r
- sHTML+="<P class=title><nobr> " + getTermText() + "</nobr></p>";\r
- sHTML+="<iframe id=glossaryIFrame title=\"glossary term\" src=\"whgbody.htm\" width=100% height=200 MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
- sHTML+="<P class=title><nobr> " + getDefinitionText() + " <b id=Name></b></nobr></p>";\r
- sHTML+="<iframe id=defIFrame title=\"glossary definition\" src=\"whgdef.htm\" width=100% height=100% MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
- return sHTML;\r
-}\r
-\r
-function writeStyle()\r
-{\r
- var sStyle="<style type='text/css'>";\r
- sStyle+="p.title {" + getFontStyle(goTitleFont) + "margin-top:4;margin-bottom:4}\n";\r
- if (gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- sStyle+="</style>";\r
- document.write(sStyle);\r
-}\r
-\r
-\r
-function window_OnResize()\r
-{\r
- setIFrameHeight();\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- document.body.background=gsBgImage;\r
- if(gsBgColor&&gsBgColor.length>0)\r
- document.body.bgColor=gsBgColor;\r
- setIFrameHeight();\r
-}\r
-\r
-function setIFrameHeight()\r
-{\r
- var tH=0;\r
- if(gbNav6)\r
- {\r
- tH=parseInt(window.innerHeight)-30;\r
- }\r
- else\r
- {\r
- tH=parseInt(document.body.clientHeight)-4;\r
- }\r
- \r
- var oEle=getElement("glossaryIFrame");\r
- if(oEle)\r
- {\r
- tH=tH-2*parseInt(oEle.offsetTop);\r
- if(tH>0)\r
- {\r
- oEle.style.height=Math.floor(tH*.6);\r
- var oEleDef=getElement("defIFrame");\r
- if(oEleDef)\r
- {\r
- oEleDef.style.height=tH-parseInt(oEle.style.height);\r
- }\r
- }\r
- }\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_SHOWGLODEF);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SHOWGLODEF)\r
- {\r
- if(getElement("Name"))\r
- getElement("Name").innerHTML=oMsg.oParam.sName;\r
- return true;\r
- }\r
-}\r
-\r
-if(window.gbWhVer&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy)\r
-{\r
- goTitleFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
- \r
- \r
- window.onresize=window_OnResize;\r
- window.onload=window_OnLoad;\r
- window.onunload=window_Unload;\r
- RegisterListener2(this,WH_MSG_SHOWGLODEF);\r
- writeStyle();\r
- document.write(getHTML());\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-// WebHelp 5.10.004\r
-var gbXML=false;\r
-var gaDef=new Array();\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goFont=null;\r
-var goHoverFont=null;\r
-var gsMargin="2pt";\r
-var gsIndent="2pt";\r
-var gsActiveBgColor="#cccccc";\r
-var gbWhGHost=false;\r
-var gbShowDef=true;\r
-var gsGloId="Glo_"\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Normal")\r
- goFont=vFont;\r
- else if(sType=="Hover")\r
- goHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
- gsActiveBgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
- gsMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
- gsIndent=sIndent;\r
-}\r
-\r
-function insertDef(sKName,sDef)\r
-{\r
- var nLength=gaDef.length\r
- var oGlo=new nameDefPair(sKName,sDef);\r
- gaDef[nLength]=oGlo;\r
- return nLength;\r
-}\r
-\r
-function showDef(nDef)\r
-{\r
- if(nDef<gaDef.length)\r
- { \r
- HighLight(nDef);\r
- var oParam=gaDef[nDef];\r
- var oMsg=new whMessage(WH_MSG_SHOWGLODEF,this,1,oParam);\r
- SendMessage(oMsg);\r
- }\r
-}\r
-\r
-function nameDefPair(sName,sDef)\r
-{\r
- this.sName=sName;\r
- this.sDef=sDef;\r
-}\r
-\r
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
- var sHTML="";\r
- var nIdxSet=aCurIdxSet[0];\r
- var nIIdx=aPos[nIdxSet];\r
- var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);\r
- var sKName=_textToHtml(sRawKName);\r
- var sDText=_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx));\r
- var sDef=sDText;\r
- for(var i=1;i<nLength;i++)\r
- {\r
- var nIdxSeti=aCurIdxSet[i];\r
- var nIIdxi=aPos[nIdxSeti];\r
- var sRawKNamei = getItemName(aDataCon,nIdxSeti,nIIdxi);\r
- var sKNamei=_textToHtml(sRawKNamei);\r
- var sDTexti=_textToHtml_nonbsp(getDef(aDataCon,nIdxSeti,nIIdxi));\r
- if (compare(sKNamei,sKName)==0)\r
- {\r
- if (sDText!=sDTexti)\r
- sDef+="<br>"+sDTexti;\r
- }\r
- }\r
- var nIndex=insertDef(sKName,sDef);\r
- if(nLevel==1)\r
- {\r
- sHTML+="<p><nobr id=\""+getGloId(nIndex)+"\">";\r
- sHTML+="<a alt=\""+sKName+"\" href=\"javascript:void(0);\" onfocus=\"HighLight("+nIndex+");\" onclick=\"showDef("+nIndex+");return false;\">"+sKName+"</a></nobr></p>";\r
- oHTML.addHTML(sHTML,nLength,bDown,true,sRawKName);\r
- if(gbShowDef)\r
- {\r
- setTimeout("showDef(0);",100);\r
- gbShowDef = false;\r
- }\r
- }\r
-}\r
-\r
-function HighLight(nIndex)\r
-{\r
- var oObj=getElement(getGloId(nIndex));\r
- if(oObj)\r
- HighLightElement(oObj,gsActiveBgColor,"transparent");\r
-}\r
-\r
-function getGloId(nIndex)\r
-{\r
- return gsGloId+nIndex;\r
-}\r
-\r
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
-{\r
- if(bDown)\r
- {\r
- for(var i=0;i<nLength;i++)\r
- aPos[aCurIdxSet[i]]++;\r
- }\r
- else{\r
- for(var i=0;i<nLength;i++)\r
- aPos[aCurIdxSet[i]]--;\r
- }\r
-}\r
-\r
-function getDef(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].sDef;\r
- else\r
- return null;\r
-}\r
-\r
-function getItemName(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
- else\r
- return null;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- document.body.background=gsBgImage;\r
- if(gsBgColor&&gsBgColor.length>0)\r
- document.body.bgColor=gsBgColor;\r
- document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
- loadGlo();\r
- var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
- SendMessage(oMsg);\r
-}\r
-\r
-function loadGlo()\r
-{\r
- if(!gbReady)\r
- {\r
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
- if(SendMessage(oResMsg)&&oResMsg.oParam)\r
- {\r
- gbReady=true;\r
- var oProj=oResMsg.oParam;\r
- var aProj=oProj.aProj;\r
- gbXML=oProj.bXML;\r
- if(aProj.length>0)\r
- {\r
- var sLangId=aProj[0].sLangId;\r
- for(var i=0;i<aProj.length;i++)\r
- {\r
- if(aProj[i].sGlo&&aProj[i].sLangId==sLangId)\r
- addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sGlo);\r
- }\r
- }\r
- writeDataIFrame();\r
- enEvt();\r
- } \r
- }\r
-}\r
-\r
-function findCKInDom()\r
-{\r
- return true;\r
-}\r
-\r
-function GloWriteClassStyle()\r
-{\r
- var sStyle="<STYLE TYPE='text/css'>\n";\r
- if (gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";margin-left:"+gsIndent+";}\n";\r
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:active {background-color:"+gsActiveBgColor+";}\n";\r
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
- sStyle+="</STYLE>"; \r
- document.write(sStyle);\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
- UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if(oMsg)\r
- {\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SHOWGLO)\r
- {\r
- if(!gbNav6)\r
- document.body.focus();\r
- }\r
- else if(nMsgId==WH_MSG_PROJECTREADY)\r
- {\r
- loadGlo();\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-if (window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhHost)\r
-{\r
- RegisterListener2(this,WH_MSG_PROJECTREADY);\r
- RegisterListener2(this,WH_MSG_SHOWGLO);\r
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
- goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_BUnload;\r
- window.onunload=window_Unload;\r
- gbWhGHost=true;\r
-}\r
-else\r
- document.location.reload();\r
-\r
+++ /dev/null
-// WebHelp 5.10.002\r
-var gaChunks=new Array();\r
-var gaFakes=new Array();\r
-var gaDataCon=null;\r
-var gaData=new Array();\r
-\r
-var gbFindCK=false;;\r
-var gbNeedCalc=false;\r
-var gbScrl=false;\r
-var gbProcess=false;\r
-var gbReady=false;\r
-\r
-var gnCheck=0;\r
-var gnNum=0;\r
-var gnIns=-1;\r
-var gnLoad=0;\r
-var gnRef=-1;\r
-var gnMaxItems=0;\r
-var gnMaxMargin=32000;\r
-var gnNeeded=0;\r
-var gnNKI=-1;\r
-var gnRE=0;\r
-var gnScrlMgn=30;\r
-var gnSE=0;\r
-var gnVisible=0;\r
-var gnItems=0;\r
-var gnUHeight=1;\r
-\r
-var gsBCK=null;\r
-var gsChK=null;\r
-var gsCK=null;\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading data, please wait...";\r
-var gsSKA=null;\r
-var gsSKB=null;\r
-\r
-var gbLoadInfo=false;\r
-\r
-function onLoadXMLError()\r
-{\r
- if(gbLoadInfo)\r
- {\r
- var aChunk=new Array();\r
- projReady(aChunk);\r
- }\r
- else\r
- {\r
- var aData=new Array();\r
- putData(aData);\r
- }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
- if(gbLoadInfo)\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var nTotal=0\r
- var aChunk=new Array();\r
- var oC=node.firstChild;\r
- while(oC)\r
- {\r
- if(oC.nodeName=="chunkinfo")\r
- {\r
- var item=new Object();\r
- item.sBK=oC.getAttribute("first");\r
- item.sEK=oC.getAttribute("last");\r
- item.sFileName=oC.getAttribute("url");\r
- item.nNum=parseInt(oC.getAttribute("num"));\r
- nTotal+=item.nNum;\r
- item.nTotal=nTotal;\r
- aChunk[aChunk.length]=item;\r
- }\r
- oC=oC.nextSibling;\r
- }\r
- projReady(aChunk);\r
- }\r
- }\r
- else\r
- {\r
- var node=xmlDoc.lastChild;\r
- if(node)\r
- {\r
- var aData=new Array();\r
- var nPrev=0;\r
- var nNext=0;\r
- var oC=node.firstChild;\r
- while(oC)\r
- {\r
- nPrev=nNext;\r
- if(oC.nodeName=="key")\r
- {\r
- var sName=oC.getAttribute("name");\r
- if(sName&&sName.length>0)\r
- {\r
- var sTarget=oC.getAttribute("target");\r
- var item=new Object();\r
- item.nType=2;\r
- item.sName=sName;\r
- if(sTarget)\r
- item.sTarget=sTarget;\r
- item.nPKOff=nPrev;\r
- aData[aData.length]=item;\r
- var nCurIndex=aData.length;\r
- processKey(oC,aData,item);\r
- nNext=aData.length-nCurIndex;\r
- item.nNKOff=nNext;\r
- }\r
- }\r
- else if(oC.nodeName=="letter")\r
- {\r
- var name=oC.getAttribute("name");\r
- if(name&&name.length>0)\r
- {\r
- var item=new Object();\r
- item.nType=1;\r
- item.sName=name;\r
- item.nPKOff=nPrev;\r
- nNext=0;\r
- item.nNKOff=nNext;\r
- aData[aData.length]=item;\r
- }\r
- }\r
- else if(oC.nodeName=="entry")\r
- {\r
- var name=oC.getAttribute("name");\r
- var def=oC.getAttribute("value");\r
- if(name&&name.length>0)\r
- {\r
- var item=new Object();\r
- item.sName=name;\r
- item.sDef=def;\r
- item.nPKOff=nPrev;\r
- nNext=0;\r
- item.nNKOff=nNext;\r
- aData[aData.length]=item;\r
- }\r
- }\r
- oC=oC.nextSibling;\r
- }\r
- putData(aData);\r
- }\r
- }\r
-}\r
-\r
-function processKey(element,aData,item)\r
-{\r
- var i=0;\r
- var nPrev=0;\r
- var nNext=0;\r
- var oC=element.firstChild;\r
- while(oC)\r
- {\r
- if(oC.nodeName=="topic")\r
- {\r
- var name=oC.getAttribute("name");\r
- var url=oC.getAttribute("url");\r
- if(url&&url.length!=0)\r
- {\r
- if(!name||name.length==0)\r
- name=url;\r
- var topic=new Object();\r
- topic.sName=name;\r
- topic.sURL=url;\r
- if(!item.aTopics)\r
- item.aTopics=new Array();\r
- item.aTopics[item.aTopics.length]=topic;\r
- }\r
- }\r
- else if(oC.nodeName=="key")\r
- {\r
- nPrev=nNext;\r
- var name=oC.getAttribute("name");\r
- if(name&&name.length!=0)\r
- {\r
- var subItem=new Object();\r
- subItem.sName=name;\r
- subItem.nType=3;\r
- subItem.nPKOff=nPrev;\r
- aData[aData.length]=subItem;\r
- var nCurIndex=aData.length;\r
- processKey(oC,aData,subItem);\r
- nNext=aData.length-nCurIndex;\r
- subItem.nNKOff=nNext;\r
- }\r
- }\r
- oC=oC.nextSibling;\r
- }\r
-}\r
-\r
-function putData(aData)\r
-{\r
- endLoading();\r
- var oCData=goCData;\r
- if(oCData)\r
- {\r
- oCData.aKs=aData;\r
- if(gnNKI==-1)\r
- setTimeout("checkReady();",1);\r
- else\r
- {\r
- gsSKA=getKByIdx(oCData,gnNKI);\r
- gbNeedCalc=true;\r
- gbScrl=true;\r
- gnNKI=-1;\r
- if(gsSKA)\r
- setTimeout("checkReady();",1);\r
- else\r
- {\r
- markEnd();\r
- setTimeout("checkAgain();",50);\r
- }\r
- }\r
- }\r
-}\r
-\r
-function markEnd()\r
-{\r
- if(gbProcess)\r
- gbProcess=false;\r
-}\r
-\r
-function endLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(oDiv)\r
- oDiv.style.visibility="hidden";\r
-}\r
-\r
-function markBegin()\r
-{\r
- gbProcess=true;\r
-}\r
-\r
-function beginLoading()\r
-{\r
- var oDiv=getElement(gsLoadingDivID);\r
- if(oDiv)\r
- {\r
- oDiv.style.top=document.body.scrollTop;\r
- oDiv.style.visibility="visible";\r
- }\r
-}\r
-\r
-function indexHTMLPart()\r
-{\r
- this.sHTML="";\r
- this.nNeeded=0;\r
- this.nCurrent=0;\r
- this.nConsumed=0;\r
- this.sFK=null;\r
- this.sLK=null;\r
- this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){\r
- if(bDown)\r
- this.sHTML+=sHTML;\r
- else\r
- this.sHTML=sHTML+this.sHTML;\r
- this.nCurrent++; \r
- this.nConsumed+=nConsumed;\r
- if(bK)\r
- {\r
- if(!this.sFK)\r
- this.sFK=sK;\r
- if(!this.sLK)\r
- this.sLK=sK;\r
- if(bDown)\r
- this.sLK=sK;\r
- else\r
- this.sFK=sK;\r
- }\r
- }\r
- this.appendHTML=function(oHTML,bDown){\r
- this.addSubHTML(oHTML,bDown);\r
- if(!this.sFK)\r
- this.sFK=oHTML.sFK;\r
- if(!this.sLK)\r
- this.sLK=oHTML.sLK;\r
- if(bDown)\r
- this.sLK=oHTML.sLK;\r
- else\r
- this.sFK=oHTML.sFK;\r
- } \r
- \r
- this.addSubHTML=function(oHTML,bDown){\r
- if(bDown)\r
- this.sHTML+=oHTML.sHTML;\r
- else\r
- this.sHTML=oHTML.sHTML+this.sHTML;\r
- this.nCurrent+=oHTML.nCurrent;\r
- this.nConsumed+=oHTML.nConsumed; \r
- }\r
-}\r
-\r
-function getMaxUnits()\r
-{\r
- return Math.floor(gnMaxMargin/gnUHeight)+1;\r
-}\r
-\r
-function getFakeItemsHTMLbyCount(nB,nCount)\r
-{\r
- var nMU=getMaxUnits();\r
- var nNum=Math.floor(nCount/nMU);\r
- var sHTML="";\r
- for(var i=0;i<nNum;i++)\r
- sHTML+=getFakeItemHTML(nB,nMU-1);\r
- \r
- var nRest=nCount%nMU;\r
- sHTML+=getFakeItemHTML(nB,nRest-1);\r
- return sHTML;\r
-}\r
-\r
-function getFakeItemHTML(nB,nNum)\r
-{\r
- return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\"> </h6>";\r
-}\r
-\r
-function fakeItemsArea(nB,n,sKA,sKB,obj)\r
-{\r
- this.nB=nB;\r
- this.nNum=n;\r
- this.sKA=sKA;\r
- this.sKB=sKB;\r
- this.obj=obj;\r
- this.nMargin=(n-1)*gnUHeight;\r
-\r
- this.setNum=function(n)\r
- {\r
- var nLastobj=-1;\r
- var nDelta=this.nMargin;\r
- this.nMargin=(n-1)*gnUHeight;\r
- nDelta=nDelta-this.nMargin;\r
- if(n>0)\r
- {\r
- this.nNum=n;\r
- var nMU=getMaxUnits();\r
- nLastobj=Math.floor((n-1)/nMU);\r
- if(this.obj.length)\r
- this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;\r
- else\r
- this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;\r
- }\r
- if(this.obj.length)\r
- {\r
- for(var i=this.obj.length-1;i>nLastobj;i--)\r
- removeThis(this.obj[i]);\r
- }\r
- else\r
- {\r
- if(nLastobj==-1)\r
- removeThis(this.obj);\r
- }\r
- return nDelta;\r
- }\r
- this.insertAdjacentHTML=function(sWhere,sHTML)\r
- {\r
- if(sWhere=="beforeBegin")\r
- {\r
- if(this.obj.length)\r
- this.obj[0].insertAdjacentHTML(sWhere,sHTML);\r
- else\r
- this.obj.insertAdjacentHTML(sWhere,sHTML);\r
- }\r
- else if(sWhere=="afterEnd")\r
- {\r
- if(this.obj.length)\r
- {\r
- if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)\r
- this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
- else\r
- this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);\r
- }\r
- else\r
- {\r
- if(gbMac&&gbIE5&&this.obj.nextSibling)\r
- this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
- else\r
- this.obj.insertAdjacentHTML(sWhere,sHTML);\r
- }\r
- }\r
- }\r
- this.getBtm=function()\r
- {\r
- if(this.obj.length)\r
- return this.obj[this.obj.length-1].offsetTop;\r
- else\r
- return this.obj.offsetTop;\r
- }\r
- this.getTop=function()\r
- {\r
- return this.getBtm()-this.nMargin;\r
- }\r
-}\r
-\r
-function usedItems(nB,nE)\r
-{\r
- this.nB=nB;\r
- this.nE=nE;\r
- this.oN=null;\r
-}\r
-\r
-function checkReady()\r
-{\r
- var len=gaChunks.length;\r
- var bNeedLoad=false;\r
- var aDataCon;\r
- var s=0;\r
- var bDown=(gsSKB==null);\r
- var sK=bDown?gsSKA:gsSKB;\r
- if(sK==null)\r
- {\r
- markEnd();\r
- setTimeout("checkAgain();",50);\r
- return;\r
- }\r
- if(!gsChK||sK!=gsChK||gnNum==0)\r
- {\r
- gnCheck=0;\r
- gsChK=sK;\r
- aDataCon=new Array();\r
- }\r
- else{\r
- s=gnNum;\r
- aDataCon=gaDataCon;\r
- }\r
- for(var i=gnCheck;i<len;i++)\r
- {\r
- var oCData=getChunkedData(i,bDown,sK);\r
- if(oCData)\r
- {\r
- if(!oCData.aKs&&oCData.sFileName!=null)\r
- {\r
- bNeedLoad=true;\r
- goCData=oCData;\r
- gnNum=s;\r
- gnCheck=i;\r
- gaDataCon=aDataCon;\r
- oCData.nProjId=i;\r
- gbLoadInfo=false;\r
- beginLoading();\r
- loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);\r
- return;\r
- }\r
- else{\r
- aDataCon[s++]=oCData;\r
- }\r
- }\r
- }\r
- if(!bNeedLoad)\r
- {\r
- gnNum=0;\r
- gsSKA=gsSKB=gsShowK=null;\r
- \r
- var oHTML=new indexHTMLPart();\r
- var aPos=new Array();\r
- var aOriPos=new Array();\r
- var aMaxPos=new Array();\r
- var aMinPos=new Array();\r
- \r
- if(gbNeedCalc||gbFindCK) gnIns=0;\r
- for(i=0;i<aDataCon.length;i++)\r
- {\r
- aPos[i]=getIdxPos(aDataCon[i],bDown,sK);\r
- if(gbNeedCalc||gbFindCK)\r
- {\r
- gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;\r
- if(!bDown)\r
- {\r
- if(aPos[i]!=-1)\r
- {\r
- if(aDataCon[i].aKs)\r
- gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;\r
- else\r
- {\r
- var n=aPos[i]+1;\r
- while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])\r
- n++;\r
- n=n-aPos[i]-1;\r
- gnIns+=n;\r
- }\r
- }\r
- }\r
- }\r
- aOriPos[i]=aPos[i];\r
- getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);\r
- }\r
- if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)\r
- {\r
- gnIns+=(aDataCon.length-1)\r
- }\r
- if(gnIns!=-1||gbFindCK)\r
- {\r
- oHTML.nNeeded=gnNeeded;\r
- var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);\r
- if(oHTML.nConsumed!=0)\r
- {\r
- var nB;\r
- if(!bDown)\r
- nB=gnIns-oHTML.nConsumed+1;\r
- else\r
- nB=gnIns;\r
- \r
- var oldScrollPos=document.body.scrollTop;\r
- if(insertIdxKs(nB,oHTML,gbScrl))\r
- {\r
- updateUsedK(aDataCon,aOriPos,aPos,bDown);\r
- if(!gbScrl&&gbMac)\r
- {\r
- while(document.body.scrollTop!=oldScrollPos)\r
- document.body.scrollTop=oldScrollPos;\r
- }\r
- gbScrl=false;\r
- }\r
- if(gbFindCK)\r
- {\r
- gbFindCK=false;\r
- gbNeedCalc=true;\r
- gsSKB=oHTML.sFK;\r
- gnIns=-1;\r
- setTimeout("checkReady();",50);\r
- return;\r
- }\r
- }\r
- else if(gbFindCK)\r
- {\r
- gbFindCK=false;\r
- gbNeedCalc=true;\r
- gsSKB=getFirstKeyFromPos(aDataCon,aPos);\r
- gnIns=-1;\r
- setTimeout("checkReady();",50);\r
- return;\r
- }\r
- if(!findCKInDom()) return;\r
-\r
- gnNeeded=gnNeeded-oHTML.nCurrent;\r
- gnIns=-1;\r
- markEnd();\r
- setTimeout("checkAgain();",50);\r
- gbNeedCalc=false;\r
- }\r
- else\r
- {\r
- if(!findCKInDom()) return;\r
- markEnd();\r
- setTimeout("checkAgain();",50);\r
- }\r
- }\r
-}\r
-\r
-function getFirstKeyFromPos(aDataCon,aPos)\r
-{\r
- var sCurrentK=getBiggestChar();\r
- for(var i=0;i<aPos.length;i++)\r
- {\r
- if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)\r
- {\r
- if(sCurrentK==""||\r
- compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)\r
- {\r
- sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
- }\r
- }\r
- }\r
- return sCurrentK;\r
-}\r
-\r
-function checkAgain()\r
-{\r
- if(!gbProcess)\r
- {\r
- if(gsBCK!=null)\r
- {\r
- gsCK=gsBCK;\r
- gsBCK=null;\r
- findCK();\r
- }\r
- else\r
- {\r
- markBegin();\r
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
- }\r
- }\r
- else\r
- setTimeout("checkAgain()",50);\r
-}\r
-\r
-function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)\r
-{\r
- aMaxPos[i]=aDataCon[i].nNum;\r
- aMinPos[i]=-1;\r
- var oPNode=null;\r
- if(aDataCon[i].oUsedItems)\r
- {\r
- var oUsedItems=aDataCon[i].oUsedItems;\r
- do{\r
- if(oUsedItems.nB>aPos[i])\r
- {\r
- aMaxPos[i]=oUsedItems.nB;\r
- break;\r
- }\r
- oPNode=oUsedItems;\r
- oUsedItems=oUsedItems.oN;\r
- }while(oUsedItems!=null);\r
- if(oPNode)\r
- aMinPos[i]=oPNode.nE;\r
- }\r
- else if(aDataCon[i].aKs==null)\r
- {\r
- aMaxPos[i]=aMinPos[i]=aPos[i];\r
- }\r
- if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])\r
- {\r
- aMaxPos[i]=aMinPos[i]=aPos[i];\r
- }\r
-}\r
-\r
-function getIdxPos(oIdx,bDown,sK)\r
-{\r
- var aKs=oIdx.aKs;\r
- var nIdx;\r
- if(bDown)\r
- nIdx=oIdx.nNum;\r
- else\r
- nIdx=-1;\r
- if(aKs!=null)\r
- {\r
- for(var i=0;i<aKs.length;i++)\r
- { \r
- if(bDown)\r
- {\r
- if(compare(aKs[i].sName,sK)>0)\r
- {\r
- nIdx=i;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- if(compare(aKs[i].sName,sK)<0)\r
- nIdx=i;\r
- else\r
- break;\r
- }\r
- i+=aKs[i].nNKOff;\r
- }\r
- }\r
- else if(oIdx.aKsOnly)\r
- {\r
- var aKsOnly=oIdx.aKsOnly;\r
- for(var i=0;i<aKsOnly.length;i++)\r
- { \r
- if(aKsOnly[i])\r
- {\r
- if(bDown)\r
- {\r
- if(compare(aKsOnly[i],sK)>0)\r
- {\r
- nIdx=i;\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- if(compare(aKsOnly[i],sK)<0)\r
- nIdx=i;\r
- else\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- return nIdx;\r
-}\r
-\r
-function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)\r
-{\r
- var aOldPos=new Array();\r
- for(var i=0;i<aPos.length;i++)\r
- {\r
- aOldPos[i]=aPos[i];\r
- }\r
- var p;\r
- do{\r
- var sCurrentK="";\r
- var aCurIdxSet=new Array();\r
- p=0;\r
- for(i=0;i<aDataCon.length;i++)\r
- {\r
- if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&\r
- (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))\r
- {\r
- if(sCurrentK==""||\r
- (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||\r
- (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))\r
- {\r
- sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
- p=0;\r
- aCurIdxSet[p++]=i;\r
- }\r
- else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){\r
- aCurIdxSet[p++]=i;\r
- }\r
- }\r
- else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){\r
- if(bDown&&aPos[i]==aMaxPos[i])\r
- {\r
- if(aDataCon[i].aKs)\r
- {\r
- gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;\r
- return false;\r
- }\r
- }\r
- else if(!bDown&&aPos[i]==aMinPos[i])\r
- {\r
- if(aDataCon[i].aKs)\r
- {\r
- gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;\r
- return false;\r
- }\r
- }\r
- }\r
- }\r
- if(p>=1){\r
- for(var s=0;s<p;s++)\r
- {\r
- aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];\r
- }\r
- mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);\r
- adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);\r
- \r
- if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){\r
- return true;\r
- }\r
- }\r
- }while(p>0);\r
- return true;\r
-}\r
-\r
-function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)\r
-{\r
- for(var i=0;i<aDataCon.length;i++)\r
- {\r
- if (aOldPos[i]!=aOriPos[i])\r
- {\r
- var nBP=0;\r
- var nEP=0;\r
- if(bDown)\r
- {\r
- nBP=aOriPos[i];\r
- nEP=aOldPos[i]-1;\r
- }\r
- else\r
- {\r
- if (aOldPos[i]!=-1)\r
- nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;\r
- else\r
- nBP=0;\r
- nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;\r
- }\r
- if(nBP<=nEP)\r
- {\r
- setContentsUsed(aDataCon[i],nBP,nEP);\r
- \r
- var oFirstPair=aDataCon[i].oUsedItems;\r
- if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)\r
- {\r
- storeKeysOnly(aDataCon[i]);\r
- aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;\r
- }\r
- }\r
- }\r
- }\r
-}\r
-\r
-function storeKeysOnly(oCData)\r
-{\r
- oCData.aKsOnly=new Array();\r
- for(var i=0;i<oCData.aKs.length;i++)\r
- {\r
- oCData.aKsOnly[i]=oCData.aKs[i].sName;\r
- i+=oCData.aKs[i].nNKOff;\r
- }\r
-}\r
-\r
-function setContentsUsed(oIdx,nB,nE)\r
-{\r
- if(!oIdx.oUsedItems)\r
- oIdx.oUsedItems=new usedItems(nB,nE);\r
- else\r
- {\r
- var oUsedItems=oIdx.oUsedItems;\r
- var oPNode=null;\r
- do{\r
- if(oUsedItems.nB>nB)\r
- {\r
- if(oUsedItems.nB==nE+1)\r
- {\r
- oUsedItems.nB=nB;\r
- }\r
- else{\r
- var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);\r
- oNewNode.oN=oUsedItems.oN;\r
- oUsedItems.nB=nB;\r
- oUsedItems.nE=nE;\r
- oUsedItems.oN=oNewNode;\r
- }\r
- break;\r
- }\r
- oPNode=oUsedItems;\r
- oUsedItems=oUsedItems.oN;\r
- }while(oUsedItems);\r
- if(!oUsedItems)\r
- {\r
- if(oPNode!=null)\r
- oPNode.oN=new usedItems(nB,nE);\r
- }\r
- if(oPNode!=null){\r
- if(oPNode.nE==oPNode.oN.nB-1)\r
- {\r
- oPNode.nE=oPNode.oN.nE;\r
- oPNode.oN=oPNode.oN.oN;\r
- }\r
- }\r
- }\r
-}\r
-\r
-function projInfo(sPPath,sDPath,sFile)\r
-{\r
- this.sPPath=sPPath;\r
- this.sDPath=sDPath;\r
- this.sFile=sFile;\r
-}\r
-\r
-function addProjInfo(sPPath,sDPath,sFile)\r
-{\r
- var oIdxInfo=new projInfo(sPPath,sDPath,sFile);\r
- gaData[gaData.length]=oIdxInfo;\r
- return oIdxInfo;\r
-}\r
-\r
-function writeDataIFrame()\r
-{\r
- if(gnLoad<gaData.length)\r
- {\r
- gbLoadInfo=true;\r
- loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);\r
- }\r
- else{\r
- if(gnItems!=0)\r
- {\r
- markBegin();\r
- writeFakeItems();\r
- gsSKA="";\r
- gnNeeded=gnVisible;\r
- gnIns=0;\r
- checkReady();\r
- }\r
- }\r
-}\r
-\r
-function getH6ById(nPos)\r
-{\r
- if(document.all)\r
- return document.all("fk"+nPos);\r
- else if(document.getElementsByName)\r
- return document.getElementsByName("fk"+nPos);\r
- return null; \r
-}\r
-\r
-function showItemsInEvaluation(nBP)\r
-{\r
- var bRtn=true;\r
- var fPer=nBP/gnItems;\r
- var nB=Math.floor(fPer*gnMaxItems);\r
- var oCData=getChunkByIdx(gnRef,nB);\r
- if(oCData)\r
- {\r
- if(!oCData.aKs&&oCData.sFileName!=null)\r
- {\r
- gnNKI=nB;\r
- goCData=oCData;\r
- oCData.nProjId=gnRef;\r
- gbLoadInfo=false;\r
- beginLoading();\r
- loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);\r
- }\r
- else{\r
- gsSKA=getKByIdx(oCData,nB);\r
- if(gsSKA)\r
- {\r
- gsSKB=null;\r
- gbNeedCalc=true;\r
- gbScrl=true;\r
- checkReady()\r
- }\r
- else\r
- {\r
- markEnd();\r
- bRtn=false;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- markEnd();\r
- bRtn=false;\r
- }\r
- return bRtn;\r
-}\r
-\r
-function isUsed(oCData,nPos)\r
-{\r
- var oUsed=oCData.oUsedItems;\r
- while(oUsed&&oUsed.nB<=nPos)\r
- {\r
- if(oUsed.nE>=nPos) return true;\r
- oUsed=oUsed.oN;\r
- }\r
- return false;\r
-}\r
-\r
-function getKByIdx(oCData,nB)\r
-{\r
- var nRelPos=nB-(oCData.nTotal-oCData.nNum);\r
- var aIKs=oCData.aKs;\r
- if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)\r
- {\r
- var oK=null;\r
- do{\r
- oK=aIKs[nRelPos++];\r
- } \r
- while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);\r
- if(oK.nType!=3)\r
- {\r
- return oK.sName;\r
- }\r
- else{\r
- nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;\r
- if(nRelPos>=0)\r
- {\r
- do{\r
- oK=aIKs[nRelPos--];\r
- }\r
- while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);\r
- }\r
- if(oK.nType!=3)\r
- {\r
- return oK.sName;\r
- }\r
- }\r
- }\r
- return null;\r
-}\r
-\r
-function loadData2(sFileName)\r
-{\r
- disEvt();\r
- if(gbXML)\r
- loadDataXML(sFileName);\r
- else\r
- loadData(sFileName);\r
- enEvt();\r
-}\r
-\r
-function projReady(aChunk)\r
-{\r
- gaChunks[gnLoad++]=aChunk;\r
- var len=aChunk.length;\r
- var nTotal=0;\r
- if(len>0)\r
- nTotal=aChunk[len-1].nTotal;\r
- gnItems+=nTotal;\r
- if(nTotal>gnMaxItems)\r
- {\r
- gnMaxItems=nTotal;\r
- gnRef=gnLoad-1;\r
- }\r
- setTimeout("writeDataIFrame();",1);\r
-}\r
-\r
-function writeFakeItems()\r
-{\r
- disEvt();\r
- gnUHeight=15;\r
- var sHTML=getFakeItemsHTMLbyCount(0,gnItems);\r
- document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
- var obj=getH6ById(0);\r
- if (document.body != null)\r
- {\r
- gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
- }\r
- gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);\r
- enEvt();\r
-}\r
-\r
-function getEndString()\r
-{\r
- var sBC=getBiggestChar();\r
- return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;\r
-}\r
-\r
-function getUnitIdx(nScrl,nHeight)\r
-{\r
- if(gaFakes.length==0)\r
- {\r
- markEnd();\r
- return;\r
- }\r
- var nB=0;\r
- var nE=gaFakes.length-1;\r
- var nM=-1;\r
- var nTop=0;\r
- var nBtm=0;\r
- var bF=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- nBtm=gaFakes[nM].getBtm();\r
- nTop=gaFakes[nM].getTop();\r
- \r
- if(nTop>=nScrl+nHeight)\r
- nE=nM-1;\r
- else if(nBtm<nScrl)\r
- nB=nM+1;\r
- else{\r
- bF=true;\r
- break;\r
- }\r
- }while(nE>=nB);\r
- if(bF)\r
- {\r
- if(nTop>=nScrl){\r
- gsSKA=gaFakes[nM].sKA;\r
- gsSKB=null;\r
- gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);\r
- gnIns=gaFakes[nM].nB;\r
- checkReady();\r
- }\r
- else if(nBtm<=nScrl+nHeight){\r
- gsSKB=gaFakes[nM].sKB;\r
- gsSKA=null;\r
- gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);\r
- gbNeedCalc=true;\r
- checkReady();\r
- }\r
- else{\r
- gnNeeded=gnVisible;\r
- var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);\r
- if (!showItemsInEvaluation(nUnitIdx))\r
- {\r
- gsSKA=gaFakes[nM].sKA;\r
- gsSKB=null;\r
- gnNeeded=Math.ceil(nHeight/gnUHeight);\r
- gnIns=gaFakes[nM].nB;\r
- checkReady();\r
- }\r
- }\r
- }\r
- else\r
- markEnd();\r
-}\r
-\r
-function disEvt()\r
-{\r
- window.onscroll=null;\r
- window.onresize=null;\r
-}\r
-\r
-function enEvt()\r
-{\r
- window.onscroll=window_OnScroll;\r
- window.onresize=window_OnResize;\r
-}\r
-\r
-function insertIdxKs(nIns,oHTML,bScrl)\r
-{\r
- var bRtn=true;\r
- disEvt();\r
- var nCount=oHTML.nConsumed;\r
- var nB=0;\r
- var nE=gaFakes.length-1;\r
- var nM=-1;\r
- var bF=false;\r
- do{\r
- nM=(nB+nE)>>1;\r
- if(gaFakes[nM].nB>nIns)\r
- nE=nM-1;\r
- else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)\r
- nB=nM+1;\r
- else{\r
- bF=true;\r
- break;\r
- }\r
- }while(nE>=nB);\r
- if(bF)\r
- {\r
- var oFIA=gaFakes[nM];\r
- var nOffsetTop=oFIA.getTop();\r
- var nOffsetBottom=oFIA.getBtm();\r
- var nDelta=0;\r
- var nHDiff=nIns-oFIA.nB;\r
- var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);\r
- if(nHDiff>0)\r
- {\r
- nDelta=oFIA.setNum(nHDiff);\r
- var sOldKBefore=oFIA.sKB;\r
- oFIA.sKB=oHTML.sFK;\r
- if(nTDiff>0)\r
- {\r
- var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);\r
- oFIA.insertAdjacentHTML("afterEnd",sHTML);\r
- var obj=getH6ById(nIns);\r
- insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));\r
- }\r
- oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML); \r
- if(bScrl)\r
- {\r
- if(gbMac&&gbIE4)\r
- {\r
- var nScrollPos=nOffsetBottom-nDelta;\r
- while(document.body.scrollTop!=nScrollPos)\r
- document.body.scrollTop=nScrollPos;\r
- }\r
- else\r
- window.scrollTo(0,nOffsetBottom-nDelta);\r
- }\r
- }\r
- else{\r
- oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);\r
- if(bScrl){\r
- if(gbMac&&gbIE4)\r
- {\r
- var nScrollPos=nOffsetTop;\r
- while(document.body.scrollTop!=nScrollPos)\r
- document.body.scrollTop=nScrollPos;\r
- }\r
- else\r
- window.scrollTo(0,nOffsetTop);\r
- }\r
- \r
- if(nTDiff>0)\r
- {\r
- oFIA.nB=nIns+nCount;\r
- nDelta=oFIA.setNum(nTDiff);\r
- oFIA.sKA=oHTML.sLK;\r
- } \r
- else{\r
- gaFakes[nM].setNum(0);\r
- removeItemFromArray(gaFakes,nM);\r
- }\r
- }\r
- }\r
- else\r
- bRtn=false;\r
- enEvt();\r
- return bRtn;\r
-}\r
-\r
-function window_OnScroll()\r
-{\r
- gnSE++;\r
- setTimeout("procScroll();",50); \r
-}\r
-\r
-function procScroll()\r
-{\r
- if(gnSE==1&&!gbProcess)\r
- {\r
- markBegin();\r
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
- }\r
- gnSE--;\r
-}\r
-\r
-function window_OnResize()\r
-{\r
- gnRE++;\r
- setTimeout("procResize();",50);\r
-}\r
-\r
-function procResize()\r
-{\r
- if(gnRE==1&&!gbProcess)\r
- {\r
- markBegin();\r
- gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
- if(gnIns==-1)\r
- getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
- }\r
- gnRE--;\r
-}\r
-\r
-function getChunkByIdx(nIdx,nPosition)\r
-{\r
- var oCData=null;\r
- if(nIdx<gaChunks.length)\r
- {\r
- var len=gaChunks[nIdx].length;\r
- if(len>0)\r
- {\r
- var nB=0;\r
- var nE=len-1;\r
- var bF=false;\r
- do{\r
- var nM=(nB+nE)>>1;\r
- if(nPosition<gaChunks[nIdx][nM].nTotal)\r
- {\r
- bF=true;\r
- nE=nM;\r
- }\r
- else\r
- nB=nM+1;\r
- }while(nE>nB);\r
- if(bF)\r
- oCData=gaChunks[nIdx][nE];\r
- else if(nPosition<gaChunks[nIdx][nB].nTotal)\r
- oCData=gaChunks[nIdx][nB];\r
- }\r
- }\r
- return oCData;\r
-}\r
-\r
-function getChunkedData(nIdx,bDown,sK)\r
-{\r
- var oCData=null;\r
- var nCandId=-1;\r
- if(nIdx<gaChunks.length)\r
- {\r
- var len=gaChunks[nIdx].length;\r
- if(len>0)\r
- {\r
- var nB=0;\r
- var nE=len-1;\r
- var bF=false;\r
- do{\r
- var nM=(nB+nE+(bDown?0:1))>>1;\r
- if(bDown)\r
- {\r
- if(compare(sK,gaChunks[nIdx][nM].sEK)<0)\r
- {\r
- bF=true;\r
- nE=nM;\r
- }\r
- else\r
- nB=nM+1;\r
- }\r
- else\r
- {\r
- if(compare(sK,gaChunks[nIdx][nM].sBK)>0)\r
- {\r
- bF=true;\r
- nB=nM;\r
- }\r
- else\r
- nE=nM-1;\r
- }\r
- }while(nE>nB);\r
- if(bF)\r
- {\r
- if(bDown)\r
- nCandId=nE;\r
- else\r
- nCandId=nB;\r
- }\r
- else\r
- {\r
- if(bDown)\r
- {\r
- if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)\r
- nCandId=nB;\r
- else\r
- nCandId=gaChunks[nIdx].length-1;\r
- }\r
- else\r
- {\r
- if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)\r
- nCandId=nE;\r
- else\r
- nCandId=0;\r
- }\r
- }\r
- return gaChunks[nIdx][nCandId];\r
- }\r
- }\r
- return null;\r
-}\r
-\r
-function findCK()\r
-{\r
- if(gsCK!=null)\r
- {\r
- gsSKA=gsCK;\r
- gbFindCK=true;\r
- gnNeeded=1;\r
- markBegin();\r
- checkReady();\r
- }\r
-}\r
-\r
-function writeLoadingDiv(nIIdx)\r
-{\r
- return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-var gbWhHost=true;
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Index content</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whlang.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whhost.js"></script>\r
-<script language="javascript1.2" src="whihost.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var goPopup = null;\r
-var gbPopupMenuTimeoutExpired=false;\r
-var gBsClientWidth=640;\r
-var gBsClientHeight=480;\r
-var g_bIsPopupMenuInit=false;\r
-\r
-function WritePopupMenuLayer()\r
-{\r
- if (!g_bIsPopupMenuInit)\r
- {\r
- document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
- document.write("<STYLE TYPE='text/css'>");\r
- if (gbMac && gbIE4) {\r
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; text-decoration:none;}");\r
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; text-decoration:none;}");\r
- } else {\r
- document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
- document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
- }\r
- document.write("</STYLE>");\r
- }\r
- g_bIsPopupMenuInit = true;\r
-}\r
-\r
-function PopupMenu_Invoke()\r
-{\r
- if (gbNav6)\r
- resetHighLight();\r
- \r
- if (!gbNav6 && document.readyState != "complete")\r
- return false;\r
- var fn_arguments = PopupMenu_Invoke.arguments; \r
- // Make sure we have reasonable arguments\r
- var argLen = fn_arguments.length;\r
- if (argLen < 3) {\r
- return false;\r
- }\r
-\r
- // Check to see if we only have one target\r
- var strTarget = "";\r
- \r
- strTarget = "TARGET='" + fn_arguments[1] + "'";\r
- \r
- if (argLen < 5) {\r
- // Get the place that we will be putting the topic into\r
- var strURL = fn_arguments[3];\r
-\r
- if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
- window.open(strURL, fn_arguments[1]);\r
- else\r
- window.open(strURL);\r
- \r
- return false;\r
- }\r
- \r
- var strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
- if (gbMac && gbIE4) {\r
- strMenu += ' CELLPADDING=4';\r
- } else {\r
- strMenu += ' CELLPADDING=2';\r
- } \r
- strMenu += ' BGCOLOR=#c0c0c0>';\r
-\r
- // Add each of the items\r
- if (gbIE55)\r
- {\r
- var i = 2;\r
- while (i <= argLen - 1) {\r
- strMenu += '<TR><TD><NOBR>'\r
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A ';\r
- strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + excapeSingleQuotandSlash(fn_arguments[i + 1]) + '\', \'' + fn_arguments[1] + '\');"';\r
- strMenu += ' onmouseover="parent.PopupMenu_Over(event);"';\r
- strMenu += ' onmouseout="parent.PopupMenu_Out(event);"';\r
- strMenu += '>';\r
- strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
- strMenu += '</A></DIV></NOBR></TD></TR>';\r
- i += 2;\r
- }\r
- }\r
- else\r
- {\r
- var i = 2;\r
- while (i <= argLen - 1) {\r
- strMenu += '<TR><TD><NOBR>'\r
- strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '" ' + strTarget;\r
- strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
- strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
- strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
- strMenu += '>';\r
- strMenu += '<SPAN CLASS="PopupNotOver">' + excapeSingleQuotandSlash(fn_arguments[i]) + '</SPAN>';\r
- strMenu += '</A></DIV></NOBR></TD></TR>';\r
- i += 2;\r
- }\r
- }\r
- strMenu += "</TABLE>";\r
-\r
- if (gbMac && gbIE4) {\r
- // ie5 in mac need something. </TABLE> is one of them.\r
- strMenu +="<TABLE></TABLE>";\r
- }\r
-\r
- var layerPopup = null;\r
- var stylePopup = null;\r
- var nEventX = 0;\r
- var nEventY = 0;\r
- var nWindowWidth = 0;\r
- if (gbIE4||gbOpera7)\r
- {\r
- layerPopup = document.all["PopupMenu"];\r
- layerPopup.innerHTML = strMenu;\r
- stylePopup = layerPopup.style;\r
-\r
- _BSPSGetClientSize();\r
-\r
- // Get the position of the item causing the event (relative to its parent)\r
- nEventX = window.event.clientX;\r
- nEventY = window.event.clientY;\r
- \r
- if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
- nEventY += document.body.scrollTop + 10;\r
- } else {\r
- nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
- }\r
- stylePopup.top = nEventY;\r
-\r
- if (nEventX + layerPopup.scrollWidth + 20 > gBsClientWidth) {\r
- if (gBsClientWidth - layerPopup.scrollWidth < 5) {\r
- stylePopup.left = 5;\r
- } else {\r
- stylePopup.left = gBsClientWidth - layerPopup.scrollWidth - 5;\r
- }\r
- } else {\r
- stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
- }\r
-\r
- if (gbIE55) {\r
- var nPosX = window.event.clientX;\r
- var nPosY = window.event.clientY;\r
- if (window.event.srcElement)\r
- {\r
- nPosX = window.event.srcElement.offsetLeft + window.event.srcElement.offsetWidth - document.body.scrollLeft;\r
- nPosY = window.event.srcElement.offsetTop + window.event.srcElement.offsetHeight - document.body.scrollTop;\r
- }\r
- goPopup = window.createPopup();\r
- var oPopupBody = goPopup.document.body;\r
- goPopup.document.createStyleSheet();\r
- goPopup.document.styleSheets[0].addRule(".PopupOver", "{font-family:\"Arial\"; cursor: hand;color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
- goPopup.document.styleSheets[0].addRule(".PopupNotOver", "{font-family:\"Arial\"; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
- oPopupBody.insertAdjacentHTML("afterBegin", strMenu);\r
- goPopup.show(nPosX, nPosY, layerPopup.scrollWidth, layerPopup.scrollHeight, document.body);\r
- }\r
- else \r
- {\r
- stylePopup.visibility = "visible";\r
- document.onclick = PopupMenu_HandleClick;\r
- }\r
- } else if (gbNav6) {\r
- layerPopup = document.getElementById("PopupMenu");\r
- layerPopup.style.visibility = "hidden";\r
- \r
- var e = fn_arguments[0];\r
- nEventX = e.pageX;\r
- nEventY = e.pageY;\r
- _BSPSGetClientSize();\r
- layerPopup.innerHTML = strMenu;\r
-\r
- if (nEventY + layerPopup.offsetHeight + 20 < window.pageYOffset + gBsClientHeight) {\r
- nEventY += 20;\r
- } else {\r
- nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
- }\r
-\r
- if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
- if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
- nEventX = 5;\r
- } else {\r
- nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
- }\r
- } else {\r
- nEventX += 20;\r
- }\r
- layerPopup.style.top = nEventY;\r
- layerPopup.style.left = nEventX;\r
-\r
- // set again to avoid the frash in netscape 6.\r
- layerPopup.innerHTML = strMenu;\r
- layerPopup.style.visibility = "visible";\r
- window.onclick = PopupMenu_HandleClick;\r
- } \r
-\r
- window.gbPopupMenuTimeoutExpired = false;\r
- setTimeout("PopupMenu_Timeout();", 100);\r
- return false;\r
-}\r
-\r
-function PopupMenu_Timeout()\r
-{\r
- window.gbPopupMenuTimeoutExpired = true;\r
-}\r
-\r
-function PopupMenu_Over(e)\r
-{\r
- if (gbIE4||gbOpera7)\r
- e.srcElement.className = "PopupOver";\r
- else if (gbNav6)\r
- e.target.parentNode.className = "PopupOver";\r
-}\r
-\r
-function PopupMenu_Out(e)\r
-{\r
- if (gbIE4||gbOpera7)\r
- e.srcElement.className = "PopupNotOver";\r
- else if (gbNav6)\r
- e.target.parentNode.className = "PopupNotOver";\r
-}\r
-\r
-function PopupMenu_2HandleClick(surl, starget)\r
-{\r
- window.open(surl, starget);\r
- goPopup.hide();\r
-}\r
-\r
-function PopupMenu_HandleClick(e)\r
-{\r
- if (!window.gbPopupMenuTimeoutExpired) {\r
- return;\r
- }\r
-\r
- var layerPopup = getElement("PopupMenu");\r
- layerPopup.style.visibility = "hidden";\r
-\r
- return;\r
-}\r
-\r
-//Get client size info\r
-function _BSPSGetClientSize()\r
-{\r
- gBsClientWidth = document.body.clientWidth;\r
- gBsClientHeight = document.body.clientHeight;\r
-}\r
-\r
-if (window.gbWhIHost)\r
-{\r
- \r
- \r
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Empty", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
- setActiveBgColor("#cccccc");\r
- setMargin("0pt");\r
- setIndent("9pt");\r
- IndexWriteClassStyle();\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</head>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
-<script languageE="JavaScript">\r
-<!--\r
-WritePopupMenuLayer();\r
-//-->\r
-</script>\r
-</body>\r
-</html>\r
-\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Index</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gbIndexLayerInit = false;\r
-if (window.gbWhProxy&&window.gbWhMsg&&window.gbWhVer)\r
-{\r
- var strWrite;\r
- if (gbMac)\r
- strWrite="<FRAMESET ROWS='45,100%' framespacing=0 frameborder=1>";\r
- else\r
- strWrite="<FRAMESET ROWS='60,100%' framespacing=0 frameborder=1>";\r
- strWrite +="<FRAME SRC='whiform.htm' title='index form frame' name='idxform' noresize='yes' scrolling='no'>";\r
- strWrite +="<FRAME SRC='whibody.htm' title='index content frame' name='idxbody' scrolling='yes'>";\r
- strWrite +="</FRAMESET>";\r
- document.write(strWrite);\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>Index form</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<style>\r
-<!--\r
-body {margin:0;}\r
--->\r
-</style>\r
-<body bgcolor="#c0c0c0">\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whform.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-function indexLookup(bCR)\r
-{\r
- var strInput = document.IndexInputForm.keywordField.value.toUpperCase();\r
- if (strInput != "") {\r
- var oParam = new Object();\r
- oParam.sInput = strInput;\r
- oParam.bCR = bCR;\r
- var oMessage = new whMessage(WH_MSG_SEARCHINDEXKEY, this, 1, oParam);\r
- SendMessage(oMessage);\r
- }\r
- if (gbMac) {\r
- document.IndexInputForm.keywordField.focus();\r
- }\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
- UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
- UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
- UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
-}\r
-\r
-function onSendMessage(oMessage)\r
-{\r
- if (oMessage.nMessageId == WH_MSG_SHOWIDX)\r
- {\r
- document.IndexInputForm.keywordField.focus();\r
- }\r
- else if (oMessage.nMessageId == WH_MSG_SHOWFTS ||\r
- oMessage.nMessageId == WH_MSG_SHOWTOC || \r
- oMessage.nMessageId == WH_MSG_SHOWGLO)\r
- {\r
- document.IndexInputForm.keywordField.blur();\r
- }\r
- return true;\r
-}\r
-\r
-if (window.gbWhForm)\r
-{\r
- RegisterListener2(this, WH_MSG_SHOWTOC);\r
- RegisterListener2(this, WH_MSG_SHOWIDX);\r
- RegisterListener2(this, WH_MSG_SHOWFTS);\r
- RegisterListener2(this, WH_MSG_SHOWGLO);\r
- window.onunload=window_Unload;\r
- window.onload = init;\r
- gfunLookUp = indexLookup;\r
- gfunInit = null;\r
- gstrFormName = "IndexInputForm"\r
- gsTitle = "Type in the keyword to find:";\r
- gsTitle = "Type in the keyword to find:";\r
-\r
- \r
- \r
- \r
- \r
- \r
- \r
- setGoText("Go");\r
- setFont("Title", "Arial","9pt","#000000","normal","normal","none");\r
- \r
- \r
- document.write(getFormHTML());\r
- writeFormStyle();\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002\r
-var gsDefaultTarget="bsscright";\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goIdxFont=null;\r
-var goIdxEmptyFont=null;\r
-var goIdxHoverFont=null;\r
-var gsIdxMargin="0pt";\r
-var gsIdxIndent="8pt";\r
-var gsIdxActiveBgColor="#cccccc";\r
-var gsCK = null;\r
-var gsBCK = null;\r
-var gbCR = false;\r
-var gbBCR = false;\r
-var gbWhIHost=true;\r
-\r
-function myEvent()\r
-{\r
- this.pageX = 0;\r
- this.pageY = 0;\r
-}\r
-var _event=new myEvent();\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Normal")\r
- goIdxFont=vFont;\r
- else if(sType=="Empty")\r
- goIdxEmptyFont=vFont;\r
- else if(sType=="Hover")\r
- goIdxHoverFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
- gsIdxActiveBgColor=sBgColor;\r
-}\r
-\r
-function setMargin(sMargin)\r
-{\r
- gsIdxMargin=sMargin;\r
-}\r
-\r
-function setIndent(sIndent)\r
-{\r
- gsIdxIndent=sIndent;\r
-}\r
-\r
-function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
- var sHTML="";\r
- var nIdxSet=aCurIdxSet[0];\r
- var nIIdx=aPos[nIdxSet];\r
- var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);\r
- var sKName=_textToHtml(sKOriName);\r
-\r
- var nIdxIndent=parseInt(gsIdxIndent);\r
- var sTopics="";\r
- if(nLevel==1){\r
- if(getItemType(aDataCon,nIdxSet,nIIdx)==1)\r
- {\r
- sHTML+="<H6><nobr>";\r
- sHTML+="<b>"+sKName+"</b></nobr></H6>";\r
- }\r
- else{\r
- for(var i=0;i<nLength;i++)\r
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
- sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";\r
- sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
- if(sTopics.length>0)\r
- sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";\r
- else\r
- sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></p>";\r
- }\r
- }\r
- else if(nLevel>=2){\r
- var nIndent=nIdxIndent*nLevel;\r
- for(var i=0;i<nLength;i++)\r
- sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
- if (nLevel==2)\r
- sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
- else\r
- sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
- sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
- if(sTopics.length>0)\r
- sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";\r
- else\r
- sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></h6>";\r
- }\r
- oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);\r
-}\r
-\r
-function getTargetName(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)\r
- return aDataCon[nIdxSet].aKs[nIIdx].sTarget;\r
- return gsDefaultTarget;\r
-}\r
-\r
-function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
-{\r
- var oLocalHTML=new indexHTMLPart();\r
- writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);\r
- \r
- var aLocalPos=new Array();\r
- var aMaxPos=new Array();\r
- for(var i=0;i<aPos.length;i++)\r
- {\r
- aLocalPos[i]=aPos[i];\r
- aMaxPos[i]=-1;\r
- }\r
- \r
- for(i=0;i<nLength;i++)\r
- {\r
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);\r
- aLocalPos[aCurIdxSet[i]]++;\r
- if(nNKOff>0)\r
- aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;\r
- }\r
- var oSubHTML=new indexHTMLPart();\r
- writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);\r
- oLocalHTML.addSubHTML(oSubHTML,true);\r
- oHTML.appendHTML(oLocalHTML,bDown);\r
-}\r
-\r
-function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
-{\r
- if(bDown)\r
- {\r
- for(var i=0;i<nLength;i++)\r
- {\r
- var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
- aPos[aCurIdxSet[i]]+=(1+nNKOff);\r
- }\r
- }\r
- else{\r
- for(var i=0;i<nLength;i++)\r
- {\r
- var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
- aPos[aCurIdxSet[i]]-=(1+nPKOff);\r
- }\r
- }\r
-}\r
-\r
-function getItemName(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
- else\r
- return null;\r
-}\r
-\r
-function getItemType(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].nType;\r
- else\r
- return 0;\r
-}\r
-\r
-function getNKOff(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;\r
- else\r
- return null;\r
-}\r
-\r
-function getPKOff(aDataCon,nIdxSet,nIIdx)\r
-{\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;\r
- else\r
- return null;\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- {\r
- document.body.background=gsBgImage;\r
- }\r
- if(gsBgColor&&gsBgColor.length>0)\r
- {\r
- document.body.bgColor=gsBgColor;\r
- }\r
- document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
- loadIdx();\r
- var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
- SendMessage(oMsg);\r
-}\r
-\r
-function loadIdx()\r
-{\r
- if(!gbReady)\r
- {\r
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
- if(SendMessage(oResMsg)&&oResMsg.oParam)\r
- {\r
- gbReady=true;\r
- var oProj=oResMsg.oParam;\r
- var aProj=oProj.aProj;\r
- gbXML=oProj.bXML;\r
- if(aProj.length>0)\r
- {\r
- var sLangId=aProj[0].sLangId;\r
- for(var i=0;i<aProj.length;i++)\r
- {\r
- if(aProj[i].sIdx&&aProj[i].sLangId==sLangId)\r
- {\r
- addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);\r
- }\r
- }\r
- }\r
- writeDataIFrame();\r
- enEvt();\r
- } \r
- }\r
-}\r
-\r
-function getIdxTopics(aDataCon,nIdxSet,nIIdx)\r
-{\r
- var sTopics="";\r
- if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
- {\r
- if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)\r
- {\r
- var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;\r
- var nProj=aDataCon[nIdxSet].nProjId;\r
- var sPath=gaData[nProj].sPPath;\r
- for(var i=0;i<nLen;i++)\r
- {\r
- var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;\r
- var sFullPath=_getFullPath(sPath,sURL);\r
- sTopics+=",'"+excapeSingleQuotandSlash(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+excapeSingleQuotandSlash(_textToHtml_nonbsp(sFullPath))+"'";\r
- }\r
- }\r
- }\r
- return sTopics; \r
-}\r
-\r
-function findCKInDom()\r
-{\r
- if(gsCK!=null)\r
- {\r
- var sK=gsCK;\r
- var oP=getElementsByTag(document,"P");\r
- if(!oP) return false;\r
- var len=oP.length;\r
- var nB=0;\r
- var nE=len-1;\r
- var nM=0;\r
- var sItem="";\r
- var bF=false;\r
- while(nB<nE){\r
- nM=(nB+nE+1)>>1;\r
- sItem=getInnerText(oP[nM]);\r
- \r
- if(compare(sItem,sK)==0)\r
- {\r
- bF=true;\r
- break;\r
- }\r
- else if(compare(sItem,sK)>0)\r
- nE=nM-1;\r
- else if(compare(sItem,sK)<0)\r
- nB=nM;\r
- }\r
- if(!bF)\r
- {\r
- if(nB==nE) nM=nB;\r
- \r
- if(nM+1<len)\r
- {\r
- sItem=getInnerText(oP[nM+1]);\r
- if(compare(sItem,sK)<=0) nM++;\r
- } \r
- if(nM+1<len)\r
- {\r
- sItem=getInnerText(oP[nM+1]);\r
- if(compare(sItem.substring(0,sK.length),sK)==0) nM++;\r
- } \r
- }\r
- \r
- var oMatch=oP[nM];\r
- if(oMatch)\r
- {\r
- window.scrollTo(0,oMatch.offsetTop);\r
- var tempColl=getElementsByTag(oMatch,"A");\r
- if(tempColl&&tempColl.length>0){\r
- var nbTag=getElementsByTag(oMatch,"NOBR");\r
- if(nbTag&&nbTag.length>0)\r
- HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");\r
- if (gbCR)\r
- {\r
- if (gbIE4)\r
- tempColl(0).click();\r
- else\r
- {\r
- var strCommand = tempColl[0].getAttribute("onClick");\r
- var nstrCommand = strCommand.indexOf(";");\r
- strCommand = strCommand.substring(0, nstrCommand);\r
- strCommand = strCommand.replace("event", "_event");\r
- window._event.pageX = oMatch.offsetLeft ;\r
- window._event.pageY = oMatch.offsetTop + 20;\r
- window.setTimeout(strCommand, 100);\r
- }\r
- }\r
- }\r
- }\r
- gsCK=gsBCK;\r
- gbCR=gbBCR;\r
- if(gsBCK!=null)\r
- {\r
- gsBCK=null;\r
- gbBCR=false;\r
- findCK();\r
- return false;\r
- }\r
- \r
- }\r
- return true;\r
-}\r
-\r
-function clearHighLight()\r
-{\r
- resetHighLight(gsBgColor);\r
-}\r
-\r
-function IndexWriteClassStyle()\r
-{\r
- var sStyle="";\r
- sStyle+="<STYLE TYPE='text/css'>";\r
- if (gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- if(gbIE4&&gbMac&&!gbIE5)\r
- {\r
- var nMargin=parseInt(gsIdxMargin);\r
- nMargin-=10;\r
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
- sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}\n";\r
- }\r
- else\r
- {\r
- sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
- sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
- }\r
- sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
- sStyle+="A:link {"+getFontStyle(goIdxFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}\n";\r
- sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}\n";\r
- sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}\n";\r
- sStyle+="</STYLE>"; \r
- document.write(sStyle);\r
- return;\r
-}\r
-\r
-function window_Unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
- UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if(oMsg)\r
- {\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_SEARCHINDEXKEY)\r
- {\r
- if(oMsg.oParam && oMsg.oParam.sInput)\r
- {\r
- if(gsCK==null)\r
- {\r
- gsCK=oMsg.oParam.sInput;\r
- gbCR = oMsg.oParam.bCR;\r
- findCK();\r
- }\r
- else\r
- {\r
- gsBCK=oMsg.oParam.sInput;\r
- gbBCR = oMsg.oParam.bCR;\r
- }\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_PROJECTREADY)\r
- {\r
- loadIdx();\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)\r
-{\r
- RegisterListener2(this,WH_MSG_PROJECTREADY);\r
- RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
- goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
- goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
- goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_BUnload;\r
- window.onunload=window_Unload;\r
- gbWhIHost=true;\r
-}\r
-else\r
- document.location.reload();\r
-\r
+++ /dev/null
-// WebHelp 5.10.001\r
-var garrSortChar=new Array();\r
-var gaFtsStop=new Array();\r
-var gaFtsStem=new Array();\r
-var gbWhLang=false;\r
-\r
-garrSortChar[0] = 0;\r
-garrSortChar[1] = 1;\r
-garrSortChar[2] = 2;\r
-garrSortChar[3] = 3;\r
-garrSortChar[4] = 4;\r
-garrSortChar[5] = 5;\r
-garrSortChar[6] = 6;\r
-garrSortChar[7] = 7;\r
-garrSortChar[8] = 8;\r
-garrSortChar[9] = 40;\r
-garrSortChar[10] = 41;\r
-garrSortChar[11] = 42;\r
-garrSortChar[12] = 43;\r
-garrSortChar[13] = 44;\r
-garrSortChar[14] = 9;\r
-garrSortChar[15] = 10;\r
-garrSortChar[16] = 11;\r
-garrSortChar[17] = 12;\r
-garrSortChar[18] = 13;\r
-garrSortChar[19] = 14;\r
-garrSortChar[20] = 15;\r
-garrSortChar[21] = 16;\r
-garrSortChar[22] = 17;\r
-garrSortChar[23] = 18;\r
-garrSortChar[24] = 19;\r
-garrSortChar[25] = 20;\r
-garrSortChar[26] = 21;\r
-garrSortChar[27] = 22;\r
-garrSortChar[28] = 23;\r
-garrSortChar[29] = 24;\r
-garrSortChar[30] = 25;\r
-garrSortChar[31] = 26;\r
-garrSortChar[32] = 38;\r
-garrSortChar[33] = 45;\r
-garrSortChar[34] = 46;\r
-garrSortChar[35] = 47;\r
-garrSortChar[36] = 48;\r
-garrSortChar[37] = 49;\r
-garrSortChar[38] = 50;\r
-garrSortChar[39] = 33;\r
-garrSortChar[40] = 51;\r
-garrSortChar[41] = 52;\r
-garrSortChar[42] = 53;\r
-garrSortChar[43] = 88;\r
-garrSortChar[44] = 54;\r
-garrSortChar[45] = 34;\r
-garrSortChar[46] = 55;\r
-garrSortChar[47] = 56;\r
-garrSortChar[48] = 115;\r
-garrSortChar[49] = 119;\r
-garrSortChar[50] = 121;\r
-garrSortChar[51] = 123;\r
-garrSortChar[52] = 125;\r
-garrSortChar[53] = 126;\r
-garrSortChar[54] = 127;\r
-garrSortChar[55] = 128;\r
-garrSortChar[56] = 129;\r
-garrSortChar[57] = 130;\r
-garrSortChar[58] = 57;\r
-garrSortChar[59] = 58;\r
-garrSortChar[60] = 89;\r
-garrSortChar[61] = 90;\r
-garrSortChar[62] = 91;\r
-garrSortChar[63] = 59;\r
-garrSortChar[64] = 60;\r
-garrSortChar[65] = 131;\r
-garrSortChar[66] = 148;\r
-garrSortChar[67] = 150;\r
-garrSortChar[68] = 154;\r
-garrSortChar[69] = 158;\r
-garrSortChar[70] = 168;\r
-garrSortChar[71] = 171;\r
-garrSortChar[72] = 173;\r
-garrSortChar[73] = 175;\r
-garrSortChar[74] = 185;\r
-garrSortChar[75] = 187;\r
-garrSortChar[76] = 189;\r
-garrSortChar[77] = 191;\r
-garrSortChar[78] = 193;\r
-garrSortChar[79] = 197;\r
-garrSortChar[80] = 214;\r
-garrSortChar[81] = 216;\r
-garrSortChar[82] = 218;\r
-garrSortChar[83] = 220;\r
-garrSortChar[84] = 225;\r
-garrSortChar[85] = 230;\r
-garrSortChar[86] = 240;\r
-garrSortChar[87] = 242;\r
-garrSortChar[88] = 244;\r
-garrSortChar[89] = 246;\r
-garrSortChar[90] = 252;\r
-garrSortChar[91] = 61;\r
-garrSortChar[92] = 62;\r
-garrSortChar[93] = 63;\r
-garrSortChar[94] = 64;\r
-garrSortChar[95] = 66;\r
-garrSortChar[96] = 67;\r
-garrSortChar[97] = 131;\r
-garrSortChar[98] = 148;\r
-garrSortChar[99] = 150;\r
-garrSortChar[100] = 154;\r
-garrSortChar[101] = 158;\r
-garrSortChar[102] = 168;\r
-garrSortChar[103] = 171;\r
-garrSortChar[104] = 173;\r
-garrSortChar[105] = 175;\r
-garrSortChar[106] = 185;\r
-garrSortChar[107] = 187;\r
-garrSortChar[108] = 189;\r
-garrSortChar[109] = 191;\r
-garrSortChar[110] = 193;\r
-garrSortChar[111] = 197;\r
-garrSortChar[112] = 214;\r
-garrSortChar[113] = 216;\r
-garrSortChar[114] = 218;\r
-garrSortChar[115] = 220;\r
-garrSortChar[116] = 225;\r
-garrSortChar[117] = 230;\r
-garrSortChar[118] = 240;\r
-garrSortChar[119] = 242;\r
-garrSortChar[120] = 244;\r
-garrSortChar[121] = 246;\r
-garrSortChar[122] = 252;\r
-garrSortChar[123] = 68;\r
-garrSortChar[124] = 69;\r
-garrSortChar[125] = 70;\r
-garrSortChar[126] = 71;\r
-garrSortChar[127] = 27;\r
-garrSortChar[128] = 114;\r
-garrSortChar[129] = 28;\r
-garrSortChar[130] = 82;\r
-garrSortChar[131] = 170;\r
-garrSortChar[132] = 85;\r
-garrSortChar[133] = 112;\r
-garrSortChar[134] = 109;\r
-garrSortChar[135] = 110;\r
-garrSortChar[136] = 65;\r
-garrSortChar[137] = 113;\r
-garrSortChar[138] = 223;\r
-garrSortChar[139] = 86;\r
-garrSortChar[140] = 213;\r
-garrSortChar[141] = 29;\r
-garrSortChar[142] = 255;\r
-garrSortChar[143] = 30;\r
-garrSortChar[144] = 31;\r
-garrSortChar[145] = 80;\r
-garrSortChar[146] = 81;\r
-garrSortChar[147] = 83;\r
-garrSortChar[148] = 84;\r
-garrSortChar[149] = 111;\r
-garrSortChar[150] = 36;\r
-garrSortChar[151] = 37;\r
-garrSortChar[152] = 79;\r
-garrSortChar[153] = 229;\r
-garrSortChar[154] = 222;\r
-garrSortChar[155] = 87;\r
-garrSortChar[156] = 212;\r
-garrSortChar[157] = 32;\r
-garrSortChar[158] = 254;\r
-garrSortChar[159] = 251;\r
-garrSortChar[160] = 39;\r
-garrSortChar[161] = 72;\r
-garrSortChar[162] = 97;\r
-garrSortChar[163] = 98;\r
-garrSortChar[164] = 99;\r
-garrSortChar[165] = 100;\r
-garrSortChar[166] = 73;\r
-garrSortChar[167] = 101;\r
-garrSortChar[168] = 74;\r
-garrSortChar[169] = 102;\r
-garrSortChar[170] = 133;\r
-garrSortChar[171] = 93;\r
-garrSortChar[172] = 103;\r
-garrSortChar[173] = 35;\r
-garrSortChar[174] = 104;\r
-garrSortChar[175] = 75;\r
-garrSortChar[176] = 105;\r
-garrSortChar[177] = 92;\r
-garrSortChar[178] = 122;\r
-garrSortChar[179] = 124;\r
-garrSortChar[180] = 76;\r
-garrSortChar[181] = 106;\r
-garrSortChar[182] = 107;\r
-garrSortChar[183] = 108;\r
-garrSortChar[184] = 77;\r
-garrSortChar[185] = 120;\r
-garrSortChar[186] = 199;\r
-garrSortChar[187] = 94;\r
-garrSortChar[188] = 116;\r
-garrSortChar[189] = 117;\r
-garrSortChar[190] = 118;\r
-garrSortChar[191] = 78;\r
-garrSortChar[192] = 131;\r
-garrSortChar[193] = 131;\r
-garrSortChar[194] = 131;\r
-garrSortChar[195] = 131;\r
-garrSortChar[196] = 131;\r
-garrSortChar[197] = 131;\r
-garrSortChar[198] = 131;\r
-garrSortChar[199] = 150;\r
-garrSortChar[200] = 158;\r
-garrSortChar[201] = 158;\r
-garrSortChar[202] = 158;\r
-garrSortChar[203] = 158;\r
-garrSortChar[204] = 175;\r
-garrSortChar[205] = 175;\r
-garrSortChar[206] = 175;\r
-garrSortChar[207] = 175;\r
-garrSortChar[208] = 154;\r
-garrSortChar[209] = 193;\r
-garrSortChar[210] = 197;\r
-garrSortChar[211] = 197;\r
-garrSortChar[212] = 197;\r
-garrSortChar[213] = 197;\r
-garrSortChar[214] = 197;\r
-garrSortChar[215] = 95;\r
-garrSortChar[216] = 197;\r
-garrSortChar[217] = 230;\r
-garrSortChar[218] = 230;\r
-garrSortChar[219] = 230;\r
-garrSortChar[220] = 230;\r
-garrSortChar[221] = 246;\r
-garrSortChar[222] = 227;\r
-garrSortChar[223] = 224;\r
-garrSortChar[224] = 131;\r
-garrSortChar[225] = 131;\r
-garrSortChar[226] = 131;\r
-garrSortChar[227] = 131;\r
-garrSortChar[228] = 131;\r
-garrSortChar[229] = 131;\r
-garrSortChar[230] = 131;\r
-garrSortChar[231] = 150;\r
-garrSortChar[232] = 158;\r
-garrSortChar[233] = 158;\r
-garrSortChar[234] = 158;\r
-garrSortChar[235] = 158;\r
-garrSortChar[236] = 175;\r
-garrSortChar[237] = 175;\r
-garrSortChar[238] = 175;\r
-garrSortChar[239] = 175;\r
-garrSortChar[240] = 154;\r
-garrSortChar[241] = 193;\r
-garrSortChar[242] = 197;\r
-garrSortChar[243] = 197;\r
-garrSortChar[244] = 197;\r
-garrSortChar[245] = 197;\r
-garrSortChar[246] = 197;\r
-garrSortChar[247] = 96;\r
-garrSortChar[248] = 197;\r
-garrSortChar[249] = 230;\r
-garrSortChar[250] = 230;\r
-garrSortChar[251] = 230;\r
-garrSortChar[252] = 230;\r
-garrSortChar[253] = 246;\r
-garrSortChar[254] = 227;\r
-garrSortChar[255] = 250;\r
-\r
-gaFtsStop[0] = "a";\r
-gaFtsStop[1] = "about";\r
-gaFtsStop[2] = "after";\r
-gaFtsStop[3] = "against";\r
-gaFtsStop[4] = "all";\r
-gaFtsStop[5] = "also";\r
-gaFtsStop[6] = "among";\r
-gaFtsStop[7] = "an";\r
-gaFtsStop[8] = "and";\r
-gaFtsStop[9] = "are";\r
-gaFtsStop[10] = "as";\r
-gaFtsStop[11] = "at";\r
-gaFtsStop[12] = "be";\r
-gaFtsStop[13] = "became";\r
-gaFtsStop[14] = "because";\r
-gaFtsStop[15] = "been";\r
-gaFtsStop[16] = "between";\r
-gaFtsStop[17] = "but";\r
-gaFtsStop[18] = "by";\r
-gaFtsStop[19] = "can";\r
-gaFtsStop[20] = "come";\r
-gaFtsStop[21] = "do";\r
-gaFtsStop[22] = "during";\r
-gaFtsStop[23] = "each";\r
-gaFtsStop[24] = "early";\r
-gaFtsStop[25] = "for";\r
-gaFtsStop[26] = "form";\r
-gaFtsStop[27] = "found";\r
-gaFtsStop[28] = "from";\r
-gaFtsStop[29] = "had";\r
-gaFtsStop[30] = "has";\r
-gaFtsStop[31] = "have";\r
-gaFtsStop[32] = "he";\r
-gaFtsStop[33] = "her";\r
-gaFtsStop[34] = "his";\r
-gaFtsStop[35] = "however";\r
-gaFtsStop[36] = "in";\r
-gaFtsStop[37] = "include";\r
-gaFtsStop[38] = "into";\r
-gaFtsStop[39] = "is";\r
-gaFtsStop[40] = "it";\r
-gaFtsStop[41] = "its";\r
-gaFtsStop[42] = "late";\r
-gaFtsStop[43] = "later";\r
-gaFtsStop[44] = "made";\r
-gaFtsStop[45] = "many";\r
-gaFtsStop[46] = "may";\r
-gaFtsStop[47] = "me";\r
-gaFtsStop[48] = "med";\r
-gaFtsStop[49] = "more";\r
-gaFtsStop[50] = "most";\r
-gaFtsStop[51] = "near";\r
-gaFtsStop[52] = "no";\r
-gaFtsStop[53] = "non";\r
-gaFtsStop[54] = "not";\r
-gaFtsStop[55] = "of";\r
-gaFtsStop[56] = "on";\r
-gaFtsStop[57] = "only";\r
-gaFtsStop[58] = "or";\r
-gaFtsStop[59] = "other";\r
-gaFtsStop[60] = "over";\r
-gaFtsStop[61] = "several";\r
-gaFtsStop[62] = "she";\r
-gaFtsStop[63] = "some";\r
-gaFtsStop[64] = "such";\r
-gaFtsStop[65] = "than";\r
-gaFtsStop[66] = "that";\r
-gaFtsStop[67] = "the";\r
-gaFtsStop[68] = "their";\r
-gaFtsStop[69] = "then";\r
-gaFtsStop[70] = "there";\r
-gaFtsStop[71] = "these";\r
-gaFtsStop[72] = "they";\r
-gaFtsStop[73] = "this";\r
-gaFtsStop[74] = "through";\r
-gaFtsStop[75] = "to";\r
-gaFtsStop[76] = "under";\r
-gaFtsStop[77] = "until";\r
-gaFtsStop[78] = "use";\r
-gaFtsStop[79] = "was";\r
-gaFtsStop[80] = "we";\r
-gaFtsStop[81] = "were";\r
-gaFtsStop[82] = "when";\r
-gaFtsStop[83] = "where";\r
-gaFtsStop[84] = "which";\r
-gaFtsStop[85] = "who";\r
-gaFtsStop[86] = "with";\r
-gaFtsStop[87] = "you";\r
-\r
-gaFtsStem[0] = "ed";\r
-gaFtsStem[1] = "es";\r
-gaFtsStem[2] = "er";\r
-gaFtsStem[3] = "e";\r
-gaFtsStem[4] = "s";\r
-gaFtsStem[5] = "ingly";\r
-gaFtsStem[6] = "ing";\r
-gaFtsStem[7] = "ly";\r
-\r
-\r
-// as javascript 1.3 support unicode instead of ISO-Latin-1\r
-// need to transfer come code back to ISO-Latin-1 for compare purpose\r
-// Note: Different Language(Code page) maybe need different array:\r
-var gaUToC=new Array();\r
-gaUToC[8364]=128;\r
-gaUToC[8218]=130;\r
-gaUToC[402]=131;\r
-gaUToC[8222]=132;\r
-gaUToC[8230]=133;\r
-gaUToC[8224]=134;\r
-gaUToC[8225]=135;\r
-gaUToC[710]=136;\r
-gaUToC[8240]=137;\r
-gaUToC[352]=138;\r
-gaUToC[8249]=139;\r
-gaUToC[338]=140;\r
-gaUToC[381]=142;\r
-gaUToC[8216]=145;\r
-gaUToC[8217]=146;\r
-gaUToC[8220]=147;\r
-gaUToC[8221]=148;\r
-gaUToC[8226]=149;\r
-gaUToC[8211]=150;\r
-gaUToC[8212]=151;\r
-gaUToC[732]=152;\r
-gaUToC[8482]=153;\r
-gaUToC[353]=154;\r
-gaUToC[8250]=155;\r
-gaUToC[339]=156;\r
-gaUToC[382]=158;\r
-gaUToC[376]=159;\r
-\r
-var gsBiggestChar="";\r
-function getBiggestChar()\r
-{\r
- if(gsBiggestChar.length==0)\r
- {\r
- if(garrSortChar.length<256)\r
- gsBiggestChar=String.fromCharCode(255);\r
- else\r
- {\r
- var nBiggest=0;\r
- var nBigChar=0;\r
- for(var i=0;i<=255;i++)\r
- {\r
- if(garrSortChar[i]>nBiggest)\r
- {\r
- nBiggest=garrSortChar[i];\r
- nBigChar=i;\r
- }\r
- }\r
- gsBiggestChar=String.fromCharCode(nBigChar);\r
- }\r
-\r
- } \r
- return gsBiggestChar;\r
-}\r
-\r
-function getCharCode(str,i)\r
-{\r
- var code=str.charCodeAt(i)\r
- if(code>256)\r
- {\r
- code=gaUToC[code];\r
- }\r
- return code;\r
-}\r
-\r
-function compare(strText1,strText2)\r
-{\r
- if(garrSortChar.length<256)\r
- {\r
- var strt1=strText1.toLowerCase();\r
- var strt2=strText2.toLowerCase();\r
- if(strt1<strt2) return -1;\r
- if(strt1>strt2) return 1;\r
- return 0;\r
- }\r
- else\r
- {\r
- for(var i=0;i<strText1.length&&i<strText2.length;i++)\r
- {\r
- if(garrSortChar[getCharCode(strText1,i)]<garrSortChar[getCharCode(strText2,i)]) return -1;\r
- if(garrSortChar[getCharCode(strText1,i)]>garrSortChar[getCharCode(strText2,i)]) return 1;\r
- }\r
- if(strText1.length<strText2.length) return -1;\r
- if(strText1.length>strText2.length) return 1;\r
- return 0;\r
- }\r
-}\r
-gbWhLang=true;
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002\r
-if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){\r
-\r
-HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)\r
-{\r
- switch (where){\r
- case 'beforeBegin':\r
- this.parentNode.insertBefore(parsedNode,this);\r
- break;\r
- case 'afterBegin':\r
- this.insertBefore(parsedNode,this.firstChild);\r
- break;\r
- case 'beforeEnd':\r
- this.appendChild(parsedNode);\r
- break;\r
- case 'afterEnd':\r
- if (this.nextSibling){\r
- this.parentNode.insertBefore(parsedNode,this.nextSibling);\r
- } else {\r
- this.parentNode.appendChild(parsedNode);\r
- }\r
- break;\r
- }\r
-}\r
-\r
-HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){\r
-\r
- var r = this.ownerDocument.createRange();\r
- r.setStartBefore(this);\r
- var parsedHTML = r.createContextualFragment(htmlStr);\r
- this.insertAdjacentElement(where,parsedHTML);\r
-}\r
-\r
-\r
-HTMLElement.prototype.insertAdjacentText = function(where,txtStr){\r
-\r
- var parsedText = document.createTextNode(txtStr);\r
- this.insertAdjacentElement(where,parsedText);\r
-}\r
-}\r
-\r
-function testScroll() {\r
- // Initialize scrollbar cache if necessary\r
- if (window._pageXOffset==null) {\r
- window._pageXOffset = window.pageXOffset;\r
- window._pageYOffset = window.pageYOffset;\r
- }\r
- // Expose Internet Explorer compatible object model\r
- document.scrollTop = window.pageYOffset;\r
- document.scrollLeft = window.pageXOffset;\r
- window.document.scrollHeight = document.height;\r
- window.document.scrollWidth = document.width;\r
- window.document.clientWidth = window.innerWidth;\r
- window.document.clientHeight = window.innerHeight;\r
-\r
- // If cache!=current values, call the onscroll event\r
- if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) \r
- window.onscroll();\r
- // Cache new values\r
- window._pageXOffset = window.pageXOffset;\r
- window._pageYOffset = window.pageYOffset;\r
- }\r
-\r
-// Create compatibility layer for Netscape\r
-if (window.gbNav6 && !window.gbNav7) {\r
- setInterval("testScroll()",50)\r
-}
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002\r
-var WH_MSG_RESIZEPANE =0x0100;\r
-var WH_MSG_SHOWPANE =0x0101;\r
-var WH_MSG_HIDEPANE =0x0102;\r
-var WH_MSG_SYNCTOC =0x0103;\r
-var WH_MSG_NEXT =0x0104;\r
-var WH_MSG_PREV =0x0105;\r
-var WH_MSG_NOSEARCHINPUT =0x0106;\r
-var WH_MSG_NOSYNC =0x0107;\r
-var WH_MSG_ENABLEWEBSEARCH =0x0108;\r
-\r
-var WH_MSG_ISPANEVISIBLE =0x0109;\r
-var WH_MSG_PANESTATUE =0x010a;\r
-\r
-var WH_MSG_SYNCINFO =0x010b;\r
-var WH_MSG_PANEINFO =0x010c;\r
-var WH_MSG_WEBSEARCH =0x010d;\r
-\r
-var WH_MSG_SEARCHINDEXKEY =0x0201;\r
-\r
-var WH_MSG_SEARCHFTSKEY =0x020a;\r
-\r
-var WH_MSG_PROJECTREADY =0x0301;\r
-var WH_MSG_GETPROJINFO =0x0302;\r
-\r
-var WH_MSG_SHOWTOC =0x0401;\r
-var WH_MSG_SHOWIDX =0x0402;\r
-var WH_MSG_SHOWFTS =0x0403;\r
-var WH_MSG_SHOWGLO =0x0404;\r
-\r
-var WH_MSG_SHOWGLODEF =0x0500;\r
-\r
-var WH_MSG_GETTOCPATHS =0x0600;\r
-var WH_MSG_GETAVIAVENUES =0x0601;\r
-var WH_MSG_GETCURRENTAVENUE =0x0602;\r
-var WH_MSG_GETPANEINFO =0x0603;\r
-var WH_MSG_AVENUEINFO =0x0604;\r
-\r
-var WH_MSG_GETSTARTFRAME =0x0701;\r
-var WH_MSG_GETDEFAULTTOPIC =0x0702;\r
-\r
-var WH_MSG_SEARCHTHIS =0x0801;\r
-var WH_MSG_GETSEARCHS =0x0802;\r
-\r
-var WH_MSG_ISINFRAMESET =0x0900;\r
-\r
-var WH_MSG_TOOLBARORDER =0x0a00;\r
-var WH_MSG_MINIBARORDER =0x0a01;\r
-var WH_MSG_ISSYNCSSUPPORT =0x0a02;\r
-var WH_MSG_ISSEARCHSUPPORT =0x0a03;\r
-var WH_MSG_GETPANETYPE =0x0a04;\r
-var WH_MSG_BACKUPSEARCH =0x0a05;\r
-var WH_MSG_GETPANES =0x0a06;\r
-var WH_MSG_INITSEARCHSTRING =0x0a07;\r
-var WH_MSG_RELOADNS6 =0x0a08;\r
-var WH_MSG_ISAVENUESUPPORT =0x0a09;\r
-\r
-var WH_MSG_GETCMD =0x0b00;\r
-var WH_MSG_GETPANE =0x0b01;\r
-var WH_MSG_GETDEFPANE =0x0b02;\r
-\r
-function whMessage(nMessageId,wSender,nVersion,oParam)\r
-{\r
- this.nMessageId=nMessageId;\r
- this.wSender=wSender;\r
- this.nVersion=nVersion;\r
- this.oParam=oParam;\r
-}\r
-var gbWhMsg=true;
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-function window_Onload()\r
-{\r
- if (window.gsTopic)\r
- frames["bsscright"].document.location = window.gsTopic;\r
-}\r
-window.onload=window_Onload;\r
-//-->\r
-</script>\r
-</head>\r
-\r
-<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="kernel/introduction.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.005\r
-var gaProj=new Array();\r
-var gnChecked=0;\r
-var gsProjName="";\r
-var gbReady=false;\r
-var goMan=null;\r
-var gbXML=false;\r
-var gsFirstPane="";\r
-var gServerEnabled=false;\r
-var gsPath="";\r
-var gbWhPHost=false;\r
-var goDiv = null;\r
-var gsHTML = "";\r
-\r
-if (navigator.currentNavPen)\r
- gsFirstPane = navigator.currentNavPen;\r
-\r
-\r
-function delayLoad()\r
-{\r
- if (goDiv&&gsHTML)\r
- {\r
- goDiv.innerHTML=gsHTML;\r
- goDiv=null;\r
- gsHTML="";\r
- }\r
-}\r
-\r
-function whCom(sName,sComFile)\r
-{\r
- this.msName=sName;\r
- this.msDivId=sName+"Div";\r
- this.msIFrameId=sName+"IFrame";\r
- this.msComFile=sComFile;\r
- this.mbloaded=false;\r
- this.mbShow=false;\r
- this.show=function(bShow)\r
- {\r
- if(this.mbShow!=bShow)\r
- {\r
- if(bShow&&!this.mbloaded)\r
- {\r
- this.load();\r
- }\r
-\r
- var oDiv=getElement(this.msDivId);\r
- if(oDiv)\r
- {\r
- if(gbIE55||(gbIE5&&gbMac))\r
- {\r
- var oIframe=getElement(this.msIFrameId);\r
- if(oIframe)\r
- {\r
- if(bShow)\r
- {\r
- oDiv.style.zIndex=3;\r
- if(oIframe!=null)\r
- {\r
- oIframe.style.zIndex=3;\r
- if (!gbIE55)\r
- oIframe.style.visibility="visible";\r
- }\r
- }\r
- else\r
- {\r
- oDiv.style.zIndex=2;\r
- if(oIframe!=null)\r
- {\r
- oIframe.style.zIndex=2;\r
- if (!gbIE55)\r
- oIframe.style.visibility="hidden";\r
- }\r
- }\r
- }\r
- }\r
- if (!gbIE55)\r
- oDiv.style.visibility=(bShow==true)?'visible':'hidden';\r
- this.mbShow=bShow;\r
- }\r
-\r
- }\r
- }\r
- this.load=function()\r
- {\r
- if(!this.mbloaded)\r
- {\r
- if(this.msComFile.length>0){\r
- var strFile= _getFullPath(getPath(), this.msComFile);\r
- var oDiv=getElement(this.msDivId);\r
- if(oDiv){\r
- if(gbIE4||gbOpera7){\r
- var nIFrameHeight=oDiv.style.pixelHeight;\r
- var nIFrameWidth=oDiv.style.pixelWidth;\r
- var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";\r
- if(gbMac){\r
- sHTML+=nIFrameWidth+"px;height:"+nIFrameHeight+"px;\"></IFRAME>";\r
- }else{\r
- sHTML+="100%; height:100%;\"></IFRAME>";\r
- }\r
- oDiv.innerHTML=sHTML;\r
- }else if(gbNav6){\r
- gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";\r
- goDiv = oDiv;\r
- setTimeout("delayLoad()", 100);\r
- }\r
- this.mbloaded=true;\r
- }\r
- }\r
- }\r
- }\r
- this.unload=function()\r
- {\r
- var oDiv=getElement(this.msDivId);\r
- if(oDiv)\r
- oDiv.innerHTML="";\r
- }\r
- this.getDivHTML=function()\r
- {\r
- var sHTML="";\r
- if(gbMac&&gbIE4)\r
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";\r
- else if(gbIE5)\r
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
- else if(gbIE4||gbWindows)\r
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
- else\r
- sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:"+parent.height+";visibility:hidden\">";\r
- sHTML+="</DIV>";\r
- return sHTML;\r
- }\r
-} \r
-\r
-function whComMan()\r
-{\r
- this.sName="";\r
- this.maCom=new Array();\r
- this.addCom=function(sName,sComFile)\r
- {\r
- var owhCom=new whCom(sName,sComFile);\r
- this.maCom[this.maCom.length]=owhCom;\r
- }\r
- this.init=function()\r
- {\r
- var sHTML="";\r
- for(var i=0;i<this.maCom.length;i++)\r
- {\r
- sHTML+=this.maCom[i].getDivHTML();\r
- }\r
- document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
-\r
- }\r
- this.showById=function(nId)\r
- {\r
- for(var s=0;s<this.maCom.length;s++)\r
- {\r
- if(s!==nId)\r
- this.maCom[s].show(false);\r
- }\r
- this.maCom[nId].show(true);\r
- }\r
- this.show=function(sName)\r
- {\r
- navigator.currentNavPen = sName;\r
- var bFound=false;\r
- for(var i=0;i<this.maCom.length;i++)\r
- {\r
- if(sName==this.maCom[i].msName)\r
- {\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- if(bFound)\r
- {\r
- this.showById(i);\r
- this.sName=sName;\r
- }\r
- }\r
- this.unload=function()\r
- {\r
- for(var i=0;i<this.maCom.length;i++)\r
- {\r
- this.maCom[i].unload();\r
- } \r
- }\r
- this.getCurrent=function()\r
- {\r
- return this.sName;\r
- }\r
-}\r
-\r
-function getPath()\r
-{\r
- if(gsPath=="")\r
- {\r
- gsPath=location.href;\r
- gsPath=_replaceSlash(gsPath);\r
- var nPosFile=gsPath.lastIndexOf("/");\r
- gsPath=gsPath.substring(0,nPosFile+1);\r
- }\r
- return gsPath;\r
-}\r
-\r
-goMan=new whComMan();\r
-function addPane(sName,sFileName)\r
-{\r
- var oParam=new Object();\r
- oParam.sName=sName;\r
- var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);\r
- if (SendMessage(oMsg))\r
- {\r
- if (oMsg.oParam.bEnable)\r
- goMan.addCom(sName,sFileName);\r
- }\r
- else\r
- goMan.addCom(sName,sFileName); \r
-}\r
-\r
-function setShowPane(sName, bForce)\r
-{\r
- if ((gsFirstPane == "") || bForce)\r
- {\r
- var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);\r
- if (SendMessage(oMsg))\r
- {\r
- if (oMsg.oParam)\r
- gsFirstPane = oMsg.oParam;\r
- else\r
- gsFirstPane=sName;\r
- }\r
- else\r
- gsFirstPane=sName;\r
- }\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
- var bHidePane=false;\r
- if (SendMessage(oMsg))\r
- {\r
- if(oMsg.oParam>0)\r
- {\r
- if(oMsg.oParam==1)\r
- gsFirstPane="toc";\r
- else if(oMsg.oParam==2)\r
- gsFirstPane="idx";\r
- else if(oMsg.oParam==3)\r
- gsFirstPane="fts";\r
- else if(oMsg.oParam==4)\r
- gsFirstPane="glo";\r
- }\r
- else if(oMsg.oParam==0)\r
- {\r
- bHidePane=true;\r
- }\r
- }\r
- goMan.init();\r
- if(gsProjName!="") \r
- loadData2(gsProjName); \r
- if (bHidePane)\r
- {\r
- gsFirstPane="";\r
- var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)\r
- SendMessage(oMsg1);\r
- }\r
- else\r
- {\r
- if(gsFirstPane!="")\r
- goMan.show(gsFirstPane);\r
- else\r
- goMan.showById(0);\r
- }\r
-}\r
-\r
-function setServerEnabled()\r
-{\r
- gServerEnabled = true;\r
-}\r
-\r
-function loadData2(strFile)\r
-{\r
- if(gbXML)\r
- loadDataXML(strFile);\r
- else\r
- loadData(strFile);\r
-}\r
-\r
-function addProject(bPreferXML,sXMLName,sHTMLName)\r
-{\r
- var bLoadXML=bPreferXML;\r
- if(!gbIE4&&!gbNav6&&!gbOpera7)\r
- return;\r
- if(gbIE4&&!gbIE5)\r
- bLoadXML=false;\r
- if (gbIE5&&!gbMac)\r
- bLoadXML=true;\r
- if(gbIE55||gbNav6)\r
- bLoadXML=true;\r
- if(gbOpera7)\r
- bLoadXML=false; \r
- if(bLoadXML)\r
- addProjectXML(sXMLName);\r
- else\r
- addProjectHTML(sHTMLName);\r
-}\r
-\r
-function addProjectHTML(sName)\r
-{\r
- gbXML=false;\r
- gsProjName=sName;\r
-}\r
-\r
-function addProjectXML(sName)\r
-{\r
- gbXML=true;\r
- gsProjName=sName;\r
-}\r
-\r
-function window_MyBunload()\r
-{\r
- goMan.unload();\r
- window_BUnload();\r
-}\r
-\r
-function putDataXML(xmlDoc,sdocPath)\r
-{\r
- if(xmlDoc!=null)\r
- {\r
- var projectNode=xmlDoc.getElementsByTagName("project")[0];\r
- if(projectNode)\r
- {\r
- var aRProj=new Array();\r
- aRProj[0]=new Object();\r
- aRProj[0].sPPath=_getPath(sdocPath);\r
- var sLangId=projectNode.getAttribute("langid");\r
- if(sLangId)\r
- {\r
- aRProj[0].sLangId=sLangId;\r
- }\r
- var sDPath=projectNode.getAttribute("datapath");\r
- if(sDPath)\r
- {\r
- if(sDPath.lastIndexOf("/")!=sDPath.length-1)\r
- sDPath+="/";\r
- aRProj[0].sDPath=sDPath;\r
- }\r
- else\r
- aRProj[0].sDPath="";\r
- aRProj[0].sToc=projectNode.getAttribute("toc");\r
- aRProj[0].sIdx=projectNode.getAttribute("index");\r
- aRProj[0].sFts=projectNode.getAttribute("fts");\r
- aRProj[0].sGlo=projectNode.getAttribute("glossary");\r
- var RmtProject=projectNode.getElementsByTagName("remote");\r
- var nCount=1;\r
- for (var i=0;i<RmtProject.length;i++)\r
- {\r
- var sURL=RmtProject[i].getAttribute("url");\r
- if(sURL)\r
- {\r
- if(sURL.lastIndexOf("/")!=sURL.length-1)\r
- sURL+="/";\r
- aRProj[nCount]=new Object();\r
- aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);\r
- }\r
- }\r
- putProjectInfo(aRProj);\r
- }\r
- else\r
- {\r
- // on Netscape 6.0 under some situation the xml file cannot be loaded.\r
- // so we use pure html instead.\r
- if (gnChecked == 0)\r
- setTimeout("redirectToList();",100);\r
- else\r
- {\r
- gnChecked++;\r
- setTimeout("checkRemoteProject();", 1);\r
- }\r
- }\r
- }\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
- gnChecked++;\r
- setTimeout("checkRemoteProject();", 1);\r
-}\r
-\r
-function redirectToList()\r
-{\r
- if(gbReDirectThis)\r
- document.location=gsNavReDirect;\r
- else\r
- parent.document.location=gsNavReDirect;\r
-}\r
-\r
-function putProjectInfo(aRProj)\r
-{\r
- if(gnChecked==0||isSamePath(gaProj[gnChecked].sPPath,aRProj[0].sPPath))\r
- {\r
- if(gnChecked!=0)\r
- {\r
- if(aRProj[0].sLangId!=gaProj[0].sLangId)\r
- alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");\r
- }\r
- gaProj[gnChecked]=aRProj[0];\r
- for(var i=1;i<aRProj.length;i++)\r
- {\r
- var bFound=false;\r
- for(var j=0;j<gaProj.length;j++)\r
- {\r
- if(isSamePath(gaProj[j].sPPath,aRProj[i].sPPath))\r
- {\r
- bFound=true;\r
- break;\r
- }\r
- }\r
- if(!bFound)\r
- {\r
- gaProj[gaProj.length]=aRProj[i];\r
- }\r
- }\r
- gnChecked++;\r
- setTimeout("checkRemoteProject();", 1);\r
- }\r
- else\r
- alert("Could not load correctly, please click Refresh.");\r
-}\r
-\r
-function isSamePath(sPath1,sPath2)\r
-{\r
- return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
-}\r
-\r
-function checkRemoteProject()\r
-{\r
- if(gaProj.length!=gnChecked)\r
- {\r
- setTimeout("cancelProj("+gnChecked+");",10000);\r
- loadData2(gaProj[gnChecked].sPPath+gsProjName);\r
- }\r
- else{\r
- var oMsg=new whMessage(WH_MSG_PROJECTREADY,this,1,null);\r
- gbReady=true;\r
- SendMessage(oMsg);\r
- }\r
-}\r
-\r
-function cancelProj(i)\r
-{\r
- if(i==gnChecked)\r
- {\r
- gnChecked++;\r
- setTimeout("checkRemoteProject();", 1);\r
- } \r
-}\r
-\r
-function window_resize()\r
-{\r
- for(var i=0;i<goMan.maCom.length;i++)\r
- {\r
- var oFrame=getElement(goMan.maCom[i].msIFrameId);\r
- if(oFrame)\r
- {\r
- oFrame.style.height=document.body.clientHeight;\r
- oFrame.style.width=document.body.clientWidth;\r
- }\r
- }\r
- window_resize2();\r
-}\r
-\r
-function window_resize2()\r
-{\r
- if(document.body)\r
- {\r
- if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
- {\r
- var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
- SendMessage(oMsg);\r
- }\r
- }\r
-}\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_GETPROJINFO);\r
- UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
- UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
- UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
- UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
- UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if(oMsg)\r
- {\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_GETPROJINFO)\r
- {\r
- if(gbReady)\r
- {\r
- var oProj=new Object();\r
- oProj.aProj=gaProj;\r
- oProj.bXML=gbXML;\r
- oMsg.oParam=oProj;\r
- }\r
- else\r
- return false;\r
- }\r
- else if(nMsgId==WH_MSG_SHOWTOC)\r
- {\r
- if(goMan)\r
- goMan.show("toc");\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWIDX)\r
- {\r
- if(goMan)\r
- goMan.show("idx");\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWFTS)\r
- {\r
- if(goMan)\r
- goMan.show("fts");\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if(nMsgId==WH_MSG_SHOWGLO)\r
- {\r
- if(goMan)\r
- goMan.show("glo");\r
- var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
- SendMessage(onMsg);\r
- }\r
- else if(nMsgId==WH_MSG_GETPANEINFO)\r
- {\r
- oMsg.oParam=goMan.getCurrent();\r
- return false;\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
- RegisterListener2(this,WH_MSG_GETPROJINFO);\r
- RegisterListener2(this,WH_MSG_SHOWTOC);\r
- RegisterListener2(this,WH_MSG_SHOWIDX);\r
- RegisterListener2(this,WH_MSG_SHOWFTS);\r
- RegisterListener2(this,WH_MSG_SHOWGLO);\r
- RegisterListener2(this,WH_MSG_GETPANEINFO);\r
-\r
- if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)\r
- {\r
- window.onresize=window_resize;\r
- }\r
- else if(gbIE4)\r
- {\r
- window.onresize=window_resize2;\r
- }\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_MyBunload;\r
- window.onunload=window_unload;\r
- gbWhPHost=true;\r
-}\r
-else\r
- document.location.reload();\r
-\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>project description</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whproj.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
- setLangId("1033");\r
- setDataPath("whdata");\r
- addToc("whtoc.htm");\r
-\r
- addFts("whfts.htm");\r
- addGlo("whglo.htm");\r
-\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.001\r
-var gaProj=new Array();\r
-\r
-gaProj[0]=new project("");\r
-\r
-function setLangId(sLangId)\r
-{\r
- gaProj[0].sLangId=sLangId;\r
-}\r
-\r
-function setDataPath(sPath)\r
-{\r
- if(sPath.length!=0)\r
- {\r
- if(sPath.lastIndexOf("/")!=sPath.length-1)\r
- sPath+="/";\r
- gaProj[0].sDPath=sPath; \r
- }\r
- else\r
- gaProj[0].sDPath="";\r
-}\r
-\r
-function addToc(sFile)\r
-{\r
- gaProj[0].sToc=sFile;\r
-}\r
-\r
-function addIdx(sFile)\r
-{\r
- gaProj[0].sIdx=sFile;\r
-}\r
-\r
-function addFts(sFile)\r
-{\r
- gaProj[0].sFts=sFile;\r
-}\r
-\r
-function addGlo(sFile)\r
-{\r
- gaProj[0].sGlo=sFile;\r
-}\r
-\r
-function addRemoteProject(sProjRelPath)\r
-{\r
- if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1)\r
- sProjRelPath+="/";\r
- gaProj[gaProj.length]=new project(sProjRelPath);\r
-}\r
-\r
-function project(sPPath)\r
-{\r
- this.sPPath=sPPath;\r
- this.sLangId="";\r
- this.sDPath="";\r
- this.sToc="";\r
- this.sIdx="";\r
- this.sFts="";\r
- this.sGlo="";\r
-}\r
-\r
-window.onload=window_OnLoad;\r
-\r
-function window_OnLoad()\r
-{\r
- gsName=document.location.href;\r
- gsName=_replaceSlash(gsName);\r
- var nPos=gsName.lastIndexOf("/");\r
- if(nPos!=-1)\r
- gaProj[0].sPPath=gsName.substring(0,nPos+1);\r
- else\r
- alert("Error in Loading navigation component. Please regenerate WebHelp.");\r
- patchPath(gaProj);\r
- if(parent&&parent!=this&& typeof(parent.putProjectInfo)=="function")\r
- {\r
- parent.putProjectInfo(gaProj);\r
- }\r
-}\r
-\r
-function patchPath(aProj)\r
-{\r
- for(var i=1;i<aProj.length;i++)\r
- {\r
- aProj[i].sPPath=_getFullPath(gaProj[0].sPPath,aProj[i].sPPath);\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-<?xml version='1.0' encoding='windows-1252' ?>\r
-<project langid="1033" datapath="whxdata" toc="whtoc.xml" fts="whfts.xml" glossary="whglo.xml" >\r
-</project>\r
+++ /dev/null
-// WebHelp 5.10.001\r
-var gbInited=false;\r
-var gWndStubPage=null;\r
-function getStubPage()\r
-{\r
- if(!gbInited)\r
- {\r
- gWndStubPage=getStubPage_inter(window);\r
- gbInited=true;\r
- }\r
- return gWndStubPage;\r
-}\r
-\r
-function getStubPage_inter(wCurrent)\r
-{\r
- if(null==wCurrent.parent||wCurrent.parent==wCurrent)\r
- return null;\r
-\r
- if(typeof(wCurrent.parent.whname)=="string"&&"wh_stub"==wCurrent.parent.whname)\r
- return wCurrent.parent;\r
- else\r
- if(wCurrent.parent.frames.length!=0&&wCurrent.parent!=wCurrent)\r
- return getStubPage_inter(wCurrent.parent);\r
- else\r
- return null;\r
-}\r
-\r
-function RegisterListener(framename,nMessageId)\r
-{\r
- var wSP=getStubPage();\r
- if(wSP&&wSP!=this)\r
- return wSP.RegisterListener(framename,nMessageId);\r
- else\r
- return false;\r
-}\r
-\r
-function RegisterListener2(oframe,nMessageId)\r
-{\r
- var wSP=getStubPage();\r
- if(wSP&&wSP!=this)\r
- return wSP.RegisterListener2(oframe,nMessageId);\r
- else\r
- return false;\r
-}\r
-\r
-function UnRegisterListener2(oframe,nMessageId)\r
-{\r
- var wSP=getStubPage();\r
- if(wSP&&wSP!=this&&wSP.UnRegisterListener2)\r
- return wSP.UnRegisterListener2(oframe,nMessageId);\r
- else\r
- return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
- var wSP=getStubPage();\r
- if(wSP&&wSP!=this&&wSP.SendMessage)\r
- return wSP.SendMessage(oMessage);\r
- else\r
- return false;\r
-}\r
-\r
-var gbWhProxy=true;\r
-\r
-var gbPreview=false;\r
-gbPreview=false; \r
-if (gbPreview)\r
- document.oncontextmenu=contextMenu;\r
-\r
-function contextMenu()\r
-{\r
- return false;\r
-}\r
+++ /dev/null
-<?xml version='1.0' encoding='windows-1252' ?>\r
-<resource>\r
-<item name="Prev" value="<<" />\r
-<item name="Hide" value="Hide" />\r
-<item name="SyncTocTooltip" value="Sync TOC" />\r
-<item name="InTopicSearchBtnText" value="Go" />\r
-<item name="FtsInputPrompt" value="Type in the word(s) to search for:" />\r
-<item name="Done" value="Done" />\r
-<item name="Logo/Author" value="Powered By" />\r
-<item name="MergeError1" value="The merged Help system" />\r
-<item name="JS_alert_cantLoadProject" value="Can't load project:" />\r
-<item name="Next" value=">>" />\r
-<item name="SyncToc" value="SyncToc" />\r
-<item name="MergeError2" value="is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system." />\r
-<item name="nls_body_instruction" value="Enter your question in the text box above, then click GO." />\r
-<item name="ToolBarSearchBtnText" value="Go" />\r
-<item name="SuggestViewNoFrameMessage" value="To view the Help system without frames click on this" />\r
-<item name="Hide_Navigation_Component" value="Hide Navigation Component" />\r
-<item name="FtsBtnText" value="Go" />\r
-<item name="TopicsFound" value="Topics Found" />\r
-<item name="LoadingContentsData" value="Loading, click here to cancel..." />\r
-<item name="Definition" value="Definition:" />\r
-<item name="CompletingContents" value="Completing Contents..." />\r
-<item name="Seperate" value="|" />\r
-<item name="GeneratedBy" value="Generated by" />\r
-<item name="PoweredBy" value="Powered by" />\r
-<item name="IndexAlphabetBookmarks" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" />\r
-<item name="Contents" value="Contents" />\r
-<item name="IndexSelectTopicLabel" value="Select a topic, then click Display" />\r
-<item name="Disabled Prev" value="<<" />\r
-<item name="Glossary" value="Glossary" />\r
-<item name="Search" value="Search" />\r
-<item name="CantSearch" value="Cannot search for that phrase." />\r
-<item name="LoadingIndex" value="Loading Index..." />\r
-<item name="LoadingData" value="Loading data, please wait..." />\r
-<item name="Show_Navigation_Component" value="Show Navigation Component" />\r
-<item name="Book" value="Book" />\r
-<item name="Disabled Next" value=">>" />\r
-<item name="nls_body_empty" value="Sorry, we were unable to find a good answer for your question." />\r
-<item name="nls_button_go_hint" value="Go Search" />\r
-<item name="Find" value="Find" />\r
-<item name="CantOpenURLorFile" value="Can't open URL or file" />\r
-<item name="Print" value="Print" />\r
-<item name="About" value="About" />\r
-<item name="Author" value="Author" />\r
-<item name="IndexSelectTopicTitle" value="Select a Topic" />\r
-<item name="Blank_topic_text" value="This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink." />\r
-<item name="BrowserLimitedMessage" value="Your browser does not support frames. We recommend that you update your browser to a version that supports frames." />\r
-<item name="LoadingTOCItem" value="Loading Table of Contents:" />\r
-<item name="Display" value="Display" />\r
-<item name="Cancel" value="Cancel" />\r
-<item name="IndexSelectTopicError" value="Please select a topic." />\r
-<item name="nls_edit_label" value="Type in your question:" />\r
-<item name="SearchLabel" value="Search" />\r
-<item name="RelateTopicListPrompt" value="Click a topic, then click Display." />\r
-<item name="NextTooltip" value="Next Topic" />\r
-<item name="JS_alert_colorlimitation" value="WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors." />\r
-<item name="TopicsNotFound" value="No Topics Found." />\r
-<item name="Show" value="Show" />\r
-<item name="PreTooltip" value="Previous Topic" />\r
-<item name="SearchPrompt" value="- Search -" />\r
-<item name="IndexBtnText" value="Go" />\r
-<item name="JS_alert_ProjectLoadingFail" value="Could not load correctly, please click Refresh." />\r
-<item name="LoadingContents" value="Loading contents, please wait..." />\r
-<item name="Term" value="Term:" />\r
-<item name="WebSearchButton" value="WebSearch" />\r
-<item name="Remote_Page" value="Remote Page" />\r
-<item name="WebSearch" value="WebSearch" />\r
-<item name="LoadingFTS" value="Reading Search Data..." />\r
-<item name="Index" value="Index" />\r
-<item name="JS_alert_ErrorInLoading" value="Error in Loading navigation component. Please regenerate WebHelp." />\r
-<item name="JS_alert_appletNotLoad" value="Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited." />\r
-<item name="IndexInputPrompt" value="Type in the keyword to find:" />\r
-<item name="Page" value="Page" />\r
-<item name="SuggestViewNoFrameMsg2" value="hyperlink." />\r
-<item name="nls_button_go_text" value="Go" />\r
-<item name="Searching" value="Searching..." />\r
-\r
- <item name="English" value="" />\r
- <item name="langorder" value="0,1,2,3,4,5,6,7,8,40,41,42,43,44,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,38,45,46,47,48,49,50,33,51,52,53,88,54,34,55,56,115,119,121,123,125,126,127,128,129,130,57,58,89,90,91,59,60,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,61,62,63,64,66,67,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,68,69,70,71,27,114,28,82,170,85,112,109,110,65,113,223,86,213,29,255,30,31,80,81,83,84,111,36,37,79,229,222,87,212,32,254,251,39,72,97,98,99,100,73,101,74,102,133,93,103,35,104,75,105,92,122,124,76,106,107,108,77,120,199,94,116,117,118,78,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,95,197,230,230,230,230,246,227,224,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,96,197,230,230,230,230,246,227,250," />\r
-\r
- <panes show="0">\r
- <toc />\r
- <fts />\r
- <glossary />\r
- </panes>\r
-\r
- <stopwords>\r
- <word name="a" />\r
- <word name="about" />\r
- <word name="after" />\r
- <word name="against" />\r
- <word name="all" />\r
- <word name="also" />\r
- <word name="among" />\r
- <word name="an" />\r
- <word name="and" />\r
- <word name="are" />\r
- <word name="as" />\r
- <word name="at" />\r
- <word name="be" />\r
- <word name="became" />\r
- <word name="because" />\r
- <word name="been" />\r
- <word name="between" />\r
- <word name="but" />\r
- <word name="by" />\r
- <word name="can" />\r
- <word name="come" />\r
- <word name="do" />\r
- <word name="during" />\r
- <word name="each" />\r
- <word name="early" />\r
- <word name="for" />\r
- <word name="form" />\r
- <word name="found" />\r
- <word name="from" />\r
- <word name="had" />\r
- <word name="has" />\r
- <word name="have" />\r
- <word name="he" />\r
- <word name="her" />\r
- <word name="his" />\r
- <word name="however" />\r
- <word name="in" />\r
- <word name="include" />\r
- <word name="into" />\r
- <word name="is" />\r
- <word name="it" />\r
- <word name="its" />\r
- <word name="late" />\r
- <word name="later" />\r
- <word name="made" />\r
- <word name="many" />\r
- <word name="may" />\r
- <word name="me" />\r
- <word name="med" />\r
- <word name="more" />\r
- <word name="most" />\r
- <word name="near" />\r
- <word name="no" />\r
- <word name="non" />\r
- <word name="not" />\r
- <word name="of" />\r
- <word name="on" />\r
- <word name="only" />\r
- <word name="or" />\r
- <word name="other" />\r
- <word name="over" />\r
- <word name="several" />\r
- <word name="she" />\r
- <word name="some" />\r
- <word name="such" />\r
- <word name="than" />\r
- <word name="that" />\r
- <word name="the" />\r
- <word name="their" />\r
- <word name="then" />\r
- <word name="there" />\r
- <word name="these" />\r
- <word name="they" />\r
- <word name="this" />\r
- <word name="through" />\r
- <word name="to" />\r
- <word name="under" />\r
- <word name="until" />\r
- <word name="use" />\r
- <word name="was" />\r
- <word name="we" />\r
- <word name="were" />\r
- <word name="when" />\r
- <word name="where" />\r
- <word name="which" />\r
- <word name="who" />\r
- <word name="with" />\r
- <word name="you" />\r
- </stopwords>\r
-\r
- <stems>\r
- <stem name="ed" />\r
- <stem name="es" />\r
- <stem name="er" />\r
- <stem name="e" />\r
- <stem name="s" />\r
- <stem name="ingly" />\r
- <stem name="ing" />\r
- <stem name="ly" />\r
- </stems>\r
-\r
- <paneskin>\r
- <background color="" img="" />\r
- <font name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- <toc>\r
- <background color="" img="" />\r
- <icons>\r
- <book open="whd_toc2.gif" close="whd_toc1.gif" />\r
- <item local="whd_toc3.gif" remote="whd_toc4.gif" />\r
- <newbook open="whd_toc2.gif" close="whd_toc1.gif" />\r
- <newitem local="whd_toc3.gif" remote="whd_toc4.gif" />\r
- </icons>\r
- <fonts>\r
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
- </fonts>\r
- <activebackgroundcolor attr="#cccccc" />\r
- <margin attr="0pt" />\r
- <indent attr="9pt" />\r
- </toc>\r
- <index>\r
- <form>\r
- <fonts>\r
- <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- </fonts>\r
- <button normal="" hover="" />\r
- <editwith value="28" />\r
- </form>\r
- <background color="" img="" />\r
- <fonts>\r
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
- <empty name="Arial" size="9pt" color="#666666" style="normal" weight="normal" decoration="none" />\r
- </fonts>\r
- <activebackgroundcolor attr="#cccccc" />\r
- <margin attr="0pt" />\r
- <indent attr="9pt" />\r
- </index>\r
- <fts>\r
- <form>\r
- <fonts>\r
- <title name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- </fonts>\r
- <button normal="" hover="" />\r
- <editwith value="28" />\r
- </form>\r
- <background color="" img="" />\r
- <fonts>\r
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
- <error name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- </fonts>\r
- <activebackgroundcolor attr="#cccccc" />\r
- <margin attr="0pt" />\r
- <indent attr="9pt" />\r
- </fts>\r
- <glossary>\r
- <background color="" img="" />\r
- <fonts>\r
- <normal name="Arial" size="9pt" color="#000000" style="normal" weight="normal" decoration="none" />\r
- <hover name="Arial" size="9pt" color="#007f00" style="normal" weight="normal" decoration="underline" />\r
- </fonts>\r
- <activebackgroundcolor attr="#cccccc" />\r
- <margin attr="0pt" />\r
- <indent attr="9pt" />\r
- </glossary>\r
- </paneskin>\r
-</resource>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Blank Page</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<body>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>GUI Module Reference Manual</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-</head>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whstub.js"></script><script language="javascript1.2" src="whstart.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var strDefaultTopic = "about:blank";\r
-var nWebhelpNavPaneMode = 1; //1: DHTML 2:Applet 3:PureHTML 4:Noframeset\r
-var bNoApplet = false;\r
-var strPaneDHTML = "whd_nvp10.htm"; //whd_nvp10.htm if tab enabled, whnframe.htm if tab disabled.\r
-var strPaneApplet = "whd_nvp20.htm";\r
-var strPaneList = "whgdata/whnvp30.htm";\r
-\r
-var strHTML = "";\r
-var strPane = "";\r
-var nViewFrameType = -1;\r
-\r
-function CMRServer()\r
-{\r
- this.m_cAgents = new Array;\r
-}\r
-var cMRServer = new CMRServer;\r
-\r
-//figure out which mode is the best\r
-if (!window.gAgent)\r
-{\r
- // low end browser, we don't even try to determine it.\r
- document.location = "whnjs.htm";\r
-}\r
-else\r
-{\r
- if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)\r
- document.location = "whnjs.htm";\r
- else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
- document.location = "whnjs.htm";\r
- else if (gbMac && gbIE4 && !gbIE5)\r
- document.location = "whnjs.htm";\r
- //figure out which mode is the best\r
- else \r
- {\r
- nViewFrameType=nWebhelpNavPaneMode;\r
- if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
- {\r
- var gbDHTML=(nWebhelpNavPaneMode==1);\r
- if (gbNav4) nViewFrameType = 2;\r
- if (gbNav4&&(gnVerMinor < 4.1)) nViewFrameType = 3;\r
- if (gbNav4&&(gnVerMinor == 4.6)) nViewFrameType = 3;\r
- if (gbIE4&&gbDHTML) nViewFrameType = 1;\r
- if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2) nViewFrameType = 3;\r
- if (gbNav6&&gbDHTML) nViewFrameType = 1;\r
- if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2) nViewFrameType = 3;\r
- if (gbMac) nViewFrameType = 3;\r
- if (gbOpera7&&nViewFrameType == 2) nViewFrameType = 3;\r
- if ((bNoApplet)&&(nViewFrameType == 2)) nViewFrameType = 3;\r
- }\r
- }\r
-}\r
-\r
-if (nViewFrameType!=-1)\r
-{\r
- var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
- //The colordepth of the 16 color on Windows is 1. \r
- if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
- {\r
- alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
- nViewFrameType = 3;\r
- }\r
-\r
- //figure out which one is navpane\r
- if (nViewFrameType == 1)\r
- strPane = strPaneDHTML;\r
- else if (nViewFrameType == 2)\r
- strPane = strPaneApplet;\r
- else \r
- strPane = strPaneList;\r
-\r
- var oParam = new Object();\r
- oParam.sTopic = "";\r
- var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, window, 1, oParam);\r
- if (SendMessage(oMsg) && oParam.sTopic != "")\r
- strDefaultTopic = oParam.sTopic;\r
-\r
-\r
- if (nViewFrameType == 1)\r
- {\r
- //DHTML (iframe or xml based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" frameborder=\"1\">";\r
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane + "\" scrolling=\"no\"></frame>";\r
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
- }\r
- else if (nViewFrameType == 2)\r
- {\r
- //applet (xml based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\" framespacing=\"0\" frameborder=\"0\" border=\"0\">";\r
- strHTML += "<frame name=\"bsscleft\" title=\"navigation frame\" src=\"" + strPane+ "\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\"></frame>";\r
- strHTML += "<frame name=\"bsscright\" title=\"topic frame\" src=\"" + strDefaultTopic + "\" scrolling=\"auto\"></frame></frameset>";\r
- }\r
- else if (nViewFrameType == 3)\r
- {\r
- //generic html (pure html based)\r
- strHTML += "<frameset id=\"whPfset\" cols=\"260,*\">";\r
- strHTML += "<frame title=\"navigation frame\" src=\"" + strPane + "\" name=\"bsscleft\" scrolling=\"no\"></frame>";\r
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" scrolling=\"auto\"></frame>";\r
- strHTML += "</frameset>";\r
- } \r
- else if (nViewFrameType == 4)\r
- {\r
- //no navipane at all\r
- strHTML += "<frameset id=\"whPfset\" border=\"0\" cols=\"100%,*\">";\r
- strHTML += "<frame title=\"topic frame\" src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";\r
- strHTML += "</frameset>";\r
- }\r
-\r
- document.write(strHTML);\r
-\r
- RegisterListener2(window, WH_MSG_SHOWPANE);\r
- RegisterListener2(window, WH_MSG_HIDEPANE);\r
- RegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
- window.onunload = window_unload;\r
-}\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(window, WH_MSG_SHOWPANE);\r
- UnRegisterListener2(window, WH_MSG_HIDEPANE);\r
- UnRegisterListener2(window, WH_MSG_ISPANEVISIBLE);\r
-}\r
-\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId = oMsg.nMessageId;\r
- if (nMsgId == WH_MSG_SHOWPANE)\r
- {\r
- getElement("whPfset").cols = "260,*";\r
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_GETPANEINFO, this, 1, "");\r
- if (SendMessage(onMsg))\r
- {\r
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, onMsg.oParam);\r
- SendMessage(onMsg);\r
- }\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_HIDEPANE)\r
- {\r
- getElement("whPfset").cols = "0,*";\r
- var onMsg = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");\r
- SendMessage(onMsg);\r
- onMsg = new whMessage(WH_MSG_PANEINFO, this, 1, "");\r
- SendMessage(onMsg);\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_ISPANEVISIBLE)\r
- {\r
- var n = parseInt(getElement("whPfset").cols);\r
- if (n > 0)\r
- {\r
- oMsg.oParam.bVisible = true;\r
- }\r
- return false;\r
- }\r
- return true;\r
-}\r
-//-->\r
-</script>\r
-<body>\r
-<noscript>\r
- <p> It seems javascript is disabled in your browser, please enable it and reload again, or click <a href="whnjs.htm">here</a> to view without javascript</p>\r
-</noscript>\r
-</body>\r
-</html>\r
+++ /dev/null
-<html>\r
-<head>\r
-<title>WebHelp 5.50 </title>\r
-<meta name="description" content="output from robohelp">\r
-<meta name="keywords" content="robohelp,webhelp,webhelp enterprise,roboinfo">\r
-</head>\r
-<body>\r
-<h1> WebHelp 5.50 System Info </h1>\r
-<table>\r
-<tr><td> Start Page </td><td>index.htm</td></tr>\r
-<tr><td> Skin Name </td><td></td></tr>\r
-<tr><td> Generating Time </td><td>12:57 01/22/2007</td></tr>\r
-<tr><td> Language ID </td><td>1033</td></tr>\r
-<tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>\r
-<tr><td> Compile Build Version </td><td>13.10.801</td></tr>\r
-<tr><td> Product Name </td><td>WebHelp 5.50</td></tr>\r
-<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>\r
-<table>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Select a Topic </title>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript">\r
-<!--\r
-var gsBgColor = "#c0c0c0";\r
-var gsBgImage = "";\r
-var gsListBgColor = "white";\r
-var gsListBgImage = "";\r
-var gsMargin="0pt";\r
-var gsIndent="0pt";\r
-var gSelectedItem = -1;\r
-\r
-\r
-var goFont=null;\r
-var goHoverFont=null;\r
-var goTableFont=null;\r
-var gsABgColor="#cccccc";\r
-\r
-function setListBackground(sBgImage)\r
-{\r
- if (sBgImage != null && sBgImage.length > 0)\r
- gsListBgImage = sBgImage;\r
-}\r
-\r
-function setListBackgroundcolor(sBgColor)\r
-{\r
- if (sBgColor != null && sBgColor.length > 0)\r
- gsListBgColor = sBgColor;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
- if (sBgImage != null && sBgImage.length > 0)\r
- gsBgImage = sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- if (sBgColor != null && sBgColor.length > 0)\r
- gsBgColor = sBgColor;\r
-}\r
-\r
-function setActiveBgColor(sBgColor)\r
-{\r
- gsABgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if (sType == "Normal")\r
- goFont=vFont;\r
- if (sType == "Hover")\r
- goHoverFont=vFont;\r
- else if (sType == "Table")\r
- goTableFont=vFont;\r
-}\r
-\r
-function fnOnload()\r
-{\r
- if( window.dialogArguments != null )\r
- fnLoadOptions( window.dialogArguments );\r
- var items = getElementsByTag(document, "a");\r
- if (items.length > 0)\r
- items[0].focus();\r
-}\r
-\r
-var gaOpts = new Array();\r
-\r
-function selectOption(index)\r
-{\r
- gSelectedItem = index;\r
-}\r
-\r
-function displayOption(index)\r
-{\r
- if (index < gaOpts.length)\r
- {\r
- returnValue = new Object();\r
- returnValue.m_url = gaOpts[index];\r
- }\r
- else\r
- returnValue = null;\r
-\r
- window.close();\r
-}\r
-\r
-function fnLoadOptions( cList )\r
-{\r
- var sHTML = "<dl>";\r
- for( var i=0;i <cList.length; i++)\r
- {\r
- sHTML += "<dt><nobr><a href=\"javascript:void(0);\" onclick=\"return false;\" onfocus=\"selectOption(";\r
- sHTML += gaOpts.length + ");return false;\" ondblclick=\"displayOption(" + gaOpts.length;\r
- sHTML += ");return false;\">"+ _textToHtml(cList[i].m_sName) + "</a></nobr></dt>";\r
- gaOpts[gaOpts.length] = cList[i].m_sURL;\r
- }\r
- sHTML += "</dl>";\r
- var oDivCon=getElement("divlist");\r
- if(oDivCon)\r
- oDivCon.innerHTML=sHTML;\r
- return true;\r
-}\r
-\r
-function fnOK()\r
-{\r
- displayOption(gSelectedItem);\r
-}\r
-\r
-function fnCancel()\r
-{\r
- returnValue = null; window.close();\r
-}\r
-\r
-function fnOnKeypress()\r
-{\r
- switch( event.keyCode )\r
- {\r
- case 13: // enter key\r
- fnOK();\r
- break;\r
- case 27: // escape key\r
- fnCancel();\r
- break;\r
- }\r
-}\r
-\r
-function writeStyle(bMiniBar)\r
-{\r
- var sStyle="";\r
- sStyle+="<style type='text/css'>\n";\r
- sStyle+="<!--\n";\r
- sStyle+="body.clsbody\n";\r
- sStyle+="{\n";\r
- sStyle+="margin: 4px;\n";\r
- sStyle+=getFontStyle(goTableFont);\r
- sStyle+="background-attachment: fixed;\n";\r
- sStyle+="};\n";\r
- sStyle+="P.clsNDXTD\n";\r
- sStyle+="{\n";\r
- sStyle+="margin:0;\n";\r
- sStyle+=getFontStyle(goTableFont);\r
- sStyle+="};\n";\r
- sStyle+="div.clslist\n";\r
- sStyle+="{\n";\r
- if (gsListBgImage)\r
- sStyle+="background-image:url("+gsListBgImage+");\n";\r
- else if (gsListBgColor)\r
- sStyle+="background-color:"+gsListBgColor+";\n";\r
- sStyle+=getFontStyle(goFont);\r
- sStyle+="};\n";\r
- sStyle+="BUTTON.clsNDXButton\n";\r
- sStyle+="{\n";\r
- sStyle+=getFontStyle(goTableFont);\r
- sStyle+="background-color: transparent;\n";\r
- sStyle+="};\n";\r
- sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
- sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
- sStyle+="</style>\n";\r
- document.write(sStyle);\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(document.body)\r
- {\r
- if(gsBgImage&&gsBgImage.length>0)\r
- {\r
- document.body.background=gsBgImage;\r
- }\r
- if(gsBgColor&&gsBgColor.length>0)\r
- {\r
- document.body.bgColor=gsBgColor;\r
- }\r
- }\r
- fnOnload();\r
- window_onResize();\r
-}\r
-\r
-function window_onResize()\r
-{\r
- var oDiv = getElement("divlist");\r
- var oTitle = getElement("p_title");\r
- var oButton = getElement("tb_button");\r
- if (oDiv && oTitle && oButton)\r
- {\r
- oDiv.style.height = document.body.offsetHeight - oTitle.offsetHeight - oButton.offsetHeight - 8;\r
- }\r
-}\r
-goTableFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
-goHoverFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
-\r
-\r
-\r
-\r
-setFont("Table", "Arial","9pt","#000000","normal","normal","none");\r
-\r
-\r
-setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
-setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
-setActiveBgColor("#cccccc");\r
-\r
-window.onload=window_OnLoad;\r
-window.onresize = window_onResize;\r
-writeStyle();\r
-//-->\r
-</script>\r
-</head>\r
-\r
-<body class="clsbody" scroll="no" onkeypress="fnOnKeypress()">\r
-<p id="p_title" class="clsNDXTD"><nobr>Select a topic, then click Display</nobr></p>\r
-<div id="divlist" class="clslist" style="margin:2px;position: relative;overflow:auto;width:100%;border-style:inset;border-width:2">\r
-</div>\r
-<table id="tb_button" width="100%">\r
- <tr>\r
- <td width="100%" align="center"><button class="clsNDXButton" name="btnOK" onclick="fnOK()">Display</button>   <button class="clsNDXButton" name="btnCancel" onclick="fnCancel()">Cancel</button></td>\r
- </tr>\r
-</table>\r
-\r
-</body>\r
-\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2">\r
-<!--\r
-var gsTopic="";\r
-\r
-if (location.hash.length > 1)\r
-{\r
- var nPos = location.hash.indexOf(">>");\r
- if (nPos>1)\r
- {\r
- gsTopic = location.hash.substring(1, nPos);\r
- parseParam(location.hash.substring(nPos+2));\r
- }\r
- else\r
- gsTopic = location.hash.substring(1);\r
-}\r
-\r
-\r
- var strHtml="";\r
- strHtml+="<frameset rows=\'100%,*\'>";\r
- strHtml+="<frame name=\'topicwindow\' src=\'" + gsTopic +"\'></frame>";\r
- strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
- strHtml+="</frameset>";\r
- document.write(strHtml);\r
-\r
-function parseParam(sParam)\r
-{\r
- if (sParam)\r
- {\r
- var nBPos=0;\r
- do \r
- {\r
- var nPos=sParam.indexOf(">>", nBPos);\r
- if (nPos!=-1)\r
- {\r
- if (nPos>0)\r
- {\r
- var sPart=sParam.substring(nBPos, nPos);\r
- parsePart(sPart);\r
- }\r
- nBPos = nPos + 2;\r
- }\r
- else\r
- {\r
- var sPart=sParam.substring(nBPos);\r
- parsePart(sPart);\r
- break;\r
- }\r
- } while(nBPos < sParam.length);\r
- } \r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
- if(sPart.toLowerCase().indexOf("cap=")==0)\r
- {\r
- document.title=_browserStringToText(sPart.substring(4));\r
- }\r
-}\r
-//-->\r
-</script>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.003\r
-RegisterListener2(this, WH_MSG_GETSTARTFRAME);\r
-RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC);\r
-RegisterListener2(this, WH_MSG_MINIBARORDER);\r
-RegisterListener2(this, WH_MSG_TOOLBARORDER);\r
-RegisterListener2(this, WH_MSG_ISSEARCHSUPPORT);\r
-RegisterListener2(this, WH_MSG_ISSYNCSSUPPORT);\r
-RegisterListener2(this, WH_MSG_ISAVENUESUPPORT);\r
-RegisterListener2(this, WH_MSG_GETPANETYPE);\r
-RegisterListener2(this, WH_MSG_GETPANES);\r
-RegisterListener2(this, WH_MSG_RELOADNS6);\r
-RegisterListener2(this, WH_MSG_GETCMD);\r
-RegisterListener2(this, WH_MSG_GETPANE);\r
-RegisterListener2(this, WH_MSG_GETDEFPANE);\r
-\r
-if (gbNav6)\r
-{\r
- var gnReload=0;\r
- setTimeout("delayReload();",5000);\r
-}\r
-\r
-function delayReload()\r
-{\r
- if (!(this.cMRServer && cMRServer.m_strVersion))\r
- {\r
- if(gnReload!=2)\r
- {\r
- if(nViewFrameType&&nViewFrameType==1)\r
- document.location=document.location;\r
- }\r
- }\r
-}\r
-\r
-var gsToolbarOrder = "";\r
-var gsMinibarOrder = "";\r
-\r
-var gsTopic = "kernel/introduction.htm";\r
-var PANE_OPT_SEARCH = 1;\r
-var PANE_OPT_BROWSESEQ = 2;\r
-var gnOpts=-1;\r
-var gnCmd=-1;\r
-var gnPans=2;\r
-var gsBtns="invalid";\r
-var gsDefaultBtn="invalid";\r
-var gbHasTitle=false;\r
-\r
-if (location.hash.length > 1)\r
-{\r
- var sParam = location.hash;\r
- if (sParam.indexOf("#<") == 0)\r
- {\r
- document.location = "whcsh_home.htm#" + sParam.substring(2);\r
- }\r
- else if (sParam.indexOf("#>>") == 0)\r
- {\r
- parseParam(sParam.substring(3));\r
- sParam = "#" + gsTopic + sParam.substring(1);\r
- }\r
- else\r
- {\r
- var nPos = sParam.indexOf(">>");\r
- if (nPos>1)\r
- {\r
- gsTopic = sParam.substring(1, nPos);\r
- parseParam(sParam.substring(nPos+2));\r
- }\r
- else\r
- gsTopic = sParam.substring(1);\r
- }\r
- if (gnPans == 1 && gsTopic)\r
- {\r
- var strURL=location.href;\r
- if (location.hash)\r
- {\r
- var nPos=location.href.indexOf(location.hash);\r
- strURL=strURL.substring(0, nPos);\r
- }\r
- if (gbHasTitle)\r
- document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam;\r
- else\r
- document.location=_getPath(strURL)+ gsTopic;\r
- }\r
-}\r
-\r
-function parseParam(sParam)\r
-{\r
- if (sParam)\r
- {\r
- var nBPos=0;\r
- do \r
- {\r
- var nPos=sParam.indexOf(">>", nBPos);\r
- if (nPos!=-1)\r
- {\r
- if (nPos>0)\r
- {\r
- var sPart=sParam.substring(nBPos, nPos);\r
- parsePart(sPart);\r
- }\r
- nBPos = nPos + 2;\r
- }\r
- else\r
- {\r
- var sPart=sParam.substring(nBPos);\r
- parsePart(sPart);\r
- break;\r
- }\r
- } while(nBPos < sParam.length);\r
- } \r
-}\r
-\r
-function parsePart(sPart)\r
-{\r
- if(sPart.toLowerCase().indexOf("cmd=")==0)\r
- {\r
- gnCmd=parseInt(sPart.substring(4));\r
- }\r
- else if(sPart.toLowerCase().indexOf("cap=")==0)\r
- {\r
- document.title=_browserStringToText(sPart.substring(4));\r
- gbHasTitle=true;\r
- }\r
- else if(sPart.toLowerCase().indexOf("pan=")==0)\r
- {\r
- gnPans=parseInt(sPart.substring(4));\r
- }\r
- else if(sPart.toLowerCase().indexOf("pot=")==0)\r
- {\r
- gnOpts=parseInt(sPart.substring(4));\r
- }\r
- else if(sPart.toLowerCase().indexOf("pbs=")==0)\r
- {\r
- var sRawBtns = sPart.substring(4);\r
- var aBtns = sRawBtns.split("|");\r
- for (var i=0;i<aBtns.length;i++)\r
- {\r
- aBtns[i] = transferAgentNameToPaneName(aBtns[i]);\r
- }\r
- gsRawBtns = aBtns.join("|");\r
- }\r
- else if(sPart.toLowerCase().indexOf("pdb=")==0)\r
- {\r
- gsDefaultBtn=transferAgentNameToPaneName(sPart.substring(4));\r
- }\r
-}\r
-\r
-function setToolbarOrder(sOrder)\r
-{\r
- gsToolbarOrder = sOrder;\r
-}\r
-\r
-function setMinibarOrder(sOrder)\r
-{\r
- gsMinibarOrder = sOrder;\r
-}\r
-\r
-function onSendMessageX(oMsg)\r
-{\r
- var nMsgId = oMsg.nMessageId;\r
- if (nMsgId == WH_MSG_GETSTARTFRAME)\r
- {\r
- oMsg.oParam.oFrame = this;\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_GETDEFAULTTOPIC)\r
- {\r
- if (this.cMRServer && cMRServer.m_strVersion)\r
- {\r
- if (cMRServer.m_strURLTopic);\r
- {\r
- oMsg.oParam.sTopic = cMRServer.m_strURLTopic;\r
- return false;\r
- }\r
-\r
- }\r
- oMsg.oParam.sTopic = gsTopic;\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_TOOLBARORDER)\r
- {\r
- var oMsg1 = new whMessage(WH_MSG_GETPANES, this, 1, null);\r
- if (SendMessage(oMsg1))\r
- {\r
- if (oMsg1.oParam)\r
- {\r
- if (this.cMRServer && cMRServer.m_strVersion)\r
- {\r
- var aToolbarOrder=cMRServer.m_strAgentList.split(";");\r
- var i=0;\r
- for (i=0;i<aToolbarOrder.length;i++)\r
- aToolbarOrder[i]=transferANToPN2(aToolbarOrder[i]);\r
- aToolbarOrder[aToolbarOrder.length] = "blankblock";\r
- if (cMRServer.m_bShowSearchInput)\r
- {\r
- aToolbarOrder[aToolbarOrder.length] = "searchform";\r
- }\r
- aToolbarOrder[aToolbarOrder.length] = "banner";\r
- var aToolbarOrderNew = new Array();\r
- for (i=0;i<aToolbarOrder.length;i++)\r
- {\r
- if (isAPane(aToolbarOrder[i]))\r
- {\r
- if (oMsg1.oParam.aPanes && oMsg1.oParam.aPanes.length)\r
- {\r
- for (var j=0;j<oMsg1.oParam.aPanes.length;j++)\r
- {\r
- if (aToolbarOrder[i] == oMsg1.oParam.aPanes[j].sPaneName)\r
- {\r
- aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
- }\r
- oMsg.oParam = aToolbarOrderNew.join("|");\r
- return false;\r
- }\r
- }\r
- }\r
- var sParam="";\r
- if (gsBtns!="invalid")\r
- sParam=gsBtns+"|blankblock|banner";\r
- else\r
- sParam = gsToolbarOrder;\r
-\r
- if (gnOpts!=-1)\r
- {\r
- var nPosForm=sParam.indexOf("|searchform|");\r
- if (gnOpts&PANE_OPT_SEARCH)\r
- {\r
- if (nPosForm == -1 && sParam.indexOf("|fts|") != -1)\r
- {\r
- var nPos=sParam.indexOf("banner");\r
- if (nPos!=-1)\r
- {\r
- sParam=sParam.substring(0, nPos) + "searchform|" + sParam.substring(nPos);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- if (nPosForm!=-1)\r
- {\r
- sParam=sParam.substring(0,nPosForm) + sParam.substring(nPosForm+11);\r
- }\r
- }\r
- }\r
- oMsg.oParam=sParam;\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_MINIBARORDER)\r
- {\r
- var sMinParam=gsMinibarOrder;\r
- if (gnOpts!=-1)\r
- {\r
- var nPosBro=gsMinibarOrder.indexOf("avprev|avnext");\r
- if (gnOpts&PANE_OPT_BROWSESEQ)\r
- {\r
- if (nPosBro==-1)\r
- {\r
- sMinParam ="avprev|avnext|" + gsMinibarOrder;\r
- }\r
- }\r
- else\r
- {\r
- if (nPosBro!=-1)\r
- {\r
- if (nPosBro!=0)\r
- sMinParam=gsMinibarOrder.substring(0, nPosBro) + gsMinibarOrder.substring(nPosBro+14);\r
- else\r
- sMinParam=gsMinibarOrder.substring(14);\r
- }\r
- }\r
- }\r
- oMsg.oParam = sMinParam;\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_ISSYNCSSUPPORT)\r
- {\r
- if (this.cMRServer && cMRServer.m_strVersion)\r
- {\r
- if (cMRServer.m_bShowSync)\r
- oMsg.oParam=true;\r
- else\r
- oMsg.oParam=false;\r
- return false;\r
- }\r
- else\r
- {\r
- if(typeof(nViewFrameType)!="undefined")\r
- {\r
- oMsg.oParam= (nViewFrameType < 3);\r
- return false;\r
- }\r
- }\r
- }\r
- else if (nMsgId == WH_MSG_ISAVENUESUPPORT)\r
- {\r
- if (this.cMRServer && cMRServer.m_strVersion)\r
- {\r
- if (cMRServer.m_bShowBrowseSequences)\r
- oMsg.oParam=true;\r
- else\r
- oMsg.oParam=false;\r
- }\r
- else\r
- {\r
- oMsg.oParam=true;\r
- }\r
- return false;\r
- }\r
- else if (nMsgId == WH_MSG_ISSEARCHSUPPORT)\r
- {\r
- if(typeof(nViewFrameType)!="undefined")\r
- {\r
- oMsg.oParam= (nViewFrameType < 3);\r
- return false;\r
- }\r
- }\r
- else if (nMsgId == WH_MSG_GETPANETYPE)\r
- {\r
- if(typeof(nViewFrameType)!="undefined")\r
- {\r
- var oPaneInfo = new Object();\r
- oPaneInfo.nType = nViewFrameType;\r
- oPaneInfo.sPaneURL = strPane;\r
- oMsg.oParam = oPaneInfo;\r
- return false;\r
- }\r
- }\r
- else if (nMsgId == WH_MSG_GETPANES)\r
- {\r
- if (this.cMRServer && cMRServer.m_strVersion)\r
- {\r
- var oPanes = new Object();\r
- var aAgentNames = null;\r
- if (cMRServer.m_strDefAgent)\r
- oPanes.sDefault = transferAgentNameToPaneName(cMRServer.m_strDefAgent);\r
-\r
- aPanes = new Array();\r
- for(var i=0; i< cMRServer.m_cAgents.length; i++)\r
- {\r
- var nCur = aPanes.length;\r
- aPanes[nCur] = new Object();\r
- aPanes[nCur].sPaneName = transferAgentNameToPaneName(cMRServer.m_cAgents[i].m_strID);\r
- aPanes[nCur].sPaneURL = cMRServer.m_cAgents[i].m_strURL;\r
- }\r
- oPanes.aPanes = aPanes;\r
- oMsg.oParam = oPanes;\r
- return false;\r
- }\r
- else\r
- {\r
- oMsg.oParam = null;\r
- return false;\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_RELOADNS6)\r
- {\r
- if(gbNav6)\r
- gnReload++;\r
- return false;\r
- }\r
- else if(nMsgId==WH_MSG_GETCMD)\r
- {\r
- oMsg.oParam=gnCmd;\r
- return false;\r
- }\r
- else if(nMsgId==WH_MSG_GETPANE)\r
- {\r
- if (gsBtns!="invalid" && oMsg.oParam.sName)\r
- {\r
- if(gsBtns.indexOf(oMsg.oParam.sName) != -1)\r
- oMsg.oParam.bEnable=true;\r
- else\r
- oMsg.oParam.bEnable=false;\r
- }\r
- else\r
- oMsg.oParam.bEnable=true;\r
- return false;\r
- }\r
- else if(nMsgId==WH_MSG_GETDEFPANE)\r
- {\r
- if (gsDefaultBtn!="invalid")\r
- {\r
- oMsg.oParam=gsDefaultBtn;\r
- }\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-function transferANToPN2(sAN)\r
-{\r
- if (sAN =="toc")\r
- return "toc";\r
- else if (sAN =="ndx")\r
- return "idx";\r
- else if (sAN =="nls")\r
- return "fts";\r
- else if (sAN =="gls")\r
- return "glo";\r
- else if (sAN =="WebSearch")\r
- return "websearch";\r
- else if (sAN.indexOf("custom_")==0);\r
- return "custom" + sAN.substring(7);\r
- return sAN;\r
-}\r
-\r
-function transferAgentNameToPaneName(sAgentName)\r
-{\r
- if (sAgentName =="toc")\r
- return "toc";\r
- else if (sAgentName =="ndx")\r
- return "idx";\r
- else if (sAgentName =="nls")\r
- return "fts";\r
- else if (sAgentName =="gls")\r
- return "glo";\r
- return "";\r
-}\r
-\r
-function isAPane(sPaneName)\r
-{\r
- if (sPaneName == "toc" || sPaneName == "idx" || sPaneName == "fts" || sPaneName == "glo")\r
- return true;\r
- else\r
- return false;\r
-}
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.002\r
-window.whname="wh_stub";\r
-function getframehandle(frames,framename)\r
-{\r
- var frame=null;\r
- if(null==frames) return null;\r
- for(var i=0;i<frames.length;i++)\r
- {\r
- if(typeof(frames[i].name)!="unknown")\r
- {\r
- if(frames[i].name==framename)\r
- return frames[i];\r
- }\r
- if(frames[i].frames.length>0)\r
- {\r
- frame=getframehandle(frames[i].frames,framename);\r
- if(null!=frame)\r
- return frame;\r
- }\r
- }\r
- return frame;\r
-}\r
-\r
-function AddToArray(arr,obj)\r
-{\r
- var bFound=false;\r
- for(var i=0;i<arr.length;i++){\r
- if(arr[i]==obj){\r
- bFound=true;\r
- break;\r
- }\r
- else if(arr[i]==null){\r
- break;\r
- }\r
- }\r
- if(!bFound) arr[i]=obj;\r
-}\r
-\r
-var gArrayRegistedMessage=new Array();\r
-var gArrayCompoentsArray=new Array();\r
-\r
-function GetComponentsArray(nMessageId)\r
-{\r
- var len=gArrayRegistedMessage.length;\r
- for(var i=0;i<len;i++)\r
- {\r
- if(gArrayRegistedMessage[i]==nMessageId){\r
- if(gArrayCompoentsArray.length>i)\r
- return gArrayCompoentsArray[i];\r
- else\r
- return null;\r
- }\r
- }\r
- return null;\r
-}\r
-\r
-function CreateComponentsArray(nMessageId)\r
-{\r
- var len=gArrayRegistedMessage.length;\r
- gArrayRegistedMessage[len]=nMessageId;\r
- gArrayCompoentsArray[len]=new Array();\r
- return gArrayCompoentsArray[len];\r
-}\r
-\r
-function listener(sName,oWindow)\r
-{\r
- this.sName=sName;\r
- this.oWindow=oWindow;\r
-}\r
-\r
-function RegisterListener(windowName,nMessageId)\r
-{\r
- var arrayComponents=GetComponentsArray(nMessageId);\r
- if(arrayComponents==null)\r
- arrayComponents=CreateComponentsArray(nMessageId);\r
- \r
- if(arrayComponents!=null)\r
- {\r
- for (var i=0;i<arrayComponents.length;i++)\r
- {\r
- if (arrayComponents[i].sName == windowName)\r
- return false;\r
- }\r
- var oListener=new listener(windowName,null);\r
- AddToArray(arrayComponents,oListener);\r
- return true;\r
- }\r
- else\r
- return false;\r
-}\r
-\r
-function RegisterListener2(oWindow,nMessageId)\r
-{\r
- var arrayComponents=GetComponentsArray(nMessageId);\r
- if(arrayComponents==null)\r
- arrayComponents=CreateComponentsArray(nMessageId);\r
- \r
- if(arrayComponents!=null)\r
- {\r
- var oListener=new listener("",oWindow);\r
- AddToArray(arrayComponents,oListener);\r
- return true;\r
- }\r
- else\r
- return false;\r
-}\r
-\r
-function UnRegisterListener2(oWindow,nMessageId)\r
-{\r
- var arrayComponents=GetComponentsArray(nMessageId);\r
- if(arrayComponents!=null)\r
- {\r
- for(var i=0;i<arrayComponents.length;i++)\r
- {\r
- if(arrayComponents[i].oWindow==oWindow)\r
- {\r
- removeItemFromArray(arrayComponents,i);\r
- return true;\r
- }\r
- }\r
- }\r
- else\r
- return false;\r
-}\r
-\r
-function SendMessage(oMessage)\r
-{\r
- var bDelivered=false;\r
- var arrayComponents=GetComponentsArray(oMessage.nMessageId);\r
- if(arrayComponents!=null&&arrayComponents.length>0){\r
- for(var i=0;i<arrayComponents.length;i++)\r
- {\r
- if(null!=arrayComponents[i])\r
- {\r
- var pFrame;\r
- if(arrayComponents[i].oWindow==null)\r
- pFrame=getframehandle(frames,arrayComponents[i].sName);\r
- else\r
- pFrame=arrayComponents[i].oWindow;\r
- if(null!=pFrame)\r
- {\r
- if(pFrame.onSendMessageX)\r
- {\r
- bDelivered=true;\r
- if(!pFrame.onSendMessageX(oMessage))\r
- break;\r
- }\r
- if(pFrame.onSendMessage)\r
- {\r
- bDelivered=true;\r
- if(!pFrame.onSendMessage(oMessage))\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- return bDelivered;\r
-}
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head>\r
-<title>Table of contents</title>\r
-\r
-<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
-<meta name="description" content="WebHelp 5.50">\r
-<base target="bsscright">\r
-</head>\r
-<script language="javascript" src="whver.js"></script>\r
-<script language="javascript1.2" src="whmozemu.js"></script>\r
-<script language="javascript1.2" src="whutils.js"></script>\r
-<script language="javascript1.2" src="whmsg.js"></script>\r
-<script language="javascript1.2" src="whproxy.js"></script>\r
-<script language="javascript1.2" src="whthost.js"></script>\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-if (window.gbWhTHost)\r
-{\r
- \r
- \r
- setFont("Normal", "Arial","9pt","#000000","normal","normal","none");\r
- setFont("Hover", "Arial","9pt","#007f00","normal","normal","underline");\r
- setActiveBgColor("#cccccc");\r
- setMargin("0pt");\r
- setIndent("9pt");\r
- setIcon("BookOpen","whd_toc2.gif");\r
- setIcon("BookClose","whd_toc1.gif");\r
- setIcon("Item","whd_toc3.gif");\r
- setIcon("RemoteItem","whd_toc4.gif");\r
- setIcon("NewBookOpen","whd_toc2.gif");\r
- setIcon("NewBookClose","whd_toc1.gif");\r
- setIcon("NewItem","whd_toc3.gif");\r
- setIcon("NewRemoteItem","whd_toc4.gif");\r
- TocWriteClassStyle();\r
- TocWriteFixedWidth(true,400);\r
-}\r
-else\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white" scroll="auto">\r
-<script LANGUAGE="javascript1.2">\r
-<!--\r
-TocWriteFixedWidth(false,400);\r
-TocInitPage();\r
-//-->\r
-</script>\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.007\r
-var gaHSLoad=new Array();\r
-var gnMinIdx=0;\r
-var gnInsIdx=-1;\r
-var gsLoadingDivID="LoadingDiv";\r
-var gsLoadingMsg="Loading, click here to cancel...";\r
-var gaProj=null;\r
-var gaTocs=new Array();\r
-var goChunk=null;\r
-var gbReady=false;\r
-var gbToc=false;\r
-var gbXML=false;\r
-var gaRoot=new Array();\r
-var gnCC=-1;\r
-var gsTP="";\r
-var gaBTPs="";\r
-var gsCTPath="";\r
-var gnLT=-1;\r
-var gsPathSplit="\n";\r
-var gsBgColor="#ffffff";\r
-var gsBgImage="";\r
-var goFont=null;\r
-var goHFont=null;\r
-\r
-var gsMargin="0pt";\r
-var gsIndent="15pt";\r
-var gsABgColor="#cccccc";\r
-\r
-var giBookClose="";\r
-var giBookOpen="";\r
-var giBookItem="";\r
-var giURLItem="";\r
-var giNewBookClose="";\r
-var giNewBookOpen="";\r
-var giNewBookItem="";\r
-var giNewURLItem="";\r
-var gnImages=0;\r
-var gnLoadedImages=0;\r
-var gaImgs=new Array();\r
-var gbLoadData=false;\r
-var gobj=null;\r
-var gaTocsNs61Fix=null;\r
-var gbWhTHost=false;\r
-var gBookItems=new Array();\r
-var gInSync=false;\r
-var gbLData=false;\r
-var gbNeedFillStub=false;\r
-var gbLoadToc=false;\r
-\r
-function chunkInfoQueue()\r
-{\r
- this.aContent=new Array();\r
- this.inQueue=function(cInfo)\r
- {\r
- this.aContent[this.aContent.length]=cInfo;\r
- }\r
- this.deQueue=function()\r
- {\r
- var cInfo=null;\r
- if(this.aContent.length>0)\r
- {\r
- cInfo=this.aContent[0];\r
- for(var i=1;i<this.aContent.length;i++)\r
- this.aContent[i-1]=this.aContent[i];\r
- this.aContent.length--;\r
- }\r
- return cInfo;\r
- }\r
- this.length=function()\r
- {\r
- return this.aContent.length;\r
- }\r
-}\r
-\r
-var gchunkRequestQueue=new chunkInfoQueue();\r
-\r
-function chunkInfo(nIdx, bLocal)\r
-{\r
- this.nIdx=nIdx;\r
- this.bLocal=bLocal;\r
-}\r
-\r
-function setBackground(sBgImage)\r
-{\r
- gsBgImage=sBgImage;\r
-}\r
-\r
-function setBackgroundcolor(sBgColor)\r
-{\r
- gsBgColor=sBgColor;\r
-}\r
-\r
-function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- if(sType=="Normal") goFont=vFont;\r
- else if(sType=="Hover") goHFont=vFont;\r
-}\r
-\r
-function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}\r
-\r
-function setMargin(sMargin){gsMargin=sMargin;}\r
-\r
-function setIndent(sIndent){gsIndent=sIndent;}\r
-\r
-function setIcon(sType,sURL)\r
-{\r
- if(sType=="BookOpen")\r
- giBookOpen=sURL;\r
- else if(sType=="BookClose")\r
- giBookClose=sURL;\r
- else if(sType=="Item")\r
- giBookItem=sURL;\r
- else if(sType=="RemoteItem")\r
- giURLItem=sURL;\r
- else if(sType=="NewBookClose")\r
- giNewBookClose=sURL;\r
- else if(sType=="NewBookOpen")\r
- giNewBookOpen=sURL;\r
- else if(sType=="NewItem")\r
- giNewBookItem=sURL;\r
- else if(sType=="NewRemoteItem")\r
- giNewURLItem=sURL; \r
-}\r
-\r
-function bookItem(sTarget,sURL)\r
-{\r
- if(sTarget)\r
- this.sTarget=sTarget;\r
- else\r
- this.sTarget="bsscright";\r
- this.sURL=sURL;\r
-}\r
-\r
-function addBookItem(sBookId,sTarget,sURL)\r
-{\r
- gBookItems[sBookId]=new bookItem(sTarget,sURL); \r
-}\r
-\r
-function tocChunk(sPPath,sDPath)\r
-{\r
- this.sPPath=sPPath;\r
- this.sDPath=sDPath;\r
- this.nMI=-1;\r
- this.aTocs=null;\r
-}\r
-\r
-function addTocChunk(sPPath,sDPath)\r
-{\r
- var oChunk=new tocChunk(sPPath,sDPath);\r
- gaTocs[gaTocs.length]=oChunk;\r
- return oChunk;\r
-}\r
-\r
-function isHSLoad(nIdx)\r
-{\r
- for(var i=0;i<gaHSLoad.length;i++)\r
- if(gaHSLoad[i]==nIdx)\r
- return true;\r
- return false;\r
-}\r
-\r
-function setHSLoad(nIdx)\r
-{\r
- if(!isHSLoad(nIdx))\r
- {\r
- var len=gaHSLoad.length;\r
- for(var i=0;i<len;i++)\r
- if(gaHSLoad[i]==-1)\r
- {\r
- gaHSLoad[i]=nIdx;\r
- return;\r
- }\r
- gaHSLoad[len]=nIdx;\r
- }\r
-}\r
-\r
-function setHSUnLoad(nIdx)\r
-{\r
- if(isHSLoad(nIdx))\r
- {\r
- for(var i=0;i<gaHSLoad.length;i++)\r
- if(gaHSLoad[i]==nIdx)\r
- {\r
- gaHSLoad[i]=-1;\r
- return;\r
- }\r
- }\r
-}\r
-\r
-function removeLoadingDiv()\r
-{\r
- var eLoadingDiv=getElement(gsLoadingDivID);\r
- if(eLoadingDiv)\r
- removeThis(eLoadingDiv);\r
-}\r
-\r
-function checkBookItem(nIdx)\r
-{\r
- if(!gInSync)\r
- {\r
- var sBookId=getBookId(nIdx);\r
- if(gBookItems[sBookId])\r
- {\r
- window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);\r
- }\r
- }\r
-}\r
-\r
-function insertBookItems(nIdx,num)\r
-{\r
- checkBookItem(nIdx);\r
- var sChildBookId=getCBId(nIdx);\r
- var eChildDiv=getElement(sChildBookId);\r
- if(eChildDiv){\r
- if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||\r
- (eChildDiv.all&&eChildDiv.all.length==0)){\r
- var sHTML=writeBookItems(nIdx,num);\r
- eChildDiv.innerHTML=sHTML;\r
- setTimeout("syncInit()",1);\r
- }\r
- }\r
- ExpandIt(nIdx);\r
-}\r
-\r
-function isBookEmpty(nIdx)\r
-{\r
- var num=getItemContentsNum(nIdx);\r
- if (num>0)\r
- {\r
- var nCIdx=0;\r
- do {\r
- nCIdx++;\r
- var i=nIdx+nCIdx;\r
- var nItemType=getItemType(i);\r
- if(nItemType==1){\r
- if (!isBookEmpty(i))\r
- return false;\r
- }\r
- else if(nItemType==4){\r
- var sSrc=getRefURL(i);\r
- var nProj=getProject(sSrc);\r
- if(nProj!=-1){\r
- sSrc=gaRoot[nProj].sToc;\r
- if(sSrc)\r
- return false;\r
- }\r
- }\r
- else if(nItemType==2||nItemType==16||nItemType==8)\r
- return false;\r
- } while(nCIdx<num);\r
- }\r
- return true;\r
-}\r
-\r
-function writeBook(nIdx)\r
-{\r
- var sIcon=getBookImage(nIdx,true);\r
- var sName=_textToHtml(getItemName(nIdx));\r
- sIcon=_textToHtml_nonbsp(sIcon);\r
- \r
- var nType=getItemType(nIdx);\r
- var bLocal=(nType==1);\r
- var bLocalProject=(nType!=4);\r
- \r
- var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";\r
- if(bLocal)\r
- {\r
- if (!isBookEmpty(nIdx))\r
- {\r
- sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
- sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
- sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
- sHTML+=" "+sName+"</a></nobr></p></div>";\r
- var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
- if(sURL!="")\r
- addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
- sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
- }\r
- else\r
- sHTML="";\r
- }\r
- else\r
- {\r
- sHTML+="stub></div>";\r
- gbNeedFillStub=true;\r
- setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
- }\r
- return sHTML;\r
-}\r
-\r
-function checkFillStub()\r
-{\r
- if(!gbLData)\r
- {\r
- if(gchunkRequestQueue.length()>0)\r
- {\r
- var cInfo=gchunkRequestQueue.deQueue();\r
- if(cInfo)\r
- {\r
- fillStub(cInfo.nIdx,cInfo.bLocal);\r
- return;\r
- }\r
- }\r
- }\r
- if(gbNeedFillStub)\r
- {\r
- gbNeedFillStub=false;\r
- setTimeout("syncInit()",1);\r
- }\r
-}\r
-\r
-function fillStub(nIdx,bLocalProject)\r
-{\r
- if(!gbLData)\r
- {\r
- gbLData=true;\r
- var sObj=getElement(getPBId(nIdx));\r
- if(sObj!=null)\r
- {\r
- tocExpandHelpSet(nIdx,bLocalProject);\r
- gbNeedFillStub=false;\r
- setTimeout("syncInit()",1);\r
- }\r
- else\r
- setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
- }\r
- else\r
- gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));\r
-}\r
-\r
-function getBookId(nIdx){return "B_"+nIdx;}\r
-\r
-function getItemId(nIdx){return "I_"+nIdx;}\r
-\r
-function markBook(nIdx)\r
-{\r
- var obj=getElement(getItemId(nIdx));\r
- if(obj==null)\r
- obj=getElement(getBookId(nIdx));\r
- if(gbNav6)\r
- {\r
- gobj=obj;\r
- setTimeout("delayMarkObj();",1);\r
- }\r
- else\r
- markObj(obj);\r
-}\r
-\r
-function delayMarkObj()\r
-{\r
- if(gobj)\r
- {\r
- markObj(gobj);\r
- gobj=null;\r
- }\r
-}\r
-\r
-function markObj(obj)\r
-{\r
- if(obj!=null)\r
- {\r
- HighLightElement(obj,gsABgColor,"transparent");\r
- var sPath=calTocPath(obj);\r
- if(gsCTPath!=sPath)\r
- gsCTPath=sPath;\r
- }\r
-}\r
-\r
-function markItem(nIdx)\r
-{\r
- var obj=getElement(getItemId(nIdx));\r
- if(gbNav6)\r
- {\r
- gobj=obj;\r
- setTimeout("delayMarkObj();",1);\r
- }\r
- else\r
- markObj(getElement(getItemId(nIdx)));\r
-}\r
-\r
-function calTocPath(obj)\r
-{\r
- var sPath=getInnerText2(obj);\r
- var pObj=getParentNode(obj);\r
- do\r
- {\r
- while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);\r
- if(pObj!=null)\r
- {\r
- var nId=getIdByCBId(pObj.id);\r
- var sObj=getElement(getPBId(nId));\r
- if(sObj!=null)\r
- {\r
- var objs=getItemsByBook(sObj);\r
- for(var i=0;i<objs.length;i++)\r
- {\r
- var sText=getInnerText2(objs[i]);\r
- if(sText.length!=0)\r
- {\r
- sPath=sText+gsPathSplit+sPath;\r
- break;\r
- }\r
- }\r
- }\r
- pObj=getParentNode(pObj);\r
- }\r
- }while(pObj!=null);\r
- return sPath;\r
-}\r
-\r
-function writeAnItem(nIdx)\r
-{\r
- var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));\r
- var sIcon=getItemIcon(nIdx,0);\r
- if(sIcon=="")\r
- {\r
- var nItemType=getItemType(nIdx);\r
- if(nItemType&2)\r
- sIcon=getItemImage(nIdx,false);\r
- else\r
- sIcon=getItemImage(nIdx,true);\r
- }\r
- sIcon=_textToHtml_nonbsp(sIcon);\r
- var sName=_textToHtml(getItemName(nIdx));\r
- var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
- var sAltString="";\r
- if(nItemType&2)\r
- sAltString="Page";\r
- else\r
- sAltString="Remote Page";\r
- if(sTarget!="")\r
- sHTML+="target=\""+sTarget+"\" ";\r
- sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\"> "+sName+"</a></nobr></p>";\r
- return sHTML;\r
-}\r
-\r
-function writeBookItems(nIdx,num)\r
-{\r
- var sHTML="";\r
- if(num>0){\r
- var nCIdx=0;\r
- do{\r
- nCIdx++;\r
- var i=nIdx+nCIdx;\r
- var nItemType=getItemType(i);\r
- if(nItemType==1||nItemType==4||nItemType==8){\r
- sHTML+=writeBook(i); \r
- nCIdx+=getItemContentsNum(i); \r
- }\r
- else if(nItemType==2||nItemType==16){\r
- sHTML+=writeAnItem(i);\r
- }\r
- }\r
- while(nCIdx<num);\r
- }\r
- return sHTML;\r
-}\r
-\r
-function tocExpandHelpSet(nIdx,bLocal)\r
-{\r
- checkBookItem(nIdx);\r
- removeLoadingDiv();\r
- if(!isHSLoad(nIdx))\r
- {\r
- setHSLoad(nIdx);\r
- var sSrc="";\r
- if(bLocal){\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- {\r
- goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);\r
- sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
- }\r
- }\r
- else{\r
- sSrc=getRefURL(nIdx);\r
- var nProj=getProject(sSrc);\r
- if(nProj!=-1)\r
- {\r
- sSrc=gaRoot[nProj].sToc;\r
- if(sSrc)\r
- goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
- else\r
- goChunk=null;\r
- }\r
- else\r
- goChunk=null;\r
- }\r
- if(goChunk)\r
- {\r
- PrepareLoading(nIdx);\r
- gbToc=false;\r
- loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
- }\r
- else\r
- {\r
- gbLData=false;\r
- checkFillStub();\r
- }\r
- }\r
-}\r
-\r
-function getProject(sSrc)\r
-{\r
- for(var i=0;i<gaProj.length;i++)\r
- if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
- return i;\r
- return -1;\r
-}\r
-\r
-function getPath(sPath)\r
-{\r
- if(sPath!="")\r
- {\r
- sPath=_replaceSlash(sPath);\r
- var nPosFile=sPath.lastIndexOf("/");\r
- sPath=sPath.substring(0,nPosFile+1);\r
- }\r
- return sPath;\r
-}\r
-\r
-function isSamePath(sPath1,sPath2)\r
-{\r
- return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
-}\r
-\r
-function PrepareLoading(nIdx)\r
-{\r
- gnInsIdx=nIdx;\r
- if(!gsTP)\r
- {\r
- var oObj=getElement(getPBId(gnInsIdx));\r
- if(oObj)\r
- oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));\r
- }\r
-}\r
-\r
-function writeLoadingDiv(nIdx)\r
-{\r
- return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
-}\r
-\r
-function getItemName(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;\r
- else\r
- return null;\r
-}\r
-\r
-function getItemContentsNum(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- return oChunk.aTocs[nIdx-oChunk.nMI].nContents;\r
- else\r
- return null;\r
-}\r
-\r
-function getItemType(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- return oChunk.aTocs[nIdx-oChunk.nMI].nType;\r
- else\r
- return 0;\r
-}\r
-\r
-function getItemURL(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- {\r
- var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;\r
- if(!(sPath==null||sPath==""))\r
- {\r
- return _getFullPath(oChunk.sPPath,sPath);\r
- }\r
- }\r
- return "";\r
-}\r
-\r
-function getRefURL(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- {\r
- var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
- if(!(sPath==null||sPath==""))\r
- {\r
- return _getFullPath(oChunk.sPPath,sPath)\r
- }\r
- }\r
- return "";\r
-}\r
-\r
-function getTopicTarget(nIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- {\r
- if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")\r
- return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;\r
- }\r
- return "";\r
-}\r
-\r
-function getItemIcon(nIdx,nIconIdx)\r
-{\r
- var oChunk=getChunk(nIdx);\r
- if(oChunk)\r
- {\r
- if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")\r
- {\r
- var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;\r
- var nIndex=sIconRef.indexOf(";");\r
- while(nIconIdx-->0&&nIndex!=-1)\r
- {\r
- sIconRef=sIconRef.substring(nIndex+1);\r
- nIndex=sIconRef.indexOf(";");\r
- }\r
- if(nIconIdx<0)\r
- {\r
- if(nIndex!=-1)\r
- sIconRef=sIconRef.substring(0,nIndex);\r
- return _getFullPath(oChunk.sPPath,sIconRef)\r
- }\r
- }\r
- }\r
- return "";\r
-}\r
-\r
-function TocWriteClassStyle()\r
-{\r
- var sStyle="<STYLE TYPE='text/css'>\n";\r
- if(gsBgImage)\r
- sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
- else\r
- sStyle+="body {border-top:black 1px solid;}\n";\r
- sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
- sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
- sStyle+=".parent {margin-left:0pt;}\n";\r
- sStyle+=".stub {margin-left:0pt;display:none}\n";\r
- sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
- sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
- sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
- sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";\r
- sStyle+="</STYLE>";\r
- document.write(sStyle);\r
-}\r
-\r
-function TocWriteFixedWidth(bBegin,nWidth)\r
-{\r
- if((gbIE4)&&(gbMac)&&(!gbIE5)){\r
- if(bBegin)\r
- document.write("<table width="+nWidth+" border=0><tr><td>");\r
- else\r
- document.write("</td></tr></table>");\r
- }\r
-}\r
-\r
-function TocInitPage()\r
-{\r
- var tempColl=getItemsByBook(document.body);\r
- if(tempColl.length>0)\r
- tempColl[0].focus();\r
-}\r
-\r
-function getItemsFromObj(obj)\r
-{\r
- var aAnchor=new Array();\r
- var tempColl=getChildrenByTag(obj,"P");\r
- if(tempColl&&tempColl.length>0)\r
- {\r
- var anobr=new Array();\r
- for(var i=0;i<tempColl.length;i++)\r
- {\r
- var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
- if(tempNobr&&tempNobr.length>0)\r
- for(var j=0;j<tempNobr.length;j++)\r
- anobr[anobr.length]=tempNobr[j];\r
- }\r
- for(var s=0;s<anobr.length;s++)\r
- {\r
- var tempAnchor=getChildrenByTag(anobr[s],"A");\r
- if(tempAnchor&&tempAnchor.length>0)\r
- for(var u=0;u<tempAnchor.length;u++)\r
- aAnchor[aAnchor.length]=tempAnchor[u];\r
- }\r
- }\r
- return aAnchor;\r
-}\r
-\r
-function getItemsByBook(obj)\r
-{\r
- var aAnchor=new Array();\r
- var aTAnchor=getItemsFromObj(obj);\r
- for(var i=0;i<aTAnchor.length;i++)\r
- aAnchor[aAnchor.length]=aTAnchor[i];\r
- var tempBook=getChildrenByTag(obj,"DIV");\r
- if(tempBook&&tempBook.length>0)\r
- for(var j=0;j<tempBook.length;j++)\r
- {\r
- var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
- for(var s=0;s<aTAnchorDiv.length;s++)\r
- aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
- }\r
- return aAnchor;\r
-}\r
-\r
-function ExpandIt(nId)\r
-{\r
- if(!gsTP)\r
- ExpandIt2(nId,false);\r
-}\r
-\r
-function ExpandIt2(nId,bForceOpen)\r
-{\r
- var oC=TocExpand(nId,true,bForceOpen);\r
- var nNewScroll=document.body.scrollTop;\r
- if(oC.style.display=="block"){\r
- var nTop=oC.offsetTop;\r
- var nBottom=nTop+oC.offsetHeight;\r
- if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
- nNewScroll=nBottom-document.body.clientHeight;\r
- }\r
- if(nBottom-nTop>document.body.clientHeight){\r
- nNewScroll=nTop-20;\r
- }\r
- }\r
- document.body.scrollTop=nNewScroll;\r
-}\r
-\r
-function TocExpand(nId,bChangeImg,bForceOpen)\r
-{\r
- var oDiv=getElement(getCBId(nId));\r
- if(oDiv==null) return null;\r
-\r
- var whichIm=document.images[getBId(nId)];\r
- if((oDiv.style.display!="block")||bForceOpen){\r
- oDiv.style.display="block";\r
- if(bChangeImg){\r
- var sPath=getPath(whichIm.src);\r
- sPath=_getFullPath(sPath,getBookImage(nId,false));\r
- whichIm.src=sPath; \r
- }\r
- }else{\r
- oDiv.style.display="none";\r
- if(bChangeImg){\r
- var sPath=getPath(whichIm.src);\r
- sPath=_getFullPath(sPath,getBookImage(nId,true));\r
- whichIm.src=sPath;\r
- }\r
- if(gbMac&&gbIE5){\r
- this.parent.document.getElementById("tocIFrame").style.width="101%";\r
- this.parent.document.getElementById("tocIFrame").style.width="100%";\r
- }\r
- }\r
- return oDiv;\r
-}\r
-\r
-function getChunkId(n)\r
-{\r
- var nCan=-1;\r
- for(var i=0;i<gaTocs.length;i++)\r
- if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)\r
- {\r
- if(nCan==-1)\r
- nCan=i;\r
- else\r
- if(gaTocs[i].nMI>=gaTocs[nCan].nMI)\r
- nCan=i;\r
- }\r
- if(nCan!=-1)\r
- return nCan;\r
- else\r
- return -1;\r
-}\r
-\r
-function getChunk(n)\r
-{\r
- if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||\r
- gaTocs[gnCC+1].nMI>n))\r
- { \r
- return gaTocs[gnCC];\r
- }\r
- else{\r
- gnCC=getChunkId(n);\r
- if(gnCC!=-1)\r
- return gaTocs[gnCC];\r
- else\r
- return null;\r
- }\r
-}\r
-\r
-function getBookImage(nIdx,bClosed)\r
-{\r
- var nIdx=bClosed?0:1;\r
- var sIcon=getItemIcon(nIdx,nIdx);\r
- if(sIcon=="")\r
- if(bClosed)\r
- sIcon=giBookClose;\r
- else\r
- sIcon=giBookOpen;\r
- return _getFullPath(gaProj[0].sPPath,sIcon);\r
-}\r
-\r
-function getItemImage(nIdx,bRemote)\r
-{\r
- var sIcon=getItemIcon(nIdx,0);\r
- if(sIcon=="")\r
- if(bRemote)\r
- sIcon=giURLItem;\r
- else\r
- sIcon=giBookItem;\r
- return _getFullPath(gaProj[0].sPPath,sIcon);\r
-}\r
-\r
-function getInnerText2(obj)\r
-{\r
- var sText=getInnerText(obj);\r
- if(sText.length>0&&!gbOpera7)\r
- sText=sText.substring(1);\r
- return sText;\r
-}\r
-\r
-function expandToc(oObj,sRest,aIdList)\r
-{\r
- var len=aIdList.length;\r
- var nPos=sRest.indexOf(gsPathSplit);\r
- if(nPos!=-1)\r
- {\r
- sPart=sRest.substring(0,nPos);\r
- sRest=sRest.substring(nPos+1);\r
- }\r
- else\r
- {\r
- sPart=sRest;\r
- var aTagAs=getItemsByBook(oObj);\r
- for(var s=0;s<aTagAs.length;s++)\r
- {\r
- var sText=getInnerText2(aTagAs[s]);\r
- if(sText==sPart)\r
- {\r
- aIdList[len]=aTagAs[s];\r
- return 1;\r
- }\r
- }\r
- return 0;\r
- }\r
- \r
- var aChildren=getChildrenByTag(oObj,"DIV");\r
- for(var i=0;i<aChildren.length;i++)\r
- {\r
- var sPId=aChildren[i].id;\r
- if(!isPBId(sPId))\r
- continue;\r
- var sText=getInnerText2(aChildren[i]);\r
- if(sText!=sPart)\r
- continue;\r
- aIdList[len]=getIdByPBId(sPId);\r
- var sCId=getCBId(aIdList[len]);\r
- var oCObj=getElement(sCId);\r
- if(oCObj)\r
- {\r
- if(oCObj.innerHTML=="")\r
- {\r
- var obj=getItemsByBook(aChildren[i]);\r
- if(obj.length>0)\r
- {\r
- if(gbNav6)\r
- {\r
- var sCommand=obj[0].getAttribute("onClick");\r
- var nCommand=sCommand.indexOf(";");\r
- sCommand=sCommand.substring(0,nCommand);\r
- setTimeout(sCommand,1);\r
- }\r
- else\r
- obj[0].click();\r
- }\r
- return -1;\r
- }\r
- var nRet=expandToc(oCObj,sRest,aIdList);\r
- if(nRet)\r
- return nRet;\r
- }\r
- }\r
- aIdList.length=len;\r
- return 0;\r
-}\r
-\r
-function getIdByPBId(sPId)\r
-{\r
- return parseInt(sPId.substring(2,sPId.length-1));\r
-}\r
-\r
-function getIdByCBId(sCId)\r
-{\r
- return parseInt(sCId.substring(2,sCId.length-1));\r
-}\r
-\r
-function isPBId(sId)\r
-{\r
- return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);\r
-}\r
-\r
-function isCBId(sId)\r
-{\r
- return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);\r
-}\r
-\r
-function getBId(nIdx)\r
-{\r
- return "B_"+nIdx;\r
-}\r
-\r
-function getPBId(nIdx)\r
-{\r
- return getBId(nIdx)+"P";\r
-}\r
-\r
-function getCBId(nIdx)\r
-{\r
- return getBId(nIdx)+"C";\r
-}\r
-\r
-function getClosestTocPath(aPaths)\r
-{\r
- var nMaxSimilarity=0;\r
- var nThatIndex=-1;\r
- var sPath=null;\r
- if(aPaths.length==0) return sPath;\r
- for(var i=0;i<aPaths.length;i++)\r
- {\r
- var nSimilarity=comparePath(gsCTPath,aPaths[i]);\r
- if(nSimilarity>nMaxSimilarity)\r
- {\r
- nMaxSimilarity=nSimilarity;\r
- nThatIndex=i;\r
- }\r
- }\r
- if(nThatIndex!=-1)\r
- sPath=aPaths[nThatIndex];\r
- else\r
- sPath=aPaths[0];\r
- return sPath;\r
-}\r
-\r
-function comparePath(sPath1,sPath2)\r
-{\r
- var nMaxSimilarity=0;\r
- var nStartPos1=0;\r
- var nPos1=-1;\r
- var nStartPos2=0;\r
- var nPos2=-1;\r
- do{\r
- var sCheck1=null;\r
- var sCheck2=null;\r
- nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);\r
- if(nPos1!=-1)\r
- {\r
- sCheck1=sPath1.substring(nStartPos1,nPos1);\r
- nStartPos1=nPos1+1;\r
- }\r
- else\r
- {\r
- sCheck1=sPath1.substring(nStartPos1);\r
- nStartPos1=-1;\r
- }\r
- nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);\r
- if(nPos1!=-1)\r
- {\r
- sCheck2=sPath2.substring(nStartPos2,nPos2);\r
- nStartPos2=nPos2+1;\r
- }\r
- else\r
- {\r
- sCheck2=sPath2.substring(nStartPos2);\r
- nStartPos2=-1;\r
- }\r
- if(sCheck1==sCheck2)\r
- nMaxSimilarity++;\r
- else\r
- break;\r
- }while(nStartPos1!=-1&&nStartPos2!=-1);\r
- return nMaxSimilarity;\r
-}\r
-\r
-function getTocPaths(oTopicParam)\r
-{\r
- var aRelTocPaths=oTopicParam.aPaths;\r
- var aPaths=new Array();\r
- for(var i=0;i<gaProj.length;i++)\r
- if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
- {\r
- for(var j=0;j<aRelTocPaths.length;j++)\r
- for (var k=0;k<gaRoot[i].aRPath.length;k++)\r
- {\r
- var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];\r
- aPaths[aPaths.length]=sPath.substring(1);\r
- }\r
- break;\r
- }\r
- return aPaths;\r
-}\r
-\r
-function syncInit()\r
-{\r
- if(gsTP&&!gbNeedFillStub)\r
- {\r
- gInSync=true;\r
- var obj=document.body;\r
- var aIdList=new Array();\r
- var nRet=expandToc(obj,gsTP,aIdList);\r
- if(nRet!=-1)\r
- {\r
- if(nRet==1)\r
- {\r
- if(aIdList.length)\r
- for(var i=0;i<aIdList.length-1;i++)\r
- ExpandIt2(aIdList[i],true);\r
- gsCTPath=gsTP;\r
- if(!gbIE55)\r
- aIdList[aIdList.length-1].focus();\r
- else\r
- HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");\r
- }\r
- var aPaths=gaBTPs;\r
- gsTP=null;\r
- gaBTPs=null;\r
- if(aPaths!=null)\r
- {\r
- var sPath=getClosestTocPath(aPaths);\r
- if(sPath!=null)\r
- { \r
- gsTP=sPath; \r
- setTimeout("syncInit()",1);\r
- }\r
- }\r
- }\r
- gInSync=false;\r
- }\r
-}\r
-\r
-function loadToc()\r
-{\r
- if(!gbLoadToc)\r
- {\r
- var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
- if(SendMessage(oResMsg)&&oResMsg.oParam)\r
- {\r
- gbLoadToc=true;\r
- var oProj=oResMsg.oParam;\r
- gaProj=oProj.aProj;\r
- gbXML=oProj.bXML;\r
- load1B1();\r
- }\r
- }\r
-}\r
-\r
-function load1B1()\r
-{\r
- if(gnLT+1<gaProj.length)\r
- for(var i=gnLT+1;i<gaProj.length;i++)\r
- if(gaProj[i].sToc)\r
- {\r
- gbToc=true;\r
- gnLT=i;\r
- setTimeout("loadTocInfo()",1);\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-function loadTocInfo()\r
-{\r
- loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);\r
-}\r
-\r
-function loadData2(sFile)\r
-{\r
- if(gbXML)\r
- loadDataXML(sFile);\r
- else\r
- loadData(sFile);\r
-}\r
-\r
-function projReady(sRoot,aProj)\r
-{\r
- if(gaRoot.length<=gnLT||!gaRoot[gnLT])\r
- gaRoot[gnLT]=new Object();\r
- gaRoot[gnLT].sToc=sRoot;\r
- \r
- if(gnLT==0)\r
- {\r
- gaRoot[gnLT].aRPath=new Array();\r
- gaRoot[gnLT].aRPath[0]=gsPathSplit;\r
- }\r
-\r
- updatePTPath(gnLT,aProj);\r
-\r
- if(!((gnLT+1<gaProj.length)&&load1B1()))\r
- {\r
- gbReady=true;\r
- if(gbIE4)\r
- setTimeout("loadImages();",1);\r
- else\r
- setTimeout("loadTData();",1);\r
- }\r
-}\r
-\r
-function loadTData()\r
-{\r
- if(gaProj[0].sToc!="")\r
- {\r
- gbLData=true;\r
- goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
- gbToc=false;\r
- loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
- }\r
-}\r
-\r
-function updatePTPath(n,aProj)\r
-{\r
- if(aProj)\r
- for(var i=0;i<aProj.length;i++)\r
- {\r
- var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
- for(var j=0;j<gaProj.length;j++)\r
- if(isSamePath(sFullPath,gaProj[j].sPPath))\r
- {\r
- if(gaRoot.length<=j||!gaRoot[j])\r
- gaRoot[j]=new Object();\r
- if(!gaRoot[j].aRPath)\r
- gaRoot[j].aRPath=new Array();\r
-\r
- if(gaRoot[n].aRPath)\r
- for(var k=0;k<gaRoot[n].aRPath.length;k++)\r
- {\r
- var bDup=false;\r
- var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;\r
- for(var l=0;l<gaRoot[j].aRPath.length;l++)\r
- if(gaRoot[j].aRPath[l]==sTFPath)\r
- {\r
- bDup=true;\r
- break;\r
- }\r
- if(!bDup)\r
- gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;\r
- }\r
- else\r
- gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;\r
- break;\r
- }\r
- }\r
-}\r
-\r
-function onLoadXMLError()\r
-{\r
- if(gbToc)\r
- {\r
- var sRoot="";\r
- var aRProj=new Array();\r
- projReady(sRoot,aRProj);\r
- }\r
- else\r
- {\r
- var aToc=new Array();\r
- putData(aToc)\r
- }\r
-}\r
-\r
-function putDataXML(xmlDoc,sDocPath)\r
-{\r
- if(gbToc)\r
- {\r
- var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
- if(tocNode)\r
- {\r
- var sRoot=tocNode.getAttribute("root");\r
- var rmtProject=tocNode.getElementsByTagName("project");\r
- var aRProj=new Array();\r
- if(rmtProject.length>0)\r
- {\r
- for(var i=0;i<rmtProject.length;i++)\r
- {\r
- aRProj[i]=new Object();\r
- var sURL=rmtProject[i].getAttribute("url");\r
- if(sURL)\r
- {\r
- if(sURL.lastIndexOf("/")!=sURL.length-1)\r
- sURL+="/"; \r
- }\r
- aRProj[i].sPPath=sURL;\r
- aRProj[i].sRPath = "";\r
- var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];\r
- if (oSubPath)\r
- {\r
- while (oSubPath)\r
- {\r
- aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";\r
- oSubPath = oSubPath.getElementsByTagName("subpath")[0];\r
- }\r
- }\r
- else\r
- aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
- }\r
- }\r
- projReady(sRoot,aRProj);\r
- }\r
- }\r
- else\r
- {\r
- var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];\r
- if(chunkNode)\r
- {\r
- var aToc=new Array();\r
- processBook(chunkNode,aToc);\r
- putData(aToc);\r
- }\r
- }\r
-}\r
-\r
-function processBook(node,aToc)\r
-{\r
- var i=0;\r
- var entry=null;\r
- var prevEntry=null;\r
- var oChild=node.firstChild;\r
- do{\r
- if(oChild)\r
- {\r
- if(oChild.nodeName.indexOf("#")!=0)\r
- {\r
- var sName=oChild.getAttribute("name");\r
- var sURL=oChild.getAttribute("url");\r
- var sRef=oChild.getAttribute("ref");\r
- var sTarget=oChild.getAttribute("target");\r
- var sIcons=oChild.getAttribute("images");\r
- var item=new Object();\r
- item.sItemName=sName;\r
- if(sTarget)\r
- item.sTarget=sTarget;\r
- if(sIcons)\r
- item.sIconRef=sIcons;\r
- if(sURL==null) sURL="";\r
-\r
- item.sItemURL=sURL;\r
- \r
- if(oChild.nodeName=="book")\r
- {\r
- item.nType=1;\r
- aToc[aToc.length]=item;\r
- var nCurrPos=aToc.length;\r
- processBook(oChild,aToc);\r
- item.nContents=aToc.length-nCurrPos;\r
- }\r
- else if(oChild.nodeName=="item")\r
- {\r
- item.nType=2;\r
- item.nContents=0;\r
- aToc[aToc.length]=item;\r
- }\r
- else if(oChild.nodeName=="remoteitem")\r
- {\r
- item.nType=16;\r
- item.nContents=0;\r
- aToc[aToc.length]=item;\r
- }\r
- else if(oChild.nodeName=="project")\r
- {\r
- if(sRef)\r
- {\r
- if(sRef.lastIndexOf("/")!=sRef.length-1)\r
- sRef+="/"; \r
- }\r
- item.nType=4;\r
- item.sRefURL=sRef;\r
- item.nContents=0;\r
- aToc[aToc.length]=item;\r
- }\r
- else if(oChild.nodeName=="chunk")\r
- {\r
- item.nType=8;\r
- item.sRefURL=sRef;\r
- item.nContents=0;\r
- aToc[aToc.length]=item;\r
- }\r
- }\r
- }\r
- else\r
- break;\r
- oChild=oChild.nextSibling;\r
- }while(true);\r
-}\r
-\r
-function putData(aTocs)\r
-{\r
- gaTocsNs61Fix=aTocs;\r
- setTimeout("realPutData();",1);\r
-}\r
-\r
-function realPutData()\r
-{\r
- removeLoadingDiv();\r
- var aTocs=gaTocsNs61Fix;\r
- if(!aTocs) return;\r
- if(goChunk)\r
- {\r
- var n=gnMinIdx;\r
- goChunk.nMI=gnMinIdx;\r
- goChunk.aTocs=aTocs;\r
- gnMinIdx+=aTocs.length;\r
- if(gnInsIdx!=-1)\r
- {\r
- var oObj=getElement(getPBId(gnInsIdx));\r
- if(oObj)\r
- {\r
- oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));\r
- setTimeout("syncInit()",1);\r
- }\r
- }\r
- else{\r
- document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));\r
- var oParam=new Object();\r
- oParam.oTocInfo=null;\r
- var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
- if(SendMessage(oMsg))\r
- {\r
- if(oMsg.oParam.oTocInfo)\r
- syncWithPaths(oMsg.oParam.oTocInfo);\r
- }\r
- } \r
- }\r
- gbLData=false;\r
- checkFillStub();\r
-}\r
-\r
-function syncWithPaths(oTopicParam)\r
-{\r
- var aPaths=getTocPaths(oTopicParam);\r
- if(gsTP)\r
- gaBTPs=aPaths;\r
- else{\r
- var sPath=getClosestTocPath(aPaths);\r
- if(sPath!=null)\r
- {\r
- gsTP=sPath;\r
- setTimeout("syncInit()",1);\r
- }\r
- }\r
-}\r
-\r
-function window_OnLoad()\r
-{\r
- if(gsBgImage&&gsBgImage.length>0)\r
- {\r
- document.body.background=gsBgImage;\r
- }\r
- if(gsBgColor&&gsBgColor.length>0)\r
- {\r
- document.body.bgColor=gsBgColor;\r
- }\r
- loadToc();\r
- var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
- SendMessage(oMsg);\r
-}\r
-\r
-function loadImages()\r
-{\r
- if(giBookClose)\r
- {\r
- gaImgs[gnImages]=giBookClose;\r
- gnImages++;\r
- } \r
- if(giBookOpen)\r
- {\r
- gaImgs[gnImages]=giBookOpen;\r
- gnImages++;\r
- } \r
- if(giBookItem)\r
- {\r
- gaImgs[gnImages]=giBookItem;\r
- gnImages++;\r
- } \r
- if(giURLItem)\r
- {\r
- gaImgs[gnImages]=giURLItem;\r
- gnImages++;\r
- } \r
- if(giNewBookClose)\r
- {\r
- gaImgs[gnImages]=giNewBookClose;\r
- gnImages++;\r
- } \r
- if(giNewBookOpen)\r
- {\r
- gaImgs[gnImages]=giNewBookOpen;\r
- gnImages++;\r
- } \r
- if(giNewBookItem)\r
- {\r
- gaImgs[gnImages]=giNewBookItem;\r
- gnImages++;\r
- } \r
- if(giNewURLItem)\r
- {\r
- gaImgs[gnImages]=giNewURLItem;\r
- gnImages++;\r
- }\r
- if(gnImages>0)\r
- {\r
- setTimeout("loadDataAfter();",1000);\r
- loadImage(gaImgs[0]);\r
- }\r
- else\r
- loadDataAfter();\r
-}\r
-\r
-function loadImage(sURL)\r
-{\r
- var oImg=new Image();\r
- oImg.onload=checkImageLoading;\r
- oImg.onerror=errorImageLoading;\r
- oImg.src=_getFullPath(gaProj[0].sPPath,sURL);\r
-}\r
-\r
-function loadDataAfter()\r
-{\r
- if(!gbLoadData)\r
- {\r
- gbLoadData=true;\r
- loadTData();\r
- }\r
-}\r
-\r
-function errorImageLoading()\r
-{\r
- gnLoadedImages++;\r
- if(gnImages==gnLoadedImages)\r
- loadDataAfter();\r
- else\r
- loadImage(gaImgs[gnLoadedImages]); \r
-}\r
-\r
-function checkImageLoading()\r
-{\r
- gnLoadedImages++;\r
- if(gnImages==gnLoadedImages)\r
- loadDataAfter();\r
- else\r
- loadImage(gaImgs[gnLoadedImages]); \r
-}\r
-\r
-function window_unload()\r
-{\r
- UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
- UnRegisterListener2(this,WH_MSG_SYNCTOC);\r
- UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- if(oMsg)\r
- {\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_PROJECTREADY)\r
- {\r
- loadToc();\r
- }\r
- else if(nMsgId==WH_MSG_SYNCTOC)\r
- {\r
- if(gbReady)\r
- {\r
- syncWithPaths(oMsg.oParam);\r
- }\r
- }\r
- else if(nMsgId==WH_MSG_SHOWTOC)\r
- {\r
- if(!gbNav6)\r
- document.body.focus();\r
- }\r
- }\r
- return true;\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
-{\r
- RegisterListener2(this,WH_MSG_PROJECTREADY);\r
- RegisterListener2(this,WH_MSG_SYNCTOC);\r
- RegisterListener2(this,WH_MSG_SHOWTOC);\r
- goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
- goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
-\r
- window.onload=window_OnLoad;\r
- window.onbeforeunload=window_BUnload;\r
- window.onunload=window_unload;\r
- gbWhTHost=true;\r
-}\r
-else\r
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.005\r
-var gsPPath="";\r
-var gaPaths=new Array();\r
-var gaAvenues=new Array();\r
-\r
-var goFrame=null;\r
-var gsStartPage="";\r
-var gsRelCurPagePath="";\r
-var gsSearchFormHref="";\r
-var gnTopicOnly=-1;\r
-var gnOutmostTopic=-1;\r
-\r
-var BTN_TEXT=1;\r
-var BTN_IMG=2;\r
-\r
-var goSync=null;\r
-\r
-var goShow=null;\r
-var goHide=null;\r
-\r
-var goPrev=null;\r
-var goNext=null;\r
-var gnForm=0;\r
-var goShowNav=null;\r
-var goHideNav=null;\r
-\r
-var goWebSearch=null;\r
-\r
-var gsBtnStyle="";\r
-var gaButtons=new Array();\r
-var gaTypes=new Array();\r
-var whtopic_foldUnload=null;\r
-var gbWhTopic=false;\r
-var gbCheckSync=false;\r
-var gbSyncEnabled=false;\r
-\r
-function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
-{\r
- var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
- gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}";\r
-}\r
-\r
-function writeBtnStyle()\r
-{\r
- if(gaButtons.length>0)\r
- {\r
- if(gsBtnStyle.length>0)\r
- {\r
- var sStyle="<style type='text/css'>";\r
- sStyle+=gsBtnStyle+"</style>";\r
- document.write(sStyle);\r
- }\r
- }\r
-}\r
-\r
-function button(sText,nWidth,nHeight)\r
-{\r
- this.sText=sText;\r
- this.nWidth=nWidth;\r
- this.nHeight=nHeight;\r
- \r
- this.aImgs=new Array();\r
- var i=0;\r
- while(button.arguments.length>i+3)\r
- {\r
- this.aImgs[i]=button.arguments[3+i];\r
- i++;\r
- }\r
-}\r
-\r
-//project info\r
-function setRelStartPage(sPath)\r
-{\r
- if(gsPPath.length==0)\r
- {\r
- gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath));\r
- gsStartPage=_getFullPath(_getPath(document.location.href),sPath);\r
- gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href);\r
- }\r
-}\r
-\r
-function getImage(oImage,sType)\r
-{\r
- var sImg="";\r
- if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0))\r
- {\r
- sImg+="<img alt=\""+sType+"\" src=\""+oImage.aImgs[0]+"\"";\r
- if(oImage.nWidth>0)\r
- sImg+=" width="+oImage.nWidth;\r
- if(oImage.nHeight>0)\r
- sImg+=" height="+oImage.nHeight;\r
- sImg+=" border=0>";\r
- }\r
- return sImg;\r
-}\r
-\r
-function addTocInfo(sTocPath)\r
-{\r
- gaPaths[gaPaths.length]=sTocPath;\r
-}\r
-\r
-function addAvenueInfo(sName,sPrev,sNext)\r
-{\r
- gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext); \r
-}\r
-\r
-function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3)\r
-{\r
- var sButton="";\r
- var nBtn=gaButtons.length;\r
- if(sType=="prev")\r
- {\r
- if(canGo(false))\r
- {\r
- var sTitle="Previous Topic";\r
- goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goPrev.sText;\r
- else\r
- sButton+=getImage(goPrev,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="next")\r
- {\r
- if(canGo(true))\r
- {\r
- var sTitle="Next Topic";\r
- goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goNext.sText;\r
- else\r
- sButton+=getImage(goNext,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="show")\r
- {\r
- if(isTopicOnly()&&(!gbOpera6||gbOpera7))\r
- {\r
- var sTitle="Show Navigation Component";\r
- goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goShow.sText;\r
- else\r
- sButton+=getImage(goShow,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="hide")\r
- {\r
- if(!isTopicOnly()&&!gbOpera6)\r
- {\r
- var sTitle="Hide Navigation Component";\r
- goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goHide.sText;\r
- else\r
- sButton+=getImage(goHide,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="shownav")\r
- {\r
- if(isShowHideEnable())\r
- {\r
- var sTitle="Show Navigation Component";\r
- goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goShowNav.sText;\r
- else\r
- sButton+=getImage(goShowNav,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="hidenav")\r
- {\r
- if(isShowHideEnable())\r
- {\r
- var sTitle="Hide Navigation Component";\r
- goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goHideNav.sText;\r
- else\r
- sButton+=getImage(goHideNav,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="synctoc")\r
- {\r
- if(gaPaths.length>0)\r
- {\r
- var sTitle="Sync TOC";\r
- goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goSync.sText;\r
- else\r
- sButton+=getImage(goSync,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="websearch")\r
- {\r
- if(gsSearchFormHref.length>0)\r
- {\r
- var sTitle="WebSearch";\r
- goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
- sButton="<a title=\""+sTitle+"\" class=\"whtbtnwebsearch\" href=\""+gsSearchFormHref+"\">";\r
- if(nStyle==BTN_TEXT)\r
- sButton+=goWebSearch.sText;\r
- else\r
- sButton+=getImage(goWebSearch,sTitle);\r
- sButton+="</a>";\r
- }\r
- }\r
- else if(sType=="searchform")\r
- {\r
- gaButtons[nBtn]="NeedSearchForm";\r
- gaTypes[nBtn]=sType;\r
- }\r
- if(sButton.length!=0)\r
- {\r
- if(nStyle==BTN_TEXT)\r
- sButton+=" ";\r
- gaButtons[nBtn]="<td>"+sButton+"</td>";\r
- gaTypes[nBtn]=sType;\r
- }\r
-}\r
-\r
-function isSyncEnabled()\r
-{\r
- if(!gbCheckSync)\r
- {\r
- var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);\r
- if(SendMessage(oMsg))\r
- {\r
- gbSyncEnabled=oMsg.oParam;\r
- }\r
- gbCheckSync=true;\r
- }\r
- return gbSyncEnabled;\r
-}\r
-\r
-function isInPopup()\r
-{\r
- return (window.name.indexOf("BSSCPopup")!=-1);\r
-}\r
-\r
-function getIntopicBar(sAlign)\r
-{\r
- var sHTML="";\r
- if(gaButtons.length>0)\r
- {\r
- sHTML+="<div align="+sAlign+">";\r
-\r
- sHTML+="<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";\r
- for(var i=0;i<gaButtons.length;i++)\r
- {\r
- if(gaTypes[i]!="synctoc"||isSyncEnabled())\r
- {\r
- if(gaButtons[i]=="NeedSearchForm")\r
- sHTML+=getSearchFormHTML();\r
- else\r
- sHTML+=gaButtons[i];\r
- }\r
- }\r
- sHTML+="</tr></table>";\r
-\r
- sHTML+="</div>";\r
- }\r
- return sHTML;\r
-}\r
-\r
-\r
-function writeIntopicBar(nAligns)\r
-{\r
- if(isInPopup()) return;\r
- if(gaButtons.length>0)\r
- {\r
- var sHTML="";\r
- if(nAligns!=0)\r
- {\r
- sHTML+="<table width=100%><tr>"\r
- if(nAligns&1)\r
- sHTML+="<td width=33%>"+getIntopicBar("left")+"</td>";\r
- if(nAligns&2)\r
- sHTML+="<td width=34%>"+getIntopicBar("center")+"</td>";\r
- if(nAligns&4)\r
- sHTML+="<td width=33%>"+getIntopicBar("right")+"</td>";\r
- sHTML+="</tr></table>";\r
- document.write(sHTML);\r
- }\r
- }\r
-}\r
-\r
-function sendAveInfoOut()\r
-{\r
- if(!isInPopup())\r
- setTimeout("sendAveInfo();",100);\r
-}\r
-\r
-function sendAveInfo()\r
-{\r
- var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues);\r
- SendMessage(oMsg);\r
-}\r
-\r
-\r
-function onNext()\r
-{\r
- var oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-function onPrev()\r
-{\r
- var oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-function createSyncInfo()\r
-{\r
- var oParam=new Object();\r
- if(gsPPath.length==0)\r
- gsPPath=_getPath(document.location.href);\r
- oParam.sPPath=gsPPath;\r
- oParam.sTPath=document.location.href;\r
- oParam.aPaths=gaPaths;\r
- return oParam;\r
-}\r
-\r
-function syncWithShow()\r
-{\r
- if(isTopicOnly())\r
- show();\r
- else\r
- {\r
- sync();\r
- showTocPane();\r
- }\r
-}\r
-\r
-function showTocPane()\r
-{\r
- var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-function sendSyncInfo()\r
-{\r
- if(!isInPopup())\r
- {\r
- var oParam=null;\r
- if(gaPaths.length>0)\r
- {\r
- oParam=createSyncInfo();\r
- }\r
- var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam);\r
- SendMessage(oMsg);\r
- }\r
-}\r
-\r
-function sendInvalidSyncInfo()\r
-{\r
- if(!isInPopup())\r
- {\r
- var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null);\r
- SendMessage(oMsg);\r
- }\r
-}\r
-\r
-function enableWebSearch(bEnable)\r
-{\r
- if(!isInPopup())\r
- {\r
- var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable);\r
- SendMessage(oMsg);\r
- }\r
-}\r
-\r
-function autoSync(nSync)\r
-{\r
- if(nSync==0) return;\r
- if(isInPopup()) return;\r
- if(isOutMostTopic())\r
- sync();\r
-}\r
-\r
-function isOutMostTopic()\r
-{\r
- if(gnOutmostTopic==-1)\r
- {\r
- var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null);\r
- if(SendMessage(oMessage))\r
- gnOutmostTopic=0;\r
- else\r
- gnOutmostTopic=1;\r
- }\r
- return (gnOutmostTopic==1);\r
-}\r
-\r
-function sync()\r
-{\r
- if(gaPaths.length>0)\r
- {\r
- var oParam=createSyncInfo();\r
- var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);\r
- SendMessage(oMessage);\r
- }\r
-}\r
-\r
-\r
-function avenueInfo(sName,sPrev,sNext)\r
-{\r
- this.sName=sName;\r
- this.sPrev=sPrev;\r
- this.sNext=sNext;\r
-}\r
-\r
-function getCurrentAvenue()\r
-{\r
- var oParam=new Object();\r
- oParam.sAvenue=null;\r
- var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam);\r
- SendMessage(oMessage);\r
- return oParam.sAvenue;\r
-}\r
-\r
-function unRegisterListener()\r
-{\r
- sendInvalidSyncInfo();\r
- enableWebSearch(false);\r
- if(whtopic_foldUnload)\r
- whtopic_foldUnload();\r
-}\r
-\r
-function onSendMessage(oMsg)\r
-{\r
- var nMsgId=oMsg.nMessageId;\r
- if(nMsgId==WH_MSG_GETAVIAVENUES)\r
- {\r
- oMsg.oParam.aAvenues=gaAvenues;\r
- return false;\r
- }\r
- else if(nMsgId==WH_MSG_GETTOCPATHS)\r
- {\r
- if(isOutMostTopic())\r
- {\r
- oMsg.oParam.oTocInfo=createSyncInfo();\r
- return false; \r
- }\r
- else\r
- return true;\r
- }\r
- else if(nMsgId==WH_MSG_NEXT)\r
- {\r
- goAvenue(true);\r
- }\r
- else if(nMsgId==WH_MSG_PREV)\r
- {\r
- goAvenue(false);\r
- }\r
- else if(nMsgId==WH_MSG_WEBSEARCH)\r
- {\r
- websearch();\r
- }\r
- return true;\r
-}\r
-\r
-function goAvenue(bNext)\r
-{\r
- var sTopic=null;\r
- var sAvenue=getCurrentAvenue();\r
- var nAvenue=-1;\r
- if(sAvenue!=null&&sAvenue!="")\r
- {\r
- for(var i=0;i<gaAvenues.length;i++)\r
- {\r
- if(gaAvenues[i].sName==sAvenue)\r
- {\r
- nAvenue=i;\r
- break;\r
- }\r
- }\r
- if(nAvenue!=-1)\r
- {\r
- if(bNext)\r
- sTopic=gaAvenues[nAvenue].sNext;\r
- else\r
- sTopic=gaAvenues[nAvenue].sPrev;\r
- }\r
- }\r
- else\r
- {\r
- for(var i=0;i<gaAvenues.length;i++)\r
- {\r
- if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)\r
- {\r
- sTopic=gaAvenues[i].sNext;\r
- break;\r
- }\r
- else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)\r
- {\r
- sTopic=gaAvenues[i].sPrev;\r
- break;\r
- }\r
- }\r
- }\r
- \r
- if(sTopic!=null&&sTopic!="")\r
- {\r
- if(gsPPath!=null&&gsPPath!="")\r
- {\r
- sFullTopicPath=_getFullPath(gsPPath,sTopic);\r
- document.location=sFullTopicPath;\r
- }\r
- }\r
-}\r
-\r
-function canGo(bNext)\r
-{\r
- for(var i=0;i<gaAvenues.length;i++)\r
- {\r
- if((gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)||\r
- (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext))\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-function show()\r
-{\r
- if(gsStartPage!="")\r
- window.location=gsStartPage+"#"+gsRelCurPagePath;\r
-}\r
-\r
-function hide()\r
-{\r
- if(goFrame!=null)\r
- {\r
- goFrame.location=window.location;\r
- }\r
-}\r
-\r
-function isTopicOnly()\r
-{\r
- if(gnTopicOnly==-1)\r
- {\r
- var oParam=new Object();\r
- oParam.oFrame=null;\r
- var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam);\r
- if(SendMessage(oMsg))\r
- {\r
- goFrame=oParam.oFrame;\r
- gnTopicOnly=0;\r
- }\r
- else\r
- gnTopicOnly=1;\r
- }\r
- if(gnTopicOnly==1)\r
- return true;\r
- else\r
- return false;\r
-}\r
-\r
-function websearch()\r
-{\r
- if(gbNav4)\r
- {\r
- if(document.ehelpform)\r
- document.ehelpform.submit();\r
- }\r
- else\r
- {\r
- if(window.ehelpform)\r
- window.ehelpform.submit();\r
- }\r
-}\r
-\r
-function addSearchFormHref(sHref)\r
-{\r
- gsSearchFormHref=sHref;\r
- enableWebSearch(true);\r
-}\r
-\r
-function searchB(nForm)\r
-{\r
- var sValue=eval("document.searchForm"+nForm+".searchString.value");\r
- var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue);\r
- SendMessage(oMsg);\r
-}\r
-\r
-function getSearchFormHTML()\r
-{\r
- var sHTML="";\r
- gnForm++;\r
- var sFormName="searchForm"+gnForm;\r
- var sButton="<form name=\""+sFormName+"\" method=\"POST\" action=\"javascript:searchB("+gnForm+")\">"\r
- sButton+="<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";\r
- if(""=="text")\r
- {\r
- sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\"></a>";\r
- }\r
- else if(""=="image")\r
- {\r
- sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\">"\r
- sButton+="<img src=\"\" border=0></a>";\r
- }\r
- sButton+="</form>";\r
- sHTML="<td align=\"center\">"+sButton+"</td>";\r
- return sHTML;\r
-}\r
-\r
-function showHidePane(bShow)\r
-{\r
- var oMsg=null;\r
- if(bShow)\r
- oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
- else\r
- oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);\r
- SendMessage(oMsg);\r
-}\r
-\r
-function isShowHideEnable()\r
-{\r
- if(gbIE4)\r
- return true;\r
- else\r
- return false;\r
-}\r
-\r
-\r
-function PickupDialog_Invoke()\r
-{\r
- if(!gbIE4||gbMac)\r
- {\r
- if(typeof(_PopupMenu_Invoke)=="function")\r
- return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);\r
- }\r
- else\r
- {\r
- if(PickupDialog_Invoke.arguments.length>2)\r
- {\r
- var sPickup="whskin_pickup.htm";\r
- var sPickupPath=gsPPath+sPickup;\r
- if(gbIE4)\r
- {\r
- var sFrame=PickupDialog_Invoke.arguments[1];\r
- var aTopics=new Array();\r
- for(var i=2;i<PickupDialog_Invoke.arguments.length;i+=2)\r
- {\r
- var j=aTopics.length;\r
- aTopics[j]=new Object();\r
- aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];\r
- aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];\r
- }\r
-\r
- if(aTopics.length>1)\r
- {\r
- var nWidth=300;\r
- var nHeight=180;\r
- var nScreenWidth=screen.width;\r
- var nScreenHeight=screen.height;\r
- var nLeft=(nScreenWidth-nWidth)/2;\r
- var nTop=(nScreenHeight-nHeight)/2;\r
- if(gbIE4)\r
- {\r
- var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");\r
- if(vRet)\r
- {\r
- var sURL=vRet.m_url;\r
- if(sFrame)\r
- window.open(sURL,sFrame);\r
- else\r
- window.open(sURL,"_self");\r
- }\r
- }\r
- }\r
- else if(aTopics.length==1)\r
- {\r
- var sURL=aTopics[0].m_sURL\r
- if(sFrame)\r
- window.open(sURL,sFrame);\r
- else\r
- window.open(sURL,"_self");\r
- }\r
- }\r
- }\r
- }\r
-}\r
-\r
-if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
-{\r
- RegisterListener("bsscright",WH_MSG_GETAVIAVENUES);\r
- RegisterListener("bsscright",WH_MSG_GETTOCPATHS);\r
- RegisterListener("bsscright",WH_MSG_NEXT);\r
- RegisterListener("bsscright",WH_MSG_PREV);\r
- RegisterListener("bsscright",WH_MSG_WEBSEARCH);\r
- if(gbMac&&gbIE4)\r
- {\r
- if(typeof(window.onunload)!="unknown")\r
- if(window.onunload.toString!=unRegisterListener.toString)\r
- whtopic_foldUnload=window.onunload;\r
- }\r
- else\r
- {\r
- if(window.onunload)\r
- if(window.onunload.toString!=unRegisterListener.toString)\r
- whtopic_foldUnload=window.onunload;\r
- }\r
- window.onunload=unRegisterListener;\r
- setButtonFont("show","","","","","","");\r
-setButtonFont("hide","","","","","","");\r
-\r
- gbWhTopic=true;\r
-}\r
-else\r
- document.location.reload();
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.004\r
-var gsFileName="";\r
-var gsDivName="";\r
-var xmlDoc=null;\r
-var sdocPath=null;\r
-var gsInsertBeforeEndHTML="";\r
-var sReplaceStringsSrc=new Array();\r
-var gsDivName="dataDiv";\r
-var gnLoadDivNum=0;\r
-sReplaceStringsSrc[0]="&";\r
-sReplaceStringsSrc[1]=">";\r
-sReplaceStringsSrc[2]="<";\r
-sReplaceStringsSrc[3]=""";\r
-sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
-sReplaceStringsSrc[5]=" ";\r
-\r
-var sReplaceStringsDst=new Array();\r
-sReplaceStringsDst[0]="&";\r
-sReplaceStringsDst[1]=">";\r
-sReplaceStringsDst[2]="<";\r
-sReplaceStringsDst[3]="\"";\r
-sReplaceStringsDst[4]=String.fromCharCode(128);\r
-sReplaceStringsDst[5]=" ";\r
-var goHighLighted=null;\r
-\r
-function _getRelativePath(strParentPath,strCurrentPath)\r
-{\r
- if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath);\r
- strParentPath=_replaceSlash(strParentPath);\r
- strParentPath=_getPath(strParentPath);\r
- strCurrentPath=_replaceSlash(strCurrentPath);\r
- strCurrentPath=_getPath(strCurrentPath);\r
- for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
- {\r
- if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
- break;\r
- }\r
- \r
- strParentPath=strParentPath.substring(i);\r
- strCurrentPath=strCurrentPath.substring(i); \r
- \r
- var nPathPos=0;\r
- while(nPathPos!=-1)\r
- {\r
- nPathPos=strParentPath.indexOf("/");\r
- if(nPathPos!=-1)\r
- {\r
- strParentPath=strParentPath.substring(nPathPos+1);\r
- strCurrentPath="../"+strCurrentPath;\r
- }\r
- }\r
- return strCurrentPath;\r
-}\r
-\r
-function _getRelativeFileName(strParentPath,strCurrentPath)\r
-{\r
- strParentPath=_replaceSlash(strParentPath);\r
- strParentPath=_getPath(strParentPath);\r
- strCurrentPath=_replaceSlash(strCurrentPath);\r
- for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
- {\r
- if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
- break;\r
- }\r
- \r
- strParentPath=strParentPath.substring(i);\r
- strCurrentPath=strCurrentPath.substring(i); \r
- \r
- var nPathPos=0;\r
- while(nPathPos!=-1)\r
- {\r
- nPathPos=strParentPath.indexOf("/");\r
- if(nPathPos!=-1)\r
- {\r
- strParentPath=strParentPath.substring(nPathPos+1);\r
- strCurrentPath="../"+strCurrentPath;\r
- }\r
- }\r
- return strCurrentPath;\r
-}\r
-\r
-function _isAbsPathToHost(sPath)\r
-{\r
- return (sPath.indexOf("/")==0);\r
-}\r
-\r
-function _getHost(sPath)\r
-{\r
- var nPos=sPath.indexOf("//");\r
- if(nPos>0)\r
- {\r
- var nPosx=sPath.indexOf("/",nPos+2);\r
- if(nPosx>0)\r
- return sPath.substring(0,nPosx);\r
- else\r
- return sPath;\r
- }\r
- return sPath;\r
-}\r
-\r
-function _getFullPath(sPath,sRelPath)\r
-{\r
- if(_isAbsPath(sRelPath))\r
- return sRelPath;\r
- else if(_isAbsPathToHost(sRelPath))\r
- return _getHost(sPath)+sRelPath;\r
- else\r
- {\r
- var sFullPath=sPath;\r
- var nPathPos=0;\r
- while(nPathPos!=-1)\r
- {\r
- var nPathPos=sRelPath.indexOf("../");\r
- if(nPathPos!=-1)\r
- {\r
- sRelPath=sRelPath.substring(nPathPos+3);\r
- sFullPath=sFullPath.substring(0,sFullPath.length-1);\r
- var nPos2=sFullPath.lastIndexOf("/");\r
- if(nPos2!=-1)\r
- sFullPath=sFullPath.substring(0,nPos2+1);\r
- else\r
- break;\r
- }\r
- }\r
- sFullPath+=sRelPath;\r
- return sFullPath;\r
- } \r
-}\r
-\r
-function _isAbsPath(strPath)\r
-{\r
- var strUpper=strPath.toUpperCase();\r
- return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);\r
-}\r
-\r
-function _replaceSlash(strURL)\r
-{ \r
- var re=new RegExp("\\\\","g");\r
- var strReplacedURL=strURL.replace(re,"/");\r
- return strReplacedURL;\r
-}\r
-\r
-function _getPath(strURL)\r
-{\r
- pathpos=strURL.lastIndexOf("/");\r
- if(pathpos>0)\r
- return strURL.substring(0,pathpos+1);\r
- else\r
- return "";\r
-}\r
-\r
-function removeItemFromArray(oArray,i)\r
-{\r
- if(oArray.length&&i>=0&&i<oArray.length)\r
- {\r
- var len=oArray.length;\r
- for(var s=i;s<len-1;s++)\r
- oArray[s]=oArray[s+1];\r
- oArray.length=len-1;\r
- }\r
-}\r
-\r
-function insertItemIntoArray(oArray,i,obj)\r
-{\r
- if(oArray.length&&i>=0&&i<=oArray.length)\r
- {\r
- var len=oArray.length;\r
- for(var s=len;s>i;s--)\r
- oArray[s]=oArray[s-1];\r
- oArray[i]=obj; \r
- }\r
-}\r
-\r
-function loadData(sFileName)\r
-{\r
- var i=gnLoadDivNum;\r
- var sName=gsDivName+gnLoadDivNum++;\r
- loadData_2(sFileName,sName);\r
-}\r
-\r
-function loadData_2(sFileName,sDivName)\r
-{\r
- if(!getElement(sDivName))\r
- {\r
- if(!insertDataDiv(sDivName))\r
- {\r
- gsFileName=sFileName;\r
- gsDivName=sDivName;\r
- return;\r
- }\r
- }\r
- var sHTML="";\r
- if(gbMac)\r
- sHTML+="<iframe src=\""+sFileName+"\"></iframe>";\r
- else\r
- sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";\r
- \r
- var oDivCon=getElement(sDivName);\r
- if(oDivCon)\r
- {\r
- if(gbNav6)\r
- {\r
- if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0)\r
- {\r
- oDivCon.getElementsByTagName("iFrame")[0].src=sFileName;\r
- }\r
- else\r
- oDivCon.innerHTML=sHTML;\r
- }\r
- else\r
- oDivCon.innerHTML=sHTML;\r
- }\r
-}\r
-\r
-function loadDataXML(sFileName)\r
-{\r
- var sCurrentDocPath=_getPath(document.location.href);\r
- sdocPath=_getFullPath(sCurrentDocPath,sFileName);\r
- if(gbIE5)\r
- {\r
- xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
- xmlDoc.async=true;\r
- xmlDoc.onreadystatechange=checkState;\r
- if(document.body!=null)\r
- xmlDoc.load(sdocPath);\r
- }\r
- else if(gbNav6)\r
- {\r
- xmlDoc=document.implementation.createDocument("","",null);\r
- xmlDoc.addEventListener("load",initializeData,false);\r
- xmlDoc.load(sdocPath,"text/xml");\r
- }\r
-}\r
-\r
-function initializeData()\r
-{\r
- if(xmlDoc!=null)\r
- putDataXML(xmlDoc,sdocPath);\r
-}\r
-\r
-function checkState()\r
-{\r
- if(xmlDoc!=null)\r
- {\r
- var state=xmlDoc.readyState;\r
- if(state==4)\r
- {\r
- var err=xmlDoc.parseError;\r
- if(err.errorCode==0)\r
- putDataXML(xmlDoc,sdocPath);\r
- else\r
- onLoadXMLError();\r
- }\r
- }\r
-}\r
-\r
-function insertDataDiv(sName)\r
-{\r
- var sHTML="";\r
- if(gbMac)\r
- sHTML+="<div id="+sName+" style=\"display:none;\"></div>";\r
- else\r
- sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";\r
- if((gbIE5||gbNav6)&&document.body)\r
- document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
- else\r
- {\r
- gsInsertBeforeEndHTML=sHTML;\r
- setTimeout("insertWhenBodyReady();",100);\r
- return false;\r
- }\r
- return true;\r
-}\r
-\r
-function insertWhenBodyReady()\r
-{\r
- if(gsInsertBeforeEndHTML=="") return;\r
- if(document.body)\r
- {\r
- document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);\r
- gsInsertBeforeEndHTML="";\r
- loadData_2(gsFileName,gsDivName);\r
- }\r
- else\r
- {\r
- setTimeout("insertWhenBodyReady();",100);\r
- }\r
-}\r
-\r
-function window_BUnload()\r
-{\r
- for(var i=0;i<gnLoadDivNum;i++)\r
- {\r
- var oDivCon=getElement(gsDivName+i);\r
- if(oDivCon)\r
- oDivCon.innerHTML="";\r
- }\r
-}\r
-\r
-function removeThis(obj)\r
-{\r
- if(obj.parentNode)\r
- obj.parentNode.removeChild(obj);\r
- else\r
- obj.outerHTML="";\r
-}\r
-\r
-function getParentNode(obj)\r
-{\r
- if(obj.parentNode)\r
- return obj.parentNode;\r
- else if(obj.parentElement)\r
- return obj.parentElement;\r
- return null;\r
-}\r
-\r
-function getElement(sID)\r
-{\r
- if(document.getElementById)\r
- return document.getElementById(sID);\r
- else if(document.all)\r
- return document.all(sID);\r
- return null;\r
-}\r
-\r
-function getChildrenByTag(obj,sTagName)\r
-{\r
- if(obj.getElementsByTagName)\r
- {\r
- var aChildren=new Array();\r
- var aElements=getElementsByTag(obj,sTagName);\r
- if(aElements!=null)\r
- {\r
- for(var i=0;i<aElements.length;i++)\r
- {\r
- if(aElements[i].parentNode==obj)\r
- aChildren[aChildren.length]=aElements[i];\r
- }\r
- return aChildren;\r
- }\r
- else\r
- return new Array();\r
- }\r
- else if(obj.children)\r
- return obj.children.tags(sTagName);\r
-}\r
-\r
-function getElementsByTag(obj,sTagName)\r
-{\r
- if(obj.getElementsByTagName)\r
- return obj.getElementsByTagName(sTagName);\r
- else if(obj.all)\r
- return obj.all.tags(sTagName);\r
- return null;\r
-}\r
-\r
-function _htmlToText(sHTML)\r
-{\r
- if(sHTML==null) return null;\r
- var sText=sHTML;\r
- for(var i=0;i<sReplaceStringsSrc.length;i++)\r
- {\r
- var re=new RegExp(sReplaceStringsSrc[i],"g");\r
- sText=sText.replace(re,sReplaceStringsDst[i]);\r
- } \r
- return sText;\r
-}\r
-\r
-function _textToHtml_nonbsp(sText)\r
-{\r
- if(sText==null) return null;\r
- var sHTML=sText;\r
- for(var i=0;i<sReplaceStringsSrc.length-1;i++)\r
- {\r
- var re=new RegExp(sReplaceStringsDst[i],"g");\r
- sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
- } \r
- return sHTML;\r
-}\r
-\r
-function _textToHtml(sText)\r
-{\r
- if(sText==null) return null;\r
- var sHTML=sText;\r
- for(var i=0;i<sReplaceStringsSrc.length;i++)\r
- {\r
- var re=new RegExp(sReplaceStringsDst[i],"g");\r
- sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
- } \r
- return sHTML;\r
-}\r
-\r
-\r
-function getInnerText(obj)\r
-{\r
- var renbsp2sp=new RegExp("\xa0","g");\r
- if(obj.innerText)\r
- {\r
- var sText=obj.innerText;\r
- sText=sText.replace(renbsp2sp," ");\r
- return sText;\r
- }\r
- else\r
- {\r
- if(obj.nodeValue)\r
- {\r
- var sValue=obj.nodeValue;\r
- sValue=sValue.replace(renbsp2sp," ");\r
- return sValue;\r
- }\r
- else\r
- {\r
- var sText="";\r
- var oChild=obj.firstChild;\r
- while(oChild!=null)\r
- {\r
- sText+=getInnerText(oChild);\r
- oChild=oChild.nextSibling;\r
- }\r
- return sText;\r
- }\r
- }\r
- \r
-}\r
-\r
-function HighLightElement(obj,sHighLightColor,sNormalColor)\r
-{\r
- if(obj!=null)\r
- {\r
- resetHighLight(sNormalColor);\r
- if (obj.style)\r
- obj.style.backgroundColor=sHighLightColor;\r
- goHighLighted=obj;\r
- }\r
-}\r
-\r
-function resetHighLight(sNormalColor)\r
-{\r
- if(goHighLighted!=null)\r
- {\r
- if (goHighLighted.style)\r
- goHighLighted.style.backgroundColor=sNormalColor;\r
- goHighLighted=null;\r
- }\r
-}\r
-\r
-function whFont(sName,sSize,sColor,sStyle,sWeight,sDecoration)\r
-{\r
- this.sName=sName;\r
- this.sSize=sSize;\r
- this.sColor=sColor;\r
- this.sStyle=sStyle;\r
- this.sWeight=sWeight;\r
- this.sDecoration=sDecoration;\r
-}\r
-\r
-function getFontStyle(oFont)\r
-{\r
- var sStyle="";\r
- if(oFont)\r
- {\r
- sStyle+="font-family:"+oFont.sName+";";\r
- if(gbMac)\r
- {\r
- var nSize=parseInt(oFont.sSize);\r
- if(gbIE5)\r
- nSize+=2;\r
- else\r
- nSize+=4;\r
- sStyle+="font-size:"+nSize+"pt;";\r
- }\r
- else\r
- sStyle+="font-size:"+oFont.sSize+";";\r
- \r
- sStyle+="font-style:"+oFont.sStyle+";";\r
- sStyle+="font-weight:"+oFont.sWeight+";";\r
- sStyle+="text-decoration:"+oFont.sDecoration+";";\r
- sStyle+="color:"+oFont.sColor+";";\r
- }\r
- return sStyle;\r
-}\r
-\r
-function _browserStringToText(sBStr)\r
-{\r
- var sText="";\r
- // change %xxx back to the real char.\r
- var nPos=sBStr.indexOf('%');\r
- while(nPos!=-1)\r
- {\r
- sText+=sBStr.substring(0,nPos);\r
- sBStr=sBStr.substring(nPos+1);\r
- var sNum="";\r
- var i=0;\r
- while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')\r
- {\r
- sNum+=sBStr.charAt(i++); \r
- }\r
- if(sNum!=""){\r
- var nNum=parseInt(sNum,16);\r
- sText+=String.fromCharCode(nNum);\r
- sBStr=sBStr.substring(i);\r
- }\r
- nPos=sBStr.indexOf('%');\r
- }\r
- sText+=sBStr;\r
- return sText;\r
-}\r
-\r
-function excapeSingleQuotandSlash(str)\r
-{\r
- if(str==null) return null;\r
- var nPos=0;\r
- var sRes="";\r
- var nPosNew=str.indexOf("\\",nPos);\r
- while(nPosNew!=-1){\r
- sRes+=str.substring(nPos,nPosNew+1)+"\\";\r
- nPos=nPosNew+1;\r
- nPosNew=str.indexOf("\\",nPos);\r
- }\r
- if(nPos<str.length)\r
- sRes+=str.substring(nPos);\r
- var re=new RegExp("'","g");\r
- sRes=sRes.replace(re,"\\'");\r
- return sRes;\r
-}\r
-\r
-var gbWhUtil=true;
\ No newline at end of file
+++ /dev/null
-// WebHelp 5.10.006\r
-var gbNav=false;\r
-var gbNav6=false;\r
-var gbNav61=false;\r
-var gbNav7=false;\r
-var gbNav4=false;\r
-var gbIE4=false;\r
-var gbIE=false;\r
-var gbIE5=false;\r
-var gbIE55=false;\r
-var gbOpera6=false;\r
-var gbOpera7=false;\r
-var gbKonqueror3=false;\r
-\r
-var gAgent=navigator.userAgent.toLowerCase();\r
-var gbMac=(gAgent.indexOf("mac")!=-1);\r
-var gbSunOS=(gAgent.indexOf("sunos")!=-1);\r
-var gbOpera=(gAgent.indexOf("opera")!=-1);\r
-var gbKonqueror=(gAgent.indexOf("konqueror")!= -1);\r
-var gbSafari=(gAgent.indexOf("safari")!= -1);\r
-var gbWindows=((gAgent.indexOf('win')!= -1)||(gAgent.indexOf('16bit')!= -1));\r
-var gbMozilla=((gAgent.indexOf('gecko')!=-1) && (gAgent.indexOf('netscape')==-1));\r
-\r
-\r
-var gVersion=navigator.appVersion.toLowerCase();\r
-\r
-var gnVerMajor=parseInt(gVersion);\r
-var gnVerMinor=parseFloat(gVersion);\r
-\r
-if(!gbOpera&&!gbKonqueror&&!gbSafari) // opera can mimic IE or Netscape by settings.\r
-{\r
- gbIE=(navigator.appName.indexOf("Microsoft")!=-1);\r
- gbNav=(gAgent.indexOf('mozilla')!=-1) && ((gAgent.indexOf('spoofer')==-1) && (gAgent.indexOf('compatible')==-1));\r
- if(gnVerMajor>=4)\r
- {\r
- if(navigator.appName=="Netscape")\r
- {\r
- gbNav4=true;\r
- if(gnVerMajor>=5)\r
- gbNav6=true;\r
- }\r
- gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);\r
- }\r
- if(gbNav6)\r
- {\r
- var nPos=gAgent.indexOf("gecko");\r
- if(nPos!=-1)\r
- {\r
- var nPos2=gAgent.indexOf("/", nPos);\r
- if(nPos2!=-1)\r
- {\r
- var nVersion=parseFloat(gAgent.substring(nPos2+1));\r
- if(nVersion>=20010726)\r
- {\r
- gbNav61=true;\r
- if (nVersion>=20020823)\r
- gbNav7=true;\r
- }\r
- }\r
- }\r
- }else if(gbIE4)\r
- {\r
- var nPos=gAgent.indexOf("msie");\r
- if(nPos!=-1)\r
- {\r
- var nVersion=parseFloat(gAgent.substring(nPos+5));\r
- if(nVersion>=5)\r
- {\r
- gbIE5=true;\r
- if(nVersion>=5.5)\r
- gbIE55=true;\r
- }\r
- }\r
- }\r
-}\r
-else if (gbOpera)\r
-{\r
- var nPos = gAgent.indexOf("opera");\r
- if(nPos!=-1)\r
- {\r
- var nVersion=parseFloat(gAgent.substring(nPos+6));\r
- if(nVersion>=6)\r
- {\r
- gbOpera6=true;\r
- if(nVersion>=7)\r
- gbOpera7=true;\r
- }\r
- }\r
-}\r
-else if (gbKonqueror)\r
-{\r
- var nPos = gAgent.indexOf("konqueror");\r
- if(nPos!=-1)\r
- {\r
- var nVersion = parseFloat(gAgent.substring(nPos+10));\r
- if (nVersion >= 3)\r
- {\r
- gbKonqueror3=true;\r
- }\r
- }\r
-}\r
-\r
-var gbWhVer=true;
\ No newline at end of file
EXTRA_DIST+=GUI
+doxygen=@DOXYGEN@
+
usr_docs:
- cp -fr $(srcdir)/GUI ./
- -find $(PWD) -name CVS -prune -exec rm -rf {} \;
+ cd ./GUI; \
+ echo "Running doxygen in directory: "`pwd`; \
+ $(doxygen) ./doxyfile;
docs: usr_docs
clean-local:
- rm -fr `ls | grep -v "Makefile"`
- rm -fr GUI
+ cd ./GUI; \
+ rm -fr `ls | grep -v "doxyfile"`
+ rm -fr `ls | grep -vE "Makefile|GUI"`
install-data-local: usr_docs
mkdir -p $(docdir)/gui
uninstall-local:
rm -rf $(docdir)/gui/GUI
+
+docguidir=$(docdir)/gui/GUI
+
+nodist_docgui_DATA= GUI/doxyfile
+GUI/doxyfile: GUI/doxyfile.in
+EXTRA_DIST+= GUI/doxyfile.in
cp -fr $(srcdir)/GUI ./INPUT; \
cp -f ./GUI/doxyfile ./INPUT; \
cd INPUT; \
- sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
+ sed 's|../../../share/salome|$(top_srcdir)|' ./doxyfile > ./doxyfile1; \
sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
echo "DOXYGEN SUPPORT PYTHON - @DOXYGEN_WITH_PYTHON@"; \
if( test "x@DOXYGEN_WITH_PYTHON@" = "xyes"); then \
sed 's|python_extension_must_be_here|*.py|' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
- $(doxygen) -u ./doxyfile1; \
+ $(DOXYGEN) -u ./doxyfile1; \
else \
sed 's|python_extension_must_be_here||' ./doxyfile1 > ./doxyfile2; \
mv -f doxyfile2 doxyfile1; \
fi; \
mv -f doxyfile1 doxyfile; \
echo "Running doxygen in directory:"`pwd`; \
- $(doxygen) ./doxyfile; \
+ $(DOXYGEN) ./doxyfile; \
cd ../; \
- cp -fr $(srcdir)/GUI/sources/ GUI ; \
+ cp -fr $(srcdir)/GUI/sources/ GUI/ ; \
rm -fr INPUT
doctuidir=$(docdir)/tui/GUI
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch.hxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#ifndef CASCATCH_HXX
+#define CASCATCH_HXX
+
+#include <Standard_Failure.hxx>
+#include <Standard_ErrorHandler.hxx>
+
+
+#ifdef try
+# undef try
+#endif
+
+#ifdef catch
+# undef catch
+#endif
+
+#ifdef NO_CXX_EXCEPTION
+# if defined(DO_ABORT)
+# define CASCatch_TRY \
+ Standard_ErrorHandler _Function; \
+ K_SETJMP = 1 ; \
+ if(DoesNotAbort(_Function))
+# else // ! DO_ABORT
+# define CASCatch_TRY \
+ Standard_ErrorHandler _Function; \
+ if(DoesNotAbort(_Function))
+# endif // DO_ABORT
+# define CASCatch_CATCH(Error) \
+ else if(_Function.Catches(STANDARD_TYPE(Error)))
+#else // ! NO_CXX_EXCEPTION
+# define CASCatch_TRY try
+# define CASCatch_CATCH catch
+#endif // NO_CXX_EXCEPTION
+
+
+#endif // CASCATCH_HXX
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_CatchSignals.cxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#include "CASCatch_CatchSignals.hxx"
+
+#include "CASCatch_Failure.hxx"
+#include "CASCatch_ErrorHandler.hxx"
+#include <TCollection_AsciiString.hxx>
+
+#define MAX_HANDLER_NUMBER 6
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_CatchSignals
+ */
+//================================================================================
+CASCatch_CatchSignals::CASCatch_CatchSignals()
+ :myIsActivated(Standard_False)
+{
+
+ Standard_Integer i = 0;
+ for(; i<=MAX_HANDLER_NUMBER; i++)
+ mySigStates[i] = NULL;
+}
+
+#ifndef WNT
+
+//================================ UNIX part ==================================================
+
+#include <OSD.hxx>
+#include <OSD_WhoAmI.hxx>
+#include <OSD_SIGHUP.hxx>
+#include <OSD_SIGINT.hxx>
+#include <OSD_SIGQUIT.hxx>
+#include <OSD_SIGILL.hxx>
+#include <OSD_SIGKILL.hxx>
+#include <OSD_SIGBUS.hxx>
+#include <OSD_SIGSEGV.hxx>
+#include <OSD_SIGSYS.hxx>
+#ifndef LIN
+#include <exception.h>
+#endif
+
+//==============================
+typedef void (ACT_SIGIO_HANDLER)(void) ;
+
+ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ;
+
+typedef void (* SIG_PFV) (int);
+
+#ifdef SUN
+# include <floatingpoint.h>
+#endif
+
+#ifdef SOLARIS
+# include <floatingpoint.h>
+# include <sys/machsig.h>
+# include <stdlib.h>
+# include <stdio.h>
+#endif
+
+#include <signal.h>
+#include <sys/signal.h>
+
+#ifdef LIN
+# include <stdlib.h>
+# include <stdio.h>
+#else
+# ifdef SA_SIGINFO
+# ifndef AIX
+# include <sys/siginfo.h>
+# endif
+# endif
+#endif
+
+
+#ifdef IRIX
+# include <sigfpe.h>
+# include <sys/siginfo.h>
+#endif
+
+
+//================================================================================
+/*! Private -
+ * \brief universal handler for signals
+ */
+//================================================================================
+static void Handler(const OSD_Signals theSig, const OSD_Signals)
+{
+ sigset_t set;
+ sigemptyset(&set);
+ sigaddset(&set, theSig);
+ sigprocmask(SIG_UNBLOCK, &set, NULL) ;
+
+ TCollection_AsciiString aMessage(theSig);
+ aMessage+=" signal detected";
+
+ CASCatch_Failure::Raise(aMessage.ToCString());
+}
+
+
+#ifdef SA_SIGINFO
+//================================================================================
+/*! Private -
+ * \brief handler for SIGSEGV signal
+ */
+//================================================================================
+static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address)
+{
+ sigset_t set;
+ sigemptyset(&set);
+ sigaddset(&set, SIGSEGV);
+ sigprocmask (SIG_UNBLOCK, &set, NULL);
+
+ CASCatch_Failure::Raise("SIGSEGV detected");
+}
+#endif
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Activate()
+{
+ if(myIsActivated) return;
+
+ struct sigaction act;
+
+ Standard_Integer i = 0;
+ for(; i<=MAX_HANDLER_NUMBER; i++)
+ mySigStates[i] = new struct sigaction(); //Initialize structures
+
+ int stat;
+ act.sa_handler = (SIG_PFV) &Handler ;
+ sigemptyset(&act.sa_mask) ;
+
+
+ stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]); // ...... hangup
+ stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]); // ...... floating point exception
+ stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]); // ...... interrupt
+ stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]); // ...... quit
+ stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]); // ...... bus error
+ stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]); // ...... illegal instruction
+
+#ifdef SA_RESTART
+ act.sa_flags = SA_RESTART ;
+#else
+ act.sa_flags = 0 ;
+#endif
+ act.sa_handler = (SIG_PFV) &SegvHandler ;
+
+#ifdef SA_SIGINFO // OSF,SOLARIS,IRIX
+ act.sa_flags = act.sa_flags | SA_SIGINFO ;
+# ifdef SOLARIS
+ act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ;
+# endif
+#endif
+
+ stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]); // ...... segmentation violation
+
+ myIsActivated = Standard_True;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate()
+{
+ if(!myIsActivated) return;
+
+ struct sigaction oact;
+ int stat;
+
+ stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact); // ...... hangup
+ stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact); // ...... floating point exception
+ stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact); // ...... interrupt
+ stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact); // ...... quit
+ stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact); // ...... bus error
+ stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact); // ...... illegal instruction
+ stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact); // ...... segmentation violation
+
+
+ Standard_Integer i = 0;
+ for(; i<=MAX_HANDLER_NUMBER; i++)
+ delete (struct sigaction*)mySigStates[i];
+
+ myIsActivated = Standard_False;
+}
+
+
+
+#else
+//====================================== WNT part ====================================================
+#include <OSD_WNT_1.hxx>
+
+#include <process.h>
+#include <signal.h>
+#include <float.h>
+
+#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions
+
+//================================================================================
+/*! Private -
+ * \brief handler for unexpected exceptions
+ */
+//================================================================================
+static Standard_Integer WntHandler(const Standard_Address theExceptionInfo)
+{
+ LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo;
+ DWORD dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode;
+
+ TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode);
+ aMessage+=" Exception code - unexpected exception";
+
+ CASCatch_Failure::Raise(aMessage.ToCString());
+
+ return EXCEPTION_EXECUTE_HANDLER;
+}
+
+void SIGWntHandler(int , int ) ;
+static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ;
+
+
+//================================================================================
+/*! Private -
+ * \brief handler for signals
+ */
+//================================================================================
+static void SIGWntHandler(const int signum , const int theCode)
+{
+
+ void (*OLDSIGWNTHANDLER)(int) ;
+ switch( signum ) {
+ case SIGFPE :
+ _fpreset() ;
+ _clearfp() ;
+ _controlfp ( _OSD_FPX, _MCW_EM );
+ OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+
+ if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return;
+ CASCatch_Failure::Raise ("Floating point error");
+ break;
+ case SIGSEGV :
+ OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+ CASCatch_Failure::Raise("Access violation");
+ break;
+ case SIGILL :
+ OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+ CASCatch_Failure::Raise("Illegal instruction" );
+ break;
+ }
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Activate()
+{
+ if(myIsActivated) return;
+
+ mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler);
+
+ myFloatOpWord = _controlfp(0, 0);
+ _controlfp ( _OSD_FPX, _MCW_EM ); //Enable floating point exceptions
+
+ mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER );
+ mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER );
+ mySigStates[3] = signal( SIGILL , SIGWNTHANDLER );
+
+ myIsActivated = Standard_True;
+}
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate()
+{
+ if(!myIsActivated) return;
+
+ SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]);
+
+ _controlfp ( myFloatOpWord, _MCW_EM );
+
+ signal( SIGSEGV , ( void (*)(int) )mySigStates[1]);
+ signal( SIGFPE , ( void (*)(int) )mySigStates[2]);
+ signal( SIGILL , ( void (*)(int) )mySigStates[3]);
+
+ Standard_Integer i = 0;
+ for(; i<=MAX_HANDLER_NUMBER; i++)
+ mySigStates[i] = NULL;
+
+ myIsActivated = Standard_False;
+}
+
+#endif
+
+//================================================================================
+/*! Private -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Destroy()
+{
+ if(myIsActivated) Deactivate();
+}
+
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_CatchSignals.hxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#ifndef CASCATCH_CATCHSIGNALS_HXX
+#define CASCATCH_CATCHSIGNALS_HXX
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_CatchSignals
+ * \brief This class controls an exception handling
+ *
+ */
+class CASCatch_CatchSignals {
+
+public:
+
+ // Methods PUBLIC
+ //
+Standard_EXPORT CASCatch_CatchSignals();
+Standard_EXPORT void Destroy() ;
+~CASCatch_CatchSignals() { Destroy(); }
+Standard_EXPORT void Activate() ;
+Standard_EXPORT void Deactivate() ;
+
+private:
+
+/*!\var mySigStates[7], private
+ * \brief stores signals' handler functions
+ */
+Standard_Address mySigStates[7];
+
+/*!\var myFloatOpWord
+ * \brief stores a float operation word, private
+ */
+Standard_Integer myFloatOpWord;
+
+/*!\var myIsActivated
+ * \brief stores a flag whether a catcher is activated, private]
+ */
+Standard_Boolean myIsActivated;
+
+};
+
+
+#endif // CASCATCH_CATCHSIGNALS_HXX
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_ErrorHandler.cxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#ifdef NO_CXX_EXCEPTION
+
+#include "CASCatch_ErrorHandler.hxx"
+
+// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try)
+// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort
+// request will be ignored. If the abort request do a raise during a setjmp
+// or a longjmp, there will be a "terminating SEGV" impossible to handle.
+
+
+Standard_EXPORT int K_SETJMP_CASCatch = 0 ;
+
+static Handle(CASCatch_Failure) GlbError; //Last caught Error, Null if there is no error
+
+static CASCatch_ErrorHandler* Top = 0; //The top of the Errors Stack
+
+//=======================================================================
+//function : CASCatch_ErrorHandler
+//purpose : Constructor
+//=======================================================================
+CASCatch_ErrorHandler::CASCatch_ErrorHandler ()
+{
+ Previous = Top;
+ Top = this;
+ CaughtError.Nullify();
+ GlbError.Nullify();
+}
+
+//=======================================================================
+//function : ~CASCatch_ErrorHandler
+//purpose : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'.
+//=======================================================================
+CASCatch_ErrorHandler::~CASCatch_ErrorHandler()
+{
+ Top = Top->Previous;
+ if( !GlbError.IsNull() ) Abort();
+}
+
+//=======================================================================
+//function : Abort: make a longjmp to the saved Context.
+//purpose : Abort if there is a non null 'Error'
+//=======================================================================
+void CASCatch_ErrorHandler::Abort ()
+{
+ //==== Check if can do the "longjmp" =======================================
+ if(Top == NULL || Top->Label == NULL) {
+ cout << "*** Abort *** an exception was raised, but no catch was found." << endl;
+ cout << "\t... The exception is:" << GlbError;
+ exit(1);
+ }
+
+#ifdef DO_ABORT
+ if ( K_SETJMP_CASCatch )
+ cout << "Recursive abort ===> Terminating SEGV ..." << endl ;
+ K_SETJMP_CASCatch = 1 ;
+#endif
+
+ longjmp(Top->Label, Standard_True);
+}
+
+//=======================================================================
+//function : Catches
+//purpose : If there is a 'Error', and it is in good type
+// returns True and clean 'Error', else returns False.
+//=======================================================================
+Standard_Boolean CASCatch_ErrorHandler::Catches
+ (const Handle(Standard_Type)& AType)
+{
+#ifdef DO_ABORT
+ K_SETJMP_CASCatch = 0 ;
+#endif
+ if(GlbError.IsNull())
+ return Standard_False;
+
+ if(GlbError->IsKind(AType)){
+ CaughtError = GlbError;
+ GlbError.Nullify();
+ return Standard_True;
+ } else {
+ return Standard_False;
+ }
+}
+
+//=======================================================================
+//function : LastCaughtError
+//purpose :
+//=======================================================================
+Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError()
+{
+ return Top->CaughtError;
+}
+
+//=======================================================================
+//function : Error
+//purpose :
+//=======================================================================
+void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError)
+{
+ GlbError = aError;
+}
+
+#endif
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_ErrorHandler.hxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#ifndef CASCATCH_ERRORHANDLER_HXX
+#define CASCATCH_ERRORHANDLER_HXX
+
+#include "CASCatch_Failure.hxx"
+
+#include <stdlib.h>
+#include <setjmp.h>
+
+
+extern int K_SETJMP_CASCatch ;
+
+/*!
+ * \class CASCatch_ErrorHandler
+ * \brief This class is an exception handler, private
+ *
+ */
+class CASCatch_ErrorHandler
+{
+ friend class CASCatch_Failure; // To execute the raise exception.
+
+ public:
+
+ Standard_EXPORT CASCatch_ErrorHandler();
+ Standard_EXPORT ~CASCatch_ErrorHandler();
+ Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&);
+
+ private:
+ Standard_EXPORT static void Abort();
+ Standard_EXPORT static void Error(const Handle(CASCatch_Failure)&);
+ Standard_EXPORT static Handle(CASCatch_Failure) LastCaughtError();
+
+ //==== The fields ===========================================================
+ private:
+ CASCatch_ErrorHandler* Previous;
+ Handle(CASCatch_Failure) CaughtError;
+
+ public:
+ jmp_buf Label;
+
+};
+
+#undef CASCatch_TRY
+#define CASCatch_TRY try
+
+#undef CASCatch_CATCH
+#define CASCatch_CATCH catch
+
+
+#ifdef NO_CXX_EXCEPTION
+# undef CASCatch_TRY
+# undef CASCatch_CATCH
+
+# if defined(DO_ABORT)
+
+# define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label))
+
+# define CASCatch_TRY CASCatch_ErrorHandler _Function; \
+ K_SETJMP_CASCatch = 1 ; \
+ if(DoesNotAbort_CASCatch(_Function))
+
+# else // ! DO_ABORT
+# define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label)
+
+# define CASCatch_TRY CASCatch_ErrorHandler _Function; \
+ if(DoesNotAbort_CASCatch(_Function))
+# endif // DO_ABORT
+
+
+# define CASCatch_CATCH(Error) else if(_Function.Catches(STANDARD_TYPE(Error)))
+#endif // NO_CXX_EXCEPTION
+
+#endif // CASCATCH_ERRORHANDLER_HXX
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_Failure.cxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#include "CASCatch_Failure.hxx"
+#include "CASCatch_ErrorHandler.hxx"
+#include <Standard_TypeMismatch.hxx>
+#include <Standard_Type.hxx>
+#include <string.h>
+
+IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient )
+
+
+#ifndef NO_CXX_EXCEPTION
+static Handle(CASCatch_Failure) RaisedError;
+#endif
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure
+ */
+//================================================================================
+CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";}
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure with a message
+ * \param an exception message
+ */
+//================================================================================
+CASCatch_Failure::CASCatch_Failure (const Standard_CString AString)
+{
+ if(AString) {
+ myMessage = new Standard_Character[strlen(AString) + 1];
+ strcpy(myMessage,AString);
+ }
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns the last caught exception
+ */
+//================================================================================
+Handle(CASCatch_Failure) CASCatch_Failure::Caught()
+{
+#ifdef NO_CXX_EXCEPTION
+ return CASCatch_ErrorHandler::LastCaughtError();
+#else
+ return RaisedError ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================
+void CASCatch_Failure::Raise (const Standard_CString AString)
+{
+ Handle(CASCatch_Failure) E = new CASCatch_Failure() ;
+ E->Reraise (AString) ;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief re-raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================
+void CASCatch_Failure::Reraise (const Standard_CString AString)
+{
+ if(AString){
+ myMessage = new Standard_Character[strlen(AString) + 1];
+ strcpy(myMessage,AString);
+ }
+
+#ifdef NO_CXX_EXCEPTION
+ CASCatch_ErrorHandler::Error(this) ;
+ CASCatch_ErrorHandler::Abort();
+#else
+ RaisedError = this ;
+ Throw() ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns an exception message
+ */
+//================================================================================
+Standard_CString CASCatch_Failure::GetError() const
+{
+ return myMessage;
+}
+
+//================================================================================
+/*! Public -
+ * \brief Is called when using standard C++ exceptions
+ */
+//================================================================================
+void CASCatch_Failure::Throw() const
+{
+#ifndef NO_CXX_EXCEPTION
+ throw CASCatch_Failure() ;
+#endif
+}
+
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : CASCatch_Failure.hxx
+// Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+//
+
+#ifndef CASCATCH_FAILURE_HXX
+#define CASCATCH_FAILURE_HXX
+
+#include <Standard_Transient.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_Failure
+ * \brief This class presents an exception to be thrown
+ *
+ */
+class CASCatch_Failure : public Standard_Transient
+{
+
+public:
+
+Standard_EXPORT CASCatch_Failure();
+Standard_EXPORT CASCatch_Failure(const Standard_CString aString);
+Standard_EXPORT void Reraise(const Standard_CString aMessage) ;
+Standard_EXPORT Standard_CString GetError() const;
+Standard_EXPORT static Handle_CASCatch_Failure Caught() ;
+Standard_EXPORT static void Raise(const Standard_CString aMessage = "") ;
+Standard_EXPORT virtual void Throw() const;public:
+
+public:
+
+DEFINE_STANDARD_RTTI( CASCatch_Failure )
+
+private:
+/*!\var myMessage
+ * \brief stores an exception message
+ */
+Standard_CString myMessage;
+
+};
+
+
+#endif // CASCATCH_FAILURE_HXX
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG
+# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# File : Makefile.am
+# Author : Sergey RUIN, Open CASCADE S.A.S (sergey.ruin@opencascade.com)
+#
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+
+salomeinclude_HEADERS = CASCatch.hxx \
+ CASCatch_CatchSignals.hxx \
+ CASCatch_ErrorHandler.hxx \
+ CASCatch_Failure.hxx
+
+lib_LTLIBRARIES = libCASCatch.la
+libCASCatch_la_SOURCES = \
+ CASCatch_CatchSignals.cxx \
+ CASCatch_ErrorHandler.cxx \
+ CASCatch_Failure.cxx
+
+COMMON_CPPFLAGS = \
+ @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+
+libCASCatch_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libCASCatch_la_LIBADD = $(CAS_KERNEL)
int id = LightApp_Application::UserID + FIRST_HELP_ID;
// help for KERNEL and GUI
QString dir;//QByteArray dir;
- QString aFileName = "index.htm";
+ QString aFileName = "index.html";
QString root;
QAction* a;
dir = getenv("GUI_ROOT_DIR");
}
dir = getenv("KERNEL_ROOT_DIR");
if ( !dir.isEmpty() ) {
- QString aFN = "index.html";
root = Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") +
Qtx::addSlash("salome") );
- if ( QFileInfo( root + aFN ).exists() ) {
+ if ( QFileInfo( root + aFileName ).exists() ) {
a = createAction( id, tr( QString("KERNEL Help").toLatin1().constData() ),
resMgr->loadPixmap( "STD", tr( "ICON_HELP" ), false ),
tr( QString("KERNEL Help").toLatin1().constData() ),
aCommand += "#" + myContext;
QProcess* proc = new QProcess();
- //myStatus = system(aCommand);
- //if(myStatus != 0)
proc->start( aCommand );
if ( proc->waitForStarted() ) {
SALOME_CustomEvent* ce2000 = new SALOME_CustomEvent( 2000 );
- QString* msg = new QString( QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile) );
+ QString* msg = new QString( QObject::tr( "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" ).arg( myApp, myHelpFile ) );
ce2000->setData( msg );
QApplication::postEvent( myLApp, ce2000 );
}
const QAction* obj = (QAction*) sender();
QString aComponentName = obj->objectName();
- QString aFileName = "index.htm";
- QString aFileNameKernel = "index.html";
+ QString aFileName = "index.html";
QString dir = getenv( (aComponentName + "_ROOT_DIR").toLatin1().constData() );
QString homeDir = !aComponentName.compare(QString("KERNEL")) ?
Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + Qtx::addSlash("salome") ) :
Qtx::addSlash( Qtx::addSlash(dir) + Qtx::addSlash("share") + Qtx::addSlash("doc") + Qtx::addSlash("salome") + Qtx::addSlash("gui") + Qtx::addSlash(aComponentName) );
- QString helpFile = QFileInfo( homeDir + (!aComponentName.compare(QString("KERNEL")) ? aFileNameKernel : aFileName) ).absoluteFilePath();
+ QString helpFile = QFileInfo( homeDir + aFileName ).absoluteFilePath();
SUIT_ResourceMgr* resMgr = resourceMgr();
QString platform;
#ifdef WIN32
if ( !isLibFound )
{
printf( "****************************************************************\n" );
- printf( "* Warning: library %s cannot be found\n", moduleTitle.toLatin1().constData() );
+ printf( "* Warning: library %s cannot be found\n", lib.toLatin1().constData() );
printf( "* Module will not be available\n" );
+ printf( "* Module %s will not be available in GUI mode\n", moduleTitle.toLatin1().constData() );
printf( "****************************************************************\n" );
}
else if ( !isPythonModule )
PreferencesId, MRUId, ModulesListId, UserID };
protected:
- enum { NewStudyId = 1,
- OpenStudyId };
+ enum { NewStudyId = 1, OpenStudyId };
public:
LightApp_Application();
SUIT_Desktop* d = application()->desktop();
QAction
- *disp = createAction( -1, tr( "TOP_DISPLAY" ), p, tr( "MEN_DISPLAY" ), tr( "STB_DISPLAY" ),
+ *disp = createAction( -1, tr( "TOP_SHOW" ), p, tr( "MEN_SHOW" ), tr( "STB_SHOW" ),
0, d, false, this, SLOT( onShowHide() ) ),
- *erase = createAction( -1, tr( "TOP_ERASE" ), p, tr( "MEN_ERASE" ), tr( "STB_ERASE" ),
+ *erase = createAction( -1, tr( "TOP_HIDE" ), p, tr( "MEN_HIDE" ), tr( "STB_HIDE" ),
0, d, false, this, SLOT( onShowHide() ) ),
*dispOnly = createAction( -1, tr( "TOP_DISPLAY_ONLY" ), p, tr( "MEN_DISPLAY_ONLY" ), tr( "STB_DISPLAY_ONLY" ),
0, d, false, this, SLOT( onShowHide() ) ),
while ( it.hasNext() )
{
SUIT_Selector* selector = it.next();
- if( selector->type()!=client )
+ if( selector->type() != client && selector->isEnabled() )
{
- mgr->selected( cur_sel, selector->type() );
+ //mgr->selected( cur_sel, selector->type() );
+ selector->selected( cur_sel );
SUIT_DataOwnerPtrList::const_iterator aLIt = cur_sel.begin(), aLLast = cur_sel.end();
for( ; aLIt!=aLLast; aLIt++ )
sel.append( *aLIt ); //check entry and don't append if such entry is in list already
/*!
Add or remove interactive objects from selection manager.
*/
-bool LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
- const TColStd_MapOfInteger& theIndexes,
- bool modeShift)
+//bool LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+void LightApp_SelectionMgr::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+ const TColStd_MapOfInteger& theIndexes,
+ bool modeShift)
{
SUIT_DataOwnerPtrList remainsOwners;
SUIT_DataOwnerPtrList aList;
selected( aList );
-
+
+ QString ioEntry (IObject->getEntry());
+
if ( !modeShift ) {
for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
{
const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
- if ( owner )
+ if ( owner )
{
- if ( owner->entry() != QString(IObject->getEntry()) )
- {
+ if ( owner->entry() != ioEntry )
+ {
const LightApp_DataSubOwner* subOwner = dynamic_cast<const LightApp_DataSubOwner*>( owner );
if ( subOwner )
remainsOwners.append( new LightApp_DataSubOwner( subOwner->entry(), subOwner->index() ) );
TColStd_MapIteratorOfMapOfInteger It;
It.Initialize(theIndexes);
for(;It.More();It.Next())
- remainsOwners.append( new LightApp_DataSubOwner( QString(IObject->getEntry()), It.Key() ) );
+ remainsOwners.append( new LightApp_DataSubOwner( ioEntry, It.Key() ) );
bool append = false;
setSelected( remainsOwners, append );
emit currentSelectionChanged();
- TColStd_IndexedMapOfInteger anIndexes;
- GetIndexes( IObject, anIndexes );
- return !anIndexes.IsEmpty();
-
+ // Bug 17269: To avoid calling of selected(aList)
+ //TColStd_IndexedMapOfInteger anIndexes;
+ //GetIndexes( IObject, anIndexes );
+ //return !anIndexes.IsEmpty();
}
/*!
for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
{
- const LightApp_DataSubOwner* subOwner = dynamic_cast<const LightApp_DataSubOwner*>( (*itr).operator->() );
+ const LightApp_DataSubOwner* subOwner =
+ dynamic_cast<const LightApp_DataSubOwner*>( (*itr).operator->() );
if ( subOwner )
{
#ifndef WNT
#endif
{
anIndexes.Clear();
- GetIndexes( subOwner->entry(), anIndexes );
+ //Bug 17269: GetIndexes( subOwner->entry(), anIndexes );
+ //Bug 17269: To avoid multiple calling of selected(aList)
+ for ( SUIT_DataOwnerPtrList::const_iterator itr2 = itr; itr2 != aList.end(); ++itr2 )
+ {
+ const LightApp_DataSubOwner* subOwner2 =
+ dynamic_cast<const LightApp_DataSubOwner*>( (*itr2).operator->() );
+ if ( subOwner2 )
+ if ( subOwner2->entry() == subOwner->entry() )
+ anIndexes.Add( subOwner2->index() );
+ }
+ //
theMap.Bind( subOwner->entry().toLatin1().data(), anIndexes );
}
}
void GetIndexes( const QString& theEntry,
TColStd_IndexedMapOfInteger& theIndex );
- bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+ //bool AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
+ void AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& IObject,
const TColStd_MapOfInteger& theIndices,
bool modeShift );
</message>
<message>
<source>ABOUT_COPYRIGHT</source>
- <translation>Copyright (C) 2003-2006 OPEN CASCADE, EADS/CCR, LIP6,
+ <translation>Copyright (C) 2003-2008 OPEN CASCADE, EADS/CCR, LIP6,
CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS</translation>
</message>
<message>
</message>
<message>
<source>NEW_WINDOW_3</source>
+ <translation>&QxGraph view</translation>
+ </message>
+ <message>
+ <source>NEW_WINDOW_4</source>
<translation>VT&K view</translation>
</message>
<message>
<context>
<name>LightApp_Module</name>
<message>
- <source>MEN_ERASE</source>
- <translation>Erase</translation>
+ <source>MEN_HIDE</source>
+ <translation>Hide</translation>
</message>
<message>
<source>TOP_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
<source>STB_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
<source>MEN_DISPLAY_ONLY</source>
- <translation>Display only</translation>
+ <translation>Show only</translation>
</message>
<message>
- <source>TOP_ERASE</source>
- <translation>Erase</translation>
+ <source>TOP_HIDE</source>
+ <translation>HIde</translation>
</message>
<message>
<source>MEN_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
<message>
- <source>STB_ERASE</source>
- <translation>Erase</translation>
+ <source>STB_HIDE</source>
+ <translation>Hide</translation>
</message>
<message>
- <source>STB_DISPLAY</source>
- <translation>Display</translation>
+ <source>STB_SHOW</source>
+ <translation>Show</translation>
</message>
<message>
- <source>TOP_DISPLAY</source>
- <translation>Display</translation>
+ <source>TOP_SHOW</source>
+ <translation>Show</translation>
</message>
<message>
- <source>MEN_DISPLAY</source>
- <translation>Display</translation>
+ <source>MEN_SHOW</source>
+ <translation>Show</translation>
</message>
<message>
<source>STB_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
<message>
<source>TOP_ERASE_ALL</source>
- <translation>Erase all</translation>
+ <translation>Hide all</translation>
</message>
</context>
<context>
# Module : SALOME
# $Header$
-SUBDIRS = Qtx Style DDS QDS ObjBrowser SUIT SUITApp STD CAF CAM LogWindow Prs
+SUBDIRS = CASCatch Qtx Style DDS QDS ObjBrowser SUIT SUITApp STD CAF CAM LogWindow Prs
if ENABLE_SALOMEOBJECT
SUBDIRS += OBJECT
OCCViewer_ViewModel.h \
OCCViewer_ViewPort3d.h \
OCCViewer_ViewPort.h \
+ OCCViewer_ViewSketcher.h \
OCCViewer_ViewWindow.h \
OCCViewer_VService.h \
OCCViewer_CreateRestoreViewDlg.h \
OCCViewer_ViewModel.cxx \
OCCViewer_ViewPort3d.cxx \
OCCViewer_ViewPort.cxx \
+ OCCViewer_ViewSketcher.cxx \
OCCViewer_ViewWindow.cxx \
OCCViewer_VService.cxx \
OCCViewer_CreateRestoreViewDlg.cxx \
OCCViewer_ViewModel_moc.cxx \
OCCViewer_ViewPort3d_moc.cxx \
OCCViewer_ViewPort_moc.cxx \
+ OCCViewer_ViewSketcher_moc.cxx \
OCCViewer_ViewWindow_moc.cxx \
OCCViewer_ViewManager_moc.cxx \
OCCViewer_CreateRestoreViewDlg_moc.cxx \
{
if ( view ) {
view->initLayout();
+ view->initSketchers();
OCCViewer_ViewPort3d* vp3d = view->getViewPort();
if ( vp3d )
void OCCViewer_ViewPort::initialize()
{
myPaintersRedrawing = false;
- myEnableSketching = false;
+ myEnableSketching = true;
myEnableTransform = true;
setMouseTracking( true );
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "OCCViewer_ViewSketcher.h"
+#include "OCCViewer_ViewWindow.h"
+#include "OCCViewer_ViewPort3d.h"
+
+#include <QApplication>
+#include <QPainter>
+#include <QPolygon>
+#include <QMouseEvent>
+#include <QKeyEvent>
+
+/****************************************************************
+** Class: OCCViewer_ViewSketcher
+** Level: Public
+*****************************************************************/
+
+OCCViewer_ViewSketcher::OCCViewer_ViewSketcher( OCCViewer_ViewWindow* vw, int type )
+: QObject( vw ),
+mySketchButton( Qt::LeftButton ),
+mypViewWindow( vw ),
+myType( type ),
+mypData( 0 ),
+myResult( Neutral ),
+myButtonState( 0 )
+{
+}
+
+OCCViewer_ViewSketcher::~OCCViewer_ViewSketcher()
+{
+}
+
+void OCCViewer_ViewSketcher::activate()
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ mySavedCursor = avp->cursor();
+ avp->setCursor( Qt::PointingHandCursor );
+ avp->installEventFilter( this );
+ qApp->installEventFilter( this );
+
+ connect( avp, SIGNAL( vpDrawExternal( QPainter* ) ), this, SLOT( onDrawViewPort() ) );
+
+ myStart = QPoint();
+ myResult = Neutral;
+
+ onActivate();
+}
+
+void OCCViewer_ViewSketcher::deactivate()
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ disconnect( avp, SIGNAL( vpDrawExternal( QPainter* ) ), this, SLOT( onDrawViewPort() ) );
+
+ qApp->removeEventFilter( this );
+ avp->removeEventFilter( this );
+ avp->setCursor( mySavedCursor );
+
+ onDeactivate();
+}
+
+int OCCViewer_ViewSketcher::type() const
+{
+ return myType;
+}
+
+void* OCCViewer_ViewSketcher::data() const
+{
+ return mypData;
+}
+
+int OCCViewer_ViewSketcher::result() const
+{
+ return myResult;
+}
+
+int OCCViewer_ViewSketcher::buttonState() const
+{
+ return myButtonState;
+}
+
+void OCCViewer_ViewSketcher::onActivate()
+{
+}
+
+void OCCViewer_ViewSketcher::onDeactivate()
+{
+}
+
+bool OCCViewer_ViewSketcher::isDefault() const
+{
+ return true;
+}
+
+bool OCCViewer_ViewSketcher::eventFilter( QObject* o, QEvent* e )
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ SketchState state = EnTrain;
+ bool ignore = false;
+ if ( o == avp )
+ {
+ switch ( e->type() )
+ {
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseButtonDblClick:
+ {
+ QMouseEvent* me = (QMouseEvent*)e;
+
+ myButtonState = me->buttons();
+ if ( e->type() == QEvent::MouseButtonPress )
+ myButtonState |= me->button();
+
+ if ( myStart.isNull() && ( myButtonState & sketchButton() ) )
+ {
+ state = Debut;
+ myStart = me->pos();
+ }
+
+ myCurr = me->pos();
+
+ onMouse( me );
+
+ if ( myResult != Neutral )
+ state = Fin;
+
+ ignore = true;
+ break;
+ }
+ case QEvent::Hide:
+ case QEvent::HideToParent:
+ myResult = Reject;
+ onSketch( Fin );
+ break;
+ default:
+ break;
+ }
+ }
+ if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease )
+ {
+ ignore = onKey( (QKeyEvent*)e );
+ if ( myResult != Neutral )
+ state = Fin;
+ }
+
+ if ( ignore )
+ {
+ onSketch( state );
+ return true;
+ }
+ return QObject::eventFilter( o, e );
+}
+
+void OCCViewer_ViewSketcher::onDrawViewPort()
+{
+ onSketch( Debut );
+}
+
+bool OCCViewer_ViewSketcher::onKey( QKeyEvent* )
+{
+ return false;
+}
+
+void OCCViewer_ViewSketcher::onMouse( QMouseEvent* )
+{
+}
+
+int OCCViewer_ViewSketcher::sketchButton()
+{
+ return mySketchButton;
+}
+
+void OCCViewer_ViewSketcher::setSketchButton( int b )
+{
+ mySketchButton = b;
+}
+
+/****************************************************************
+** Class: OCCViewer_RectSketcher
+** Level: Public
+*****************************************************************/
+
+OCCViewer_RectSketcher::OCCViewer_RectSketcher( OCCViewer_ViewWindow* vw, int typ )
+: OCCViewer_ViewSketcher( vw, typ )
+{
+}
+
+OCCViewer_RectSketcher::~OCCViewer_RectSketcher()
+{
+ delete (QRect*)mypData;
+}
+
+void OCCViewer_RectSketcher::onActivate()
+{
+ mypData = new QRect();
+}
+
+void OCCViewer_RectSketcher::onDeactivate()
+{
+ delete (QRect*)mypData;
+ mypData = 0;
+}
+
+bool OCCViewer_RectSketcher::onKey( QKeyEvent* e )
+{
+ if ( e->key() == Qt::Key_Escape )
+ myResult = Reject;
+ else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return )
+ myResult = Accept;
+
+ return true;
+}
+
+void OCCViewer_RectSketcher::onMouse( QMouseEvent* e )
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ if ( avp->rect().contains( myCurr ) )
+ avp->setCursor( Qt::PointingHandCursor );
+ else
+ avp->setCursor( Qt::ForbiddenCursor );
+
+ if ( e->type() == QEvent::MouseButtonRelease && e->button() == sketchButton() )
+ {
+ myResult = Accept;
+ QApplication::postEvent( avp, new QMouseEvent( e->type(), e->pos(),
+ e->globalPos(), e->button(),
+ e->buttons(), e->modifiers() ) );
+ }
+}
+
+void OCCViewer_RectSketcher::onSketch( SketchState state )
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ QRect* sketchRect = (QRect*)data();
+ if ( myButtonState & sketchButton() )
+ {
+ QRect rect( qMin( myStart.x(), myCurr.x() ), qMin( myStart.y(), myCurr.y() ),
+ qAbs( myStart.x() - myCurr.x() ), qAbs( myStart.y() - myCurr.y() ) );
+ QPainter p( avp );
+ p.setPen( Qt::white );
+ p.setCompositionMode( QPainter::CompositionMode_Xor );
+ if ( state != Debut && !sketchRect->isEmpty() )
+ p.drawRect( *sketchRect );
+ *sketchRect = rect;
+ if ( !rect.isEmpty() && state != Fin )
+ p.drawRect( *sketchRect );
+ }
+
+ if ( state == Fin )
+ {
+ QApplication::syncX(); /* force rectangle redrawing */
+ mypViewWindow->activateSketching( OCCViewer_ViewWindow::NoSketching );
+ }
+}
+
+/****************************************************************
+** Class: OCCViewer_PolygonSketcher
+** Level: Public
+*****************************************************************/
+
+OCCViewer_PolygonSketcher::OCCViewer_PolygonSketcher( OCCViewer_ViewWindow* vw, int typ )
+: OCCViewer_ViewSketcher( vw, typ ),
+ myDbl ( false ),
+ myToler ( 5, 5 ),
+ mypPoints ( 0L ),
+ myAddButton ( 0 ),
+ myDelButton ( 0 )
+{
+ mySketchButton = Qt::RightButton;
+}
+
+OCCViewer_PolygonSketcher::~OCCViewer_PolygonSketcher()
+{
+ delete mypPoints;
+ delete (QPolygon*)mypData;
+}
+
+void OCCViewer_PolygonSketcher::onActivate()
+{
+ myDbl = false;
+ mypData = new QPolygon( 0 );
+ mypPoints = new QPolygon( 0 );
+
+ switch ( sketchButton() )
+ {
+ case Qt::LeftButton:
+ myAddButton = Qt::RightButton;
+ myDelButton = Qt::MidButton;
+ break;
+ case Qt::MidButton:
+ myAddButton = Qt::LeftButton;
+ myDelButton = Qt::RightButton;
+ break;
+ case Qt::RightButton:
+ default:
+ myAddButton = Qt::LeftButton;
+ myDelButton = Qt::MidButton;
+ break;
+ };
+}
+
+void OCCViewer_PolygonSketcher::onDeactivate()
+{
+ delete mypPoints;
+ mypPoints = 0;
+ delete (QPolygon*)mypData;
+ mypData = 0;
+}
+
+bool OCCViewer_PolygonSketcher::onKey( QKeyEvent* e )
+{
+ if ( e->key() == Qt::Key_Escape )
+ {
+ myResult = Reject;
+ return true;
+ }
+ else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return )
+ {
+ QPolygon* points = (QPolygon*)data();
+ if ( points->count() )
+ {
+ QPoint last = points->point( points->count() - 1 );
+ if ( last != myCurr )
+ {
+ points->resize( points->count() + 1 );
+ points->setPoint( points->count() - 1, myCurr );
+ }
+ }
+ myResult = Accept;
+ return true;
+ }
+ else if ( e->key() == Qt::Key_Backspace && e->type() == QEvent::KeyRelease )
+ {
+ QPolygon* points = (QPolygon*)data();
+ if ( points->count() > 1 )
+ points->resize( points->count() - 1 );
+ onMouse( 0 );
+ return true;
+ }
+
+ return true;
+}
+
+void OCCViewer_PolygonSketcher::onMouse( QMouseEvent* e )
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ QPolygon* points = (QPolygon*)data();
+ if ( !points->count() && !myStart.isNull() )
+ {
+ points->resize( points->count() + 1 );
+ points->setPoint( points->count() - 1, myStart );
+ }
+
+ bool closed = false;
+ bool valid = avp->rect().contains( myCurr );
+ if ( !myStart.isNull() )
+ {
+ QRect aRect( myStart.x() - myToler.width(), myStart.y() - myToler.height(),
+ 2 * myToler.width(), 2 * myToler.height() );
+ closed = aRect.contains( myCurr );
+ }
+ valid = valid && isValid( points, myCurr );
+ if ( closed && !valid )
+ closed = false;
+
+ if ( closed )
+ avp->setCursor( Qt::CrossCursor );
+ else if ( valid )
+ avp->setCursor( Qt::PointingHandCursor );
+ else
+ avp->setCursor( Qt::ForbiddenCursor );
+
+ if ( !e )
+ return;
+
+ if ( e->type() == QEvent::MouseButtonRelease && ( e->button() & sketchButton() ) )
+ {
+ myResult = Reject;
+ QApplication::postEvent( avp, new QMouseEvent( e->type(), e->pos(),
+ e->globalPos(), e->button(),
+ e->buttons(), e->modifiers() ) );
+ }
+ else if ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myAddButton ) )
+ {
+ if ( closed )
+ myResult = Accept;
+ else
+ {
+ if ( myStart.isNull() )
+ myStart = myCurr;
+ else
+ {
+ QPoint last = points->point( points->count() - 1 );
+ if ( last != myCurr && valid )
+ {
+ points->resize( points->count() + 1 );
+ points->setPoint( points->count() - 1, myCurr );
+ }
+ if ( valid && myDbl )
+ myResult = Accept;
+ }
+ }
+ }
+ else if ( ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myDelButton ) ) ||
+ ( e->type() == QEvent::MouseButtonDblClick && ( e->button() & myDelButton ) ) )
+ {
+ if ( points->count() > 1 )
+ points->resize( points->count() - 1 );
+ onMouse( 0 );
+ }
+ myDbl = e->type() == QEvent::MouseButtonDblClick && ( e->button() & myAddButton );
+}
+
+void OCCViewer_PolygonSketcher::onSketch( SketchState state )
+{
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+
+ QPolygon* points = (QPolygon*)data();
+ QPainter p( avp );
+ p.setPen( Qt::white );
+ p.setCompositionMode( QPainter::CompositionMode_Xor );
+ if ( state != Debut )
+ p.drawPolyline( *mypPoints );
+
+ if ( points->count() )
+ {
+ mypPoints->resize( points->count() + 1 );
+ for ( uint i = 0; i < points->count(); i++ )
+ mypPoints->setPoint( i, points->point( i ) );
+ mypPoints->setPoint( points->count(), myCurr );
+ if ( state != Fin )
+ p.drawPolyline( *mypPoints );
+ }
+
+ if ( state == Fin )
+ {
+ QApplication::syncX();
+ mypViewWindow->activateSketching( OCCViewer_ViewWindow::NoSketching );
+ }
+}
+
+bool OCCViewer_PolygonSketcher::isValid( const QPolygon* aPoints, const QPoint& aCur ) const
+{
+ if ( !aPoints->count() )
+ return true;
+
+ if ( aPoints->count() == 1 && aPoints->point( 0 ) == aCur )
+ return false;
+
+ const QPoint& aLast = aPoints->point( aPoints->count() - 1 );
+
+ if ( aLast == aCur )
+ return true;
+
+ bool res = true;
+ for ( uint i = 0; i < aPoints->count() - 1 && res; i++ )
+ {
+ const QPoint& aStart = aPoints->point( i );
+ const QPoint& anEnd = aPoints->point( i + 1 );
+ res = !isIntersect( aStart, anEnd, aCur, aLast );
+ }
+
+ return res;
+}
+
+bool OCCViewer_PolygonSketcher::isIntersect( const QPoint& aStart1, const QPoint& anEnd1,
+ const QPoint& aStart2, const QPoint& anEnd2 ) const
+{
+ if ( ( aStart1 == aStart2 && anEnd1 == anEnd2 ) ||
+ ( aStart1 == anEnd2 && anEnd1 == aStart2 ) )
+ return true;
+
+ if ( aStart1 == aStart2 || aStart2 == anEnd1 ||
+ aStart1 == anEnd2 || anEnd1 == anEnd2 )
+ return false;
+
+ double x11 = aStart1.x() * 1.0;
+ double x12 = anEnd1.x() * 1.0;
+ double y11 = aStart1.y() * 1.0;
+ double y12 = anEnd1.y() * 1.0;
+
+ double x21 = aStart2.x() * 1.0;
+ double x22 = anEnd2.x() * 1.0;
+ double y21 = aStart2.y() * 1.0;
+ double y22 = anEnd2.y() * 1.0;
+
+ double k1 = x12 == x11 ? 0 : ( y12 - y11 ) / ( x12 - x11 );
+ double k2 = x22 == x21 ? 0 : ( y22 - y21 ) / ( x22 - x21 );
+
+ double b1 = y11 - k1 * x11;
+ double b2 = y21 - k2 * x21;
+
+ if ( k1 == k2 )
+ {
+ if ( b1 != b2 )
+ return false;
+ else
+ return !( ( qMax( x11, x12 ) <= qMin( x21, x22 ) ||
+ qMin( x11, x12 ) >= qMax( x21, x22 ) ) &&
+ ( qMax( y11, y12 ) <= qMin( y21, y22 ) ||
+ qMin( y11, y12 ) >= qMax( y21, y22 ) ) );
+ }
+ else
+ {
+ double x0 = ( b2 - b1 ) / ( k1 - k2 );
+ double y0 = ( k1 * b2 - k2 * b1 ) / ( k1 - k2 );
+
+ if ( qMin( x11, x12 ) < x0 && x0 < qMax( x11, x12 ) &&
+ qMin( y11, y12 ) < y0 && y0 < qMax( y11, y12 ) &&
+ qMin( x21, x22 ) < x0 && x0 < qMax( x21, x22 ) &&
+ qMin( y21, y22 ) < y0 && y0 < qMax( y21, y22 ) )
+ return true;
+ }
+ return false;
+}
+
+
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#ifndef OCCVIEWER_VIEWSKETCHER_H
+#define OCCVIEWER_VIEWSKETCHER_H
+
+#include "OCCViewer.h"
+
+#include <QObject>
+#include <QCursor>
+#include <QSize>
+
+class OCCViewer_ViewWindow;
+class QKeyEvent;
+class QMouseEvent;
+class QPolygon;
+
+#ifdef WNT
+#pragma warning ( disable:4251 )
+#endif
+
+/*!
+ \class OCCViewer_ViewSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_ViewSketcher : public QObject
+{
+ Q_OBJECT
+
+public:
+ enum { Neutral, Accept, Reject };
+
+public:
+ OCCViewer_ViewSketcher( OCCViewer_ViewWindow*, int );
+ virtual ~OCCViewer_ViewSketcher();
+
+public:
+ int type() const;
+ int result() const;
+ int buttonState() const;
+ void* data() const;
+
+ void activate();
+ void deactivate();
+
+ int sketchButton();
+ void setSketchButton( int );
+
+ virtual bool isDefault() const;
+ virtual bool eventFilter( QObject*, QEvent* );
+
+private slots:
+ void onDrawViewPort();
+
+protected:
+ enum SketchState { Debut, EnTrain, Fin };
+ virtual bool onKey( QKeyEvent* );
+ virtual void onMouse( QMouseEvent* );
+ virtual void onSketch( SketchState ) = 0;
+ virtual void onActivate();
+ virtual void onDeactivate();
+
+protected:
+ int mySketchButton;
+ OCCViewer_ViewWindow* mypViewWindow;
+ int myType;
+ void* mypData;
+ int myResult;
+ QCursor mySavedCursor;
+ QPoint myStart, myCurr;
+ int myButtonState;
+};
+
+/*!
+ \class OCCViewer_RectSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_RectSketcher : public OCCViewer_ViewSketcher
+{
+public:
+ OCCViewer_RectSketcher( OCCViewer_ViewWindow*, int );
+ virtual ~OCCViewer_RectSketcher();
+
+protected:
+ virtual bool onKey( QKeyEvent* );
+ virtual void onMouse( QMouseEvent* );
+ virtual void onSketch( SketchState );
+ virtual void onActivate();
+ virtual void onDeactivate();
+};
+
+/*!
+ \class OCCViewer_PolygonSketcher
+*/
+
+class OCCVIEWER_EXPORT OCCViewer_PolygonSketcher : public OCCViewer_ViewSketcher
+{
+public:
+ OCCViewer_PolygonSketcher( OCCViewer_ViewWindow*, int );
+ virtual ~OCCViewer_PolygonSketcher();
+
+protected:
+ virtual bool onKey( QKeyEvent* );
+ virtual void onMouse( QMouseEvent* );
+ virtual void onSketch( SketchState );
+ virtual void onActivate();
+ virtual void onDeactivate();
+
+private:
+ bool isValid( const QPolygon*, const QPoint& ) const;
+ bool isIntersect( const QPoint&, const QPoint&,
+ const QPoint&, const QPoint& ) const;
+
+private:
+ bool myDbl;
+ QSize myToler;
+ QPolygon* mypPoints;
+ int myAddButton;
+ int myDelButton;
+};
+
+#ifdef WNT
+#pragma warning( default:4251 )
+#endif
+
+#endif
#include "OCCViewer_ViewWindow.h"
#include "OCCViewer_ViewModel.h"
#include "OCCViewer_ViewPort3d.h"
+#include "OCCViewer_ViewManager.h"
+#include "OCCViewer_ViewSketcher.h"
#include "OCCViewer_CreateRestoreViewDlg.h"
#include "OCCViewer_ClippingDlg.h"
#include "OCCViewer_SetRotationPointDlg.h"
#include <QImage>
#include <QMouseEvent>
#include <QRubberBand>
+#include <QApplication>
#include <V3d_Plane.hxx>
#include <gp_Dir.hxx>
#include <gp_Pln.hxx>
+#include <TColgp_Array1OfPnt2d.hxx>
#include <AIS_ListOfInteractive.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <Graphic3d_MapOfStructure.hxx>
#include <Graphic3d_Structure.hxx>
+static QEvent* l_mbPressEvent = 0;
+
const char* imageZoomCursor[] = {
"32 32 3 1",
". c None",
myClippingDlg = 0;
mySetRotationPointDlg = 0;
myRectBand = 0;
+
+ mypSketcher = 0;
+ myCurSketch = -1;
}
/*!
OCCViewer_ViewWindow::~OCCViewer_ViewWindow()
{
endDrawRect();
+ qDeleteAll( mySketchers );
}
/*!
}
if ( transformRequested() )
setTransformInProcess( true );
+
+ /* we may need it for sketching... */
+ if ( l_mbPressEvent )
+ delete l_mbPressEvent;
+ l_mbPressEvent = new QMouseEvent( *theEvent );
}
}
}
}
+ else if ( aButton == Qt::RightButton ||
+ aButton == Qt::RightButton && aState == Qt::ShiftModifier ) {
+ OCCViewer_ViewSketcher* sketcher = 0;
+ QList<OCCViewer_ViewSketcher*>::Iterator it;
+ for ( it = mySketchers.begin(); it != mySketchers.end() && !sketcher; ++it )
+ {
+ OCCViewer_ViewSketcher* sk = (*it);
+ if( sk->isDefault() && sk->sketchButton() & ( aState & Qt::MouseButtonMask ) )
+ sketcher = sk;
+ }
+ if ( sketcher && myCurSketch == -1 )
+ {
+ activateSketching( sketcher->type() );
+ if ( mypSketcher )
+ {
+ myCurSketch = mypSketcher->sketchButton();
+
+ if ( l_mbPressEvent )
+ {
+ QApplication::sendEvent( getViewPort(), l_mbPressEvent );
+ delete l_mbPressEvent;
+ l_mbPressEvent = 0;
+ }
+ QApplication::sendEvent( getViewPort(), theEvent );
+ }
+ }
+ }
else
emit mouseMoving( this, theEvent );
}
switch ( myOperation ) {
case NOTHING:
{
- emit mouseReleased(this, theEvent);
+ int prevState = myCurSketch;
if(theEvent->button() == Qt::RightButton)
+ {
+ QList<OCCViewer_ViewSketcher*>::Iterator it;
+ for ( it = mySketchers.begin(); it != mySketchers.end() && myCurSketch != -1; ++it )
+ {
+ OCCViewer_ViewSketcher* sk = (*it);
+ if( ( sk->sketchButton() & theEvent->button() ) && sk->sketchButton() == myCurSketch )
+ myCurSketch = -1;
+ }
+ }
+
+ emit mouseReleased(this, theEvent);
+ if(theEvent->button() == Qt::RightButton && prevState == -1)
{
QContextMenuEvent aEvent( QContextMenuEvent::Mouse,
theEvent->pos(), theEvent->globalPos() );
resetState();
myViewPort->update();
}
+
+ if ( l_mbPressEvent )
+ {
+ delete l_mbPressEvent;
+ l_mbPressEvent = 0;
+ }
}
/*!
emit Hide( theEvent );
}
+
+/*!
+ Creates default sketcher. [ virtual protected ]
+*/
+OCCViewer_ViewSketcher* OCCViewer_ViewWindow::createSketcher( int type )
+{
+ if ( type == Rect )
+ return new OCCViewer_RectSketcher( this, type );
+ if ( type == Polygon )
+ return new OCCViewer_PolygonSketcher( this, type );
+ return 0;
+}
+
+void OCCViewer_ViewWindow::initSketchers()
+{
+ if ( mySketchers.isEmpty() )
+ {
+ mySketchers.append( createSketcher( Rect ) );
+ mySketchers.append( createSketcher( Polygon ) );
+ }
+}
+
+OCCViewer_ViewSketcher* OCCViewer_ViewWindow::getSketcher( const int typ )
+{
+ OCCViewer_ViewSketcher* sketcher = 0;
+ QList<OCCViewer_ViewSketcher*>::Iterator it;
+ for ( it = mySketchers.begin(); it != mySketchers.end() && !sketcher; ++it )
+ {
+ OCCViewer_ViewSketcher* sk = (*it);
+ if ( sk->type() == typ )
+ sketcher = sk;
+ }
+ return sketcher;
+}
+
+/*!
+ Handles requests for sketching in the active view. [ virtual public ]
+*/
+void OCCViewer_ViewWindow::activateSketching( int type )
+{
+ OCCViewer_ViewPort3d* vp = getViewPort();
+ if ( !vp )
+ return;
+
+ if ( !vp->isSketchingEnabled() )
+ return;
+
+ /* Finish current sketching */
+ if ( type == NoSketching )
+ {
+ if ( mypSketcher )
+ {
+ onSketchingFinished();
+ mypSketcher->deactivate();
+ mypSketcher = 0;
+ }
+ }
+ /* Activate new sketching */
+ else
+ {
+ activateSketching( NoSketching ); /* concurrency not suported */
+ mypSketcher = getSketcher( type );
+ if ( mypSketcher )
+ {
+ mypSketcher->activate();
+ onSketchingStarted();
+ }
+ }
+}
+
+/*!
+ Unhilights detected entities. [ virtual protected ]
+*/
+void OCCViewer_ViewWindow::onSketchingStarted()
+{
+}
+
+/*!
+ Selection by rectangle or polygon. [ virtual protected ]
+*/
+void OCCViewer_ViewWindow::onSketchingFinished()
+{
+ if ( mypSketcher && mypSketcher->result() == OCCViewer_ViewSketcher::Accept )
+ {
+ Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
+ bool append = bool( mypSketcher->buttonState() & Qt::ShiftModifier );
+ switch( mypSketcher->type() )
+ {
+ case Rect:
+ {
+ QRect* aRect = (QRect*)mypSketcher->data();
+ if( aRect )
+ {
+ int aLeft = aRect->left();
+ int aRight = aRect->right();
+ int aTop = aRect->top();
+ int aBottom = aRect->bottom();
+
+ if( append )
+ ic->ShiftSelect( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+ else
+ ic->Select( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+ }
+ }
+ break;
+ case Polygon:
+ {
+ QPolygon* aPolygon = (QPolygon*)mypSketcher->data();
+ if( aPolygon )
+ {
+ int size = aPolygon->size();
+ TColgp_Array1OfPnt2d anArray( 1, size );
+
+ QPolygon::Iterator it = aPolygon->begin();
+ QPolygon::Iterator itEnd = aPolygon->end();
+ for( int index = 1; it != itEnd; ++it, index++ )
+ {
+ QPoint aPoint = *it;
+ anArray.SetValue( index, gp_Pnt2d( aPoint.x(), aPoint.y() ) );
+ }
+
+ if( append )
+ ic->ShiftSelect( anArray, getViewPort()->getView(), Standard_False );
+ else
+ ic->Select( anArray, getViewPort()->getView(), Standard_False );
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ OCCViewer_ViewManager* aViewMgr = ( OCCViewer_ViewManager* )getViewManager();
+ aViewMgr->getOCCViewer()->performSelectionChanged();
+ }
+}
#include "QtxAction.h"
#include <QCursor>
+#include <QList>
class QRubberBand;
class SUIT_Desktop;
class OCCViewer_ViewPort3d;
+class OCCViewer_ViewSketcher;
class OCCViewer_ClippingDlg;
class OCCViewer_SetRotationPointDlg;
enum RotationPointType{ GRAVITY, SELECTED };
+ enum SketchingType { NoSketching, Rect, Polygon };
+
OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
virtual ~OCCViewer_ViewWindow();
virtual QString getVisualParameters();
virtual void setVisualParameters( const QString& parameters );
+
+ virtual void initSketchers();
+ OCCViewer_ViewSketcher* getSketcher( const int );
+
+ void activateSketching( int );
public slots:
void onFrontView();
bool computeGravityCenter( double& theX, double& theY, double& theZ );
+ virtual void onSketchingStarted();
+ virtual void onSketchingFinished();
+
+ virtual OCCViewer_ViewSketcher* createSketcher( int );
+
+ OCCViewer_ViewSketcher* mypSketcher;
+ QList<OCCViewer_ViewSketcher*> mySketchers;
+
+ int myCurSketch;
+
OperationType myOperation;
OCCViewer_Viewer* myModel;
OCCViewer_ViewPort3d* myViewPort;
#include "Plot2d_SetupViewDlg.h"
+#include <SUIT_Session.h>
+#include <SUIT_Application.h>
#include <QtxColorButton.h>
#include <QCheckBox>
myOkBtn->setDefault( TRUE );
myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this );
myCancelBtn->setAutoDefault( TRUE );
+ myHelpBtn = new QPushButton( tr( "BUT_HELP" ), this );
+ myHelpBtn->setAutoDefault( TRUE );
QHBoxLayout* btnLayout = new QHBoxLayout;
btnLayout->addWidget( myOkBtn );
btnLayout->addStretch();
btnLayout->addWidget( myCancelBtn );
+ btnLayout->addWidget( myHelpBtn );
// layout widgets
topLayout->addWidget( myTitleCheck, 0, 0 );
connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( accept() ) );
connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
+ connect( myHelpBtn, SIGNAL( clicked() ), this, SLOT( onHelp() ) );
if ( mySecondAxisY ) {
connect( myTitleY2Check, SIGNAL( clicked() ), this, SLOT( onY2TitleChecked() ) );
{
return myDefCheck->isChecked();
}
+
+/*!
+ Slot, called when user clicks "Help" button
+*/
+void Plot2d_SetupViewDlg::onHelp()
+{
+ SUIT_Application* app = SUIT_Session::session()->activeApplication();
+ if ( app )
+ app->onHelpContextModule( "GUI", "plot2d_viewer_page.html", "settings" );
+}
void onXGridMinorChecked();
void onYGridMinorChecked();
void onY2GridMinorChecked();
+ void onHelp();
private:
QCheckBox* myTitleCheck;
QCheckBox* myDefCheck;
QPushButton* myOkBtn;
QPushButton* myCancelBtn;
+ QPushButton* myHelpBtn;
bool mySecondAxisY;
};
/*!
\class ExecCommand
- \brief Python command execution request [internal].
- */
+ \brief Python command execution request.
+ \internal
+*/
+
class ExecCommand : public PyInterp_LockRequest
{
public:
{
int ret = getInterp()->run( myCommand.toLatin1() );
if ( ret < 0 )
- myState = PyInterp_Event::ERROR;
+ myState = PyInterp_Event::ERROR;
else if ( ret > 0 )
- myState = PyInterp_Event::INCOMPLETE;
- myError = getInterp()->getverr().c_str();
- myOutput = getInterp()->getvout().c_str();
+ myState = PyInterp_Event::INCOMPLETE;
}
- else
- {
- myError = "";
- myOutput = "";
- }
}
/*!
return new PyInterp_Event( myState, (PyInterp_Request*)this );
}
-public:
- QString myError; //!< Python command error message
- QString myOutput; //!< Python command output log
-
private:
QString myCommand; //!< Python command
int myState; //!< Python command execution status
};
+/*!
+ \class PrintEvent
+ \brief Python command output backend event.
+ \internal
+*/
+
+#define PRINT_EVENT 65432
+
+class PrintEvent : public QEvent
+{
+public:
+ /*!
+ \brief Constructor
+ \param c message text (python trace)
+ */
+ PrintEvent( const char* c ) : QEvent( (QEvent::Type)PRINT_EVENT ), myText( c ) {}
+ /*!
+ \brief Get message
+ \return message text (python trace)
+ */
+ QString text() const { return myText; }
+
+private:
+ QString myText; //!< Event message (python trace)
+};
+
+void staticCallback( void* data, char* c )
+{
+ QApplication::postEvent( (PyConsole_Editor*)data, new PrintEvent( c ) );
+}
+
/*!
\brief Constructor.
setUndoRedoEnabled( false );
myPrompt = READY_PROMPT;
- setLineWrapMode( QTextEdit::NoWrap );
- setWordWrapMode( QTextOption::NoWrap );
+ setLineWrapMode( QTextEdit::WidgetWidth );
+ setWordWrapMode( QTextOption::WrapAnywhere );
setAcceptRichText( false );
+ theInterp->setvoutcb( staticCallback, this );
+ theInterp->setverrcb( staticCallback, this );
+
// san - This is necessary for troubleless initialization
onPyInterpChanged( theInterp );
}
{
switch( event->type() )
{
+ case PRINT_EVENT:
+ {
+ PrintEvent* pe=(PrintEvent*)event;
+ addText( pe->text() );
+ return;
+ }
case PyInterp_Event::OK:
case PyInterp_Event::ERROR:
{
- PyInterp_Event* pe = dynamic_cast<PyInterp_Event*>( event );
- if ( pe )
- {
- ExecCommand* ec = dynamic_cast<ExecCommand*>( pe->GetRequest() );
- if ( ec )
- {
- // The next line has appeared dangerous in case if
- // Python command execution has produced very large output.
- // A more clever approach is needed...
- // print python output
- addText( ec->myOutput, true );
- addText( ec->myError );
- }
- }
// clear command buffer
myCommandBuffer.truncate( 0 );
+ // add caret return line if necessary
+ QTextBlock par = document()->end().previous();
+ QString txt = par.text();
+ txt.truncate( txt.length() - 1 );
+ if ( !txt.isEmpty() )
+ addText( "", true );
// set "ready" prompt
myPrompt = READY_PROMPT;
addText( myPrompt );
{
// extend command buffer (multi-line command)
myCommandBuffer.append( "\n" );
+ // add caret return line if necessary
+ QTextBlock par = document()->end().previous();
+ QString txt = par.text();
+ txt.truncate( txt.length() - 1 );
+ if ( !txt.isEmpty() )
+ addText( "", true );
// set "dot" prompt
myPrompt = DOTS_PROMPT;
addText( myPrompt, true );
#include "PyInterp_Interp.h" // !!! WARNING !!! THIS INCLUDE MUST BE THE VERY FIRST !!!
#include <cStringIO.h>
+#include <structmember.h>
#include <string>
#include <vector>
-
-using namespace std;
+#include <iostream>
#define TOP_HISTORY_PY "--- top of history ---"
#define BEGIN_HISTORY_PY "--- begin of history ---"
+/*!
+ \class PyLockWrapper
+ \brief Python GIL wrapper.
+*/
+
+/*!
+ \brief Constructor. Automatically acquires GIL.
+ \param theThreadState python thread state
+*/
PyLockWrapper::PyLockWrapper(PyThreadState* theThreadState):
myThreadState(theThreadState),
mySaveThreadState(0)
PyEval_AcquireThread(myThreadState);
}
+/*!
+ \brief Desstructor. Automatically releases GIL.
+*/
PyLockWrapper::~PyLockWrapper()
{
if (myThreadState->interp == PyInterp_Interp::_interp)
PyEval_ReleaseThread(myThreadState);
}
+/*!
+ \brief Get Python GIL wrapper.
+ \return GIL lock wrapper (GIL is automatically acquired here)
+*/
PyLockWrapper PyInterp_Interp::GetLockWrapper()
{
return _tstate;
}
+/*
+ The following functions are used to hook the Python
+ interpreter output.
+*/
+
+static void
+PyStdOut_dealloc(PyStdOut *self)
+{
+ PyObject_Del(self);
+}
+
+static PyObject*
+PyStdOut_write(PyStdOut *self, PyObject *args)
+{
+ char *c;
+ int l;
+ if (!PyArg_ParseTuple(args, "t#:write",&c, &l))
+ return NULL;
+ if(self->_cb==NULL) {
+ if ( self->_iscerr )
+ std::cerr << c ;
+ else
+ std::cout << c ;
+ }
+ else {
+ self->_cb(self->_data,c);
+ }
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyMethodDef PyStdOut_methods[] = {
+ {"write", (PyCFunction)PyStdOut_write, METH_VARARGS,
+ PyDoc_STR("write(string) -> None")},
+ {NULL, NULL} /* sentinel */
+};
+
+static PyMemberDef PyStdOut_memberlist[] = {
+ {"softspace", T_INT, offsetof(PyStdOut, softspace), 0,
+ "flag indicating that a space needs to be printed; used by print"},
+ {NULL} /* Sentinel */
+};
+
+static PyTypeObject PyStdOut_Type = {
+ /* The ob_type field must be initialized in the module init function
+ * to be portable to Windows without using C++. */
+ PyObject_HEAD_INIT(NULL)
+ 0, /*ob_size*/
+ "PyOut", /*tp_name*/
+ sizeof(PyStdOut), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ /* methods */
+ (destructor)PyStdOut_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ PyObject_GenericGetAttr, /*tp_getattro*/
+ /* softspace is writable: we must supply tp_setattro */
+ PyObject_GenericSetAttr, /* tp_setattro */
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ PyStdOut_methods, /*tp_methods*/
+ PyStdOut_memberlist, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ 0, /*tp_dictoffset*/
+ 0, /*tp_init*/
+ 0, /*tp_alloc*/
+ 0, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+};
+
+#define PyStdOut_Check(v) ((v)->ob_type == &PyStdOut_Type)
+
+static PyStdOut* newPyStdOut( bool iscerr )
+{
+ PyStdOut *self;
+ self = PyObject_New(PyStdOut, &PyStdOut_Type);
+ if (self == NULL)
+ return NULL;
+ self->softspace = 0;
+ self->_cb = NULL;
+ self->_iscerr = iscerr;
+ return self;
+}
+
/*!
\class PyInterp_Interp
\brief Generic embedded Python interpreter.
return;
}
- // Create cStringIO to capture stdout and stderr
- PycString_IMPORT;
- if (PycStringIO) { // CTH11627 : additional check
- _vout = PycStringIO->NewOutput(128);
- _verr = PycStringIO->NewOutput(128);
- }
+ // Create python objects to capture stdout and stderr
+ _vout=(PyObject*)newPyStdOut( false ); // stdout
+ _verr=(PyObject*)newPyStdOut( true ); // stderr
// All the initRun outputs are redirected to the standard output (console)
initRun();
PySys_SetArgv(_argc, _argv);
PyEval_InitThreads(); // Create (and acquire) the interpreter lock
_interp = PyThreadState_Get()->interp;
+ if (PyType_Ready(&PyStdOut_Type) < 0) {
+ PyErr_Print();
+ }
_gtstate = PyEval_SaveThread(); // Release global thread state
}
\brief Get embedded Python interpreter banner.
\return banner string
*/
-string PyInterp_Interp::getbanner()
+std::string PyInterp_Interp::getbanner()
{
// Should we take the lock ?
// PyEval_RestoreThread(_tstate);
- string aBanner("Python ");
+ std::string aBanner("Python ");
aBanner = aBanner + Py_GetVersion() + " on " + Py_GetPlatform() ;
aBanner = aBanner + "\ntype help to get general information on environment\n";
//PyEval_SaveThread();
*/
bool PyInterp_Interp::initRun()
{
+ //
+ // probably all below code isn't required
+ //
+ /*
PySys_SetObject("stderr",_verr);
PySys_SetObject("stdout",_vout);
- PyObjWrapper verr(PyObject_CallMethod(_verr,"reset",""));
- PyObjWrapper vout(PyObject_CallMethod(_vout,"reset",""));
-
//PyObject *m = PyImport_GetModuleDict();
PySys_SetObject("stdout",PySys_GetObject("__stdout__"));
PySys_SetObject("stderr",PySys_GetObject("__stderr__"));
-
+ */
return true;
}
PySys_SetObject("stderr",_verr);
PySys_SetObject("stdout",_vout);
- PyObjWrapper verr(PyObject_CallMethod(_verr,"reset",""));
- PyObjWrapper vout(PyObject_CallMethod(_vout,"reset",""));
-
int ier = compile_command(command,_g);
// Outputs are redirected on standards outputs (console)
}
/*!
- \brief Get standard error output.
- \return standard error output
+ \brief Set Python standard output device hook.
+ \param cb callback function
+ \param data callback function parameters
*/
-string PyInterp_Interp::getverr(){
- //PyLockWrapper aLock(_tstate);
- PyObjWrapper v(PycStringIO->cgetvalue(_verr));
- string aRet(PyString_AsString(v));
- return aRet;
+void PyInterp_Interp::setvoutcb(PyOutChanged* cb, void* data)
+{
+ ((PyStdOut*)_vout)->_cb=cb;
+ ((PyStdOut*)_vout)->_data=data;
}
/*!
- \brief Get standard output.
- \return standard output
+ \brief Set Python standard error device hook.
+ \param cb callback function
+ \param data callback function parameters
*/
-string PyInterp_Interp::getvout(){
- //PyLockWrapper aLock(_tstate);
- PyObjWrapper v(PycStringIO->cgetvalue(_vout));
- string aRet(PyString_AsString(v));
- return aRet;
+void PyInterp_Interp::setverrcb(PyOutChanged* cb, void* data)
+{
+ ((PyStdOut*)_verr)->_cb=cb;
+ ((PyStdOut*)_verr)->_data=data;
}
~PyLockWrapper();
};
+typedef void PyOutChanged(void* data,char * c);
+
class PYINTERP_EXPORT PyInterp_Interp
{
public:
PyLockWrapper GetLockWrapper();
std::string getbanner();
- std::string getverr();
- std::string getvout();
+ void setverrcb(PyOutChanged*,void*);
+ void setvoutcb(PyOutChanged*,void*);
const char * getPrevious();
const char * getNext();
}
};
+typedef struct {
+ PyObject_HEAD
+ int softspace;
+ PyOutChanged* _cb;
+ void* _data;
+ bool _iscerr;
+} PyStdOut;
+
#endif // PYINTERP_INTERP_H
#include <SUIT_ResourceMgr.h>
#include <qobjectlist.h>
+#include <QxGraph_CanvasView.h>
/*!
Constructor
*/
void QxGraph_Canvas::addView(QCanvasView* theView)
{
+ myViews.append( theView );
QCanvas::addView(theView);
- theView->setPaletteBackgroundColor(backgroundColor().light(120));
+ theView->setPaletteBackgroundColor(backgroundColor().light(120));
+}
+
+/*!
+ Remove view
+*/
+void QxGraph_Canvas::removeView( QCanvasView* theView )
+{
+ myViews.remove( theView );
+}
+
+/*!
+ Remove item
+*/
+void QxGraph_Canvas::removeItem( QCanvasItem* theItem )
+{
+ QValueList< QCanvasView* >::iterator anIter;
+ for ( anIter = myViews.begin(); anIter != myViews.end(); ++anIter )
+ {
+ QxGraph_CanvasView* aView = dynamic_cast<QxGraph_CanvasView*>( *anIter );
+ if ( aView )
+ aView->itemRemoved( theItem );
+ }
+
+ QCanvas::removeItem( theItem );
}
/*!
QxGraph_Canvas(SUIT_ResourceMgr*);
virtual ~QxGraph_Canvas();
- void addView(QCanvasView* theView);
+ virtual void addView(QCanvasView* theView);
+ virtual void removeView(QCanvasView*);
QPtrList<QxGraph_Prs> getPrsList() const { return myPrsList; }
QxGraph_Prs* getPrs(int theIndex = 0);
void addPrs(QxGraph_Prs* thePrs) { myPrsList.append(thePrs); }
- private:
+ virtual void removeItem( QCanvasItem* );
+
+private:
+
+ QValueList< QCanvasView* > myViews;
QPtrList<QxGraph_Prs> myPrsList;
};
}
}
+/*!
+ This method is called by QxGraph_Canvas when item is removed.
+ QxGraph_CanvasView updates its own data accordingly
+*/
+void QxGraph_CanvasView::itemRemoved( QCanvasItem* theItem )
+{
+ if ( myCurrentItem == theItem )
+ myCurrentItem = 0;
+
+ QxGraph_ActiveItem* anActiveItem = dynamic_cast<QxGraph_ActiveItem*>( theItem );
+ if ( anActiveItem )
+ {
+ if ( myHilightedItem == anActiveItem )
+ myHilightedItem = 0;
+ if ( mySelectedItem == anActiveItem )
+ mySelectedItem = 0;
+ }
+}
+
+void QxGraph_CanvasView::setSelectedItem( QxGraph_ActiveItem* theItem )
+{
+ mySelectedItem = theItem;
+}
+
+QxGraph_ActiveItem* QxGraph_CanvasView::getSelectedItem() const
+{
+ return mySelectedItem;
+}
+
void QxGraph_CanvasView::contentsMouseReleaseEvent(QMouseEvent* theEvent)
{
QPoint aPoint = inverseWorldMatrix().map(theEvent->pos());
}
}
}
+
+
+
void activateGlobalPanning();
void activateReset();
+ void itemRemoved( QCanvasItem* );
+
+ void setSelectedItem( QxGraph_ActiveItem* theItem );
+ QxGraph_ActiveItem* getSelectedItem() const;
+
public slots:
void onTimeout();
//void changeBackground();
//
#include "QxGraph_ViewManager.h"
-int QxGraph_ViewManager::myMaxId = 0;
-
/*!
Constructor
*/
SUIT_ViewModel* theViewModel )
: SUIT_ViewManager( theStudy, theDesktop, theViewModel )
{
- myId = ++myMaxId;
}
/*!
protected:
void setViewName(SUIT_ViewWindow* theView);
-private:
- static int myMaxId;
- int myId;
-
};
#endif
#include <SUIT_ResourceMgr.h>
#include <SUIT_Session.h>
-
-#include <QtxMultiAction.h>
+#include <SUIT_ToolButton.h>
//QT Include
#include <qlayout.h>
*/
void QxGraph_ViewWindow::createToolBar()
{
- QtxMultiAction* aScaleAction = new QtxMultiAction( this );
- aScaleAction->insertAction( myActionsMap[FitAllId] );
- aScaleAction->insertAction( myActionsMap[FitRectId] );
- aScaleAction->insertAction( myActionsMap[ZoomId] );
- myToolBar->addAction( aScaleAction );
-
- QtxMultiAction* aPanningAction = new QtxMultiAction( this );
- aPanningAction->insertAction( myActionsMap[PanId] );
- aPanningAction->insertAction( myActionsMap[GlobalPanId] );
- myToolBar->addAction( aPanningAction );
-
- myToolBar->addAction( myActionsMap[ResetId] );
+ SUIT_ToolButton* aScaleBtn = new SUIT_ToolButton(myToolBar, "scale");
+ aScaleBtn->AddAction(myActionsMap[FitAllId]);
+ aScaleBtn->AddAction(myActionsMap[FitRectId]);
+ aScaleBtn->AddAction(myActionsMap[ZoomId]);
+
+ SUIT_ToolButton* aPanningBtn = new SUIT_ToolButton(myToolBar, "pan");
+ aPanningBtn->AddAction(myActionsMap[PanId]);
+ aPanningBtn->AddAction(myActionsMap[GlobalPanId]);
+
+ myActionsMap[ResetId]->addTo(myToolBar);
}
/*!
%Import QtGuimod.sip
%Import QtXmlmod.sip
+%ExportedHeaderCode
+#include <SalomePyQt.h>
+%End
+
class SALOME_Selection : QObject
{
%TypeHeaderCode
#include "SALOMEGUI_Swig.hxx"
%}
-%include "pointer.i"
+%include "cpointer.i"
/* Exception handler for all functions */
%exception {
/*!Update commands status.*/
void STD_Application::updateCommandsStatus()
{
+ SUIT_Application::updateCommandsStatus();
+
bool aHasStudy = activeStudy() != 0;
bool aIsNeedToSave = false;
if ( aHasStudy )
public:
enum { FileNewId, FileOpenId, FileCloseId, FileSaveId, FileSaveAsId, FileExitId,
- ViewWindowsId, ViewToolBarsId, ViewStatusBarId, NewWindowId,
+ ViewWindowsId, ViewToolBarsId, ViewStatusBarId, NewWindowId,
EditCutId, EditCopyId, EditPasteId, HelpAboutId, UserID };
- enum { CloseSave, CloseDiscard, CloseCancel };
-
-public:
+ public:
STD_Application();
virtual ~STD_Application();
MenuHelpId = 7
};
+ enum { CloseCancel, CloseSave, CloseDiscard };
+
protected:
virtual void createActions();
virtual void updateDesktopTitle();
</message>
<message>
<source>QUE_DESK_EXIT</source>
- <translation>Do you really want to quit ?</translation>
+ <translation>Are you sure you want to quit?</translation>
</message>
<message>
<source>INF_INFO</source>
<translation>Document "%1" has been modified.
Do you want to save changes?</translation>
</message>
+ <message>
+ <source>CLOSE_STUDY</source>
+ <translation>Close active study</translation>
+ </message>
+ <message>
+ <source>CLOSE_QUESTION</source>
+ <translation>Do you want to save study before closing?</translation>
+ </message>
</context>
</TS>
#include <QTimer>
#include <QLabel>
#include <QStatusBar>
+#include <QApplication>
#include <QtxAction.h>
#include <QtxActionMenuMgr.h>
*/
SUIT_Application::SUIT_Application()
: QObject( 0 ),
-myStudy( 0 ),
-myDesktop( 0 ),
-myStatusLabel( 0 )
+ myStudy( 0 ),
+ myDesktop( 0 ),
+ myStatusLabel( 0 )
{
if ( SUIT_Session::session() )
SUIT_Session::session()->insertApplication( this );
*/
SUIT_Application::~SUIT_Application()
{
- delete myStudy;
- myStudy = 0;
+ SUIT_Study* s = myStudy;
+ setActiveStudy( 0 );
+ delete s;
setDesktop( 0 );
}
emit infoChanged( QString() );
}
+/*!
+ Update status of the registerd actions
+*/
+void SUIT_Application::updateCommandsStatus()
+{
+}
+
/*!
Initialize with application arguments
\param argc - number of application arguments
delete myDesktop;
myDesktop = desk;
- if ( myDesktop )
+ if ( myDesktop ) {
connect( myDesktop, SIGNAL( activated() ), this, SLOT( onDesktopActivated() ) );
+ // Force desktop activation (NPAL16628)
+ QApplication::postEvent(myDesktop, new QEvent(QEvent::WindowActivate));
+ }
}
/*!
if ( myStudy == study )
return;
+ if ( myStudy )
+ disconnect( myStudy, SIGNAL( studyModified( SUIT_Study* ) ),
+ this, SLOT( updateCommandsStatus() ) );
+ if ( study )
+ connect( study, SIGNAL( studyModified( SUIT_Study* ) ),
+ this, SLOT( updateCommandsStatus() ) );
+
myStudy = study;
}
{
emit activated( this );
}
+
+/*!
+ SLOT: is used for Help browsing
+*/
+void SUIT_Application::onHelpContextModule( const QString& /*theComponentName*/,
+ const QString& /*theFileName*/,
+ const QString& /*theContext*/ )
+{
+}
void activated( SUIT_Application* );
void infoChanged( QString );
+public slots:
+ virtual void updateCommandsStatus();
+ virtual void onHelpContextModule( const QString&, const QString&, const QString& = QString() );
+
private slots:
void onInfoClear();
SUIT_Session::SUIT_Session()
: QObject(),
-myResMgr( 0 ),
-myActiveApp( 0 ),
-myHandler( 0 ),
-myExitStatus( FROM_GUI )
+ myResMgr( 0 ),
+ myActiveApp( 0 ),
+ myHandler( 0 ),
+ myExitStatus( NORMAL ),
+ myExitFlags ( 0 )
{
SUIT_ASSERT( !mySession )
/*!
Destroys session by closing all applications.
*/
-void SUIT_Session::closeSession( int mode )
+void SUIT_Session::closeSession( int mode, int flags )
{
AppList apps = myAppList;
for ( AppList::const_iterator it = apps.begin(); it != apps.end(); ++it )
}
else if ( mode == DONT_SAVE )
{
- myExitStatus = FROM_CORBA_SESSION;
- //....
+ myExitStatus = FORCED;
}
app->closeApplication();
}
+
+ myExitFlags = flags;
+}
+
+/*!
+ Get session exit flags.
+
+ By default, exit flags are set to 0. You can use pass any flags to the
+ closeSession() method if you need to process them later on application
+ quiting.
+
+ \return exit flags
+*/
+int SUIT_Session::exitFlags() const
+{
+ return myExitFlags;
}
/*! \retval return myHandler*/
typedef LIB_HANDLE AppLib;
enum { ASK = 0, SAVE, DONT_SAVE } CloseMode;
- enum { FROM_GUI = 0, FROM_CORBA_SESSION } ExitStatus;
+ enum { NORMAL = 0, FORCED } ExitStatus;
public:
SUIT_Session();
SUIT_ResourceMgr* resourceMgr() const;
- void closeSession( int mode = ASK );
+ void closeSession( int mode = ASK, int flags = 0 );
+ int exitFlags() const;
SUIT_ExceptionHandler* handler() const;
static SUIT_Session* mySession;
int myExitStatus;
+ int myExitFlags;
};
#endif
myIsModified = on;
}
+/*!
+ Set study modified to \a on.
+ */
+void SUIT_Study::Modified()
+{
+ setIsModified( true );
+ sendChangesNotification();
+}
+
/*!
Set root object.
*/
}
/*!
- * \brief Stores the study state
-*/
-int SUIT_Study::storeState()
-{
- return -1;
-}
-
-/*!
- * \brief Restores the study state
-*/
+ * \brief Restores the study state.
+ */
void SUIT_Study::restoreState(int /*savePoint*/)
{
}
virtual bool isSaved() const;
virtual bool isModified() const;
+ virtual void Modified();
virtual void closeDocument( bool = true );
virtual bool openDocument( const QString& );
bool suspend( SUIT_Operation* );
bool resume( SUIT_Operation* );
- virtual int storeState();
virtual void restoreState(int savePoint);
signals:
virtual void setRoot( SUIT_DataObject* );
virtual void setStudyName( const QString& );
- virtual void operationStarted( SUIT_Operation* );
- virtual void operationAborted( SUIT_Operation* );
- virtual void operationStopped( SUIT_Operation* );
- virtual void operationCommited( SUIT_Operation* );
+ virtual void operationStarted( SUIT_Operation* );
+ virtual void operationAborted( SUIT_Operation* );
+ virtual void operationStopped( SUIT_Operation* );
+ virtual void operationCommited( SUIT_Operation* );
virtual bool openTransaction();
virtual bool abortTransaction();
return aView;
}
+/*! Get identifier */
+int SUIT_ViewManager::getId() const
+{
+ return myId;
+}
+
/*!Create view window.*/
void SUIT_ViewManager::createView()
{
virtual void setShown( const bool );
virtual void setDestructiveClose( const bool );
+ int getId() const;
+
public slots:
void createView();
void closeAllViews();
-I$(srcdir)/../VTKViewer
libSVTK_la_LDFLAGS= \
+ $(VTK_LIBS) \
$(QT_MT_LIBS) \
- $(OCC_LIBS) \
- $(VTK_LIBS)
+ $(CAS_KERNEL) $(CAS_VIEWER)
libSVTK_la_LIBADD= ../Qtx/libqtx.la ../SUIT/libsuit.la ../OBJECT/libSalomeObject.la \
../Prs/libSalomePrs.la ../VTKViewer/libVTKViewer.la
#include <vtkCommand.h>
#include <vtkCamera.h>
#include <vtkRenderer.h>
-#include <vtkPicker.h>
#include <vtkPointPicker.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
theInteractor->GetEventPosition(theX,theY);
theY = theInteractor->GetSize()[1] - theY - 1;
}
-
- //==================================================================
- // function : GetFirstSALOMEActor
- // purpose :
- //==================================================================
- struct THaveIO
- {
- bool
- operator()(SALOME_Actor* theActor)
- {
- return theActor->hasIO();
- }
- };
-
- inline
- SALOME_Actor*
- GetFirstSALOMEActor(vtkPicker *thePicker)
- {
- return VTK::Find<SALOME_Actor>(thePicker->GetActors(),THaveIO());
- }
}
vtkStandardNewMacro(SVTK_InteractorStyle);
+
/*!
Constructor
*/
SVTK_InteractorStyle
::SVTK_InteractorStyle():
mySelectionEvent(new SVTK_SelectionEvent()),
- myPicker(vtkPicker::New()),
myPointPicker(vtkPointPicker::New()),
myLastHighlitedActor(NULL),
myLastPreHighlitedActor(NULL),
myHighlightRotationPointActor(SVTK_Actor::New()),
myRectBand(0)
{
- myPicker->Delete();
myPointPicker->Delete();
myPointPicker->SetTolerance(0.025);
else if ( myCurrRotationPointType == SVTK::StartPointSelection )
{
SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY();
- myPicker->Pick(aSelectionEvent->myX,
- aSelectionEvent->myY,
- 0.0,
- GetCurrentRenderer());
- if ( SALOME_Actor* anActor = GetFirstSALOMEActor(myPicker.GetPointer()) )
+
+ SALOME_Actor* anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
+
+ if ( anActor )
{
myPointPicker->Pick( aSelectionEvent->myX,
aSelectionEvent->myY,
this->FindPokedRenderer(aSelectionEvent->myX, aSelectionEvent->myY);
Interactor->StartPickCallback();
- myPicker->Pick(aSelectionEvent->myX,
- aSelectionEvent->myY,
- 0.0,
- GetCurrentRenderer());
- //
- SALOME_Actor* anActor = GetFirstSALOMEActor(myPicker.GetPointer());
+ SALOME_Actor* anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
+
aSelectionEvent->myIsRectangle = false;
if(!myShiftState)
bool anIsChanged = false;
- myPicker->Pick(aSelectionEvent->myX,
- aSelectionEvent->myY,
- 0.0,
- GetCurrentRenderer());
-
- SALOME_Actor *anActor = GetFirstSALOMEActor(myPicker.GetPointer());
+ SALOME_Actor *anActor = GetSelector()->Pick(aSelectionEvent, GetCurrentRenderer());
if ( myCurrRotationPointType == SVTK::StartPointSelection )
{
void operator=(const SVTK_ControllerOnKeyDown&); //Not implemented
};
-class vtkPicker;
class vtkPointPicker;
class SALOME_Actor;
PSelectionEvent mySelectionEvent;
- vtkSmartPointer<vtkPicker> myPicker;
-
unsigned long myCurrRotationPointType;
unsigned long myPrevRotationPointType;
// WorldToView() is called. This is expensive, so we get the matrix once
// and handle the transformation ourselves.
vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New();
- aMatrix->DeepCopy(theRenderer->GetActiveCamera()->
- GetCompositePerspectiveTransformMatrix(1,0,1));
+ aMatrix->DeepCopy( theRenderer->GetActiveCamera()->
+ GetCompositePerspectiveTransformMatrix( theRenderer->GetTiledAspectRatio(), 0, 1 ) );
// We grab the z-buffer for the selection region all at once and probe the resulting array.
float *aZPtr = theRenderer->GetRenderWindow()->
GetZbufferData(theSelection[0], theSelection[1], theSelection[2], theSelection[3]);
//cout<<"theSelection = {"<<theSelection[0]<<", "<<theSelection[1]<<", "<<theSelection[2]<<", "<<theSelection[3]<<"}\n";
- /*
+
+ //cout<<"\t";
+ for(int iX = theSelection[0]; iX <= theSelection[2]; iX++){
+ //cout<<iX<<"\t";
+ }
+ //cout<<endl;
+
for(int iY = theSelection[1]; iY <= theSelection[3]; iY++){
+ //cout<<iY<<"\t";
for(int iX = theSelection[0]; iX <= theSelection[2]; iX++){
- cout<<GetZ(aZPtr,theSelection,iX,iY)<<" ";
+ //cout<<std::setprecision(4)<<GetZ(aZPtr,theSelection,iX,iY)<<"\t";
}
- cout<<endl;
+ //cout<<endl;
}
- */
+
for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
// perform conversion
vtkFloatingPointType aX[4] = {1.0, 1.0, 1.0, 1.0};
myDevice->Delete();
myTransform->Delete();
- SetSelectionTolerance();
-
myPointPicker->Delete();
myCellPicker->Delete();
{
myInteractor = theInteractor;
mySelector = theSelector;
+ SetSelectionTolerance();
}
/*!
void
SVTK_Renderer
::SetSelectionTolerance(const double& theTolNodes,
- const double& theTolCell)
+ const double& theTolCell,
+ const double& theTolObjects)
{
myPointPicker->SetTolerance( theTolNodes );
myCellPicker->SetTolerance( theTolCell );
myPointRectPicker->SetTolerance( theTolNodes );
myCellRectPicker->SetTolerance( theTolCell );
+
+ mySelector->SetTolerance( theTolObjects );
}
//! Setup requested tolerance for the picking
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
- const double& theTolCell = 0.001);
+ const double& theTolCell = 0.001,
+ const double& theTolObjects = 0.025);
//----------------------------------------------------------------------------
//! Adjust all intenal actors (trihedron and graduated rules) to the scene
#include <TColStd_IndexedMapOfInteger.hxx>
#include <vtkCallbackCommand.h>
+#include <vtkActorCollection.h>
+#include <vtkCellPicker.h>
+
+
+/*!
+ Find first SALOME_Actor from the end of actors collection
+*/
+inline
+SALOME_Actor*
+GetLastSALOMEActor(vtkActorCollection* theCollection)
+{
+ if (theCollection) {
+ for (int i = theCollection->GetNumberOfItems() - 1; i >= 0; i--) {
+ if (SALOME_Actor* anActor = dynamic_cast<SALOME_Actor*>(theCollection->GetItemAsObject(i)))
+ if (anActor->hasIO())
+ return anActor;
+ }
+ }
+ return NULL;
+}
+
/*!
\return new SVTK_Selector
Default constructor
*/
SVTK_SelectorDef
-::SVTK_SelectorDef()
+::SVTK_SelectorDef():
+ myPicker(vtkPicker::New()),
+ myCellPicker(vtkCellPicker::New())
{
mySelectionMode = ActorSelection;
+
+ myPicker->Delete();
+ myCellPicker->Delete();
}
/*!
return Handle(VTKViewer_Filter)();
}
+SALOME_Actor*
+SVTK_SelectorDef
+::Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const
+{
+ myCellPicker->Pick(theEvent->myX,
+ theEvent->myY,
+ 0.0,
+ theRenderer);
+
+ vtkActorCollection* aListActors = myCellPicker->GetActors();
+ SALOME_Actor* anActor = GetLastSALOMEActor(aListActors);
+
+ if (! anActor) {
+ myPicker->Pick(theEvent->myX,
+ theEvent->myY,
+ 0.0,
+ theRenderer);
+ aListActors = myPicker->GetActors();
+ anActor = GetLastSALOMEActor(aListActors);
+ }
+
+ return anActor;
+}
+
+void
+SVTK_SelectorDef
+::SetTolerance(const double& theTolerance)
+{
+ myPicker->SetTolerance(theTolerance);
+ myCellPicker->SetTolerance(theTolerance);
+}
class Handle(VTKViewer_Filter);
class SALOME_Actor;
+class SVTK_SelectionEvent;
+class vtkRenderer;
class Handle(SALOME_InteractiveObject);
//! Define an abstract interface for selection in SVTK package
virtual
void
EndPickCallback() = 0;
+
+ //----------------------------------------------------------------------------
+ virtual
+ SALOME_Actor*
+ Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const = 0;
+
+ virtual
+ void
+ SetTolerance(const double& theTolerance) = 0;
};
class SVTK_Viewer;
class SVTK_ViewWindow;
+class vtkPicker;
+class vtkCellPicker;
class SVTK_SelectorDef: public SVTK_Selector
{
void
EndPickCallback();
+ //----------------------------------------------------------------------------
+ virtual
+ SALOME_Actor*
+ Pick(const SVTK_SelectionEvent* theEvent, vtkRenderer* theRenderer) const;
+
+ virtual
+ void
+ SetTolerance(const double& theTolerance);
+
private:
int mySelectionMode;
typedef std::map<TFilterID,Handle(VTKViewer_Filter)> TFilters;
TFilters myFilters;
+
+ vtkSmartPointer<vtkPicker> myPicker;
+ vtkSmartPointer<vtkCellPicker> myCellPicker;
};
#endif
void
SVTK_View
::SetSelectionTolerance(const double& theTolNodes,
- const double& theTolCell)
+ const double& theTolCell,
+ const double& theTolObjects)
{
- GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell);
+ GetRenderer()->SetSelectionTolerance(theTolNodes, theTolCell, theTolObjects);
}
/*!
//! Redirect the request to #SVTK_Renderer::SetPreselectionProp
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
- const double& theTolCell = 0.001);
+ const double& theTolCell = 0.001,
+ const double& theTolObjects = 0.025);
protected:
int myDisplayMode;
#include <vtkPointPicker.h>
#include <vtkCellPicker.h>
#include <vtkAxisActor2D.h>
+#include <vtkGL2PSExporter.h>
#include "QtxAction.h"
#include "SUIT_Session.h"
#include "SUIT_MessageBox.h"
#include "SUIT_Accel.h"
-
#include "SUIT_Tools.h"
#include "SUIT_ResourceMgr.h"
#include "SUIT_Accel.h"
+#include "SUIT_OverrideCursor.h"
#include "VTKViewer_Utilities.h"
return myDumpImage;
}
+QString SVTK_ViewWindow::filter() const
+{
+ return tr( "SVTK_IMAGE_FILES" );
+}
+
+bool SVTK_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format )
+{
+ if ( format != "PS" && format != "EPS" && format != "PDF" )
+ return SUIT_ViewWindow::dumpViewToFormat( img, fileName, format );
+
+ SUIT_OverrideCursor wc;
+
+ vtkGL2PSExporter *anExporter = vtkGL2PSExporter::New();
+ anExporter->SetRenderWindow(getRenderWindow());
+
+ if ( format == "PS" ) {
+ anExporter->SetFileFormatToPS();
+ anExporter->CompressOff();
+ }
+
+ if ( format == "EPS" ) {
+ anExporter->SetFileFormatToEPS();
+ anExporter->CompressOff();
+ }
+
+ if ( format == "PDF" ) {
+ anExporter->SetFileFormatToPDF();
+ }
+
+ QString aFilePrefix(fileName);
+ QString anExtension(SUIT_Tools::extension(fileName));
+ aFilePrefix.truncate(aFilePrefix.length() - 1 - anExtension.length());
+ anExporter->SetFilePrefix(aFilePrefix.toLatin1().data());
+ anExporter->Write();
+ anExporter->Delete();
+
+ return true;
+}
+
/*!
\refresh QImage, containing all scene rendering in window
*/
void
SVTK_ViewWindow
::SetSelectionTolerance(const double& theTolNodes,
- const double& theTolItems)
+ const double& theTolItems,
+ const double& theTolObjects)
{
- myView->SetSelectionTolerance(theTolNodes,theTolItems);
+ myView->SetSelectionTolerance(theTolNodes, theTolItems, theTolObjects);
}
/*!
virtual
~SVTK_ViewWindow();
+ virtual QImage dumpView();
+
//! To initialize #SVTK_ViewWindow instance
virtual
void
virtual
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
- const double& theTolCell = 0.001);
+ const double& theTolCell = 0.001,
+ const double& theTolObjects = 0.025);
//! Methods to save/restore visual parameters of a view (pan, zoom, etc.)
virtual
void
doSetVisualParameters( const QString& );
- QImage dumpView();
+ virtual QString filter() const;
+ virtual bool dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format );
+
virtual bool action( const int );
SVTK_View* myView;
<source>DSC_BACK_VIEW</source>
<translation>Back View</translation>
</message>
+ <message>
+ <source>SVTK_IMAGE_FILES</source>
+ <translation>Images Files (*.bmp *.png *.jpg *.jpeg *.pdf *.ps *.eps)</translation>
+ </message>
</context>
<context>
<name>SVTK_AxisWidget</name>
SalomeApp_TypeFilter.h \
SalomeApp_StudyPropertiesDlg.h \
SalomeApp_CheckFileDlg.h \
- SalomeApp_VisualState.h
+ SalomeApp_VisualState.h \
+ SalomeApp_ExitDlg.h
dist_libSalomeApp_la_SOURCES= \
SalomeApp_Module.cxx \
SalomeApp_StudyPropertiesDlg.cxx \
SalomeApp_ListView.cxx \
SalomeApp_CheckFileDlg.cxx \
- SalomeApp_VisualState.cxx
+ SalomeApp_VisualState.cxx \
+ SalomeApp_ExitDlg.cxx
MOC_FILES= \
SalomeApp_Application_moc.cxx \
SalomeApp_Study_moc.cxx \
SalomeApp_StudyPropertiesDlg_moc.cxx \
SalomeApp_ListView_moc.cxx \
- SalomeApp_CheckFileDlg_moc.cxx
+ SalomeApp_CheckFileDlg_moc.cxx \
+ SalomeApp_ExitDlg_moc.cxx
+
nodist_libSalomeApp_la_SOURCES= $(MOC_FILES)
dist_salomeres_DATA= \
-I$(srcdir)/../PyConsole -I$(srcdir)/../TOOLSGUI \
-I$(srcdir)/../PyInterp -I$(srcdir)/../Session -I$(top_builddir)/idl \
-I$(srcdir)/../Event \
- -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+ -I$(srcdir)/../CASCatch \
+ -I$(top_builddir)/salome_adm/unix @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ @LIBXML_INCLUDES@
libSalomeApp_la_LDFLAGS=$(PYTHON_LIBS) $(QT_MT_LIBS)
libSalomeApp_la_LIBADD= $(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSalomeDSClient \
- ../SUIT/libsuit.la ../STD/libstd.la ../CAM/libCAM.la \
+ ../SUIT/libsuit.la ../STD/libstd.la ../CAM/libCAM.la ../ObjBrowser/libObjBrowser.la \
../Prs/libSalomePrs.la ../SPlot2d/libSPlot2d.la ../GLViewer/libGLViewer.la \
../OCCViewer/libOCCViewer.la ../VTKViewer/libVTKViewer.la ../OBJECT/libSalomeObject.la \
../SVTK/libSVTK.la ../SOCC/libSOCC.la ../PyInterp/libPyInterp.la \
../PyConsole/libPyConsole.la ../LogWindow/libLogWindow.la \
../LightApp/libLightApp.la ../TOOLSGUI/libToolsGUI.la ../Session/libSalomeSession.la \
- $(CAS_KERNEL)
-
-# QT 4 PORTING TODO
-#../ObjBrowser/libObjBrowser.la
+ ../CASCatch/libCASCatch.la $(CAS_KERNEL)
EXTRA_DIST+=SalomeApp_PyInterp.h
#include "SalomeApp_VisualState.h"
#include "SalomeApp_StudyPropertiesDlg.h"
#include "SalomeApp_LoadStudiesDlg.h"
+#include "SalomeApp_ExitDlg.h"
#include <LightApp_Application.h>
#include <LightApp_Preferences.h>
PyConsole_Console* pyConsole = pythonConsole();
if ( pyConsole ) {
QString extension = fi.suffix().toLower();
- if ( extension == "py" && fi.exists() ) {
+ if ( fi.exists() ) {
// execute python script
QString command = QString( "execfile(\"%1\")" ).arg( fi.absoluteFilePath() );
pyConsole->exec( command );
else {
// import python module
QString command = QString( "import %1" ).arg( pyfiles[j] );
- //QString command = QString( "import %1" ).arg( fi.baseName( true ) );
+ if ( extension == "py" )
+ command = QString( "import %1" ).arg( fi.completeBaseName() );
pyConsole->exec( command );
}
}
return res;
}
+/*!
+ \brief Close application.
+*/
+void SalomeApp_Application::onExit()
+{
+ bool killServers = false;
+ bool result = true;
+
+ if ( exitConfirmation() ) {
+ SalomeApp_ExitDlg dlg( desktop() );
+ result = dlg.exec() == QDialog::Accepted;
+ killServers = dlg.isServersShutdown();
+ }
+
+ if ( result )
+ SUIT_Session::session()->closeSession( SUIT_Session::ASK, killServers );
+}
+
/*!SLOT. Load document.*/
void SalomeApp_Application::onLoadDoc()
{
#include <CORBA.h>
-#include <SALOMEconfig.h>
+//#include <SALOMEconfig.h>
//#include CORBA_CLIENT_HEADER(SALOMEDS)
#include <SALOME_NamingService.hxx>
enum { MenuToolsId = 5 };
enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId,
CatalogGenId, RegDisplayId, SaveGUIStateId, FileLoadId, UserID };
- enum { CloseUnload = STD_Application::CloseCancel+1 };
protected:
+ enum { CloseUnload = CloseDiscard + 1 };
enum { LoadStudyId = OpenStudyId + 1 };
public:
virtual bool onOpenDoc( const QString& );
virtual void onLoadDoc();
virtual bool onLoadDoc( const QString& );
+ virtual void onExit();
virtual void onCopy();
virtual void onPaste();
void onSaveGUIState();// called from VISU
// We disable FPE signal as it was in earlier versions of SALOME. It is enabled
// only in debug mode if the environment variable DISABLE_FPE is not set to 1.
bool raiseFPE;
-#ifdef _DEBUG_
+#if defined(_DEBUG_) | defined(_DEBUG) //the Last for WNT default settings
raiseFPE = true;
char* envDisableFPE = getenv("DISABLE_FPE");
if (envDisableFPE && atoi(envDisableFPE))
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File: SalomeApp_ExitDlg.cxx
+// Author: Margarita KARPUNINA, Open CASCADE S.A.S.
+//
+
+#include "SalomeApp_ExitDlg.h"
+
+#include <QLabel>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGridLayout>
+#include <QPushButton>
+#include <QMessageBox>
+#include <QCheckBox>
+
+/*!
+ * \brief creates a Exit dialog box
+ * \param parent a parent widget
+ * \param modal bool argument, if true the dialog box is a modal dialog box
+ * \param f style flags
+ */
+SalomeApp_ExitDlg::SalomeApp_ExitDlg( QWidget* parent )
+ : QDialog( parent )
+{
+ setModal( true );
+ setWindowTitle( tr( "INF_DESK_EXIT" ) );
+
+ QVBoxLayout* m_vbL = new QVBoxLayout( this );
+ m_vbL->setMargin( 11 );
+ m_vbL->setSpacing( 6 );
+
+ QLabel* m_lIcon = new QLabel( this );
+ QPixmap pm = QMessageBox::standardIcon( QMessageBox::Question );
+ m_lIcon->setPixmap( pm );
+ m_lIcon->setScaledContents( false );
+ m_lIcon->setAlignment( Qt::AlignCenter );
+
+ QLabel* m_lDescr = new QLabel( this );
+ m_lDescr->setText( tr( "QUE_DESK_EXIT" ) );
+ m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
+
+ myServersShutdown = new QCheckBox( tr( "SHUTDOWN_SERVERS" ), this );
+ myServersShutdown->setChecked( true );
+
+ QVBoxLayout* m_vl1 = new QVBoxLayout();
+ m_vl1->setMargin( 10 ); m_vl1->setSpacing( 16 );
+ m_vl1->addWidget( m_lDescr );
+ m_vl1->addWidget( myServersShutdown );
+
+ QHBoxLayout* m_hl1 = new QHBoxLayout();
+ m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 );
+ m_hl1->addWidget( m_lIcon );
+ m_hl1->addStretch();
+ m_hl1->addLayout( m_vl1 );
+ m_hl1->addStretch();
+
+ QPushButton* m_pbOk = new QPushButton( tr( "BUT_OK" ), this );
+ QPushButton* m_pbCancel = new QPushButton( tr( "BUT_CANCEL" ), this );
+
+ QGridLayout* m_hl2 = new QGridLayout();
+ m_hl2->setMargin( 0 ); m_hl2->setSpacing( 6 );
+ m_hl2->addWidget( m_pbOk, 0, 0 );
+ m_hl2->setColumnStretch( 1, 5 );
+ m_hl2->addWidget( m_pbCancel, 0, 2 );
+
+ m_vbL->addStretch();
+ m_vbL->addLayout( m_hl1 );
+ m_vbL->addStretch();
+ m_vbL->addLayout( m_hl2 );
+
+ connect( m_pbOk, SIGNAL( clicked() ), this, SLOT( accept() ) );
+ connect( m_pbCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+/*!
+ * \brief Destructor
+ */
+SalomeApp_ExitDlg::~SalomeApp_ExitDlg()
+{
+}
+
+/*!
+ * \brief get the check box status
+ */
+bool SalomeApp_ExitDlg::isServersShutdown()
+{
+ return myServersShutdown->isChecked();
+}
+
--- /dev/null
+// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File: SalomeApp_ExitDlg.h
+// Author: Margarita KARPUNINA, Open CASCADE S.A.S.
+//
+
+#ifndef SALOMEAPP_EXITDLG_H
+#define SALOMEAPP_EXITDLG_H
+
+#include <QDialog>
+
+class QCheckBox;
+
+/*!\class SalomeApp_ExitDlg
+ * \brief Describes a dialog box shown on question about quit application
+ */
+class SalomeApp_ExitDlg: public QDialog
+{
+ Q_OBJECT
+
+public:
+ SalomeApp_ExitDlg( QWidget* ) ;
+ ~SalomeApp_ExitDlg();
+
+ bool isServersShutdown();
+
+private:
+ QCheckBox* myServersShutdown;
+};
+
+#endif // SALOMEAPP_EXITDLG_H
+
return isAnyChanged;
}
+/*!
+ Set study modified to \a on.
+ */
+void SalomeApp_Study::Modified()
+{
+ if(_PTR(Study) aStudy = studyDS())
+ aStudy->Modified();
+ LightApp_Study::Modified();
+}
+
/*!
\return if data model is saved
*/
return "Interface Applicative";
}
+/*!
+ * \brief Restores the study state
+ */
+void SalomeApp_Study::restoreState(int savePoint)
+{
+ SalomeApp_VisualState((SalomeApp_Application*)application()).restoreState(savePoint);
+}
+
+
/*!
Slot: called on change of a root of a data model. Redefined from CAM_Study
*/
virtual bool isSaved() const;
virtual bool isModified() const;
+ virtual void Modified();
virtual void addComponent ( const CAM_DataModel* dm);
void setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint);
virtual std::string getVisualComponentName();
+ virtual void restoreState(int savePoint);
+
protected:
virtual void saveModuleData ( QString theModuleName, QStringList theListOfFiles );
virtual void openModuleData ( QString theModuleName, QStringList& theListOfFiles );
<parameter name="xterm" value="no"/>
<parameter name="portkill" value="no"/>
<parameter name="killall" value="no"/>
+ <parameter name="pinter" value="no"/>
<parameter name="noexcepthandler" value="no"/>
<parameter name="modules" value="GEOM,SMESH,VISU,SUPERV,MED,COMPONENT,PYCALCULATOR"/>
<parameter name="pyModules" value=""/>
</message>
<message>
<source>APPCLOSE_SAVE</source>
- <translation>&Save&&Close</translation>
+ <translation>&Save && Close</translation>
</message>
<message>
<source>TOT_DESK_FILE_LOAD_SCRIPT</source>
</message>
<message>
<source>APPCLOSE_DESCRIPTION</source>
- <translation>Do you want to close or only unload the study</translation>
+ <translation>Do you want to close or unload study before closing?</translation>
</message>
<message>
<source>PRP_DESK_PROPERTIES</source>
<translation>Study Properties</translation>
</message>
</context>
+<context>
+ <name>SalomeApp_ExitDlg</name>
+ <message>
+ <source>SHUTDOWN_SERVERS</source>
+ <translation>Shutdown standalone servers</translation>
+ </message>
+</context>
</TS>
@CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \
-I$(top_builddir)/salome_adm/unix -I$(top_builddir)/idl \
-I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../Event \
- -I$(srcdir)/../Style
+ -I$(srcdir)/../Style @LIBXML_INCLUDES@
libSalomeSession_la_LDFLAGS= $(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS \
-lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lSalomeCatalog \
SALOME_Session_Server_LDADD= $(libSalomeSession_la_LDFLAGS) $(OMNIORB_LIBS) \
$(HDF5_LIBS) -lSalomeContainer -lSalomeResourcesManager -lTOOLSDS \
-lSalomeHDFPersist -lSalomeDSImpl -lSalomeGenericObj -lRegistry \
- -lSalomeNotification -lSALOMEBasics ../Qtx/libqtx.la \
+ -lSalomeNotification -lSALOMEBasics -lSalomeLauncher ../Qtx/libqtx.la \
$(top_builddir)/idl/libSalomeIDLGUI.la \
libSalomeSession.la
#include <Utils_ORB_INIT.hxx>
#include <Utils_SINGLETON.hxx>
#include <SALOME_NamingService.hxx>
+#include <SALOME_ModuleCatalog_impl.hxx>
+#include <OpUtil.hxx>
+#include <RegistryService.hxx>
+#include <ConnectionManager_i.hxx>
#include <QDir>
#include <QFile>
#include <QMutex>
#include <QWaitCondition>
#include <QRegExp>
+#include <QTextStream>
#include <Utils_SALOME_Exception.hxx>
#include <Utils_CorbaException.hxx>
return false;
}
+// shutdown standalone servers
+void shutdownServers( SALOME_NamingService* theNS )
+{
+ // get each Container from NamingService => shutdown it
+ // (the order is inverse to the order of servers initialization)
+
+ CORBA::Object_var objS = theNS->Resolve("/Kernel/Session");
+ SALOME::Session_var session = SALOME::Session::_narrow(objS);
+ if (!CORBA::is_nil(session)) {
+ session->ping();
+
+ string hostname = GetHostname();
+ //string containerName = "/Containers/" + hostname;
+
+ // 1) SuperVisionContainer
+ //string containerNameSV = containerName + "/SuperVisionContainer";
+ //CORBA::Object_var objSV = theNS->Resolve(containerNameSV.c_str());
+ //Engines::Container_var SVcontainer = Engines::Container::_narrow(objSV) ;
+ //if ( !CORBA::is_nil(SVcontainer) && ( session->getPID() != SVcontainer->getPID() ) )
+ // SVcontainer->Shutdown();
+
+ // 2) FactoryServerPy
+ //string containerNameFSP = containerName + "/FactoryServerPy";
+ //CORBA::Object_var objFSP = theNS->Resolve(containerNameFSP.c_str());
+ //Engines::Container_var FSPcontainer = Engines::Container::_narrow(objFSP) ;
+ //if ( !CORBA::is_nil(FSPcontainer) && ( session->getPID() != FSPcontainer->getPID() ) )
+ // FSPcontainer->Shutdown();
+
+ // 3) FactoryServer
+ //string containerNameFS = containerName + "/FactoryServer";
+ //CORBA::Object_var objFS = theNS->Resolve(containerNameFS.c_str());
+ //Engines::Container_var FScontainer = Engines::Container::_narrow(objFS) ;
+ //if ( !CORBA::is_nil(FScontainer) && ( session->getPID() != FScontainer->getPID() ) )
+ // FScontainer->Shutdown();
+
+ // 4) ContainerManager
+ //CORBA::Object_var objCM=theNS->Resolve("/ContainerManager");
+ //Engines::ContainerManager_var contMan=Engines::ContainerManager::_narrow(objCM);
+ //if ( !CORBA::is_nil(contMan) && ( session->getPID() != contMan->getPID() ) )
+ // contMan->ShutdownWithExit();
+
+ // 4) SalomeLauncher
+ CORBA::Object_var objSL = theNS->Resolve("/SalomeLauncher");
+ Engines::SalomeLauncher_var launcher = Engines::SalomeLauncher::_narrow(objSL);
+ if (!CORBA::is_nil(launcher) && (session->getPID() != launcher->getPID()))
+ launcher->Shutdown();
+
+ // 5) ConnectionManager
+ CORBA::Object_var objCnM=theNS->Resolve("/ConnectionManager");
+ Engines::ConnectionManager_var connMan=Engines::ConnectionManager::_narrow(objCnM);
+ if ( !CORBA::is_nil(connMan) && ( session->getPID() != connMan->getPID() ) )
+ connMan->ShutdownWithExit();
+
+ // 6) SALOMEDS
+ CORBA::Object_var objSDS = theNS->Resolve("/myStudyManager");
+ SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(objSDS) ;
+ if ( !CORBA::is_nil(studyManager) && ( session->getPID() != studyManager->getPID() ) )
+ studyManager->ShutdownWithExit();
+
+ // 7) ModuleCatalog
+ CORBA::Object_var objMC=theNS->Resolve("/Kernel/ModulCatalog");
+ SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow(objMC);
+ if ( !CORBA::is_nil(catalog) && ( session->getPID() != catalog->getPID() ) )
+ catalog->ShutdownWithExit();
+
+ // 8) Registry
+ CORBA::Object_var objR = theNS->Resolve("/Registry");
+ Registry::Components_var registry = Registry::Components::_narrow(objR);
+ if ( !CORBA::is_nil(registry) && ( session->getPID() != registry->getPID() ) )
+ registry->end();
+
+ // 9) Kill OmniNames
+ QString fileName( ::getenv ("OMNIORB_CONFIG") );
+ QString portNumber;
+ if ( !fileName.isEmpty() ) {
+ QFile aFile( fileName );
+ if ( aFile.open(QIODevice::ReadOnly) ) {
+ QRegExp re("InitRef = .*:([0-9]+)$");
+ QTextStream stream ( &aFile );
+ while ( !stream.atEnd() ) {
+ QString textLine = stream.readLine();
+ if ( re.indexIn( textLine ) > -1 )
+ portNumber = re.cap(1);
+ }
+ aFile.close();
+ }
+ }
+ if ( !portNumber.isEmpty() ) {
+ QString cmd = QString( "ps -eo pid,command | grep -v grep | grep -E \"omniNames.*%1\" | awk '{cmd=sprintf(\"kill -9 %s\",$1); system(cmd)}'" ).arg( portNumber );
+ system ( cmd.toLatin1().data() );
+ }
+
+ }
+}
+
// ---------------------------- MAIN -----------------------
int main( int argc, char **argv )
{
delete splash;
splash = 0;
- if ( result == SUIT_Session::FROM_GUI ) // desktop is closed by user from GUI
+ if ( result == SUIT_Session::NORMAL ) { // desktop is closed by user from GUI
+ if ( aGUISession->exitFlags() )
+ shutdownServers( _NS );
break;
+ }
}
delete aGUISession;
#include "Session_ServerThread.hxx"
-#include "SALOME_NamingService.hxx"
-#include "SALOME_Container_i.hxx"
-#include "SALOME_ContainerManager.hxx"
+#include <SALOME_NamingService.hxx>
+#include <SALOME_Container_i.hxx>
+#include <SALOME_Launcher.hxx>
#include <SALOMEDSClient_ClientFactory.hxx>
-#include "SALOME_ModuleCatalog_impl.hxx"
-#include "RegistryService.hxx"
+#include <SALOME_ModuleCatalog_impl.hxx>
+#include <RegistryService.hxx>
+
#include "Session_Session_i.hxx"
#include "SalomeApp_Engine_i.hxx"
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "Utils_SALOME_Exception.hxx"
-#include "OpUtil.hxx"
-#include "NamingService_WaitForServerReadiness.hxx"
-#include "utilities.h"
+#include <Utils_ORB_INIT.hxx>
+#include <Utils_SINGLETON.hxx>
+#include <Utils_SALOME_Exception.hxx>
+#include <OpUtil.hxx>
+#include <NamingService_WaitForServerReadiness.hxx>
+#include <utilities.h>
#include <cstdlib>
#include <ctime>
{
MESSAGE("Session_ServerThread::Init "<< _argv[0]);
- for (int i=0; i<_argc; i++) SCRUTE(_argv[i]);
-#ifndef WIN32
- for (int i=0; i<NB_SRV_TYP; i++)
-#else
- for (i=0; i<NB_SRV_TYP; i++)
-#endif
- if (strcmp(_argv[0],_serverTypes[i])==0)
- {
- _servType = i;
- MESSAGE("Server Thread type : "<<_serverTypes[i]);
- switch (_servType)
- {
- case 0: // Container
- {
- NamingService_WaitForServerReadiness(_NS,"/Registry");
- NamingService_WaitForServerReadiness(_NS,"/ContainerManager");
- ActivateContainer(_argc, _argv);
- break;
- }
- case 1: // ModuleCatalog
- {
- NamingService_WaitForServerReadiness(_NS,"/Registry");
- ActivateModuleCatalog(_argc, _argv);
- break;
- }
- case 2: // Registry
- {
- NamingService_WaitForServerReadiness(_NS,"");
- ActivateRegistry(_argc, _argv);
- break;
- }
- case 3: // SALOMEDS
- {
- NamingService_WaitForServerReadiness(_NS,"/Kernel/ModulCatalog");
- ActivateSALOMEDS(_argc, _argv);
- break;
- }
- case 4: // Session
- {
- NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
- string containerName = "/Containers/";
- containerName = containerName + GetHostname();
- containerName = containerName + "/FactoryServer";
- NamingService_WaitForServerReadiness(_NS,containerName);
- ActivateSession(_argc, _argv);
- break;
- }
- case 5: // SalomeApp_Engine
- {
- NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
- ActivateEngine(_argc, _argv);
- break;
- }
- case 6: // Container Manager
- {
- NamingService_WaitForServerReadiness(_NS,"");
- ActivateContainerManager(_argc, _argv);
- break;
- }
- default:
- {
- ASSERT(0);
- break;
- }
- }
+ int i;
+ for (i=0; i<_argc; i++) SCRUTE(_argv[i]);
+
+ for (i=0; i<NB_SRV_TYP; i++) {
+ if (strcmp(_argv[0],_serverTypes[i])==0) {
+ _servType = i;
+ MESSAGE("Server Thread type : "<<_serverTypes[i]);
+ switch (_servType) {
+ case 0: // Container
+ {
+ NamingService_WaitForServerReadiness(_NS,"/Registry");
+ NamingService_WaitForServerReadiness(_NS,"/ContainerManager");
+ ActivateContainer(_argc, _argv);
+ break;
+ }
+ case 1: // ModuleCatalog
+ {
+ NamingService_WaitForServerReadiness(_NS,"/Registry");
+ ActivateModuleCatalog(_argc, _argv);
+ break;
+ }
+ case 2: // Registry
+ {
+ NamingService_WaitForServerReadiness(_NS,"");
+ ActivateRegistry(_argc, _argv);
+ break;
+ }
+ case 3: // SALOMEDS
+ {
+ NamingService_WaitForServerReadiness(_NS,"/Kernel/ModulCatalog");
+ ActivateSALOMEDS(_argc, _argv);
+ break;
+ }
+ case 4: // Session
+ {
+ NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
+ string containerName = "/Containers/";
+ containerName = containerName + GetHostname();
+ containerName = containerName + "/FactoryServer";
+ NamingService_WaitForServerReadiness(_NS,containerName);
+ ActivateSession(_argc, _argv);
+ break;
+ }
+ case 5: // SalomeApp_Engine
+ {
+ NamingService_WaitForServerReadiness(_NS,"/myStudyManager");
+ ActivateEngine(_argc, _argv);
+ break;
+ }
+ case 6: // Container Manager
+ {
+ NamingService_WaitForServerReadiness(_NS,"");
+ ActivateContainerManager(_argc, _argv);
+ break;
+ }
+ default:
+ {
+ ASSERT(0);
+ break;
+ }
}
+ }
+ }
}
void Session_ServerThread::ActivateModuleCatalog(int argc,
char ** argv)
{
- try
- {
- MESSAGE("ModuleCatalog thread started");
- // allocation on heap to allow destruction by POA
-
- SALOME_ModuleCatalogImpl* Catalogue_i
- = new SALOME_ModuleCatalogImpl(argc, argv);
-
- // Tell the POA that the objects are ready to accept requests.
-
- _root_poa->activate_object (Catalogue_i);
-
- CORBA::Object_ptr myCata = Catalogue_i->_this();
- _NS->Register(myCata ,"/Kernel/ModulCatalog");
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "Caught CORBA::SystemException." );
- }
- catch(CORBA::Exception&)
- {
- INFOS( "Caught CORBA::Exception." );
- }
- catch(omniORB::fatalException& fe)
- {
- INFOS( "Caught omniORB::fatalException:" );
- INFOS( " file: " << fe.file() );
- INFOS( " line: " << fe.line() );
- INFOS( " mesg: " << fe.errmsg() );
- }
- catch(...)
- {
- INFOS( "Caught unknown exception." );
- }
+ try {
+ MESSAGE("ModuleCatalog thread started");
+ // allocation on heap to allow destruction by POA
+
+ SALOME_ModuleCatalogImpl* Catalogue_i
+ = new SALOME_ModuleCatalogImpl(argc, argv);
+
+ // Tell the POA that the objects are ready to accept requests.
+
+ _root_poa->activate_object (Catalogue_i);
+
+ CORBA::Object_ptr myCata = Catalogue_i->_this();
+ _NS->Register(myCata ,"/Kernel/ModulCatalog");
+ }
+ catch(CORBA::SystemException&) {
+ INFOS( "Caught CORBA::SystemException." );
+ }
+ catch(CORBA::Exception&) {
+ INFOS( "Caught CORBA::Exception." );
+ }
+ catch(omniORB::fatalException& fe) {
+ INFOS( "Caught omniORB::fatalException:" );
+ INFOS( " file: " << fe.file() );
+ INFOS( " line: " << fe.line() );
+ INFOS( " mesg: " << fe.errmsg() );
+ }
+ catch(...) {
+ INFOS( "Caught unknown exception." );
+ }
}
void Session_ServerThread::ActivateSALOMEDS(int argc,
char ** argv)
{
- try
- {
- MESSAGE("SALOMEDS thread started");
- // We allocate the objects on the heap. Since these are reference
- // counted objects, they will be deleted by the POA when they are no
- // longer needed.
-
- ClientFactory::createStudyManager(_orb,_root_poa);
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "Caught CORBA::SystemException." );
- }
- catch(CORBA::Exception&)
- {
- INFOS( "Caught CORBA::Exception." );
- }
- catch(omniORB::fatalException& fe)
- {
- INFOS( "Caught omniORB::fatalException:" );
- INFOS( " file: " << fe.file() );
- INFOS( " line: " << fe.line() );
- INFOS( " mesg: " << fe.errmsg() );
- }
- catch(...)
- {
- INFOS( "Caught unknown exception." );
- }
+ try {
+ MESSAGE("SALOMEDS thread started");
+ // We allocate the objects on the heap. Since these are reference
+ // counted objects, they will be deleted by the POA when they are no
+ // longer needed.
+
+ ClientFactory::createStudyManager(_orb,_root_poa);
+ }
+ catch(CORBA::SystemException&) {
+ INFOS( "Caught CORBA::SystemException." );
+ }
+ catch(CORBA::Exception&) {
+ INFOS( "Caught CORBA::Exception." );
+ }
+ catch(omniORB::fatalException& fe) {
+ INFOS( "Caught omniORB::fatalException:" );
+ INFOS( " file: " << fe.file() );
+ INFOS( " line: " << fe.line() );
+ INFOS( " mesg: " << fe.errmsg() );
+ }
+ catch(...) {
+ INFOS( "Caught unknown exception." );
+ }
}
void Session_ServerThread::ActivateRegistry(int argc,
{
MESSAGE("Registry thread started");
SCRUTE(argc);
- if( argc<3 )
- {
- INFOS("you must provide the Salome session name when you call SALOME_Registry_Server");
- throw CommException("you must provide the Salome session name when you call SALOME_Registry_Server");
- }
+ if ( argc<3 ) {
+ INFOS("you must provide the Salome session name when you call SALOME_Registry_Server");
+ throw CommException("you must provide the Salome session name when you call SALOME_Registry_Server");
+ }
const char *ptrSessionName=0;
int k=0 ;
- for ( k=1 ; k<argc ; k++ )
- {
- if( strcmp(argv[k],"--salome_session")==0 )
- {
- ptrSessionName=argv[k+1];
- break;
- }
+ for ( k=1 ; k<argc ; k++ ) {
+ if ( strcmp(argv[k],"--salome_session")==0 ) {
+ ptrSessionName=argv[k+1];
+ break;
}
+ }
ASSERT(ptrSessionName) ;
ASSERT(strlen( ptrSessionName )>0);
const char *registryName = "Registry";
Registry::Components_var varComponents;
- try
- {
- RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance();
- ptrRegistry->SessionName( ptrSessionName );
- varComponents = ptrRegistry->_this();
- // The RegistryService must not already exist.
-
- try
- {
- CORBA::Object_var pipo = _NS->Resolve( registryName );
- if (CORBA::is_nil(pipo) ) throw ServiceUnreachable();
- INFOS("RegistryService servant already existing" );
- ASSERT(0);
- }
- catch( const ServiceUnreachable &/*ex*/ )
- {
- }
- catch( const CORBA::Exception &/*exx*/ )
- {
- }
- string absoluteName = string("/") + registryName;
- _NS->Register( varComponents , absoluteName.c_str() );
- MESSAGE("On attend les requetes des clients");
- }
- catch( const SALOME_Exception &ex )
- {
- INFOS( "Communication Error : " << ex.what() );
+ try {
+ RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance();
+ ptrRegistry->SessionName( ptrSessionName );
+ ptrRegistry->SetOrb(_orb);
+ varComponents = ptrRegistry->_this();
+ // The RegistryService must not already exist.
+
+ try {
+ CORBA::Object_var pipo = _NS->Resolve( registryName );
+ if (CORBA::is_nil(pipo) ) throw ServiceUnreachable();
+ INFOS("RegistryService servant already existing" );
ASSERT(0);
}
+ catch( const ServiceUnreachable &/*ex*/ ) {
+ }
+ catch( const CORBA::Exception &/*exx*/ ) {
+ }
+ string absoluteName = string("/") + registryName;
+ _NS->Register( varComponents , absoluteName.c_str() );
+ MESSAGE("On attend les requetes des clients");
+ }
+ catch( const SALOME_Exception &ex ) {
+ INFOS( "Communication Error : " << ex.what() );
+ ASSERT(0);
+ }
}
void Session_ServerThread::ActivateContainerManager(int argc,
char ** argv)
{
- try
- {
- PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa();
- cout << "ActivateContainerManager ......!!!! " << endl;
- SALOME_ContainerManager * myContainer
- = new SALOME_ContainerManager(_orb);
- }
- catch(CORBA::SystemException&)
- {
- INFOS("Caught CORBA::SystemException.");
- }
- catch(PortableServer::POA::WrongPolicy&)
- {
- INFOS("Caught CORBA::WrongPolicyException.");
- }
- catch(PortableServer::POA::ServantAlreadyActive&)
- {
- INFOS("Caught CORBA::ServantAlreadyActiveException");
- }
- catch(CORBA::Exception&)
- {
- INFOS("Caught CORBA::Exception.");
- }
- catch(...)
- {
- INFOS("Caught unknown exception.");
- }
+ try {
+ PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa();
+ cout << "Activate SalomeLauncher ......!!!! " << endl;
+ SALOME_Launcher * myContainer = new SALOME_Launcher(_orb,root_poa);
+ }
+ catch(CORBA::SystemException&) {
+ INFOS("Caught CORBA::SystemException.");
+ }
+ catch(PortableServer::POA::WrongPolicy&) {
+ INFOS("Caught CORBA::WrongPolicyException.");
+ }
+ catch(PortableServer::POA::ServantAlreadyActive&) {
+ INFOS("Caught CORBA::ServantAlreadyActiveException");
+ }
+ catch(CORBA::Exception&) {
+ INFOS("Caught CORBA::Exception.");
+ }
+ catch(...) {
+ INFOS("Caught unknown exception.");
+ }
}
void Session_ServerThread::ActivateContainer(int argc,
char ** argv)
{
- try
- {
- MESSAGE("Container thread started");
-
- // get or create the child POA
-
- PortableServer::POA_var factory_poa;
- try
- {
- factory_poa = _root_poa->find_POA("factory_poa",0);
- // 0 = no activation (already done if exists)
- }
- catch (PortableServer::POA::AdapterNonExistent&)
- {
- MESSAGE("factory_poa does not exists, create...");
- // define policy objects
- PortableServer::ImplicitActivationPolicy_var implicitActivation =
- _root_poa->create_implicit_activation_policy(
- PortableServer::NO_IMPLICIT_ACTIVATION);
- // default = NO_IMPLICIT_ACTIVATION
- PortableServer::ThreadPolicy_var threadPolicy =
- _root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL);
- // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
+ try {
+ MESSAGE("Container thread started");
+
+ // get or create the child POA
+
+ PortableServer::POA_var factory_poa;
+ try {
+ factory_poa = _root_poa->find_POA("factory_poa",0);
+ // 0 = no activation (already done if exists)
+ }
+ catch (PortableServer::POA::AdapterNonExistent&) {
+ MESSAGE("factory_poa does not exists, create...");
+ // define policy objects
+ PortableServer::ImplicitActivationPolicy_var implicitActivation =
+ _root_poa->create_implicit_activation_policy(PortableServer::NO_IMPLICIT_ACTIVATION);
+ // default = NO_IMPLICIT_ACTIVATION
+ PortableServer::ThreadPolicy_var threadPolicy =
+ _root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL);
+ // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
- // create policy list
- CORBA::PolicyList policyList;
- policyList.length(2);
- policyList[0] = PortableServer::ImplicitActivationPolicy::
- _duplicate(implicitActivation);
- policyList[1] = PortableServer::ThreadPolicy::
- _duplicate(threadPolicy);
+ // create policy list
+ CORBA::PolicyList policyList;
+ policyList.length(2);
+ policyList[0] = PortableServer::ImplicitActivationPolicy::
+ _duplicate(implicitActivation);
+ policyList[1] = PortableServer::ThreadPolicy::
+ _duplicate(threadPolicy);
- PortableServer::POAManager_var nil_mgr
- = PortableServer::POAManager::_nil();
- factory_poa = _root_poa->create_POA("factory_poa",
- nil_mgr,
- policyList);
- //with nil_mgr instead of pman,
- //a new POA manager is created with the new POA
+ PortableServer::POAManager_var nil_mgr
+ = PortableServer::POAManager::_nil();
+ factory_poa = _root_poa->create_POA("factory_poa",
+ nil_mgr,
+ policyList);
+ //with nil_mgr instead of pman,
+ //a new POA manager is created with the new POA
- // destroy policy objects
- implicitActivation->destroy();
- threadPolicy->destroy();
-
- // obtain the factory poa manager
- PortableServer::POAManager_var pmanfac = factory_poa->the_POAManager();
- pmanfac->activate();
- MESSAGE("pmanfac->activate()");
- }
+ // destroy policy objects
+ implicitActivation->destroy();
+ threadPolicy->destroy();
- char *containerName = "";
- if (argc >1)
- {
- containerName = argv[1];
- }
-
- Engines_Container_i * myContainer
- = new Engines_Container_i(_orb, _root_poa, containerName , argc , argv , true , false);
- }
- catch(CORBA::SystemException&)
- {
- INFOS("Caught CORBA::SystemException.");
- }
- catch(PortableServer::POA::WrongPolicy&)
- {
- INFOS("Caught CORBA::WrongPolicyException.");
- }
- catch(PortableServer::POA::ServantAlreadyActive&)
- {
- INFOS("Caught CORBA::ServantAlreadyActiveException");
+ // obtain the factory poa manager
+ PortableServer::POAManager_var pmanfac = factory_poa->the_POAManager();
+ pmanfac->activate();
+ MESSAGE("pmanfac->activate()");
}
- catch(CORBA::Exception&)
- {
- INFOS("Caught CORBA::Exception.");
- }
- catch(...)
- {
- INFOS("Caught unknown exception.");
+
+ char *containerName = "";
+ if (argc >1) {
+ containerName = argv[1];
}
+
+ Engines_Container_i * myContainer
+ = new Engines_Container_i(_orb, _root_poa, containerName , argc , argv , true , false);
+ }
+ catch(CORBA::SystemException&) {
+ INFOS("Caught CORBA::SystemException.");
+ }
+ catch(PortableServer::POA::WrongPolicy&) {
+ INFOS("Caught CORBA::WrongPolicyException.");
+ }
+ catch(PortableServer::POA::ServantAlreadyActive&) {
+ INFOS("Caught CORBA::ServantAlreadyActiveException");
+ }
+ catch(CORBA::Exception&) {
+ INFOS("Caught CORBA::Exception.");
+ }
+ catch(...) {
+ INFOS("Caught unknown exception.");
+ }
}
void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/)
{
- try
- {
- MESSAGE("SalomeApp_Engine thread started");
- SalomeApp_Engine_i* anEngine = new SalomeApp_Engine_i();
- /*PortableServer::ObjectId_var id = */_root_poa->activate_object( anEngine );
- MESSAGE("poa->activate_object( SalomeApp_Engine )");
-
- CORBA::Object_var obj = anEngine->_this();
- _NS->Register( obj ,"/SalomeAppEngine");
-
- }
- catch (CORBA::SystemException&)
- {
- INFOS("Caught CORBA::SystemException.");
- }
- catch (CORBA::Exception&)
- {
- INFOS("Caught CORBA::Exception.");
- }
- catch (...)
- {
- INFOS("Caught unknown exception.");
- }
+ try {
+ MESSAGE("SalomeApp_Engine thread started");
+ SalomeApp_Engine_i* anEngine = new SalomeApp_Engine_i();
+ /*PortableServer::ObjectId_var id = */_root_poa->activate_object( anEngine );
+ MESSAGE("poa->activate_object( SalomeApp_Engine )");
+
+ CORBA::Object_var obj = anEngine->_this();
+ _NS->Register( obj ,"/SalomeAppEngine");
+ }
+ catch (CORBA::SystemException&) {
+ INFOS("Caught CORBA::SystemException.");
+ }
+ catch (CORBA::Exception&) {
+ INFOS("Caught CORBA::Exception.");
+ }
+ catch (...) {
+ INFOS("Caught unknown exception.");
+ }
}
void Session_ServerThread::ActivateSession(int argc,
void Session_SessionThread::ActivateSession(int argc,
char ** argv)
{
- try
- {
- MESSAGE("Session thread started");
- SALOME_Session_i * mySALOME_Session
- = new SALOME_Session_i(argc, argv, _orb, _root_poa, _GUIMutex, _GUILauncher) ;
- PortableServer::ObjectId_var mySALOME_Sessionid
- = _root_poa->activate_object(mySALOME_Session);
- MESSAGE("poa->activate_object(mySALOME_Session)");
-
- CORBA::Object_var obj = mySALOME_Session->_this();
- CORBA::String_var sior(_orb->object_to_string(obj));
-
- mySALOME_Session->NSregister();
- }
- catch (CORBA::SystemException&)
- {
- INFOS("Caught CORBA::SystemException.");
- }
- catch (CORBA::Exception&)
- {
- INFOS("Caught CORBA::Exception.");
- }
- catch (...)
- {
- INFOS("Caught unknown exception.");
- }
+ try {
+ MESSAGE("Session thread started");
+ SALOME_Session_i * mySALOME_Session
+ = new SALOME_Session_i(argc, argv, _orb, _root_poa, _GUIMutex, _GUILauncher) ;
+ PortableServer::ObjectId_var mySALOME_Sessionid
+ = _root_poa->activate_object(mySALOME_Session);
+ MESSAGE("poa->activate_object(mySALOME_Session)");
+
+ CORBA::Object_var obj = mySALOME_Session->_this();
+ CORBA::String_var sior(_orb->object_to_string(obj));
+
+ mySALOME_Session->NSregister();
+ }
+ catch (CORBA::SystemException&) {
+ INFOS("Caught CORBA::SystemException.");
+ }
+ catch (CORBA::Exception&) {
+ INFOS("Caught CORBA::Exception.");
+ }
+ catch (...) {
+ INFOS("Caught unknown exception.");
+ }
}
CORBA::Long GetActiveStudyId();
void ping(){};
+ CORBA::Long getPID() { return (CORBA::Long)getpid(); };
//! Restors a visual state of the study at theSavePoint
bool restoreVisualState(CORBA::Long theSavePoint);
#include <vtkCell.h>
#include <vtkPlane.h>
#include <vtkMath.h>
+#include <vtkCellArray.h>
+#include <vtkTriangle.h>
+#include <vtkOrderedTriangulator.h>
#ifdef _DEBUG_
static int DEBUG_TRIA_EXECUTE = 0;
typedef std::vector<TPolygon> TPolygons;
}
-/*!
- Constructor
-*/
+
+//----------------------------------------------------------------------------
VTKViewer_Triangulator
::VTKViewer_Triangulator():
- myInput(NULL),
- myCellId(-1),
- myShowInside(-1),
- myAllVisible(-1),
- myCellsVisibility(NULL),
- myCellIds(vtkIdList::New())
+ myCellIds(vtkIdList::New()),
+ myFaceIds(vtkIdList::New()),
+ myPoints(vtkPoints::New()),
+ myPointIds(NULL)
{}
-/*!
- Destructor
-*/
+//----------------------------------------------------------------------------
VTKViewer_Triangulator
::~VTKViewer_Triangulator()
{
myCellIds->Delete();
+ myFaceIds->Delete();
+ myPoints->Delete();
+}
+
+
+//----------------------------------------------------------------------------
+vtkPoints*
+VTKViewer_Triangulator
+::InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId)
+{
+ myPoints->Reset();
+ myPoints->Modified(); // the VTK bug
+
+ vtkIdType aNumPts;
+ theInput->GetCellPoints(theCellId, aNumPts, myPointIds);
+ if ( aNumPts > 0 ) {
+ vtkFloatingPointType anAbsoluteCoord[3];
+ myPoints->SetNumberOfPoints(aNumPts);
+ vtkPoints *anInputPoints = theInput->GetPoints();
+ for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+ anInputPoints->GetPoint(myPointIds[aPntId], anAbsoluteCoord);
+ myPoints->SetPoint(aPntId, anAbsoluteCoord);
+ }
+ }
+
+ return myPoints;
+}
+
+
+//----------------------------------------------------------------------------
+vtkIdType
+VTKViewer_Triangulator
+::GetNbOfPoints()
+{
+ return myPoints->GetNumberOfPoints();
}
+//----------------------------------------------------------------------------
+vtkIdType
+VTKViewer_Triangulator
+::GetPointId(vtkIdType thePointId)
+{
+ return thePointId;
+}
+
+//----------------------------------------------------------------------------
+vtkFloatingPointType
+VTKViewer_Triangulator
+::GetCellLength()
+{
+ vtkFloatingPointType aBounds[6];
+ myPoints->GetBounds(aBounds);
+
+ vtkFloatingPointType aCoordDiff[3];
+ aCoordDiff[0] = (aBounds[1] - aBounds[0]);
+ aCoordDiff[1] = (aBounds[3] - aBounds[2]);
+ aCoordDiff[2] = (aBounds[5] - aBounds[4]);
+
+ return sqrt(aCoordDiff[0]*aCoordDiff[0] +
+ aCoordDiff[1]*aCoordDiff[1] +
+ aCoordDiff[2]*aCoordDiff[2]);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VTKViewer_Triangulator
+::GetCellNeighbors(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds)
+{
+ myFaceIds->Reset();
+ vtkIdList *anIdList = theFace->PointIds;
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]);
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]);
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]);
+
+ theInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds);
+}
+
+
+//----------------------------------------------------------------------------
+vtkIdType
+VTKViewer_Triangulator
+::GetConnectivity(vtkIdType thePntId)
+{
+ return myPointIds[thePntId];
+}
+
+
+//----------------------------------------------------------------------------
bool
VTKViewer_Triangulator
::Execute(vtkUnstructuredGrid *theInput,
std::vector<vtkIdType>& theVTK2ObjIds,
bool theIsCheckConvex)
{
- myInput = theInput;
- myCellId = theCellId;
- myShowInside = theShowInside;
- myAllVisible = theAllVisible;
- myCellsVisibility = theCellsVisibility;
-
- vtkPoints *aPoints = InitPoints();
+ vtkPoints *aPoints = InitPoints(theInput, theCellId);
vtkIdType aNumPts = GetNbOfPoints();
if(DEBUG_TRIA_EXECUTE) cout<<"Triangulator - aNumPts = "<<aNumPts<<"\n";
static vtkFloatingPointType EPS = 1.0E-2;
vtkFloatingPointType aDistEps = aCellLength/3.0 * EPS;
- if(DEBUG_TRIA_EXECUTE) cout<<"\taCellLength = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
+ if(DEBUG_TRIA_EXECUTE) cout<<"\taNumFaces = "<<aNumFaces<<"; aCellLength = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
// To initialize set of points that belong to the cell
typedef std::set<vtkIdType> TPointIds;
for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
vtkCell* aFace = GetFace(aFaceId);
- GetCellNeighbors(theCellId, aFace, myCellIds);
- if((!myAllVisible && !myCellsVisibility[myCellIds->GetId(0)]) ||
- myCellIds->GetNumberOfIds() <= 0 || myShowInside)
+ GetCellNeighbors(theInput, theCellId, aFace, myCellIds);
+ if((!theAllVisible && !theCellsVisibility[myCellIds->GetId(0)]) ||
+ myCellIds->GetNumberOfIds() <= 0 || theShowInside)
{
TPointIds aPointIds;
vtkIdList *anIdList = aFace->PointIds;
aCenter[0] += aPntCoord[0];
aCenter[1] += aPntCoord[1];
aCenter[2] += aPntCoord[2];
- if(DEBUG_TRIA_EXECUTE) cout << "Added = TRUE" << endl;
+ if(DEBUG_TRIA_EXECUTE) cout << "; Added = TRUE" << endl;
} else {
- if(DEBUG_TRIA_EXECUTE) cout << "Added = FALSE" << endl;
+ if(DEBUG_TRIA_EXECUTE) cout << "; Added = FALSE" << endl;
}
}
int aNbPoints = aPointIds.size();
return true;
}
-/*!
- Constructor
-*/
+
+//----------------------------------------------------------------------------
VTKViewer_OrderedTriangulator
::VTKViewer_OrderedTriangulator():
- myCell(vtkGenericCell::New())
-{}
+ myTriangulator(vtkOrderedTriangulator::New()),
+ myBoundaryTris(vtkCellArray::New()),
+ myTriangle(vtkTriangle::New())
+{
+ myBoundaryTris->Allocate(VTK_CELL_SIZE);
+ myTriangulator->PreSortedOff();
+}
-/*!
- Destructor
-*/
+
+//----------------------------------------------------------------------------
VTKViewer_OrderedTriangulator
::~VTKViewer_OrderedTriangulator()
{
- myCell->Delete();
+ myTriangle->Delete();
+ myBoundaryTris->Delete();
+ myTriangulator->Delete();
}
+
+//----------------------------------------------------------------------------
vtkPoints*
VTKViewer_OrderedTriangulator
-::InitPoints()
+::InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId)
{
- myInput->GetCell(myCellId,myCell);
- return myInput->GetPoints();
-}
+ myBoundaryTris->Reset();
-vtkIdType
-VTKViewer_OrderedTriangulator
-::GetNbOfPoints()
-{
- return myCell->GetNumberOfPoints();
-}
+ vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId);
+ vtkIdType aNumPts = myPoints->GetNumberOfPoints();
+ if ( aNumPts > 0 ) {
+ myTriangulator->InitTriangulation(0.0, 1.0, 0.0, 1.0, 0.0, 1.0, aNumPts);
-vtkIdType
-VTKViewer_OrderedTriangulator
-::GetPointId(vtkIdType thePointId)
-{
- return myCell->GetPointId(thePointId);
-}
+ vtkFloatingPointType aBounds[6];
+ myPoints->GetBounds(aBounds);
-vtkFloatingPointType
-VTKViewer_OrderedTriangulator
-::GetCellLength()
-{
- return sqrt(myCell->GetLength2());
+ vtkFloatingPointType anAbsoluteCoord[3];
+ vtkFloatingPointType aParamentrucCoord[3];
+ for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+ myPoints->GetPoint(aPntId, anAbsoluteCoord);
+ aParamentrucCoord[0] = (anAbsoluteCoord[0] - aBounds[0]) / (aBounds[1] - aBounds[0]);
+ aParamentrucCoord[1] = (anAbsoluteCoord[1] - aBounds[2]) / (aBounds[3] - aBounds[2]);
+ aParamentrucCoord[2] = (anAbsoluteCoord[2] - aBounds[4]) / (aBounds[5] - aBounds[4]);
+ myTriangulator->InsertPoint(aPntId, anAbsoluteCoord, aParamentrucCoord, 0);
+ }
+
+ myTriangulator->Triangulate();
+ myTriangulator->AddTriangles(myBoundaryTris);
+ }
+
+ return aPoints;
}
+
+//----------------------------------------------------------------------------
vtkIdType
VTKViewer_OrderedTriangulator
::GetNumFaces()
{
- return myCell->GetNumberOfFaces();
+ return myBoundaryTris->GetNumberOfCells();
}
+
+//----------------------------------------------------------------------------
vtkCell*
VTKViewer_OrderedTriangulator
::GetFace(vtkIdType theFaceId)
{
- return myCell->GetFace(theFaceId);
-}
+ vtkIdType aNumCells = myBoundaryTris->GetNumberOfCells();
+ if ( theFaceId < 0 || theFaceId >= aNumCells )
+ return NULL;
-void
-VTKViewer_OrderedTriangulator
-::GetCellNeighbors(vtkIdType theCellId,
- vtkCell* theFace,
- vtkIdList* theCellIds)
-{
- vtkIdList *anIdList = theFace->PointIds;
- myInput->GetCellNeighbors(theCellId, anIdList, theCellIds);
-}
+ vtkIdType *aCells = myBoundaryTris->GetPointer();
-vtkIdType
-VTKViewer_OrderedTriangulator
-::GetConnectivity(vtkIdType thePntId)
-{
- return thePntId;
+ // Each triangle has three points plus number of points
+ vtkIdType *aCellPtr = aCells + 4*theFaceId;
+
+ myTriangle->PointIds->SetId(0, aCellPtr[1]);
+ myTriangle->Points->SetPoint(0, myPoints->GetPoint(aCellPtr[1]));
+
+ myTriangle->PointIds->SetId(1, aCellPtr[2]);
+ myTriangle->Points->SetPoint(1, myPoints->GetPoint(aCellPtr[2]));
+
+ myTriangle->PointIds->SetId(2, aCellPtr[3]);
+ myTriangle->Points->SetPoint(2, myPoints->GetPoint(aCellPtr[3]));
+
+ return myTriangle;
}
-/*!
- Constructor
-*/
+
+//----------------------------------------------------------------------------
VTKViewer_DelaunayTriangulator
::VTKViewer_DelaunayTriangulator():
myUnstructuredGrid(vtkUnstructuredGrid::New()),
myGeometryFilter(vtkGeometryFilter::New()),
myDelaunay3D(vtkDelaunay3D::New()),
- myFaceIds(vtkIdList::New()),
- myPoints(vtkPoints::New()),
- myPolyData(NULL),
- myPointIds(NULL)
+ myPolyData(NULL)
{
+ myUnstructuredGrid->Initialize();
+ myUnstructuredGrid->Allocate();
+ myUnstructuredGrid->SetPoints(myPoints);
+
myDelaunay3D->SetInput(myUnstructuredGrid);
myGeometryFilter->SetInput(myDelaunay3D->GetOutput());
+ myPolyData = myGeometryFilter->GetOutput();
}
-
-/*!
- Destructor
-*/
+//----------------------------------------------------------------------------
VTKViewer_DelaunayTriangulator
::~VTKViewer_DelaunayTriangulator()
{
myUnstructuredGrid->Delete();
myGeometryFilter->Delete();
myDelaunay3D->Delete();
- myFaceIds->Delete();
- myPoints->Delete();
}
+//----------------------------------------------------------------------------
vtkPoints*
VTKViewer_DelaunayTriangulator
-::InitPoints()
+::InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId)
{
- myPoints->Reset();
- myUnstructuredGrid->Initialize();
- myUnstructuredGrid->Allocate();
- myUnstructuredGrid->SetPoints(myPoints);
-
- vtkIdType aNumPts;
- myInput->GetCellPoints(myCellId,aNumPts,myPointIds);
-
- if ( aNumPts < myPoints->GetNumberOfPoints() )
- myPoints->Reset();
-
- {
- vtkFloatingPointType aPntCoord[3];
- myPoints->SetNumberOfPoints(aNumPts);
- vtkPoints *anInputPoints = myInput->GetPoints();
- for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
- anInputPoints->GetPoint(myPointIds[aPntId],aPntCoord);
- myPoints->SetPoint(aPntId,aPntCoord);
- }
- }
+ vtkPoints* aPoints = VTKViewer_Triangulator::InitPoints(theInput, theCellId);
myPoints->Modified();
myUnstructuredGrid->Modified();
-
myGeometryFilter->Update();
- myPolyData = myGeometryFilter->GetOutput();
- return myPoints;
-}
-
-vtkIdType
-VTKViewer_DelaunayTriangulator
-::GetNbOfPoints()
-{
- return myPoints->GetNumberOfPoints();
+ return aPoints;
}
-vtkIdType
-VTKViewer_DelaunayTriangulator
-::GetPointId(vtkIdType thePointId)
-{
- return thePointId;
-}
-
-vtkFloatingPointType
-VTKViewer_DelaunayTriangulator
-::GetCellLength()
-{
- return myPolyData->GetLength();
-}
+//----------------------------------------------------------------------------
vtkIdType
VTKViewer_DelaunayTriangulator
::GetNumFaces()
return myPolyData->GetNumberOfCells();
}
+
+//----------------------------------------------------------------------------
vtkCell*
VTKViewer_DelaunayTriangulator
::GetFace(vtkIdType theFaceId)
{
return myPolyData->GetCell(theFaceId);
}
-
-void
-VTKViewer_DelaunayTriangulator
-::GetCellNeighbors(vtkIdType theCellId,
- vtkCell* theFace,
- vtkIdList* theCellIds)
-{
- myFaceIds->Reset();
- vtkIdList *anIdList = theFace->PointIds;
- myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]);
- myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]);
- myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]);
-
- myInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds);
-}
-
-
-vtkIdType
-VTKViewer_DelaunayTriangulator
-::GetConnectivity(vtkIdType thePntId)
-{
- return myPointIds[thePntId];
-}
class vtkPoints;
class vtkIdList;
class vtkCell;
+class vtkCellArray;
+class vtkTriangle;
+class vtkOrderedTriangulator;
+
+//----------------------------------------------------------------------------
class VTKVIEWER_EXPORT VTKViewer_Triangulator
{
public:
std::vector<vtkIdType>& theVTK2ObjIds,
bool theIsCheckConvex);
- protected:
+ private:
vtkIdList* myCellIds;
- vtkUnstructuredGrid *myInput;
- vtkIdType myCellId;
- int myShowInside;
- int myAllVisible;
- const char* myCellsVisibility;
+ protected:
+ vtkIdType *myPointIds;
+ vtkIdList* myFaceIds;
+ vtkPoints* myPoints;
virtual
vtkPoints*
- InitPoints() = 0;
+ InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId);
virtual
vtkIdType
- GetNbOfPoints() = 0;
+ GetNumFaces() = 0;
virtual
- vtkIdType
- GetPointId(vtkIdType thePointId) = 0;
+ vtkCell*
+ GetFace(vtkIdType theFaceId) = 0;
- virtual
- vtkFloatingPointType
- GetCellLength() = 0;
+ vtkIdType
+ GetNbOfPoints();
- virtual
vtkIdType
- GetNumFaces() = 0;
+ GetPointId(vtkIdType thePointId);
- virtual
- vtkCell*
- GetFace(vtkIdType theFaceId) = 0;
+ vtkFloatingPointType
+ GetCellLength();
- virtual
void
- GetCellNeighbors(vtkIdType theCellId,
+ GetCellNeighbors(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId,
vtkCell* theFace,
- vtkIdList* theCellIds) = 0;
+ vtkIdList* theCellIds);
- virtual
vtkIdType
- GetConnectivity(vtkIdType thePntId) = 0;
+ GetConnectivity(vtkIdType thePntId);
};
+//----------------------------------------------------------------------------
class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangulator
{
public:
~VTKViewer_OrderedTriangulator();
protected:
- vtkGenericCell *myCell;
+ vtkOrderedTriangulator *myTriangulator;
+ vtkCellArray *myBoundaryTris;
+ vtkTriangle *myTriangle;
virtual
vtkPoints*
- InitPoints();
-
- virtual
- vtkIdType
- GetNbOfPoints();
-
- vtkIdType
- GetPointId(vtkIdType thePointId);
-
- virtual
- vtkFloatingPointType
- GetCellLength();
+ InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId);
virtual
vtkIdType
virtual
vtkCell*
GetFace(vtkIdType theFaceId);
-
- virtual
- void
- GetCellNeighbors(vtkIdType theCellId,
- vtkCell* theFace,
- vtkIdList* theCellIds);
-
- virtual
- vtkIdType
- GetConnectivity(vtkIdType thePntId);
};
+//----------------------------------------------------------------------------
class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangulator
{
public:
vtkGeometryFilter* myGeometryFilter;
vtkDelaunay3D* myDelaunay3D;
vtkPolyData* myPolyData;
- vtkIdType *myPointIds;
- vtkIdList* myFaceIds;
- vtkPoints* myPoints;
virtual
vtkPoints*
- InitPoints();
-
- virtual
- vtkIdType
- GetNbOfPoints();
-
- vtkIdType
- GetPointId(vtkIdType thePointId);
-
- virtual
- vtkFloatingPointType
- GetCellLength();
+ InitPoints(vtkUnstructuredGrid *theInput,
+ vtkIdType theCellId);
virtual
vtkIdType
virtual
vtkCell*
GetFace(vtkIdType theFaceId);
-
- virtual
- void
- GetCellNeighbors(vtkIdType theCellId,
- vtkCell* theFace,
- vtkIdList* theCellIds);
-
- virtual
- vtkIdType
- GetConnectivity(vtkIdType thePntId);
};
{
delete [] cellVis;
}
+
+ return 0;
}