-This is the version 3.2.0a2 of SALOMEGUI
+This is the version 3.2.0b1 of SALOMEGUI
Compatible with :
- - KERNEL 3.2.0a2
+ - KERNEL 3.2.0b1
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# -* Makefile *-
#
# Author : Patrick GOLDBRONN (CEA)
@COMMENCE@
-SUBDIRS = src
-
-ifeq ($(GUI_DISABLE_CORBA),no)
- SUBDIRS+= idl
-endif
-
-SUBDIRS+= doc adm_local
+SUBDIRS = src doc adm_local
RESOURCES_FILES = \
back.xpm \
-$(RM) $@
$(LN_S) ../../$< $@
-depend: depend_idl
-
-depend_idl:
- (cd idl ; $(MAKE) $@) || exit 1
+depend:
+#depend: depend_idl
+#depend_idl:
+# (cd idl ; $(MAKE) $@) || exit 1
# doc is already build : if you want to had documents, go manually to doc and run 'make doc'
#doc:
$(INSTALL) -d $(bindir)
$(INSTALL_PROGRAM) $^ $(bindir)
-uninstall: uninstall-idl
-
-uninstall-idl:
- $(RM) $(idldir)/*.idl
+uninstall:
+#uninstall: uninstall-idl
+#uninstall-idl:
+# $(RM) $(idldir)/*.idl
distclean: distclean-other
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# source path
top_srcdir=@top_srcdir@
top_builddir=..
# Author : Marc Tajchman (CEA, 2002)
#------------------------------------------------------------
-AC_DEFUN([CHECK_SALOME_GUI],[
+AC_DEFUN([CHECK_GUI],[
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
-AC_CHECKING(for SalomeGUI)
+AC_CHECKING(for $2 $1 )
SalomeGUI_ok=no
+GUI_LDFLAGS=""
+GUI_CXXFLAGS=""
+
AC_ARG_WITH(gui,
--with-salome_gui=DIR root directory path of SALOME GUI installation,
SALOME_GUI_DIR="$withval",SALOME_GUI_DIR="")
-if test "x$SALOME_GUI_DIR" = "x" ; then
-
-# no --with-gui-dir option used
-
- if test "x$GUI_ROOT_DIR" != "x" ; then
-
+if test "x${SALOME_GUI_DIR}" = "x" ; then
+ # no --with-gui-dir option used
+ AC_MSG_RESULT(try \${GUI_ROOT_DIR}: ${GUI_ROOT_DIR})
+ if test "x${GUI_ROOT_DIR}" != "x" ; then
# SALOME_ROOT_DIR environment variable defined
- SALOME_GUI_DIR=$GUI_ROOT_DIR
-
+ SALOME_GUI_DIR=${GUI_ROOT_DIR}
else
-
# search Salome binaries in PATH variable
- AC_PATH_PROG(TEMP, libLightApp.so)
- if test "x$TEMP" != "x" ; then
- SALOME_BIN_DIR=`dirname $TEMP`
- SALOME_GUI_DIR=`dirname $SALOME_BIN_DIR`
+ AC_PATH_PROG(TEMP, $1)
+ if test "x${TEMP}" != "x" ; then
+ AC_MSG_RESULT(libLightApp.so was found at : ${TEMP})
+ SALOME_BIN_DIR=`dirname ${TEMP}`
+ SALOME_GUI_DIR=`cd ${SALOME_BIN_DIR}/../..; pwd`
fi
-
fi
-#
fi
-if test -f ${SALOME_GUI_DIR}/lib/salome/libLightApp.so ; then
+if test -f ${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome/$1 ; then
SalomeGUI_ok=yes
AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR})
- if test "x$GUI_ROOT_DIR" == "x" ; then
+ if test "x${GUI_ROOT_DIR}" == "x" ; then
GUI_ROOT_DIR=${SALOME_GUI_DIR}
fi
+
AC_SUBST(GUI_ROOT_DIR)
+
+ GUI_LDFLAGS=-L${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome
+ GUI_CXXFLAGS=-I${SALOME_GUI_DIR}/include/salome
+
+ AC_SUBST(GUI_LDFLAGS)
+ AC_SUBST(GUI_CXXFLAGS)
else
AC_MSG_WARN("Cannot find compiled SALOME GUI distribution")
fi
-AC_MSG_RESULT(for SALOME GUI: $SalomeGUI_ok)
+AC_MSG_RESULT(for $2: ${SalomeGUI_ok})
])dnl
-
+
+AC_DEFUN([CHECK_SALOME_GUI],[
+ CHECK_GUI([libLightApp.so],
+ [SALOME GUI])
+])dnl
\ No newline at end of file
#------------------------------------------------------------
AC_DEFUN([CHECK_CORBA_IN_GUI],[
-
-AC_CHECKING(for full SalomeGUI)
-
-SalomeGUI_ok=no
-CORBA_IN_GUI="no"
-
-AC_ARG_WITH(gui,
- --with-salome_gui=DIR root directory path of full SALOME GUI installation,
- SALOME_GUI_DIR="$withval",SALOME_GUI_DIR="")
-
-if test "x$SALOME_GUI_DIR" = "x" ; then
-
-# no --with-gui-dir option used
-
- if test "x$GUI_ROOT_DIR" != "x" ; then
-
- # SALOME_ROOT_DIR environment variable defined
- SALOME_GUI_DIR=$GUI_ROOT_DIR
-
- else
-
- # search Salome binaries in PATH variable
- AC_PATH_PROG(TEMP, libSalomeApp.so)
- if test "x$TEMP" != "x" ; then
- SALOME_BIN_DIR=`dirname $TEMP`
- SALOME_GUI_DIR=`dirname $SALOME_BIN_DIR`
- fi
-
- fi
-#
-fi
-
-if test -f ${SALOME_GUI_DIR}/lib/salome/libSalomeApp.so ; then
- SalomeGUI_ok=yes
- CORBA_IN_GUI=yes
- AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR})
-
- if test "x$GUI_ROOT_DIR" == "x" ; then
- GUI_ROOT_DIR=${SALOME_GUI_DIR}
- fi
-else
- AC_MSG_WARN("Cannot find compiled full SALOME GUI distribution")
-fi
-AC_SUBST(CORBA_IN_GUI)
-
-AC_MSG_RESULT(for full SALOME GUI: $SalomeGUI_ok)
-
+ CHECK_GUI([libSalomeApp.so],
+ [CORBA SALOME GUI])
+ CORBA_IN_GUI=${SalomeGUI_ok}
+ AC_SUBST(CORBA_IN_GUI)
])dnl
AC_DEFUN([CHECK_OPENGL],[
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
AC_ARG_WITH(opengl,
- [ --with-opengl=DIR root directory path of OpenGL installation ],
- [
- opengl_dir="$withval"
- local_opengl=yes
- ], [
- dirs="/usr/lib /usr/local/lib /opt/graphics/OpenGL/lib /usr/openwin/lib /usr/X11R6/lib"
- ])dnl
+ [AC_HELP_STRING([--with-opengl=DIR],[root directory path of OpenGL installation])],
+ [opengl_dir="$withval"],
+ [dirs="/usr/lib${LIB_LOCATION_SUFFIX} /usr/local/lib${LIB_LOCATION_SUFFIX} /opt/graphics/OpenGL/lib${LIB_LOCATION_SUFFIX} /usr/openwin/lib${LIB_LOCATION_SUFFIX} /usr/X11R6/lib${LIB_LOCATION_SUFFIX}"])dnl
AC_CHECKING(for OpenGL)
-
-AC_SUBST(OGL_INCLUDES)
-AC_SUBST(OGL_LIBS)
+AC_CHECKING(for OpenGL headers)
OGL_INCLUDES=""
OGL_LIBS=""
+GL_LIB_PATH=""
+GLU_LIB_PATH=""
+
OpenGL_ok=no
+OpenGL_libs_ok=no
+OpenGL_headers_ok=no
dnl openGL headers
-
# by default
-
-if test "x$local_opengl" = "xyes" ; then
- if test -f "${opengl_dir}/include/GL/gl.h" ; then
- OpenGL_ok=yes
- OGL_INCLUDES="-I${opengl_dir}/include"
- if test "x${opengl_dir}" = "x/usr"
- then
- OGL_LIBS=""
- else
- OGL_LIBS="-L${opengl_dir}/lib"
- fi
- AC_MSG_RESULT(select OpenGL distribution in ${opengl_dir})
- else
- AC_MSG_RESULT(no gl.h header file in ${opengl_dir}/include/GL)
- fi
+if test "x${opengl_dir}" != "x" ; then
+ AC_MSG_RESULT(for opengl_dir: $opengl_dir)
+ AC_CHECK_HEADER([${opengl_dir}/include/GL/gl.h],
+ [OpenGL_headers_ok=yes; OGL_INCLUDES="-I${opengl_dir}/include"],
+ [OpenGL_headers_ok=no])
+ if test "x${OpenGL_headers_ok}" = "xyes" ; then
+ AC_CHECKING(for default OpenGL library)
+ if test "x${opengl_dir}" = "x/usr" ; then
+ OGL_LIBS=""
+ else
+ OGL_LIBS="-L${opengl_dir}/lib"
+ fi
+ LDFLAGS_old="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $OGL_LIBS"
+ AC_CHECK_LIB([GL],
+ [glBegin],
+ [OpenGL_libs_ok=yes],
+ [OpenGL_libs_ok=no])
+ if test "x${OpenGL_libs_ok}" = "xyes" ; then
+ AC_TRY_LINK([],
+ [],
+ [OpenGL_libs_ok=yes ; OpenGL_ok=yes; OGL_LIBS="$OGL_LIBS -lGL"],
+ [OpenGL_libs_ok=no])
+ fi
+ LDFLAGS="$LDFLAGS_old"
+ fi
fi
-if test "x$OpenGL_ok" = "xno"
-then
- AC_CHECK_HEADERS(GL/gl.h, [OpenGL_ok=yes])
+if test "x${OpenGL_headers_ok}" = "xno" ; then
+ AC_CHECK_HEADER(GL/gl.h,
+ [OpenGL_headers_ok=yes],
+ [OpenGL_headers_ok=no])
fi
-if test "x$OpenGL_ok" = "xno"
-then
# under SunOS ?
+if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/usr/openwin/share/include/GL/glxmd.h,
- [OpenGL_ok=yes]
- OGL_INCLUDES="-I/usr/openwin/share/include/")
+ [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/openwin/share/include/"],
+ [OpenGL_headers_ok=no])
fi
-if test "x$OpenGL_ok" = "xno"
-then
# under IRIX ?
+if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/opt/graphics/OpenGL/include/GL/glxmd.h,
- [OpenGL_ok=yes]
- OGL_INCLUDES="-I/opt/graphics/OpenGL/include")
+ [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/opt/graphics/OpenGL/include"],
+ [OpenGL_headers_ok=no])
fi
-if test "x$OpenGL_ok" = "xno"
-then
+
# some linux OpenGL servers hide the includes in /usr/X11R6/include/GL
+if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/usr/X11R6/include/GL/gl.h,
- [OpenGL_ok=yes]
- OGL_INCLUDES="-I/usr/X11R6/include")
+ [OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/X11R6/include"],
+ [OpenGL_headers_ok=no])
fi
-if test "x$OpenGL_ok" = "xyes"
-then
+if test "x${OpenGL_headers_ok}" = "xyes" ; then
AC_CHECKING(for OpenGL library)
- OpenGL_ok=no
- for i in $dirs; do
- if test -r "$i/libGL.so"; then
-dnl AC_MSG_RESULT(in $i)
- if test "x$i" = "x/usr/lib"
- then
- OGL_LIBS=""
+ for idir in $dirs; do
+ if test -r "${idir}/libGL.so"; then
+ AC_MSG_RESULT(in ${idir})
+ if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then
+ GL_LIB_PATH=""
else
- OGL_LIBS="-L$i"
+ GL_LIB_PATH="-L${idir}"
fi
break
fi
-# under IRIX ?
- if test -r "$i/libGL.sl"; then
-dnl AC_MSG_RESULT(in $i)
- if test "x$i" = "x/usr/lib"
- then
- OGL_LIBS=""
+ # under IRIX ?
+ if test -r "${idir}/libGL.sl"; then
+ AC_MSG_RESULT(in ${idir})
+ if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then
+ GL_LIB_PATH=""
else
- OGL_LIBS="-L$i"
+ GL_LIB_PATH="-L${idir}"
fi
break
fi
done
- LDFLAGS_old="$LDFLAGS"
- LDFLAGS="$LDFLAGS $OGL_LIBS"
- AC_CHECK_LIB(GL,glBegin,OpenGL_ok=yes,OpenGL_ok=no)
+ LDFLAGS_old="${LDFLAGS}"
+ LDFLAGS="${LDFLAGS} ${GL_LIB_PATH}"
+ AC_CHECK_LIB([GL],
+ [glBegin],
+ [OpenGL_libs_ok=yes],
+ [OpenGL_libs_ok=no])
+ if test "x${OpenGL_libs_ok}" = "xyes" ; then
+ AC_TRY_LINK([],
+ [],
+ [OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GL_LIB_PATH} -lGL"],
+ [OpenGL_libs_ok=no])
+ fi
LDFLAGS="$LDFLAGS_old"
fi
-if test "x$OpenGL_ok" = "xyes" ; then
- OGL_LIBS="$OGL_LIBS -lGL"
+if test "x${OpenGL_libs_ok}" = "xyes" ; then
+ for idir in $dirs; do
+ if test -r "${idir}/libGLU.so"; then
+ AC_MSG_RESULT(in ${idir})
+ if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then
+ GLU_LIB_PATH=""
+ else
+ GLU_LIB_PATH="-L${idir}"
+ fi
+ break
+ fi
+ # under IRIX ?
+ if test -r "${idir}/libGLU.sl"; then
+ AC_MSG_RESULT(in ${idir})
+ if test "x${idir}" = "x/usr/lib${LIB_LOCATION_SUFFIX}" ; then
+ GLU_LIB_PATH=""
+ else
+ GLU_LIB_PATH="-L${idir}"
+ fi
+ break
+ fi
+ done
+ LDFLAGS_old="${LDFLAGS}"
+ LDFLAGS="${LDFLAGS} ${OGL_LIBS} ${GLU_LIB_PATH}"
+ AC_CHECK_LIB([GLU],
+ [gluBeginSurface],
+ [OpenGL_libs_ok=yes],
+ [OpenGL_libs_ok=no])
+ if test "x${OpenGL_libs_ok}" = "xyes" ; then
+ AC_TRY_LINK([],
+ [],
+ [OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GLU_LIB_PATH} -lGLU"],
+ [OpenGL_libs_ok=no])
+ fi
+ LDFLAGS="$LDFLAGS_old"
fi
+if test "x${OpenGL_headers_ok}" = "xyes" ; then
+ if test "x${OpenGL_libs_ok}" = "xyes" ; then
+ OpenGL_ok=yes
+ fi
+fi
-OpenGLU_ok=no
-LDFLAGS_old="$LDFLAGS"
-LDFLAGS="$LDFLAGS $OGL_LIBS"
-AC_CHECK_LIB(GLU,gluBeginSurface,OpenGLU_ok=yes,OpenGLU_ok=no)
-LDFLAGS="$LDFLAGS_old"
+AC_MSG_RESULT(for OpenGL_headers_ok: $OpenGL_headers_ok)
+AC_MSG_RESULT(for OpenGL_libs_ok: $OpenGL_libs_ok)
+AC_MSG_RESULT(for OpenGL_ok: $OpenGL_ok)
-if test "x$OpenGLU_ok" = "xyes" ; then
- OGL_LIBS="$OGL_LIBS -lGLU"
-fi
+AC_SUBST(OGL_INCLUDES)
+AC_SUBST(OGL_LIBS)
-# Save cache
-AC_CACHE_SAVE
+AC_LANG_RESTORE
])dnl
AC_REQUIRE([CHECK_PYTHON])dnl
AC_REQUIRE([CHECK_QT])dnl
AC_REQUIRE([CHECK_SIP])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
fi
fi
if test "x$pyqt_lib_ok" == "xno"; then
- dnl try {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages
- if test -d {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages; then
- AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ dnl try {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+ if test -d {PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages; then
+ AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+ PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
else
- AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ AC_CHECK_FILE(${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages"
+ PYQT_LIBS="-L${PYQTDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
fi
fi
if test "x$pyqt_lib_ok" == "xno"; then
- dnl try ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages
+ dnl try ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
if test "x${PYTHONHOME}" != "x"; then
- if test -d ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages ; then
- AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ if test -d ${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then
+ AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+ PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
else
- AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ AC_CHECK_FILE(${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages"
+ PYQT_LIBS="-L${PYTHONHOME}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
fi
fi
if test "x$pyqt_lib_ok" == "xno"; then
- dnl try /usr/lib/python${PYTHON_VERSION}/site-packages
- AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ dnl try /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+ AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+ PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lqtcmodule"
else
- AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+ AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
if test "x$pyqt_lib_ok" == "xyes"; then
- PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages"
+ PYQT_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
AC_REQUIRE([AC_PROG_CPP])dnl
AC_REQUIRE([AC_PROG_CXXCPP])dnl
AC_REQUIRE([CHECK_OPENGL])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
+
+AC_CHECKING(for Qt)
+
+if test "x$OpenGL_ok" != "xyes" ; then
+ AC_MSG_WARN(Qt needs OpenGL correct configuration, check configure output)
+fi
-AC_CHECKING(for QT)
qt_ok=yes
AC_LANG_SAVE
then
LIBS="$LIBS -lqt-mt $OGL_LIBS"
else
- LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS"
+ LIBS="$LIBS -L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt $OGL_LIBS"
fi
CXXFLAGS_old=$CXXFLAGS
QT_LIBS=" -lqt-mt"
QT_MT_LIBS=" -lqt-mt"
else
- QT_LIBS="-L$QTDIR/lib -lqt-mt"
- QT_MT_LIBS="-L$QTDIR/lib -lqt-mt"
+ QT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt"
+ QT_MT_LIBS="-L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt"
fi
fi
AC_SUBST(QT_ROOT)
AC_SUBST(QT_INCLUDES)
+AC_SUBST(QT_MT_INCLUDES)
AC_SUBST(QT_LIBS)
AC_SUBST(QT_MT_LIBS)
AC_SUBST(QT_VERS)
AC_LANG_RESTORE
-AC_MSG_RESULT(for qt: $qt_ok)
+AC_MSG_RESULT(for Qt: $qt_ok)
# Save cache
AC_CACHE_SAVE
AC_DEFUN([CHECK_QWT],[
AC_REQUIRE([CHECK_QT])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
AC_CHECKING(for qwt)
exits_ok=no
if test "x$exits_ok" = "xno"; then
for d in /usr/local /usr ; do
- AC_CHECK_FILE(${d}/lib/libqwt.so,exits_ok=yes,exits_ok=no)
+ AC_CHECK_FILE(${d}/lib${LIB_LOCATION_SUFFIX}/libqwt.so,exits_ok=yes,exits_ok=no)
if test "x$exits_ok" = "xyes"; then
QWTHOME=$d
AC_MSG_RESULT(libqwt.so detected in $d/lib)
then
LIBS="$LIBS -lqt-mt"
else
- LIBS="$LIBS -L$QTDIR/lib -lqt-mt"
+ LIBS="$LIBS -L$QTDIR/lib${LIB_LOCATION_SUFFIX} -lqt-mt"
fi
if test "x$QWTHOME" = "x/usr"
then
AC_DEFUN([CHECK_SIP],[
AC_REQUIRE([CHECK_PYTHON])dnl
AC_REQUIRE([CHECK_QT])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
sip_ok=yes
fi
if test "x$sip_lib_ok" == "xno" ; then
- dnl look for (lib)sip.so in ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages
- if test -d ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages ; then
- AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ dnl look for (lib)sip.so in ${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+ if test -d ${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then
+ AC_CHECK_FILE(${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages -lsip"
+ SIP_LIBS="-L${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip"
else
- AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ AC_CHECK_FILE(${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages"
+ SIP_LIBS="-L${SIPDIR}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
fi
fi
if test "x$sip_lib_ok" == "xno" ; then
- dnl look for (lib)sip.so in ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages
- if test -d ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages ; then
- AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ dnl look for (lib)sip.so in ${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+ if test -d ${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then
+ AC_CHECK_FILE(${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
+ SIP_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip"
else
- AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ AC_CHECK_FILE(${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"
+ SIP_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
fi
if test "x$sip_lib_ok" == "xno" ; then
- dnl look for (lib)sip.so in /usr/lib/python${PYTHON_VERSION}/site-packages
- if test -d /usr/lib/python${PYTHON_VERSION}/site-packages ; then
- AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ dnl look for (lib)sip.so in /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages
+ if test -d /usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages ; then
+ AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L$/usr/lib/python${PYTHON_VERSION}/site-packages -lsip"
+ SIP_LIBS="-L$/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages -lsip"
else
- AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+ AC_CHECK_FILE(/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
if test "x$sip_lib_ok" == "xyes" ; then
- SIP_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages"
+ SIP_LIBS="-L/usr/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/site-packages"
fi
fi
fi
AC_REQUIRE([AC_PROG_CXX])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
AC_REQUIRE([AC_PROG_CXXCPP])dnl
+AC_REQUIRE([AC_LINKER_OPTIONS])dnl
AC_CHECKING(for VTK)
vtk_ok=no
-AC_PATH_X
-
-if test "x$OpenGL_ok" != "xyes"
-then
- AC_MSG_WARN(vtk needs OpenGL correct configuration, check configure output)
+if test "x$OpenGL_ok" != "xyes" ; then
+ AC_MSG_WARN(VTK needs OpenGL correct configuration, check configure output)
fi
+AC_PATH_X
if test "x$x_libraries" != "x"
then
LXLIB="-L$x_libraries"
if test ! -z $VTKHOME
then
LOCAL_INCLUDES="-I$VTKHOME/include/vtk $LOCAL_INCLUDES"
- LOCAL_LIBS="-L$VTKHOME/lib/vtk $LOCAL_LIBS"
- TRY_LINK_LIBS="-L$VTKHOME/lib/vtk $TRY_LINK_LIBS"
+ LOCAL_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $LOCAL_LIBS"
+ TRY_LINK_LIBS="-L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk -L$VTKHOME/lib${LIB_LOCATION_SUFFIX}/vtk/python $TRY_LINK_LIBS"
fi
dnl vtk headers
dnl VTKPY_MODULES="$VTKHOME/python"
AC_CACHE_VAL(salome_cv_lib_vtk,[
- AC_TRY_LINK(
-#include "vtkPlane.h"
-, vtkPlane *p = vtkPlane::New();,
- eval "salome_cv_lib_vtk=yes",eval "salome_cv_lib_vtk=no")
+ AC_TRY_LINK([#include "vtkPlane.h"],
+ [vtkPlane::New()],
+ [salome_cv_lib_vtk=yes],
+ [salome_cv_lib_vtk=no])
])
vtk_ok="$salome_cv_lib_vtk"
LIBS="$LIBS_old"
if test "x$vtk_ok" = "xno"
then
- AC_MSG_RESULT("no")
+ AC_MSG_RESULT(no)
AC_MSG_WARN(unable to link with vtk library)
else
- AC_MSG_RESULT("yes")
+ AC_MSG_RESULT(yes)
VTK_LIBS="$LOCAL_LIBS"
VTK_MT_LIBS="$LOCAL_LIBS"
fi
-AC_MSG_RESULT("for vtk: $vtk_ok")
+AC_MSG_RESULT(for VTK: $vtk_ok)
AC_LANG_RESTORE
# Save cache
AC_CACHE_SAVE
-])dnl
-
-
+])dnl
\ No newline at end of file
LIBS=@LIBS@
LIBSFORBIN=@LIBS@
-LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome
-LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib/salome
+LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
+LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
# add libstdc++ to link c++ library with libtool !
LDFLAGS+= -lstdc++
LDFLAGSFORBIN+= -lstdc++
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_VERSION = @PYTHON_VERSION@
-PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages
-PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome
+PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages
+PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome
# QT
QT_ROOT = @QT_ROOT@
OCC_INCLUDES=@CAS_CPPFLAGS@
OCC_CXXFLAGS=@CAS_CXXFLAGS@
-#OCC_KERNEL_LIBS=@CAS_KERNEL@
-#OCC_OCAF_LIBS=@CAS_OCAF@
-#OCC_VIEWER_LIBS=@CAS_VIEWER@
-#OCC_MODELER_LIBS=@CAS_MODELER@
-#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@
-#OCC_LIBS=@CAS_LDFLAGS@
CAS_KERNEL=@CAS_KERNEL@
CAS_MATH=@CAS_MATH@
CAS_OCAF=@CAS_OCAF@
CAS_MODELER=@CAS_MODELER@
CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
CAS_LDPATH=@CAS_LDPATH@
+
# MPICH
MPICH_INCLUDES=@MPICH_INCLUDES@
CPPFLAGS+= $(CORBA_INCLUDES)
CXXFLAGS+= $(CORBA_CXXFLAGS)
-# add corba libs when link salome application !
-#LDFLAGS+= $(CORBA_LIBS)
-#LIBS+=$(CORBA_LIBS)
-
DOXYGEN = @DOXYGEN@
+DOXYGEN_WITH_PYTHON = @DOXYGEN_WITH_PYTHON@
+DOXYGEN_WITH_STL = @DOXYGEN_WITH_STL@
## Shared libraries
LT_STATIC_EXEC=@LT_STATIC_EXEC@
# create a symbolic link (or a copie ?)
LN_S=@LN_S@
+KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@
+KERNEL_SITE_DIR=@KERNEL_SITE_DIR@
+
+KERNEL_LDFLAGS=@KERNEL_LDFLAGS@
+KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@
+
## Installation points
prefix=@prefix@
exec_prefix=@exec_prefix@
-bindir=@bindir@/salome
-libdir=@libdir@/salome
+bindir=@exec_prefix@/bin/salome
+libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome
# warning : if user give this path in configure we could have salome/salome :-(
includedir=@includedir@/salome
datadir=@datadir@/salome
idldir=${prefix}/idl/salome
-sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
incmakedir=${prefix}/salome_adm/unix
docdir=${prefix}/doc/salome
Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in
cd $(top_builddir) ; ./config.status
-$(top_builddir)/config.status: $(top_srcdir)/configure
+LOCAL_MAKE = make_commence make_conclude make_omniorb
+
+KERNEL_MAKE = make_module depend SALOMEconfig.h F77config.h sstream envScript
+
+$(top_builddir)/config.status: $(top_srcdir)/configure \
+ $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \
+ $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in)
cd $(top_builddir) ; ./config.status --recheck
# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-)
check_opengl.m4
$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm_local/unix/config_files/%)
- cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
+ cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
# all libtool obj file in library
LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F)
-# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la)
-LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB)))
-LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB)))
-LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib/salome/%.so, $(filter %.so, $(LIB)))
+# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la)
+LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la, $(filter %.la, $(LIB)))
+LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a, $(filter %.a, $(LIB)))
+LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.so, $(LIB)))
ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),)
ifneq ($(GUI_DISABLE_CORBA),yes)
lib: $(LIB_BUILD) $(LIB_BUILD_SO) $(LIB_CLIENT_PY)
# we don't build static library !
-$(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
+$(LIB_BUILD): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la: %.la
-$(RM) $@
-$(RM) $(patsubst %.la, %.so, $@)
-$(RM) $(patsubst %.la, %.a, $@)
$(patsubst %.la, %.so, $@).0 || true
if ! test -z $(LIB_SWIG) ; then \
- ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\
+ ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/_$(LIB_SWIG) || true;\
fi;
-$(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a
+$(LIB_BUILD_A): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a: %.a
-$(RM) $@
ln -sf $(CURDIR)/$< $@ || true
-$(LIB_BUILD_SO): $(top_builddir)/lib/salome/%.so: %.so
+$(LIB_BUILD_SO): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so: %.so
-$(RM) $@
ln -sf $(CURDIR)/$< $@ || true
# copy pyqt files in $(PYTHON_SHARED_SITE)
#
-PYTHON_SHARED_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+PYTHON_SHARED_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
$(PYTHON_SHARED_SITE):
$(INSTALL) -d $@
-$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN)
-$(RM) TAGS *~ *# core *.core
-$(RM) -r .libs
- -$(RM) $(top_builddir)/lib/salome/$(LIB)
+ -$(RM) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)
-$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN))
- -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB))
- -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB))
+ -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB))
+ -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB))
# remove idl generated files (sources)
-$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
# remove idl generated files (headers)
-THIS IS SALOME - SALOMEGUI VERSION: 3.2.0a2
+THIS IS SALOME - SALOMEGUI VERSION: 3.2.0b1
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
#!/bin/bash -f
if [ -z "$SUITRoot" ] ; then
echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1
echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1
echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1
-echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1
echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1
-echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1
-echo " ./adm_local/unix/make_conclude \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_commence:${ABS_CONF_DIR}/adm_local/unix/make_commence.in \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_conclude:${ABS_CONF_DIR}/adm_local/unix/make_conclude.in \\" >> configure.in_tmp1
echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1
\rm -f configure.in_tmp2 configure.in_tmp3
# make other build directories
if test "$GUI_DISABLE_CORBA" == "yes"; then
-dir_variables="salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl"
+ dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl"
else
-dir_variables="salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources"
+ dir_variables="salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources"
fi
for rep in $dir_variables
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# -* Makefile *-
#
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# -* Makefile *-
#
--- /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
+-->\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
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+ if (window.addTocInfo)\r
+ {\r
+ addTocInfo("GUI module\nStudy management\nWorking with Python Scripts");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+ }\r
+ if (window.writeBtnStyle)\r
+ writeBtnStyle();\r
+\r
+ if (window.writeIntopicBar)\r
+ writeIntopicBar(1);\r
+\r
+ if (window.setRelStartPage)\r
+ {\r
+ setRelStartPage("kernel.htm");\r
+\r
+ autoSync(1);\r
+ sendSyncInfo();\r
+ sendAveInfoOut();\r
+ }\r
+}\r
+else\r
+ if (window.gbIE4)\r
+ document.location.reload();\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
<style type="text/css">\r
<!--\r
p.whs1 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-img_whs2 { border:none; width:607px; height:443px; float:none; border-style:none; }\r
+img_whs2 { border:none; width:668px; height:646px; float:none; border-style:none; }\r
ul.whs3 { list-style:disc; }\r
p.whs4 { margin-left:40px; }\r
p.whs5 { margin-left:40px; font-weight:bold; }\r
{\r
if (window.addTocInfo)\r
{\r
- addTocInfo("GUI module\nSetting Preferences\nGEOM preferences");\r
+ addTocInfo("GUI module\nSetting Preferences\nGeometry preferences");\r
addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
\r
}\r
document.location.reload();\r
//-->\r
</script>\r
-<h1>GEOM preferences</h1>\r
+<h1>Geometry preferences</h1>\r
\r
-<p>In the MESH module you can set mesh preferences, default settings, which \r
- can be used in later sessions with this module. </p>\r
+<p>In the <span style="font-weight: bold;"><B>Geometry</B></span> module you can \r
+ set preferences for visualisation of geometrical figures which can be \r
+ used in later sessions with this module. </p>\r
\r
<p> </p>\r
\r
-<p class="whs1"><img src="pics/preferencies5.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs2"></p>\r
+<p class="whs1"><img src="pics/props5.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
\r
<p> </p>\r
\r
-<p>Preferences for the Geometry module allow you to set the following parameters:</p>\r
-\r
<ul type="disc" class="whs3">\r
\r
<li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Default \r
- Shading Color</B></span> - \r
- follow the link to see the detailed information about the <a href="kernel/setting_preferences.htm#Select_Color">Select \r
- Color</a> dialog box.</p></li>\r
+ Shading Color</B></span> - allows to select default shading color. Click on \r
+ the colored line to access to the <span style="font-weight: bold;"><B><a href="select_color_and_font.htm">Select Color</a></B></span> dialog box. </p></li>\r
\r
<li class=kadov-p><p class="whs5">Step \r
- Value for Spin Boxes.</p></li>\r
+ Value for Spin Boxes - <span style="font-weight: normal;">allows to define \r
+ the increment of values set in spin boxes. </span> </p></li>\r
\r
<li class=kadov-p><p class="whs5">Default \r
- Display Mode - <span style="font-weight: normal;">(wireframe or shading).</span></p></li>\r
+ Display Mode - <span style="font-weight: normal;">allows to choose between</span> \r
+ <span style="font-weight: normal;">wireframe or shading.</span></p></li>\r
</ul>\r
\r
<p> </p>\r
--- /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
+-->\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
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+ if (window.addTocInfo)\r
+ {\r
+ addTocInfo("GUI module\nIntroduction to GUI");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+ }\r
+ if (window.writeBtnStyle)\r
+ writeBtnStyle();\r
+\r
+ if (window.writeIntopicBar)\r
+ writeIntopicBar(1);\r
+\r
+ if (window.setRelStartPage)\r
+ {\r
+ setRelStartPage("kernel.htm");\r
+\r
+ autoSync(1);\r
+ sendSyncInfo();\r
+ sendAveInfoOut();\r
+ }\r
+}\r
+else\r
+ if (window.gbIE4)\r
+ document.location.reload();\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
kernel_hha.hhk\r
kernel.hhc\r
kernel.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_hiding_toolbars.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_iapp.htm\r
kernel\introduction_to_salome_pro.htm\r
kernel\navigating_topics.htm\r
kernel\opening_studies.htm\r
kernel\using_registry.htm\r
mesh_preferences.htm\r
post-pro_preferences.htm\r
+select_color_and_font.htm\r
setting_preferences.htm\r
-supervisor_preferences.htm\r
-viewers.htm\r
ehelp.xml\r
robohhre.lng\r
texture_horiz_ltbluebubbles.jpg\r
kernel.glo\r
default.css\r
+pics\propp7.png\r
+pics\propm4.png\r
choicepage.png\r
intropage.png\r
+pics\propp8.png\r
pics\registry1.png\r
-pics\pref4.png\r
logo_salome_2005.png\r
pics\open.jpg\r
pics\registry3.png\r
pics\studyproperties.png\r
-image90.gif\r
pics\registry4.png\r
pics\cataloggenerator.png\r
tip1.gif\r
-image91.gif\r
-image80.gif\r
-pics\preferencies10.png\r
readmepage.png\r
pics\save.jpg\r
-pics\plot1.png\r
-image92.gif\r
-image81.gif\r
-pics\preferencies11.png\r
image70.gif\r
image51.jpg\r
pics\newsticn.jpg\r
-image82.gif\r
image71.gif\r
progresspage.png\r
-image83.gif\r
+pics\props1.png\r
+image94.gif\r
closestudy.png\r
image72.gif\r
pics\copy-paste.jpg\r
-pics\neo-view1.png\r
+pics\selectfont.png\r
+pics\props2.png\r
pics\view2.png\r
-image84.gif\r
image54.jpg\r
image73.gif\r
pics\selectcolor.png\r
-pics\selectfont.png\r
pics\exemple.gif\r
+pics\dumpstudy.png\r
+pics\props3.png\r
pics\neo-view2.png\r
-pics\multidesktop.png\r
-image86.gif\r
-pics\viewerspreferences.png\r
+pics\propp1.png\r
+pics\props4.png\r
image75.gif\r
i_blue.jpg\r
-pics\meshpreferences.png\r
-pics\preferencies5.png\r
+pics\propp2.png\r
+pics\props5.png\r
image65.gif\r
pics\undo-redo.jpg\r
note1.gif\r
-image88.gif\r
-image77.gif\r
+pics\propp3.png\r
pics\objectbrowser1.png\r
-image89.gif\r
-image78.gif\r
+pics\propm1.png\r
pics\objectbrowser2.png\r
-pics\preferencies7.png\r
image67.gif\r
productpage.png\r
-image79.gif\r
+pics\loadscript.png\r
+pics\propm2.png\r
pics\geomview-alt.png\r
pics\lockedstudy.png\r
pics\loadstudy2.png\r
-pics\preferencies8.png\r
-pics\pref1.png\r
image68.gif\r
-pics\preferencies9.png\r
-pics\pref2.png\r
+pics\propp6.png\r
+pics\propm3.png\r
image69.gif\r
kernel.ppf\r
ehlpdhtm.js\r
whgdata\whlstf8.htm\r
whgdata\whlstf9.htm\r
whgdata\whlstf10.htm\r
+whgdata\whlstf11.htm\r
whgdata\whlstg0.htm\r
kernel.htm\r
kernel_csh.htm\r
dramatically without affecting other components. </span></p>\r
\r
<p class="whs3"><span style="font-weight: normal;">All \r
- software components (VISU, GEOM, SMESH...) integrated into </span>SALOME \r
+ software components (Post-Pro, Geometry, Mesh...) integrated into </span>SALOME \r
<span style="font-weight: normal;">platform implement \r
predefined interfaces. Each component provides data for the </span>SALOME<span \r
style="font-weight: normal;"> study in a form of links (stored in the \r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs5">Actually, starting with SALOME 3.0.0 \r
- version, it is possible to create engine-independent modules. These modules \r
- may not use CORBA at all, and can have internal data structure which can \r
- be written in pure C++ (or python). Such modules are located inside SALOME \r
- GUI process and from the point of view of the end user have no difference \r
- with standard components. Such modules not using the standard tools of \r
- SALOME platform are defined on a special separated level named CAM. CAM \r
- component is the basis for new SALOME GUI and contains all basic functionality \r
- for working with modules (loading; saving, closing, customization of toolbar \r
- and menu).</p>\r
+<p class="whs5">It is equally possible to create engine-independent \r
+ modules. These modules may not use CORBA at all, and can have internal \r
+ data structure which can be written in pure C++ (or python). Such modules \r
+ are located inside SALOME GUI process and from the point of view of the \r
+ end user have no difference with standard components. Such modules not \r
+ using the standard tools of SALOME platform are defined on a special separated \r
+ level named CAM. CAM component is the basis for new SALOME GUI and contains \r
+ all basic functionality for working with modules (loading; saving, closing, \r
+ customization of toolbar and menu).</p>\r
\r
<p class="whs5">Another fundamental piece of the <span \r
style="font-weight: bold;"><B>SALOME</B></span> architecture is the use of the \r
<p class="whs6"><span \r
style="font-weight: normal;"> <img src="../note1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs7">In </span>SALOME<span style="font-weight: normal;"> there \r
is a possibility to run definite components in the so-called </span><a href="running_salome_pro.htm#batchmode">batch mode</a><span style="font-weight: normal;"> \r
- without GUI provided by IAPP component. In this case you can work with \r
+ without GUI provided by GUI component. In this case you can work with \r
these components with the help of Python commands and scripts. </span> </p>\r
\r
<p class="whs8"> </p>\r
to SALOME help system. This on-line help has been created in the HTML \r
format with the help of Java applets. It can be launched in any WEB browser \r
(Internet Explorer, Netscape Navigator and others) and on any platform \r
- (Windows, Macintosh, Linux, and UNIX).</p>\r
+ (Windows, Macintosh, Linux and UNIX).</p>\r
\r
<p class="whs3"> </p>\r
\r
<p class="whs3"> </p>\r
\r
<p class="whs3"> \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,'(not specified)','Navigating topics','navigating_topics.htm','Using left-hand tabs','using_left-hand_tabs.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Navigating topics','navigating_topics.htm','Using left-hand tabs','using_left-hand_tabs.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
<p>Study is a document within GUI, an abstraction layer between actual \r
document data (probably, remote data available through CORBA) and data \r
presentation (in the Object Browser). It contains a tree of Data Object \r
- instances (see Figure 2)</p>\r
+ instances.</p>\r
\r
<p> </p>\r
\r
<p class="whs3"> </p>\r
\r
<p class="whs5">Your study will be created \r
- with default name <span style="font-weight: bold;"><B>Study1#1</B></span>. In \r
- SALOME you can create several studies. </p>\r
+ with default name <span style="font-weight: bold;"><B>Study1</B></span>. In SALOME \r
+ you can create several studies. </p>\r
\r
<p class="whs5"> </p>\r
\r
<p class="whs7">1. Make \r
your study <span style="font-weight: bold;"><B>active:</B></span> maximize it \r
(if it minimized) or click \r
- on the top control zone of the study window</p>\r
+ on the top control zone of the study window.</p>\r
\r
<p class="whs8"> </p>\r
\r
<p class="whs7">2. From \r
the main menu select <span style="font-weight: bold;"><B>Window > New \r
Window </B></span>and from the submenu choose the viewer, which will be activated \r
- in your new window </p>\r
+ in a new window. </p>\r
\r
<p class="whs7"> </p>\r
\r
<p class="whs5">The window for your study \r
- will be created with a default name <span style="font-weight: bold;"><B>Study1#2</B></span>.<span \r
+ will be created with a default name <span style="font-weight: bold;"><B>Study1</B></span>.<span \r
style="font-weight: bold;"> <B></B></span></p>\r
\r
<p class="whs9"> </p>\r
\r
<p class="whs10">\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,'','Displaying studies','displaying_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Displaying studies','displaying_studies.htm','Introduction to GUI','../introduction_to_gui.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Displaying/hiding toolbars</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
-h1.whs1 { text-align:justify; }\r
-p.whs2 { text-align:justify; }\r
-img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
-p.whs4 { font-style:italic; text-align:justify; color:#000000; font-family:'Arial Black' , sans-serif; }\r
-p.whs5 { margin-left:40px; text-align:justify; }\r
-p.whs6 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
-p.whs7 { margin-left:0px; 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.whs7 {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
--->\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
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.addTocInfo)\r
- {\r
- addTocInfo("GUI module\nDisplaying/hiding toolbars");\r
-addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
-\r
- }\r
- if (window.writeBtnStyle)\r
- writeBtnStyle();\r
-\r
- if (window.writeIntopicBar)\r
- writeIntopicBar(1);\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("../kernel.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<h1 class="whs1">Displaying/hiding toolbars</h1>\r
-\r
-<p class="whs2"><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs3">All toolbars in the <span \r
- style="font-weight: bold;"><B>SALOME</B></span> Platform are context-sensitive. \r
- Uploading of a definite component (GEOM, VISU, SMESH etc.) will automatically \r
- add some additional toolbars specific to this component. </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs4">To display/hide a \r
- definite toolbar:</p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs5">In the main menu choose \r
- <span style="font-weight: bold;"><B>View > Toolbars</B></span>, and from this \r
- submenu mark or unmark the toolbar, you would like to display/hide. </p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs7">By default all toolbars \r
- are located on the top of the SALOME desktop. But you can relocate toolbars \r
- by dragging with the mouse and dropping it in any place of the window. \r
- </p>\r
-\r
-<p class="whs7"> </p>\r
-\r
-<p class="whs7"> \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,'','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
- </p>\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
<style type="text/css">\r
<!--\r
h1.whs1 { text-align:justify; }\r
-img_whs2 { border:none; width:543px; height:378px; float:none; border-style:none; }\r
-img_whs3 { border:none; border-style:none; width:811px; height:513px; float:none; }\r
-p.whs4 { font-weight:bold; margin-left:0px; text-align:justify; }\r
-p.whs5 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
+p.whs2 { font-weight:bold; margin-left:0px; text-align:justify; }\r
+img_whs3 { border:none; width:811px; height:513px; float:none; border-style:none; }\r
+p.whs4 { 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.whs4 {margin-left:1pt; }";\r
+ strNSS += "p.whs2 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
place them wherever you wish on the desktop, in brief, work with Salome \r
Platform like with a normal Windows application.</p>\r
\r
-<p> </p>\r
-\r
-<p><img src="../pics/multidesktop.png" x-maintain-ratio="TRUE" width="543px" height="378px" border="0" class="img_whs2"> </p>\r
-\r
-<p> </p>\r
+<p>Such windows as Object Browser and Python Console are dockable and also \r
+ can be placed at any part of the desktop.</p>\r
\r
-<p>As you see in the screen-shot, only one study window in representation \r
- area is active. All windows are placed inside tabs where you can switch \r
- between them. If there are several windows (viewers) in your current study \r
- and you want to display more then one at the same time, you can split \r
- representation area into two parts, in horizontal or vertical direction, \r
- to create two representation areas with windows be placed in them. You \r
- can change their size and move any windows between representation areas. \r
- When an area becomes empty, it is not displayed.</p>\r
+<p>Only one study window in representation area can be active. You can \r
+ change their size and move any windows between representation areas. When \r
+ an area becomes empty, it is not displayed.</p>\r
\r
-<p> </p>\r
-\r
-<p>For example, on this screen-shot the active zone is split horizontally \r
- to be able to work with OCC and VTK viewers simultaneously. </p>\r
+<p>All windows are placed inside tabs where you can switch between them. \r
+ If there are several windows (viewers) in your current study and you want \r
+ to display more then one at the same time, you can split representation \r
+ area into two parts, in horizontal or vertical direction, to create two \r
+ representation areas with windows be placed in them. To do this, right-click \r
+ on the tab and select <span style="font-weight: bold;"><B>Split Vertically</B></span> \r
+ or <span style="font-weight: bold;"><B>Split Horizontally</B></span>. </p>\r
\r
<p> </p>\r
\r
-<p><img src="../pics/neo-view1.png" x-maintain-ratio="TRUE" width="811px" height="513px" border="0" class="img_whs3"></p>\r
-\r
-<p> </p>\r
-\r
-<p>Then we select one of the windows and split it vertically to see the \r
- results in Plot 2d graphs. </p>\r
+<p>For example, on this screen-shot the active zone has been split horizontally \r
+ to be able to work with OCC and VTK viewers simultaneously, the one of \r
+ the windows was split again, at this time vertically to see Plot 2d graphs. \r
+ </p>\r
\r
<p> </p>\r
\r
-<p class="whs4"><img src="../pics/neo-view2.png" x-maintain-ratio="TRUE" width="811px" height="513px" border="0" class="img_whs3"></p>\r
+<p class="whs2"><img src="../pics/neo-view2.png" x-maintain-ratio="TRUE" width="811px" height="513px" border="0" class="img_whs3"></p>\r
\r
-<p class="whs5"> </p>\r
+<p class="whs4"> </p>\r
\r
-<p class="whs4">\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,'','Creating a new study','creating_a_new_study.htm','Introduction to IAPP','introduction_to_iapp.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
+<p class="whs2">\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,'','Creating a new study','creating_a_new_study.htm','Introduction to GUI','../introduction_to_gui.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs4"> </p>\r
+<p class="whs2"> </p>\r
\r
-<p class="whs4"> </p>\r
+<p class="whs2"> </p>\r
\r
-<p class="whs4"> </p>\r
+<p class="whs2"> </p>\r
\r
-<p class="whs4"> </p>\r
+<p class="whs2"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
<p class="whs2"><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs3"><span style="font-weight: bold;"><B>SALOME \r
</B></span>has some additional features allowing to edit your study within \r
a definite component: <span style="font-weight: bold;"><B>Undo/Redo</B></span> \r
- functionality and <span style="font-weight: bold;"><B>Copy/Paste</B></span> functionality \r
- (currently used in GEOM, VISU). </p>\r
+ functionality and <span style="font-weight: bold;"><B>Copy/Paste</B></span> functionality. \r
+ </p>\r
\r
<p class="whs2"> </p>\r
\r
<p class="whs8"> </p>\r
\r
<p class="whs11">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to GUI','../introduction_to_gui.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
p.whs2 { font-style:italic; text-align:justify; color:#000000; font-family:'Arial Black' , sans-serif; }\r
p.whs3 { font-style:italic; color:#ff0000; text-align:justify; }\r
p.whs4 { margin-left:40px; text-align:justify; }\r
-img_whs5 { border:none; border-style:none; width:332px; height:236px; float:none; }\r
+img_whs5 { border:none; width:332px; height:236px; float:none; border-style:none; }\r
p.whs6 { margin-left:0px; text-align:justify; }\r
-img_whs7 { border:none; border-style:none; width:221px; height:123px; float:none; }\r
+img_whs7 { border:none; width:221px; height:123px; float:none; border-style:none; }\r
p.whs8 { margin-left:0px; font-weight:bold; text-align:justify; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
{\r
if (window.addTocInfo)\r
{\r
- addTocInfo("GUI module\nStudy management\nGetting and setting study properties");\r
+ addTocInfo("GUI module\nStudy management\nSetting study properties");\r
addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
\r
}\r
document.location.reload();\r
//-->\r
</script>\r
-<h1 class="whs1">Getting and setting study properties</h1>\r
+<h1 class="whs1">Setting study properties</h1>\r
\r
<p class="whs2">To view the properties \r
of the current study:</p>\r
<p class="whs4"> </p>\r
\r
<p class="whs8">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to GUI','../introduction_to_gui.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
h1.whs1 { text-align:justify; }\r
p.whs2 { text-align:justify; }\r
p.whs3 { margin-left:40px; text-align:justify; }\r
-img_whs4 { border:none; border-style:none; width:604px; height:376px; float:none; }\r
+img_whs4 { border:none; width:604px; height:376px; float:none; border-style:none; }\r
img_whs5 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
p.whs6 { text-align:justify; background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
img_whs7 { border:none; width:36px; height:38px; float:none; border-style:none; }\r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
<p class="whs2">\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,'','Creating a new study','creating_a_new_study.htm','Introduction to IAPP','introduction_to_iapp.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
+<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,'','Creating a new study','creating_a_new_study.htm','Introduction to GUI','../introduction_to_gui.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
</p>\r
which has been based on this platform </p></li>\r
\r
<li class=kadov-p><p class="whs5">All \r
- functionnalities are accessible through the programmatic integrated Python \r
+ functionalities are accessible through the programmatic integrated Python \r
console</p></li>\r
</ul>\r
\r
\r
<li class=kadov-p><p class="whs5"><span \r
style="font-family: 'Times New Roman', serif;">Define geometrical models \r
- (create/modify geometrical items), import and export them using the IGES \r
- and STEP formats; </span></p></li>\r
+ (create/modify geometrical items), import and export them using the BREP, \r
+ IGES and STEP formats; </span></p></li>\r
\r
<li class=kadov-p><p class="whs5">Define \r
meshing of these geometrical items, import and export them;</p></li>\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>Introduction to IAPP</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
-h1.whs1 { font-family:'Times New Roman' , serif; }\r
-p.whs2 { font-family:'Times New Roman' , serif; }\r
-ul.whs3 { list-style:disc; }\r
-p.whs4 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs5 { margin-left:40px; font-family:'Times New Roman' , serif; }\r
-p.whs6 { font-family:'Times New Roman' , serif; margin-left:120px; }\r
-p.whs7 { margin-left:120px; font-family:'Times New Roman' , serif; }\r
-p.whs8 { margin-left:0px; }\r
-p.whs9 { font-family:'Times New Roman' , serif; 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 += "p.whs9 {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
--->\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
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.addTocInfo)\r
- {\r
- addTocInfo("GUI module\nIntroduction to GUI");\r
-addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
-\r
- }\r
- if (window.writeBtnStyle)\r
- writeBtnStyle();\r
-\r
- if (window.writeIntopicBar)\r
- writeIntopicBar(1);\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("../kernel.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<h1 class="whs1">Introduction to GUI</h1>\r
-\r
-<p class="whs2"><span style="font-weight: bold;"><B>GUI</B></span> \r
- (Graphical User Interface) provides a common shell for all components, \r
- which can be integrated into the SALOME platform.</p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"><span style="font-weight: bold;"><B>GUI \r
- </B></span>component in SALOME platform provides:</p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<ul type="disc" class="whs3">\r
- \r
- <li class=kadov-p><p class="whs4">Common \r
- desktop environment (<a href="salome_pro_desktop.htm">SALOME desktop</a>) \r
- for all components</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Component \r
- integration and management: uploading, switching, component menus/toolbars \r
- handling </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Study \r
- management (creation, saving, loading, editing studies)</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Multi-window \r
- management in the framework of one study</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Management \r
- of objects created or imported into the SALOME application (<a href="using_object_browser.htm">Object \r
- Browser</a>, UseCase Browser) </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Integrated \r
- Python interpreter </p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Output \r
- messages window</p></li>\r
- \r
- <li class=kadov-p><p class="whs4">Additional \r
- tools : <a href="using_catalog_generator.htm">Catalogue Generator</a>, \r
- <a href="using_registry.htm">Registry tool</a></p></li>\r
- \r
- <li class=kadov-p><p class="whs5">Four \r
- standard viewers for data visualization:</p></li>\r
-</ul>\r
-\r
-<p class="whs6">- \r
- VTK 3d viewer,</p>\r
-\r
-<p class="whs6">- \r
- OCC 3d viewer,</p>\r
-\r
-<p class="whs6">- \r
- Plot 2d viewer,</p>\r
-\r
-<p class="whs7">- \r
- Supervision viewer.</p>\r
-\r
-<p class="whs6"> </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="whs6"> </p>\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
-<br> \r
- \r
-\r
-<br> \r
- \r
-\r
-<br> \r
- \r
-\r
-<p class="whs9"> </p>\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
\r
<p class="whs3"> </p>\r
\r
-<p class="whs5">By \r
- default SALOME platform five modules each having its own function:</p>\r
+<p class="whs5">SALOME \r
+ platform integrates a number of modules each having its own function:</p>\r
\r
<p class="whs5"> </p>\r
\r
<ul type="disc" class="whs6">\r
\r
<li class=kadov-p><p class="whs5"><span \r
- style="font-weight: bold;"><B>GEOM</B></span> : facilitates \r
+ style="font-weight: bold;"><B>Geometry</B></span> : facilitates \r
construction and optimization of geometrical models using a wide range \r
of CAD \r
functions. </p></li>\r
<ul type="disc" class="whs6">\r
\r
<li class=kadov-p><p class="whs5"><span \r
- style="font-weight: bold;"><B>MESH</B></span> : generates \r
+ style="font-weight: bold;"><B>Mesh</B></span> : generates \r
meshes on geometrical models previously created or imported by the GEOM \r
component.</p></li>\r
</ul>\r
<ul type="disc" class="whs6">\r
\r
<li class=kadov-p><p class="whs5"><span \r
- style="font-weight: bold;"><B>SUPERVISION</B></span> : provides \r
+ style="font-weight: bold;"><B>Supervisor</B></span> : provides \r
tools for construction of graphs and execution of calculations. </p></li>\r
</ul>\r
\r
<ul type="disc" class="whs6">\r
\r
<li class=kadov-p><p class="whs5"><span \r
- style="font-weight: bold;"><B>VISU</B></span> : Post-processing \r
+ style="font-weight: bold;"><B>Post-Pro</B></span> : Post-processing \r
module for data visualization</p></li>\r
</ul>\r
\r
<p class="whs5"> </p>\r
\r
-<p class="whs5"> </p>\r
+<ul type="disc" class="whs6">\r
+ \r
+ <li class=kadov-p><p class="whs5"><span \r
+ style="font-weight: bold;"><B>MED</B></span> : Module allowing to work with MED \r
+ files. </p></li>\r
+</ul>\r
\r
<p class="whs5"> </p>\r
\r
<p class="whs5">\r
-<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','About SALOME architecture','about_salome_pro_architecture.htm','Introduction to IAPP','introduction_to_iapp.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
+<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','About SALOME architecture','about_salome_pro_architecture.htm','Introduction to GUI','../introduction_to_gui.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
img_whs8 { border:none; width:25px; height:28px; float:none; border-style:none; }\r
p.whs9 { margin-left:0px; font-style:italic; color:#ff0000; text-align:justify; }\r
p.whs10 { margin-left:40px; text-align:justify; }\r
-img_whs11 { border:none; border-style:none; width:331px; height:207px; float:none; }\r
+img_whs11 { border:none; width:331px; height:207px; float:none; border-style:none; }\r
p.whs12 { color:#ff0000; margin-left:0px; background-image:url('../texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
img_whs13 { border:none; float:none; width:35px; height:37px; border-style:none; }\r
p.whs14 { color:#ff0000; margin-left:0px; text-align:justify; }\r
from the main menu select </font></span><span style="font-style: normal;\r
color: #000000;\r
font-weight: bold;"><font color=black ><B>File \r
- > Load</B></font></span><span style="font-style: normal; color: #000000;"><font color=black > option. \r
+ > Open</B></font></span><span style="font-style: normal; color: #000000;"><font color=black > option. \r
From a standard Search File dialog box choose the required *.hdf file \r
and click </font></span><span style="font-style: normal;\r
color: #000000;\r
<p class="whs2"> </p>\r
\r
<p class="whs15">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to GUI','../introduction_to_gui.htm','SALOME desktop','salome_pro_desktop.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
<p class="whs4">1. Install the SALOME package into a definite \r
directory (ex. <span style="font-weight: bold;"><B>SALOME</B></span>) on your \r
- hard disk. It is preferable if you use the special \r
- installation procedure allowing to install the SALOME \r
+ hard disk. It is preferable if you use the special installation procedure \r
+ allowing to install the SALOME \r
platform and all corresponding applications. </p>\r
\r
<p class="whs5"> </p>\r
<p class="whs6"> </p>\r
\r
<p class="whs7"><img src="../tip1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs8"> <span style="font-family: 'Times New Roman', serif;">During \r
- the installation procedure you have a possibility to \r
- set your profile automatically. </span> </p>\r
+ the installation procedure you have a possibility to set your profile \r
+ automatically. </span> </p>\r
\r
<p class="whs9"> </p>\r
\r
style="font-family: 'Times New Roman', serif;">HOME/.salome/</span><span \r
style="font-family: 'Times New Roman', serif; font-weight: normal;">. \r
If you are constantly launching SALOME with some specific options which \r
- are different from default ones, you can edit this file according to your \r
+ are different from the defaults, you can edit this file according to your \r
requirements. So the next time you run SALOME, you won't have to enter \r
these numerous command console options. </span> </p>\r
\r
<p class="whs29"> </p>\r
\r
-<p class="whs29"> </p>\r
-\r
<p class="whs30">\r
<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','About SALOME architecture','about_salome_pro_architecture.htm','Introduction to SALOME ','introduction_to_salome_pro.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
<!--\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
p.whs2 { font-family:'Times New Roman' , serif; }\r
-img_whs3 { border:none; border-style:none; width:694px; height:549px; float:none; }\r
+img_whs3 { border:none; width:694px; height:549px; float:none; border-style:none; }\r
p.whs4 { font-family:'Times New Roman' , serif; margin-left:40px; font-weight:bold; }\r
p.whs5 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
ul.whs6 { list-style:disc; }\r
-p.whs7 { text-align:justify; }\r
+p.whs7 { text-indent:36px; }\r
p.whs8 { text-align:justify; margin-left:0px; text-indent:36px; }\r
-p.whs9 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
-img_whs10 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
-p.whs11 { text-align:justify; font-weight:bold; margin-left:40px; }\r
-p.whs12 { text-align:justify; font-weight:bold; margin-left:0px; text-indent:36px; }\r
+p.whs9 { text-align:justify; font-weight:bold; margin-left:40px; }\r
+p.whs10 { text-align:justify; }\r
+p.whs11 { text-align:justify; font-weight:bold; margin-left:0px; text-indent:36px; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
{\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs8 {margin-left:1pt; }";\r
- strNSS += "p.whs12 {margin-left:1pt; }";\r
+ strNSS += "p.whs11 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
destined for visualization of the presentations in the viewer. </p></li>\r
</ul>\r
\r
-<p class="whs2"> </p>\r
+<p class="whs7"> </p>\r
+\r
+<p class="whs7">All toolbars in the <span style="font-weight: bold;"><B>SALOME</B></span> \r
+ Platform are context-sensitive. Loading of a definite component (Geometry, \r
+ Post-Pro, Mesh etc.) will automatically add some additional toolbars specific \r
+ to this component. To display/hide a definite toolbar, in the main menu \r
+ choose <span style="font-weight: bold;"><B>View</B></span> > Toolbars, and \r
+ from this submenu check or uncheck the toolbar, you would like to display/hide. \r
+ </p>\r
+\r
+<p class="whs8">By default all toolbars are located on \r
+ the top of the SALOME desktop. But you can relocate toolbars by dragging \r
+ with the mouse and dropping it in any place of the window. </p>\r
+\r
+<p class="whs9"> </p>\r
\r
<p class="whs4">Parts of the \r
study window:</p>\r
\r
<ul type="disc" class="whs6">\r
\r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Object \r
+ <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Object \r
Browser</B></span> - Management of objects created or imported into SALOME \r
application</p></li>\r
\r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Viewer \r
+ <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Viewer \r
- </B></span>This window is destined for visualization of presentations. </p></li>\r
\r
- <li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Python \r
+ <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Python \r
console</B></span> - Window for Python interpreter. This window functions \r
like a standard document: the pop-up menu invoked by right-click in this \r
window gives access to <span style="font-weight: bold;"><B>Copy/Paste/SelectAll/ClearAll \r
</B></span>options.</p></li>\r
</ul>\r
\r
-<p class="whs7"> </p>\r
+<p class="whs10"> </p>\r
\r
<p class="whs8">Object Browser, Python Console, MenuBar, \r
etc are, in fact, separate dockable windows. Dockable \r
which common windows are necessary for working, and only they will be \r
displayed when this module is active.</p>\r
\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs9"><img src="../note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs10"> For your convenience, the whole study window as well as all \r
- its parts can be <span style="font-weight: bold;"><B>resized / minimized \r
- / maximized</B></span>.</p>\r
-\r
-<p class="whs11"> </p>\r
+<p class="whs9"> </p>\r
\r
-<p class="whs12"><span style="font-weight: normal;">Starting \r
+<p class="whs11"><span style="font-weight: normal;">Starting \r
from the version 3.0.0 Salome uses a</span> Multi-Desktop Approach. <span \r
style="font-weight: normal;">Multi-desktop Approach means that now there \r
is separate Desktop for each document (Study) and \r
<p class="whs2"> </p>\r
\r
<p class="whs2">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Displaying/hiding toolbars','displaying_hiding_toolbars.htm','Editing studies','editing_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Editing studies','editing_studies.htm','Introduction to GUI','../introduction_to_gui.htm','Saving and closing studies','saving_a_study.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
p.whs13 { margin-left:0px; font-style:italic; text-align:justify; color:#000000; font-family:'Arial Black' , sans-serif; }\r
p.whs14 { margin-left:0px; font-style:italic; color:#ff0000; text-align:justify; }\r
p.whs15 { margin-left:40px; text-align:justify; }\r
-p.whs16 { font-style:italic; margin-left:0px; text-align:justify; color:#000000; font-family:'Arial Black' , sans-serif; }\r
-p.whs17 { font-style:italic; color:#ff0000; margin-left:0px; text-align:justify; }\r
-img_whs18 { border:none; width:394px; height:161px; float:none; border-style:none; }\r
-p.whs19 { margin-left:0px; font-weight:bold; text-align:justify; }\r
+p.whs16 { text-align:justify; margin-left:40px; font-family:'Times New Roman' , serif; font-style:normal; }\r
+p.whs17 { font-style:italic; margin-left:0px; text-align:justify; color:#000000; font-family:'Arial Black' , sans-serif; }\r
+p.whs18 { font-style:italic; color:#ff0000; margin-left:0px; text-align:justify; }\r
+img_whs19 { border:none; width:22px; height:23px; border-style:none; }\r
+img_whs20 { border:none; width:394px; height:161px; float:none; border-style:none; }\r
+p.whs21 { margin-left:0px; font-weight:bold; text-align:justify; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
strNSS += "p.whs11 {margin-left:1pt; }";\r
strNSS += "p.whs13 {margin-left:1pt; }";\r
strNSS += "p.whs14 {margin-left:1pt; }";\r
- strNSS += "p.whs16 {margin-left:1pt; }";\r
strNSS += "p.whs17 {margin-left:1pt; }";\r
- strNSS += "p.whs19 {margin-left:1pt; }";\r
+ strNSS += "p.whs18 {margin-left:1pt; }";\r
+ strNSS += "p.whs21 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
from the main menu select </font></span><span style="font-style: normal;\r
color: #000000;\r
font-weight: bold;"><font color=black ><B>File \r
- > Save as </B></font></span><span style="font-style: normal; color: #000000;"><font color=black >option. \r
+ > Save </B></font></span><span style="font-style: normal; color: #000000;"><font color=black >option. \r
Your study will be automatically updated. </font></span></p>\r
\r
<p class="whs9"> </p>\r
standard Search File dialog box enter a new name for your study and click \r
<span style="font-weight: bold;"><B>Save</B></span> button.</p>\r
\r
-<p class="whs9"> </p>\r
+<p class="whs15"> </p>\r
+\r
+<p class="whs13">To save the current \r
+ layout of the GUI:</p>\r
+\r
+<p class="whs13"> </p>\r
+\r
+<p class="whs16">From the main menu select <span style="font-weight: bold;"><B>File \r
+ > Save GUI State</B></span>. The GUI state is published in Object Browser \r
+ in the folder GUI states and can be at any time <span style="font-weight: bold;"><B>Restored</B></span>, \r
+ <span style="font-weight: bold;"><B>Renamed</B></span> or <span style="font-weight: bold;"><B>Deleted.</B></span> \r
+ This operation \r
+ saves and allows to restore almost all GUI settings: names, position, \r
+ zooming and panning of viewers and \r
+ all displayed objects (in Post-Pro module only). </p>\r
\r
-<p class="whs16">To close a study:</p>\r
+<p> </p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs17">To close a study:</p>\r
\r
-<p class="whs9"><span style="font-style: normal; color: #000000;"><font color=black >From \r
+<p class="whs18"> </p>\r
+\r
+<p class="whs9"><span style="font-style: normal; color: #000000;"><font color=black >In \r
+ the main toolbar click<img src="../image94.gif" width="22px" height="23px" border="0" class="img_whs19"> or from \r
the main menu select </font></span><span style="font-weight: bold;\r
font-style: normal;\r
color: #000000;"><font color=black ><B>File > \r
\r
<p class="whs15"> </p>\r
\r
-<p class="whs15"><img src="../closestudy.png" x-maintain-ratio="TRUE" width="394px" height="161px" border="0" class="img_whs18"></p>\r
+<p class="whs15"><img src="../closestudy.png" x-maintain-ratio="TRUE" width="394px" height="161px" border="0" class="img_whs20"></p>\r
\r
<p class="whs15"> </p>\r
\r
\r
<p class="whs7"> </p>\r
\r
-<p class="whs13">To close a definite \r
- study window:</p>\r
-\r
-<p class="whs7"> </p>\r
-\r
-<p class="whs15">Click on the small cross \r
- button in the right upper corner of the study window. If it is the last \r
- study window this operation will result in closing of the whole study.</p>\r
-\r
-<p class="whs9"> </p>\r
-\r
-<p class="whs15"> </p>\r
-\r
-<p class="whs15"> </p>\r
-\r
-<p class="whs19">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to IAPP','introduction_to_iapp.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Setting preferences','setting_preferences.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
+<p class="whs21">\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,'','Creating a new study','creating_a_new_study.htm','Displaying studies','displaying_studies.htm','Introduction to GUI','../introduction_to_gui.htm','Opening studies','opening_studies.htm','SALOME desktop','salome_pro_desktop.htm','Setting preferences','setting_preferences.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs21"> </p>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs21"> </p>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs21"> </p>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs21"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
<!--\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
p.whs2 { font-family:'Times New Roman' , serif; }\r
-img_whs3 { border:none; width:607px; height:341px; float:none; border-style:none; }\r
+img_whs3 { border:none; width:668px; height:646px; float:none; border-style:none; }\r
ul.whs4 { list-style:disc; }\r
p.whs5 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:bold; }\r
img_whs6 { border:none; width:23px; height:29px; border-style:none; }\r
-img_whs7 { border:none; width:510px; height:393px; float:none; border-style:none; }\r
-p.whs8 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
-p.whs9 { font-family:'Times New Roman' , serif; font-weight:normal; }\r
-p.whs10 { font-family:'Times New Roman' , serif; margin-left:80px; }\r
-img_whs11 { border:none; border-style:none; width:580px; height:513px; float:none; }\r
-img_whs12 { border:none; width:492px; height:392px; float:none; border-style:none; }\r
-p.whs13 { font-family:'Times New Roman' , serif; font-style:normal; font-weight:bold; }\r
-img_whs14 { border:none; width:20px; height:20px; border-style:none; }\r
-img_whs15 { border:none; width:22px; height:23px; border-style:none; }\r
-img_whs16 { border:none; width:22px; height:21px; border-style:none; }\r
-img_whs17 { border:none; width:23px; height:23px; border-style:none; }\r
-img_whs18 { border:none; width:25px; height:24px; border-style:none; }\r
-p.whs19 { font-family:'Times New Roman' , serif; margin-left:0px; }\r
+p.whs7 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
+ol.whs8 { list-style:disc; }\r
+p.whs9 { font-weight:bold; margin-left:0px; }\r
+p.whs10 { font-weight:bold; margin-left:38px; }\r
+p.whs11 { font-family:'Times New Roman' , serif; font-weight:normal; }\r
+p.whs12 { font-family:'Times New Roman' , serif; font-style:normal; font-weight:bold; }\r
+img_whs13 { border:none; width:20px; height:20px; border-style:none; }\r
+img_whs14 { border:none; width:22px; height:23px; border-style:none; }\r
+img_whs15 { border:none; width:22px; height:21px; border-style:none; }\r
+img_whs16 { border:none; width:23px; height:23px; border-style:none; }\r
+img_whs17 { border:none; width:25px; height:24px; border-style:none; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
{\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs5 {margin-left:1pt; }";\r
- strNSS += "p.whs19 {margin-left:1pt; }";\r
+ strNSS += "p.whs9 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
</script>\r
<h1 class="whs1">SALOME preferences</h1>\r
\r
-<p class="whs2"> To \r
- begin setting preferences for your study, select <span style="font-weight: bold;"><B>Preferences \r
- </B></span>in the main menu, the following dialog box will appear:</p>\r
+<p class="whs2">To begin setting preferences \r
+ for your study, select <span style="font-weight: bold;"><B>Preferences </B></span>in \r
+ the main menu, the following dialog box will appear:</p>\r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs2"> <img src="../pics/pref1.png" x-maintain-ratio="TRUE" width="607px" height="341px" border="0" class="img_whs3"></p>\r
+<p class="whs2"> <img src="../pics/props1.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs3"></p>\r
\r
<p class="whs2">If you've just started \r
your study and haven't yet loaded other modules, you'll be able to change \r
\r
<ul type="disc" class="whs4">\r
\r
- <li class=kadov-p><p class="whs5"><a name=MultiFile1></a>MultiFile \r
- Save<span style="font-weight: normal;"> - if this submenu is marked, you \r
- study will be saved in several HDF files (one file for the data created \r
- by each component used during the study session).</span></p></li>\r
+ <li class=kadov-p><p class="whs5">MultiFile Save<span \r
+ style="font-weight: normal;"> - if checked in, your study will be saved \r
+ in several HDF files (one file for the data created by each component \r
+ used during the study session).</span></p></li>\r
\r
- <li class=kadov-p><p class="whs5"><a name=ASCII1></a>ASCII \r
- Save - <span style="font-weight: normal;">if this submenu is marked, you \r
- study will be saved in ASCII format file (or files).</span></p></li>\r
+ <li class=kadov-p><p class="whs5">ASCII Save - <span \r
+ style="font-weight: normal;">if checked in, your study will be saved in \r
+ ASCII format file (or files).</span></p></li>\r
\r
<li class=kadov-p><p class="whs5">Undo level -<span \r
style="font-weight: normal;"> here you can define the number of actions \r
which can be undone.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs5">Store positions \r
+ of windows<span style="font-weight: normal;"> - </span> <span \r
+ style="font-weight: normal;">if checked in, \r
+ positions of windows will be saved in a special file at the end of the \r
+ current session and then restored for a new session.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs5">Store/restore last \r
+ GUI state -<span style="font-weight: normal;"> if checked in, all GUI \r
+ settings are saved with the rest of the data whenever you save the study. \r
+ When the study is reopened, the GUI state is restored. </span></p></li>\r
</ul>\r
\r
<li class=kadov-p><p class="whs5">External browser </p></li>\r
\r
<ul type="disc" class="whs4">\r
\r
- <li class=kadov-p><p class="whs5">Python console browser \r
+ <li class=kadov-p><p class="whs5">Python console properties \r
-<span style="font-weight: normal;"> here you can quickly set the parameters \r
(style, size, face) of the font used in your Python console. For detailed \r
- settings press the </span><img src="../image68.gif" width="23px" height="29px" border="0" class="img_whs6"> <span style="font-weight: normal;">button. \r
- The </span>Select Font<span style="font-weight: normal;"> dialog box will \r
- appear. </span></p></li>\r
+ settings in </span><a href="../select_color_and_font.htm">Select Font</a><span \r
+ style="font-weight: normal;"> dialog box press the </span><img src="../image68.gif" width="23px" height="29px" border="0" class="img_whs6"> <span style="font-weight: normal;">button.</span></p></li>\r
</ul>\r
\r
-<p class="whs2"><img src="../pics/selectfont.png" x-maintain-ratio="TRUE" width="510px" height="393px" border="0" class="img_whs7"></p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"><span \r
- style="font-weight: normal;">Please, note that the </span>Script<span \r
- style="font-weight: normal;"> dialog-box gives you the possibility to \r
- use not only Latin and Latin Extended but also Cyrillic, Greek, Arabic, \r
- Runic and many other subsets. </span></p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8">Object \r
- Browser Preferences</p>\r
+<p class="whs7"> </p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"><span \r
+ style="font-family: 'Times New Roman', serif; font-weight: bold;"><B>Viewers \r
+ Preferences</B></span></p>\r
\r
-<p class="whs9">On \r
- the next page you can adjust your Object Browser Preferences.</p>\r
+<p class="whs7"> </p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"><img src="../pics/props2.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs3"></p>\r
\r
-<p class="whs8"><img src="../pics/pref2.png" x-maintain-ratio="TRUE" width="607px" height="341px" border="0" class="img_whs3"></p>\r
-\r
-<p class="whs2"> </p>\r
+<p class="whs7"> </p>\r
\r
<ul type="disc" class="whs4">\r
\r
- <li class=kadov-p><p class="whs5"><span style="font-weight: normal;">Display \r
- or Hide</span> Value, Entry, IOR <span style="font-weight: normal;">and</span> \r
- Reference entry<span style="font-weight: normal;"> columns.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><span style="font-weight: normal;">Disable \r
- or Enable</span> Auto sizing <span style="font-weight: normal;">of</span> \r
- columns <span style="font-weight: normal;">of the Object Browser.</span> \r
- </p></li>\r
+ <li class=kadov-p><p class="whs7">OCC \r
+ and VTK 3D Viewers</p></li>\r
</ul>\r
\r
-<p class="whs10"> </p>\r
-\r
-<p class="whs8">Viewers \r
- Preferences</p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"><span \r
- style="font-weight: normal;">Here you can set preferences for your OCC \r
- and VTK 3D viewers.</span> </p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"><img src="../pics/viewerspreferences.png" x-maintain-ratio="TRUE" width="580px" height="513px" border="0" class="img_whs11"></p>\r
-\r
-<p class="whs5"> </p>\r
-\r
-<ul type="disc" class="whs4">\r
- \r
- <li class=kadov-p><p class="whs5">OCC Viewer 3d <span \r
- style="font-weight: normal;">&</span> VTK Viewer 3d - in these menus \r
- you can set preferences for your </p></li>\r
+<ol type="disc" class="whs8">\r
\r
<ul type="disc" class="whs4">\r
\r
<li class=kadov-p><p class="whs5">Trihedron size \r
- <span style="font-weight: normal;">this submenu allows to set the size \r
- of axes of coordinates displayed in the viewer.</span></p></li>\r
+ of coordinate axes displayed in the viewer.</span></p></li>\r
\r
- <li class=kadov-p><p class="whs5">Number of isolines \r
- along U <span style="font-weight: normal;">(or</span> V<span style="font-weight: normal;">) \r
- - this submenu allows to specify the number of isolines along the axes \r
- of coordinates.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs5"><a name=Select_Color></a>Background \r
+ <li class=kadov-p><p class="whs9">Background \r
Color - <span style="font-weight: normal;">this submenu allows to select \r
- background color of a definite viewer (OCC, VTK, Plot2d). Simply click \r
- on the colored line to access to the </span>Select Color<span style="font-weight: normal;"> \r
- dialog box. The same procedure applies to color selection in all other \r
- dialog windows. </span></p></li>\r
+ background color. Click on the colored line to access to the </span><a href="../select_color_and_font.htm">Select Color</a><span style="font-weight: normal;"> \r
+ dialog box. </span></p></li>\r
</ul>\r
-</ul>\r
-\r
-<p class="whs5"><img src="../pics/selectcolor.png" x-maintain-ratio="TRUE" width="492px" height="392px" border="0" class="img_whs12"></p>\r
+</ol>\r
\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2">In this window you can \r
- choose from either predefined <span style="font-weight: bold;"><B>Basic Colors \r
- </B></span>grouped in the upper left corner of the window or <span style="font-weight: bold;"><B>Custom \r
- Colors,</B></span> which you can define yourselves. To define a Custom Color, \r
- click on one of the Custom Color cells, select the color you need in the \r
- field of colors or by typing in its numeric parameters in the lower right \r
- corner of the window, then click <span style="font-weight: bold;"><B>Add \r
- to Custom Colors</B></span> button. The chosen color will be added to <span \r
- style="font-weight: bold;"><B>Custom Colors</B></span> table. </p>\r
+<ol type="disc" class="whs8">\r
+ \r
+ <ul type="disc" class="whs4">\r
+ \r
+ <li class=kadov-p><p class="whs9"><span \r
+ style="font-weight: normal;"> </span>Number \r
+ of isolines along U <span style="font-weight: normal;">(or</span> V<span \r
+ style="font-weight: normal;">) - this submenu allows to specify the number \r
+ of isolines along the axes of coordinates.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs9">Relative \r
+ size<span style="font-weight: normal;"> - if checked in, trihedron axes \r
+ scale to fit the size of the area displayed in 3D Viewer. </span></p></li>\r
+ </ul>\r
+</ol>\r
\r
<p class="whs2"> </p>\r
\r
<ul type="disc" class="whs4">\r
\r
- <li class=kadov-p><p class="whs8">Plot2d \r
+ <li class=kadov-p><p class="whs7">Plot2d \r
Viewer</p></li>\r
\r
<ul type="disc" class="whs4">\r
\r
- <li class=kadov-p><p class="whs8">Legend \r
+ <li class=kadov-p><p class="whs7">Legend \r
Position - <span style="font-weight: normal;">this submenu allows to set \r
the default position of the legend, it can be located to the left, to \r
the right, on top or on bottom of the graph.</span> </p></li>\r
\r
- <li class=kadov-p><p class="whs8">Curve \r
+ <li class=kadov-p><p class="whs7">Curve \r
Type - <span style="font-weight: normal;">this allows to set the representation \r
of graphs in your presentations. You can see only</span> Points<span style="font-weight: normal;">, \r
points connected with</span> Lines <span style="font-weight: normal;">or \r
points connected with smooth</span> Splines. </p></li>\r
\r
- <li class=kadov-p><p class="whs8">Marker \r
+ <li class=kadov-p><p class="whs7">Marker \r
Size - <span style="font-weight: normal;">this submenu allows you to set \r
the size of markers in your graphs</span></p></li>\r
\r
- <li class=kadov-p><p class="whs8">Horizontal \r
+ <li class=kadov-p><p class="whs7">Horizontal \r
<span style="font-weight: normal;">&</span> Vertical Axis Scale - \r
<span style="font-weight: normal;">this submenu allows you to set the \r
scale for vertical and horizontal axes. It can be either</span> Linear \r
<span style="font-weight: normal;">or</span> Logarithmic</p></li>\r
\r
- <li class=kadov-p><p class="whs8">Background \r
- Color - Background Color - <span style="font-weight: normal;">this submenu \r
- allows to select background color of a definite viewer (OCC, VTK, Plot2d).</span></p></li>\r
+ <li class=kadov-p><p class="whs7">Background \r
+ Color - <span style="font-weight: normal;">this submenu allows to select \r
+ the background color. Click on the colored line to access to the </span><a href="../select_color_and_font.htm">Select Color</a><span style="font-weight: normal;"> \r
+ dialog box. </span></p></li>\r
</ul>\r
</ul>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"> </p>\r
\r
-<p class="whs13">Directories Preferences</p>\r
+<ul type="disc" class="whs4">\r
+ \r
+ <li class=kadov-p><p class="whs7">Graph \r
+ Supervisor</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs10">Background \r
+ Color - <span style="font-weight: normal;">this submenu allows to select \r
+ background color. Click on the colored line to access to the </span><a href="../select_color_and_font.htm">Select Color</a><span style="font-weight: normal;"> \r
+ dialog box. </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs10">Title \r
+ Color - <span style="font-weight: normal;">this submenu allows to select \r
+ title color. Click on the colored 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="whs11"> </p>\r
+\r
+<p class="whs12">Directories Preferences</p>\r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs2"><img src="../pics/pref4.png" x-maintain-ratio="TRUE" width="607px" height="341px" border="0" class="img_whs3"></p>\r
+<p class="whs2"><img src="../pics/props3.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs3"></p>\r
\r
<p class="whs2"> </p>\r
\r
<li class=kadov-p><p class="whs5">Quick Directory List \r
- <span style="font-weight: normal;">this section allows to create and \r
manage a custom quick directory list. To add a directory in the list, \r
- press the </span><img src="../image70.gif" width="20px" height="20px" border="0" class="img_whs14"> <span style="font-weight: normal;">button, \r
- then the <img src="../image71.gif" width="22px" height="23px" border="0" class="img_whs15"> button and browse the data tree for the</span> \r
+ press the </span><img src="../image70.gif" width="20px" height="20px" border="0" class="img_whs13"> <span style="font-weight: normal;">button, \r
+ then the <img src="../image71.gif" width="22px" height="23px" border="0" class="img_whs14"> button and browse the data tree for the</span> \r
<span style="font-weight: normal;">directory you need.</span> <span style="font-weight: normal;"><br>\r
- The <img src="../image73.gif" width="22px" height="21px" border="0" class="img_whs16"> and <img src="../image75.gif" width="23px" height="23px" border="0" class="img_whs17"> buttons help you to sort the \r
+ The <img src="../image73.gif" width="22px" height="21px" border="0" class="img_whs15"> and <img src="../image75.gif" width="23px" height="23px" border="0" class="img_whs16"> buttons help you to sort the \r
directories in the list.<br>\r
- To remove the selected directory from the list, press the <img src="../image72.gif" width="25px" height="24px" border="0" class="img_whs18"> button.</span> <br> </p></li>\r
+ To remove the selected directory from the list, press the <img src="../image72.gif" width="25px" height="24px" border="0" class="img_whs17"> button.</span> </p></li>\r
</ul>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs7"><span \r
+ style="font-family: 'Times New Roman', serif; font-weight: bold;"><B>Object \r
+ Browser Preferences</B></span></p>\r
+\r
+<p class="whs7"> </p>\r
+\r
+<p class="whs7"><img src="../pics/props4.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs3"></p>\r
+\r
+<p class="whs7"> </p>\r
+\r
+<p class="whs5"><span style="font-weight: normal;">D</span><span \r
+ style="font-weight: normal;">isplay or Hide</span> Value, Entry, IOR <span \r
+ style="font-weight: normal;">and</span> Reference entry<span style="font-weight: normal;"> \r
+ columns in the Object Browser.</span></p>\r
+\r
+<p class="whs5"><span style="font-weight: normal;">Disable \r
+ or Enable</span> Auto size for first column or Auto size for other columns \r
+ <span style="font-weight: normal;">in the Object Browser.</span> </p>\r
+\r
+<p class="whs5"> </p>\r
\r
<p class="whs5">\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 IAPP','introduction_to_iapp.htm','SALOME desktop','salome_pro_desktop.htm','Saving a study','saving_a_study.htm','Using Object Browser','using_object_browser.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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 GUI','../introduction_to_gui.htm','SALOME desktop','salome_pro_desktop.htm','Saving a study','saving_a_study.htm','Using Object Browser','using_object_browser.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
p.whs6 { font-family:'Times New Roman' , serif; }\r
p.whs7 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
p.whs8 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-img_whs9 { border:none; border-style:none; width:475px; height:289px; float:none; }\r
+img_whs9 { border:none; width:475px; height:289px; float:none; border-style:none; }\r
p.whs10 { font-family:'Times New Roman' , serif; margin-left:0px; }\r
ul.whs11 { list-style:disc; }\r
p.whs12 { font-family:'Times New Roman' , serif; margin-left:0px; background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
interface its xml description. The \r
component xml description allows SALOME application to know about the \r
component and its services and provides the possibility to call the component \r
- services, for example, inside SUPERVISION module.</p>\r
+ services, for example, inside Supervisor module.</p>\r
\r
<p class="whs4">If you have a look at runSalome, runSalomeWithPort \r
scripts running SALOME application, which are stored in build/bin directory \r
<p class="whs10"> </p>\r
\r
<p class="whs15">\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 IAPP','introduction_to_iapp.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
+<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 GUI','../introduction_to_gui.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
</p>\r
p.whs2 { text-align:justify; }\r
img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
ul.whs4 { list-style:disc; }\r
-img_whs5 { border:none; width:294px; height:280px; float:none; }\r
+img_whs5 { border:none; width:294px; height:280px; float:none; border-style:none; }\r
p.whs6 { background-image:url('../texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
img_whs7 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
-img_whs8 { border:none; width:354px; height:280px; float:none; }\r
+img_whs8 { border:none; width:354px; height:280px; float:none; border-style:none; }\r
p.whs9 { font-style:italic; color:#ff0000; text-align:justify; }\r
p.whs10 { margin-left:40px; text-align:justify; }\r
p.whs11 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
<li class=kadov-p><p class="whs2">components, loaded \r
during the current session</p></li>\r
\r
- <li class=kadov-p><p class="whs2">objects with the \r
- help of different components (The \r
+ <li class=kadov-p><p class="whs2">objects created with \r
+ the help of different components (The \r
objects created with the help of a definite component are located in the \r
folder having the name of this component.)</p></li>\r
\r
the value of the first object attribute </p></li>\r
</ul>\r
\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </p>\r
-\r
-<p class="whs2"> </p>\r
+<p class="whs2"> <span \r
+ style="text-align: justify;"> </span></p>\r
\r
<p class="whs2">In the Object Browser you can apply to \r
the objects an <span style="font-weight: bold;"><B>ascending</B></span> or <span \r
<p class="whs11"> </p>\r
\r
<p class="whs12">\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 IAPP','introduction_to_iapp.htm','SALOME desktop','salome_pro_desktop.htm','Setting preferences','setting_preferences.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\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 GUI','../introduction_to_gui.htm','SALOME desktop','salome_pro_desktop.htm','Setting preferences','setting_preferences.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
p.whs2 { text-align:justify; }\r
p.whs3 { margin-left:40px; text-align:justify; }\r
p.whs4 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
-img_whs5 { border:none; border-style:none; width:604px; height:201px; float:none; }\r
+img_whs5 { border:none; width:604px; height:201px; float:none; border-style:none; }\r
p.whs6 { margin-left:0px; text-align:justify; }\r
p.whs7 { text-align:justify; margin-left:80px; }\r
-img_whs8 { border:none; width:327px; height:128px; float:none; }\r
-img_whs9 { border:none; border-style:none; width:460px; height:283px; float:none; }\r
+img_whs8 { border:none; width:327px; height:128px; float:none; border-style:none; }\r
+img_whs9 { border:none; width:460px; height:283px; float:none; border-style:none; }\r
p.whs10 { margin-left:0px; font-weight:bold; text-align:justify; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<p class="whs2"> </p>\r
\r
<p class="whs3">From the main menu choose \r
- <span style="font-weight: bold;"><B>Tools > Registry</B></span>, the following \r
- dialog box will appear:</p>\r
+ <span style="font-weight: bold;"><B>Tools > Registry display</B></span>, the \r
+ following dialog box will appear:</p>\r
\r
<p class="whs4"> </p>\r
\r
\r
<p class="whs6"> </p>\r
\r
-<p class="whs6"><span style="font-weight: bold;"><B>Help</B></span> \r
- displays a help message on this tool</p>\r
-\r
-<p class="whs2"> </p>\r
-\r
<p class=TODO>To display complete information on a definite process (component):</p>\r
\r
<p class="whs2"> </p>\r
<p class="whs6"> </p>\r
\r
<p class="whs10">\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 IAPP','introduction_to_iapp.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
+<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 GUI','../introduction_to_gui.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
</p>\r
<style type="text/css">\r
<!--\r
p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; border-style:none; width:580px; height:513px; float:none; }\r
+img_whs2 { border:none; width:668px; height:646px; float:none; border-style: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:48px; font-weight:bold; }\r
-p.whs7 { margin-left:0px; font-weight:bold; }\r
-p.whs8 { font-weight:bold; margin-left:48px; }\r
-p.whs9 { margin-left:0px; font-weight:normal; }\r
-img_whs10 { border:none; width:607px; height:443px; float:none; border-style:none; }\r
-p.whs11 { font-weight:normal; }\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
{\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs5 {margin-left:1pt; }";\r
- strNSS += "p.whs7 {margin-left:1pt; }";\r
- strNSS += "p.whs9 {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
if (window.addTocInfo)\r
{\r
- addTocInfo("GUI module\nSetting Preferences\nMESH preferences");\r
+ addTocInfo("GUI module\nSetting Preferences\nMesh preferences");\r
addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
\r
}\r
document.location.reload();\r
//-->\r
</script>\r
-<h1>MESH preferences</h1>\r
+<h1>Mesh preferences</h1>\r
\r
-<p>In the MESH module you can set mesh preferences, default settings, which \r
- can be used in later sessions with this module. </p>\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
\r
<p> </p>\r
\r
-<p><img src="pics/meshpreferences.png" x-maintain-ratio="TRUE" width="580px" height="513px" border="0" class="img_whs2"></p>\r
+<p><img src="pics/propm1.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
\r
<p> </p>\r
\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.</p></li>\r
- \r
- <li class=kadov-p><p class="whs6"><span \r
- style="font-weight: normal;">By default,</span> <span style="font-weight: normal;"> numbers \r
- in</span> Quality Control<span style="font-weight: normal;"> diagrams \r
- are presented as integers. However, it is possible to set the</span> Number \r
- of digits after point <span style="font-weight: normal;">in the corresponding \r
- field.</span></p></li>\r
- \r
- <li class=kadov-p><p class="whs7">Display \r
- mode</p></li>\r
- \r
- <li class=kadov-p><p class="whs8"><span \r
- style="font-weight: normal;">In the <a href="../SMESH/Presentation.htm"\r
- style="font-weight: bold;">D</span><span \r
- style="font-weight: bold;"><B>isplay mode</a> </B></span><span style="font-weight: normal;">dialog \r
- box you can set Wireframe, Shading, Nodes or Shrink presentation mode \r
- as default. This \r
- functionality is described in full detail in other chapter. </span></p></li>\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="whs7">Mesh Preferences</p>\r
+<p class="whs6">Mesh Preferences</p>\r
\r
-<p class="whs9"> </p>\r
+<p class="whs8"> </p>\r
\r
-<p class="whs1"><img src="pics/preferencies7.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs10"></p>\r
+<p class="whs1"><img src="pics/propm2.png" x-maintain-ratio="TRUE" width="668px" 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
- - in this \r
- menu you can set the <span style="font-weight: bold;"><B>Color</B></span> and \r
- the <span style="font-weight: bold;"><B>Size</B></span> for the Nodes of your \r
- mesh. </p></li>\r
- \r
- <li class=kadov-p><p><span style="font-weight: bold;"><B>Elements</B></span> \r
- - in this menu you can set the \r
- Shrink Coefficient, the Width and the colors of Fill, Back face and Outline \r
- for the Elements of your mesh.</p></li>\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> </p>\r
\r
-<p><img src="pics/preferencies8.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs10"></p>\r
+<p><img src="pics/propm3.png" x-maintain-ratio="TRUE" width="668px" 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;">in \r
- this menu you can set the color for selected objects and elements and \r
- the width of lines used for selection.</span></p></li>\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="whs1">Preselection<span style="font-weight: normal;"> \r
- - in this menu you can set the color used for preselection and the width \r
- of lines used for preselection. </span></p></li>\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 nodes and elements.</span></p></li>\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="whs11"> </p>\r
+<p class="whs12"> </p>\r
\r
-<p class="whs11"><img src="pics/preferencies9.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs10"></p>\r
+<p class="whs12"><img src="pics/propm4.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
\r
<p> </p>\r
\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><span style="font-weight: bold;"><B>Origin & \r
- Size Vertical</B></span> & <span style="font-weight: bold;"><B>Horizontal</B></span> \r
- - in this menu you can set representation parameters for the <span style="font-weight: bold;"><B>Scalar \r
- Bar.</B></span></p></li>\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
<style type="text/css">\r
<!--\r
p.whs1 { font-weight:bold; }\r
-img_whs2 { border:none; width:607px; height:443px; float:none; border-style:none; }\r
+img_whs2 { border:none; width:668px; height:646px; float:none; border-style:none; }\r
ul.whs3 { list-style:disc; }\r
p.whs4 { font-weight:normal; }\r
-img_whs5 { border:none; width:607px; height:443px; float:none; border-style:none; }\r
-p.whs6 { margin-left:0px; text-align:justify; }\r
+p.whs5 { font-weight:bold; margin-left:57px; }\r
+p.whs6 { font-weight:bold; margin-left:0px; }\r
+p.whs7 { font-weight:bold; margin-left:38px; }\r
+p.whs8 { margin-left:0px; font-weight:bold; }\r
+p.whs9 { margin-left:38px; font-weight:bold; }\r
+p.whs10 { margin-left:0px; text-align:justify; }\r
+p.whs11 { margin-left:38px; }\r
+p.whs12 { font-weight:bold; margin-left:36px; }\r
+p.whs13 { margin-left:0px; text-align:justify; font-weight:bold; }\r
+p.whs14 { margin-left:0px; text-align:justify; font-weight:normal; }\r
+p.whs15 { text-align:justify; font-weight:bold; margin-left:38px; }\r
+ol.whs16 { list-style:disc; }\r
+ul.whs17 { list-style:square; }\r
+p.whs18 { font-style:normal; }\r
+p.whs19 { margin-left:76px; }\r
+p.whs20 { text-align:justify; font-weight:bold; margin-left:0px; }\r
+p.whs21 { margin-left:38px; text-align:justify; font-weight:bold; }\r
+p.whs22 { text-align:justify; font-weight:bold; margin-left:76px; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
{\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs6 {margin-left:1pt; }";\r
+ strNSS += "p.whs8 {margin-left:1pt; }";\r
+ strNSS += "p.whs10 {margin-left:1pt; }";\r
+ strNSS += "p.whs13 {margin-left:1pt; }";\r
+ strNSS += "p.whs14 {margin-left:1pt; }";\r
+ strNSS += "p.whs20 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
\r
<p> </p>\r
\r
-<p><img src="pics/preferencies10.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs2"></p>\r
+<p><img src="pics/propp1.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
\r
-<p> </p>\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="whs4"><span style="font-weight: bold;"><B>Scalar \r
+ Mode</B></span> - this feature allows refining the value to be inspected:</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs5">Modulus: \r
+ <span style="font-weight: normal;">value of a scalar or modulus of a vector.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs5">Component \r
+ N: <span style="font-weight: normal;">Nth component of a vector, a tensor \r
+ or a matrix..</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Logarithmic \r
+ Scaling</B></span> - this checkbox toggles logarithmic scaling.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Ranges \r
+ to Use</B></span> - you can use either Field Range or Imposed Range.<span \r
+ style="margin-left: 0px;"> </span><span style="margin-left: 0px; text-indent: 12px;">.</span></p></li>\r
+ </ul>\r
+</ul>\r
+\r
+<ul type="disc" class="whs3">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Min and Max for \r
+ Imposed Range</B></span> - in this menu 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
<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
+ 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> Scalar Bar.</p></li>\r
+ horizontal orientation of the</span> <span style="font-weight: normal;">Scalar \r
+ Bar.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs6">Origin \r
+ & 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="whs1">Origin <span style="font-weight: normal;">&</span> \r
- Size Vertical <span style="font-weight: normal;">&</span> Horizontal \r
- - <span style="font-weight: normal;">in this menu you can set representation \r
- parameters for the</span> Scalar Bar.</p></li>\r
+ <li class=kadov-p><p class="whs7">X: \r
+ <span style="font-weight: normal;">abscissa of the point of origin (from \r
+ the left side)</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Y: \r
+ <span style="font-weight: normal;">ordinate of the origin of the bar (from \r
+ the bottom)</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs8">Scalar \r
+ bars default position</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs9">Arrange \r
+ Scalar Bars - <span style="font-weight: normal;">this option prevents \r
+ superposition of scalar bars during visualisation of several fields in \r
+ the same window. If checked, a separate scalar bar is displayed for each \r
+ presentation.</span></p></li>\r
</ul>\r
\r
<p> </p>\r
\r
-<p class="whs1">Scalar Range, Sweep, MED Import Preferences</p>\r
+<p class="whs1">Sweep, MED Import Preferences</p>\r
\r
<p class="whs1"> </p>\r
\r
-<p class="whs4"><img src="pics/preferencies11.png" x-maintain-ratio="TRUE" width="607px" height="443px" border="0" class="img_whs5"></p>\r
+<p class="whs4"><img src="pics/propp2.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
\r
<p class="whs4"> </p>\r
\r
<ul type="disc" class="whs3">\r
\r
- <li class=kadov-p><p class="whs1">Scalar Range </p></li>\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="whs4"><span style="font-weight: bold;"><B>Scalar \r
- Mode</B></span> - in this menu you can choose your Scalar Mode from Modulus, \r
- Component 1, 2 and 3. </p></li>\r
+ <li class=kadov-p><p class="whs10"><span \r
+ style="font-weight: bold;"><B>Time step -</B></span> in this menu you can set \r
+ the<span style="font-weight: bold;"> <B></B></span>time of representation of \r
+ one step.</p></li>\r
\r
- <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Logarithmic \r
- Scaling</B></span> - this checkbox toggles logarithmic scaling.</p></li>\r
+ <li class=kadov-p><p class="whs10"><span \r
+ style="font-weight: bold;"><B>Number of cycles -</B></span> in this menu you \r
+ can define the number of times this animation will be repeated.</p></li>\r
\r
- <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Ranges \r
- to Use</B></span> - you can use either Field Range or Imposed Range.<span \r
- style="margin-left: 0px;"> </span></p></li>\r
+ <li class=kadov-p><p class="whs10"><span \r
+ style="font-weight: bold;"><B>Number of steps</B></span> - in this menu you can \r
+ define the number of steps, which will compose the whole animation.</p></li>\r
</ul>\r
+</ul>\r
+\r
+<p class="whs10"> </p>\r
+\r
+<ul type="disc" class="whs3">\r
\r
- <li class=kadov-p><p class="whs4"><span style="font-weight: bold;"><B>Min \r
- and Max for 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
+ <li class=kadov-p><p class="whs1">MED files import </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Use \r
+ Build Progress - <span style="font-weight: normal;">when this option is \r
+ checked you can choose all other import MED options at the moment of loading \r
+ of each file using </span>Build Progress<span style="font-weight: normal;"> \r
+ menu, otherwise the loading will be done according to the </span>Preferences<span \r
+ style="font-weight: normal;"> without addressing to the user.</span> </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Full \r
+ MED Loading - <span style="font-weight: normal;">when this option is checked, \r
+ the MED file is fully loaded in the study, and no additional access to \r
+ the MED file is needed during the session. Reversibly, when unchecked, \r
+ the MED file is loaded on demand. This is the default behaviour in SALOME \r
+ and recommended for big files to optimize memory usage.</span> </p></li>\r
\r
- <li class=kadov-p><p class="whs1">Sweeping Preference<span \r
- style="margin-left: 40px; text-align: justify;">s</span></p></li>\r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Build \r
+ at once</B></span> - when this option is checked, you can't perform any operations \r
+ until the MED file is fully loaded and processed. </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Build \r
+ fields - <span style="font-weight: normal;">when \r
+ this</span> <span style="font-weight: normal;">option is checked, the \r
+ fields are built automatically at loading. </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Build \r
+ min/max - <span style="font-weight: normal;">when this option is checked, \r
+ minimum and maximum values of the time stamps are found at loading. </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Build \r
+ groups - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
+ is checked, the groups and families are built automatically at loading. \r
+ </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Close \r
+ dialog at finish - <span style="font-weight: normal;">when this option \r
+ is checked, the dialog box is closed after loading of the selected MED \r
+ file. When unchecked, it allows loading other MED files. </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs8">Representation \r
+ properties</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Use \r
+ Shading - <span style="font-weight: normal;">when this</span> <span style="font-weight: normal;">option \r
+ is checked, the objects will be displayed with shading.</span></p></li>\r
+</ul>\r
+\r
+<p class="whs12"> </p>\r
+\r
+<p class="whs6">Gauss Points Preferences</p>\r
+\r
+<p class="whs12"> </p>\r
+\r
+<p class="whs6"><img src="pics/propp3.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
+\r
+<p class="whs12"> </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="whs6"><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
+ <li class=kadov-p><p class="whs13">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="whs6"><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
+ <li class=kadov-p><p class="whs14"><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="whs6"><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
+ <li class=kadov-p><p class="whs13">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="whs10"><span \r
+ style="font-weight: bold;"><B>Alpha Channel Texture (16*16) -</B></span> path \r
+ to the <span style="font-weight: bold;"><B>Alpha Channel Texture</B></span> which \r
+ defines the transparency of the point sprite.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs13">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="whs13">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="whs13">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="whs12"> </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="whs15">Range value for min \r
+ and max size - <span style="font-weight: normal;">these two parameters \r
+ will be respectively multiplied by a reference length (average size of \r
+ cells of the mesh) to define the range for minimum and maximum size of \r
+ a point during rendering (at magnification = 100%). Default values are:</span></p></li>\r
+ \r
+ <ol type="disc" class="whs16">\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="whs17">\r
+ \r
+ <li class=kadov-p><p class="whs18">Min size \r
+ is associated to the smallest real value (including negative values).</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs18">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="whs17">\r
+ \r
+ <li class=kadov-p><p class="whs18">Null size \r
+ is associated to the 0 scalar value.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs18">Max size \r
+ is associated to the largest absolute value.</p></li>\r
+ </ul>\r
+ </ul>\r
+ </ol>\r
+</ul>\r
+\r
+<p class="whs19">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="whs1">MED Files Import - \r
- <span style="font-weight: normal;">this checkbox provides you with an \r
- option of</span> Full MED Loading.</p></li>\r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Magnification \r
+ (%)</B></span> corresponds to the change of size of results at Gauss point \r
+ primitives in 2D space. Acceptable values range from 0 to N; 100% means \r
+ no magnification, 50% means half of its size, 200% mean twice its size \r
+ and so forth. By default this value is set to 100%.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>+/- \r
+ Ratio</B></span> corresponds to the number by which the magnification will \r
+ be respectively multiplied or divided at edition, ranging from 0.01 to \r
+ 10. By default this value is set to 2.</p></li>\r
</ul>\r
\r
+<p class="whs1"> </p>\r
+\r
+<ul type="disc" class="whs3">\r
+ \r
+ <li class=kadov-p><p class="whs1">Geometry </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Size \r
+ of points (%) </B></span>defines a value that will be multiplied by a reference \r
+ length (representative of the average size of cells of the mesh) to define \r
+ the size of points during rendering (at magnification = 100%). Default \r
+ values 10%.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs12">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="whs13"> </p>\r
+\r
+<ul type="disc" class="whs3">\r
+ \r
+ <li class=kadov-p><p class="whs1">Gauss Points Scalar \r
+ Bar</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Active \r
+ Bar - <span style="font-weight: normal;">this option allows to choose</span> \r
+ Local<span style="font-weight: normal;"> or</span> Global <span style="font-weight: normal;">Bar \r
+ as active.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Display \r
+ Global Bar - <span style="font-weight: normal;">this option allows to \r
+ visualize or to hide the Global Bar.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Scalar \r
+ Bar Mode - <span style="font-weight: normal;">this option allows to choose</span> \r
+ <span style="font-weight: normal;">between</span> Bicolor <span style="font-weight: normal;">and</span> \r
+ Rainbow <span style="font-weight: normal;">Scalar Bar Mode.</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs7">Spacing \r
+ - <span style="font-weight: normal;">allows to define Spacing from 0.01 \r
+ to 1.</span></p></li>\r
+</ul>\r
+\r
+<p class="whs13"> </p>\r
+\r
+<p class="whs6">Inside <span style="font-weight: normal;">and</span> \r
+ Outside Cursor Preferences<span style="font-weight: normal;"> allow to \r
+ set</span> Primitives, Size<span style="font-weight: normal;"> and</span> \r
+ Magnification<span style="font-weight: normal;"> for the respective zones.</span> \r
+ </p>\r
+\r
+<p class="whs6"> </p>\r
+\r
+<p class="whs20">Picking Preferences</p>\r
+\r
+<p class="whs20"> </p>\r
+\r
+<p class="whs20"><img src="pics/propp6.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<ul type="disc" class="whs3">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Cursor</B></span> \r
+ - allows to adjust the Size of the cursor used for Picking (ranging from \r
+ 0.1 to 1), the Height of the pyramids (ranging from 0 to 10) and the Selection \r
+ cursor color. </p></li>\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Tolerance</B></span> \r
+ - defines at which distance of the cursor from the point it becomes selected \r
+ (ranges from 0.001 to 10). </p></li>\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Information window \r
+ -</B></span> allows to define the <span style="font-weight: bold;"><B>Transparency</B></span> \r
+ (from 0% = opaque to 100% = transparent) and <span style="font-weight: bold;"><B>Position</B></span> \r
+ of the window, which can be: </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Centred \r
+ below the point</B></span>, or</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs11">located at <span style="font-weight: bold;"><B>Top-left \r
+ corner of the 3D view</B></span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs8">Movement \r
+ of the Camera <span style="font-weight: normal;">can also be define by \r
+ the user. </span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Zoom \r
+ at first selected point -</B></span> This value is used to define the focal \r
+ distance at the first selected point (at the end of the movement of the \r
+ camera). This value is a ratio that will be multiplied by the current \r
+ zoom value.</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs9">Number \r
+ of steps between two positions - <span style="font-weight: normal;">defines \r
+ the smoothness of camera movement at selection by the number of iterations. \r
+ If set to 1 the camera is zoomed and centered at the point momentarily. \r
+ Greater numbers mean very slow camera movement.</span> </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs6">Display \r
+ parent mesh element - <span style="font-weight: normal;">allows to visualize \r
+ or hide the patent mesh element of the selected gauss point.</span> </p></li>\r
+</ul>\r
+\r
+<p class="whs15"> </p>\r
+\r
+<p class="whs20">Navigation Preferences</p>\r
+\r
+<p class="whs15"> </p>\r
+\r
+<p class="whs20"><img src="pics/propp7.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
+\r
+<p class="whs21"> </p>\r
+\r
+<p class="whs12"> </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="whs15">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="whs22">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="whs22">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="whs12"> </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="whs15">[+]/[-] 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="whs12"> </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="whs15">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="whs15">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="whs15">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="whs15">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="whs15">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="whs15"> </p>\r
+\r
+<p class="whs15"> </p>\r
+\r
+<p class="whs20">Recorder Preferences</p>\r
+\r
+<p class="whs20"> </p>\r
+\r
+<p class="whs20"><img src="pics/propp8.png" x-maintain-ratio="TRUE" width="668px" height="646px" border="0" class="img_whs2"></p>\r
+\r
+<p class="whs1"> </p>\r
+\r
<p> </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="whs15">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="whs22">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="whs22">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="whs15">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="whs15">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="whs15">Progressive - <span \r
+ style="font-weight: normal;">allows to record a progressive API file.</span> \r
+ </p></li>\r
+</ul>\r
+\r
+<p class="whs15"> </p>\r
+\r
+<p class="whs15"> </p>\r
+\r
<p> </p>\r
\r
<script type="text/javascript" language="javascript1.2">\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
+-->\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
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+ if (window.addTocInfo)\r
+ {\r
+ addTocInfo("GUI module\nSetting Preferences\nSelect Color and Font");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+ }\r
+ if (window.writeBtnStyle)\r
+ writeBtnStyle();\r
+\r
+ if (window.writeIntopicBar)\r
+ writeIntopicBar(1);\r
+\r
+ if (window.setRelStartPage)\r
+ {\r
+ setRelStartPage("kernel.htm");\r
+\r
+ autoSync(1);\r
+ sendSyncInfo();\r
+ sendAveInfoOut();\r
+ }\r
+}\r
+else\r
+ if (window.gbIE4)\r
+ document.location.reload();\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
<style type="text/css">\r
<!--\r
p.whs1 { font-family:'Times New Roman' , serif; }\r
+p.whs2 { margin-left:0px; background-image:url('texture_horiz_ltbluebubbles.jpg'); text-align:justify; }\r
+img_whs3 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
+p.whs4 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
-->\r
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\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.whs2 {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
\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, others are module-specific and \r
- are accessible only after you load a respective module. When you change \r
- settings (click \93OK\94 or "Apply" button) each module receives \r
- notification about what preferences are changed. The preferences, set \r
- during the current study session, are automatically saved in a special \r
- user file at the end of the session. So, next time you launch SALOME application, \r
- these preferences will be restored.</p>\r
-\r
-<p class="whs1"><span>T</span>he preferences \r
- you set will be default preferences for all new objects, but they are \r
- not retroactive and do not automatically apply to the existing objects. \r
- </p>\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 \93OK\94 or "Apply" button) each \r
+ module receives notification about what preferences are changed. You can \r
+ also click "Default" button to restore default preferences or \r
+ "Close" button to quit the menu without any changes. </p>\r
+\r
+<p>The preferences, set during the current study session, are automatically \r
+ saved in a special user file at the end of the session. So, next time \r
+ you launch SALOME application, these preferences will be restored.</p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs2"><img src="note1.gif" x-maintain-ratio="TRUE" width="36px" height="38px" border="0" class="img_whs3">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="whs4"> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"> </p>\r
\r
<p class="whs1"> </p>\r
\r
+++ /dev/null
-<HTML>\r
-<HEAD>\r
-<meta http-equiv="content-type" content="text/html;charset=windows-1252">\r
-<TITLE>Supervisor Preferences</TITLE>\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
- <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><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
--->\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
-</HEAD>\r
-<BODY><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.addTocInfo)\r
- {\r
- addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
-\r
- }\r
- if (window.writeBtnStyle)\r
- writeBtnStyle();\r
-\r
- if (window.writeIntopicBar)\r
- writeIntopicBar(1);\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("kernel.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<H1>Supervisor Preferences</H1>\r
- <P>Type topic text here.</P>\r
-<script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.writeIntopicBar)\r
- writeIntopicBar(0);\r
-//-->\r
-</script>\r
-</BODY>\r
-</HTML>
\ 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>Viewers</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
-ul.whs1 { list-style:disc; }\r
-img_whs2 { border:none; width:26px; height:25px; border-style:none; }\r
-img_whs3 { border:none; width:27px; height:26px; border-style:none; }\r
-img_whs4 { border:none; width:28px; height:26px; border-style:none; }\r
-img_whs5 { border:none; width:28px; height:29px; border-style:none; }\r
-img_whs6 { border:none; width:27px; height:25px; border-style:none; }\r
-img_whs7 { border:none; width:26px; height:26px; border-style:none; }\r
-img_whs8 { border:none; width:28px; height:28px; border-style:none; }\r
-img_whs9 { border:none; width:27px; height:27px; border-style:none; }\r
-img_whs10 { border:none; width:29px; height:28px; border-style:none; }\r
-img_whs11 { border:none; width:25px; height:27px; border-style:none; }\r
-img_whs12 { border:none; width:28px; height:30px; border-style:none; }\r
-img_whs13 { border:none; width:402px; height:396px; float:none; border-style:none; }\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
--->\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
-</head>\r
-<body><script type="text/javascript" language="javascript1.2">\r
-<!--\r
-if (window.gbWhTopic)\r
-{\r
- if (window.addTocInfo)\r
- {\r
- addTocInfo("GUI module\nViewers");\r
-addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
-\r
- }\r
- if (window.writeBtnStyle)\r
- writeBtnStyle();\r
-\r
- if (window.writeIntopicBar)\r
- writeIntopicBar(1);\r
-\r
- if (window.setRelStartPage)\r
- {\r
- setRelStartPage("kernel.htm");\r
-\r
- autoSync(1);\r
- sendSyncInfo();\r
- sendAveInfoOut();\r
- }\r
-}\r
-else\r
- if (window.gbIE4)\r
- document.location.reload();\r
-//-->\r
-</script>\r
-<h1>Viewers</h1>\r
-\r
-<p>Salome gives you a choice of four different viewers. This wide choice \r
- of instruments providing both common and unique possibilities aims to \r
- give the users of SALOME Platform maximum convenience and ease in their \r
- work.</p>\r
-\r
-<p>Customizing the viewers you can define settings to be used in them by \r
- default in the <span style="font-weight: bold;"><B>Preferences</B></span> menu.</p>\r
-\r
-<p>Salome Platform also provides you with <span style="font-weight: bold;"><B>Viewer \r
- Toolbars</B></span>, which make it possible to promptly operate your viewer \r
- scene. Some of the functions are common for all viewers. </p>\r
-\r
-<ul type="disc" class="whs1">\r
- \r
- <li class=kadov-p><p><img src="image77.gif" width="26px" height="25px" border="0" class="img_whs2"> <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="image78.gif" width="27px" height="26px" border="0" class="img_whs3"> <span style="font-weight: bold;"><B>Fit \r
- all</B></span> - resizes the view to place all represented objects in the \r
- visible area</p></li>\r
- \r
- <li class=kadov-p><p><img src="image79.gif" width="28px" height="26px" border="0" class="img_whs4"> <span style="font-weight: bold;"><B>Panning</B></span> \r
- - in case if the represented objects are greater that the visible area \r
- and you don't wish to use <span style="font-weight: bold;"><B>Fit all</B></span> \r
- functionality, click on this button and you'll be able to drag the scene \r
- to see its remote parts. </p></li>\r
-</ul>\r
-\r
-<ul type="disc" class="whs1">\r
- \r
- <li class=kadov-p><p><img src="image86.gif" width="28px" height="29px" border="0" class="img_whs5"> <span style="font-weight: bold;"><B>Clone \r
- view</B></span> - opens a new duplicate scene.</p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p><span style="font-weight: bold;"><B>VTK 3d viewer</B></span> \r
- (Visualization ToolKit Viewer) and <span style="font-weight: bold;"><B>OCC \r
- 3d viewer</B></span> (Open CasCade Viewer) are both useful for creation of \r
- geometrical models in the GEOM module, however, there some differences, \r
- which specialize the use of the modules. </p>\r
-\r
-<p><span style="font-weight: bold;"><B>OCC 3d viewer</B></span> is the default \r
- viewer for GEOM Module. Only this viewer gives you the possibility to \r
- select sub-shapes (described in full detail in the help for the GEOM Module). \r
- Unfortunately, you can't visualize meshes in this viewer, for this, use \r
- VTK 3d viewer. </p>\r
-\r
-<p><span style="font-weight: bold;"><B>VTK 3d viewer</B></span> \r
- is the default viewer for SMESH Module. Using this viewer you'll be able \r
- to visualize and work with meshes. </p>\r
-\r
-<p>Most of functions in Viewer Toolbars of these modules are common for \r
- both viewers, they are:</p>\r
-\r
-<ul type="disc" class="whs1">\r
- \r
- <li class=kadov-p><p><img src="image88.gif" width="27px" height="25px" border="0" class="img_whs6"> <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="image89.gif" width="26px" height="26px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Rotation</B></span> \r
- - click this button and rotate the selected object in the viewer using \r
- the mouse. </p></li>\r
- \r
- <li class=kadov-p><p><img src="image90.gif" width="28px" height="28px" border="0" class="img_whs8"> <span style="font-weight: bold;"><B>Front</B></span> \r
- - shows the front view of the object.</p></li>\r
- \r
- <li class=kadov-p><p><img src="image91.gif" width="26px" height="26px" border="0" class="img_whs7"> <span style="font-weight: bold;"><B>Reset</B></span> \r
- - returns the object in its initial position.</p></li>\r
-</ul>\r
-\r
-<p>One more function is available in <span style="font-weight: bold;"><B>OCC \r
- 3d viewer</B></span> only. </p>\r
-\r
-<ul type="disc" class="whs1">\r
- \r
- <li class=kadov-p><p><img src="image92.gif" width="27px" height="25px" border="0" class="img_whs6"> <span style="font-weight: bold;"><B>Memorize \r
- view</B></span> - saves the view of the object. </p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p><span style="font-weight: bold;"><B>Plot 2d viewer</B></span> is destined to \r
- the representation of 2d \r
- plots and graphs obtained via Post-Pro module. </p>\r
-\r
-<p>Its viewer toolbar gives you fast access to the following operations:</p>\r
-\r
-<ul type="disc" class="whs1">\r
- \r
- <li class=kadov-p><p><img src="image80.gif" width="27px" height="27px" border="0" class="img_whs9"> Draw Points - represents points \r
- on the graph.</p></li>\r
- \r
- <li class=kadov-p><p><img src="image81.gif" width="29px" height="28px" border="0" class="img_whs10"> & <img src="image82.gif" width="25px" height="27px" border="0" class="img_whs11"> Horizontal \r
- axis logarithmic & Vertical axis logarithmic - changes the scaling \r
- on axes to logarithmic. </p></li>\r
- \r
- <li class=kadov-p><p><img src="image83.gif" width="28px" height="30px" border="0" class="img_whs12"> Show Legend - reveals all verbal \r
- and numerical information on the graphs.</p></li>\r
- \r
- <li class=kadov-p><p><img src="image84.gif" width="29px" height="28px" border="0" class="img_whs10"> Settings - calls a menu, in which \r
- you can specify advanced settings for your <span style="font-weight: bold;"><B>Plot \r
- 2d Viewer</B></span>. Value major/minor it is maximum number of\r
- major/minor intervals for a specified axis. The real number of intervals\r
- fits {1,2,5}*10^n with a natural number n and not exceed the maximum\r
- as specified by the user. </p></li>\r
-</ul>\r
-\r
-<p> </p>\r
-\r
-<p><img src="pics/plot1.png" x-maintain-ratio="TRUE" width="402px" height="396px" border="0" class="img_whs13"></p>\r
-\r
-<p> </p>\r
-\r
-<p><span style="font-weight: bold;"><B>GL Viewer</B></span> is used by exterior \r
- modules built-in in the <span style="font-weight: bold;"><B>SALOME Platform.</B></span></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
</script>\r
<script language="javascript">\r
<!--\r
+aTE("Dump Study","dump_study.htm");\r
aTE("GEOM preferences","geom_preferences.htm");\r
+aTE("Introduction to GUI","introduction_to_gui.htm");\r
aTE("About SALOME architecture","kernel/about_salome_pro_architecture.htm");\r
aTE("About SALOME help system","kernel/about_salome_pro_help_system.htm");\r
aTE("Creating a new study","kernel/creating_a_new_study.htm");\r
-aTE("Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm");\r
aTE("Displaying studies","kernel/displaying_studies.htm");\r
aTE("Editing studies","kernel/editing_studies.htm");\r
aTE("Getting properties of the study","kernel/getting_properties_of_the_study.htm");\r
aTE("Getting started2","kernel/getting_started2.htm");\r
aTE("Introduction","kernel/introduction.htm");\r
-aTE("Introduction to IAPP","kernel/introduction_to_iapp.htm");\r
aTE("Introduction to SALOME","kernel/introduction_to_salome_pro.htm");\r
aTE("Navigating topics","kernel/navigating_topics.htm");\r
aTE("Opening studies","kernel/opening_studies.htm");\r
aTE("Using Registry tool","kernel/using_registry.htm");\r
aTE("MESH preferences","mesh_preferences.htm");\r
aTE("Post-Pro Preferences","post-pro_preferences.htm");\r
+aTE("Select Color and Font","select_color_and_font.htm");\r
aTE("Setting Preferences","setting_preferences.htm");\r
-aTE("Supervisor Preferences","supervisor_preferences.htm");\r
-aTE("Viewers","viewers.htm");\r
\r
//-->\r
</script>\r
<script language="javascript" src="whfts.js"></script>\r
<script language="javascript">\r
<!--\r
-iWM("__version__","zon","whfwdata0.htm");\r
+iWM("__version__","zoom","whfwdata0.htm");\r
\r
-iTM(0,27,"whftdata0.htm");\r
+iTM(0,26,"whftdata0.htm");\r
\r
//-->\r
</script>\r
<!--\r
aWE("__version__",14);\r
aWE("_omnipymodul",14);\r
-aWE("0",1,5,14,10,16);\r
-aWE("1",3,14,24,15);\r
-aWE("10",14);\r
+aWE("0",6,14,2,24,16);\r
+aWE("001",24);\r
+aWE("01",24);\r
+aWE("1",5,14,24,15);\r
+aWE("10",14,24);\r
+aWE("100",24);\r
aWE("103100",14);\r
aWE("13",14);\r
-aWE("2",3,14,24,15);\r
+aWE("16",24);\r
+aWE("16x16",24);\r
+aWE("2",5,14,24,15);\r
+aWE("200",24);\r
aWE("23",14);\r
aWE("24",14);\r
-aWE("2d",5,9,10,27);\r
-aWE("3",1,5,14,10,24,15,16);\r
+aWE("256",24);\r
+aWE("2d",6,10,2,24);\r
+aWE("3",6,14,2,15,16);\r
aWE("31",14);\r
-aWE("3d",9,10,18,27);\r
+aWE("33",24);\r
+aWE("3d",10,2,24,18);\r
aWE("4",14);\r
aWE("5",14);\r
+aWE("50",24);\r
+aWE("512",24);\r
aWE("6",14);\r
aWE("7",14);\r
aWE("8",14);\r
aWE("9",14);\r
-aWE("abl",1,5,14,18,27);\r
+aWE("abl",3,6,14,18);\r
aWE("abort",14);\r
-aWE("abov",7,14);\r
-aWE("abstraction",3);\r
-aWE("acces",1,16,18,21,27);\r
-aWE("accessibl",9,25);\r
+aWE("abov",8,14);\r
+aWE("abscissa",23,24);\r
+aWE("absolut",24);\r
+aWE("abstraction",5);\r
+aWE("acceptabl",24);\r
+aWE("acces",3,1,23,24,16,18,21);\r
+aWE("accessibl",10,26);\r
aWE("accidental",14);\r
-aWE("accord",14,15,16,21);\r
+aWE("accord",14,24,15,16,21);\r
aWE("account",14);\r
-aWE("achiev",1);\r
-aWE("acquaint",2);\r
-aWE("action",18);\r
-aWE("activ",3,5,16,17);\r
-aWE("activat",3,16,17);\r
-aWE("actual",1,3,6);\r
-aWE("ad",18,19);\r
-aWE("adapt",1);\r
-aWE("add",4,14,15,18,19);\r
-aWE("addition",3,14);\r
-aWE("additional",1,4,6,14,10,21);\r
-aWE("adjust",18);\r
-aWE("advanc",14,19,27);\r
-aWE("affect",1);\r
-aWE("again",14,12,17);\r
-aWE("aim",27);\r
-aWE("algorithm",1,14,11);\r
-aWE("allow",1,6,0,14,11,15,16,17,18,19,22);\r
+aWE("achiev",3);\r
+aWE("acquaint",4);\r
+aWE("action",24,18);\r
+aWE("activ",5,6,24,16,17);\r
+aWE("activat",5,16,17);\r
+aWE("activity",24);\r
+aWE("actual",5,7);\r
+aWE("ad",0,25,19);\r
+aWE("adapt",3);\r
+aWE("add",14,15,16,25,18,19);\r
+aWE("addition",5,14);\r
+aWE("additional",3,7,14,2,24,16,21);\r
+aWE("addres",24);\r
+aWE("adjust",24);\r
+aWE("advanc",14,19);\r
+aWE("affect",3);\r
+aWE("again",6,14,12,17);\r
+aWE("algorithm",3,14,11);\r
+aWE("allow",3,0,7,1,14,11,23,24,15,16,17,25,18,19,22);\r
+aWE("almost",17);\r
aWE("along",11,18);\r
aWE("alongsid",19);\r
+aWE("alpha",24);\r
aWE("already",14);\r
aWE("alway",11);\r
aWE("amount",14);\r
aWE("animation",24);\r
aWE("annoy",14);\r
-aWE("anoth",1,17);\r
+aWE("anoth",3,17);\r
aWE("answ",14);\r
-aWE("any",1,2,5,4,7,14,11,12,15);\r
+aWE("any",3,4,6,8,14,11,12,24,15,16,17,26);\r
aWE("anyth",14);\r
-aWE("ap",25,21);\r
-aWE("appear",7,8,14,18,19,22);\r
-aWE("applet",2);\r
-aWE("appli",18);\r
-aWE("application",1,5,9,10,15,16,17,18,25,19,21);\r
+aWE("ap",26,21);\r
+aWE("api",0,24);\r
+aWE("appear",0,8,9,14,18,19,22);\r
+aWE("appearanc",23);\r
+aWE("applet",4);\r
+aWE("application",3,6,0,10,2,15,16,17,18,26,19,21);\r
aWE("approach",14,11,16);\r
-aWE("appropriat",14,9);\r
+aWE("appropriat",14,10);\r
aWE("approximat",14);\r
-aWE("arabic",18);\r
-aWE("architectur",1,9);\r
-aWE("area",5,16,27);\r
+aWE("arabic",25);\r
+aWE("architectur",3,0,10);\r
+aWE("area",6,16,18);\r
aWE("argument",14);\r
+aWE("arrang",24);\r
aWE("arrow",21);\r
aWE("ascend",21);\r
aWE("ascii",17,18);\r
aWE("ask",14);\r
-aWE("associat",13,21);\r
-aWE("attach",9);\r
+aWE("assign",24);\r
+aWE("associat",13,24,21);\r
+aWE("attach",10);\r
aWE("attribut",21);\r
-aWE("author",7,19);\r
+aWE("author",8,19);\r
aWE("auto",14,18);\r
aWE("automatic",23);\r
-aWE("automatical",4,14,23,13,15,17,25);\r
-aWE("availability",6);\r
-aWE("availabl",1,3,6,14,9,27);\r
-aWE("avoid",14);\r
+aWE("automatical",0,14,23,13,24,15,16,17,26);\r
+aWE("availability",7);\r
+aWE("availabl",3,5,7,14,10);\r
+aWE("averag",24);\r
+aWE("avi",24);\r
+aWE("avoid",0,14);\r
aWE("awar",14);\r
aWE("awk",14);\r
-aWE("ax",18,27);\r
-aWE("axi",18,27);\r
+aWE("ax",18);\r
+aWE("axi",18);\r
aWE("b",14);\r
aWE("back",14,23);\r
-aWE("background",18);\r
+aWE("background",24,18);\r
aWE("bar",23,24,21);\r
-aWE("bas",1,9,10,17);\r
+aWE("bas",3,10,2,17);\r
aWE("bash",14);\r
-aWE("basi",1);\r
-aWE("basic",1,14,11,16,18);\r
-aWE("batch",1,14,15);\r
+aWE("basi",3);\r
+aWE("basic",3,14,11,16,25);\r
+aWE("batch",3,0,14,15);\r
aWE("be",14);\r
-aWE("becom",5);\r
+aWE("becom",6,24);\r
aWE("befor",14);\r
aWE("begin",18,22);\r
-aWE("behav",1);\r
-aWE("behavior",9);\r
-aWE("below",14,12);\r
+aWE("behav",3);\r
+aWE("behavior",10);\r
+aWE("behaviour",24);\r
+aWE("below",14,12,24);\r
+aWE("bet",24);\r
+aWE("bicolor",24);\r
+aWE("big",24);\r
aWE("bin",14,15,19);\r
aWE("binari",14);\r
aWE("binary",14,17);\r
aWE("blu",14);\r
-aWE("blur",1);\r
-aWE("bmp",27);\r
+aWE("blur",3);\r
aWE("bold",14);\r
aWE("book",20);\r
aWE("boost",14);\r
aWE("boost_version",14);\r
aWE("boostdir",14);\r
-aWE("border",16);\r
-aWE("both",10,23,27);\r
-aWE("bottom",9,18);\r
-aWE("box",0,7,14,23,13,17,18,19,22);\r
+aWE("border",23,16);\r
+aWE("both",2,23,24);\r
+aWE("bottom",10,23,24,18);\r
+aWE("box",0,1,8,14,23,13,24,17,25,18,19,22);\r
aWE("bracket",14);\r
-aWE("brief",5,14,12);\r
-aWE("bring",10);\r
-aWE("brows",2,3,14,10,13,16,18,19,21);\r
+aWE("brep",10);\r
+aWE("brief",6,14,12);\r
+aWE("bring",2);\r
+aWE("brows",4,5,6,0,14,2,13,16,17,18,19,21);\r
aWE("bug",14);\r
-aWE("build",14,19);\r
-aWE("built",14,11,27);\r
-aWE("button",14,10,12,13,17,18,25,19,22,27);\r
-aWE("c",1,14,15);\r
-aWE("ca",9);\r
-aWE("cad",9,11);\r
-aWE("cal",1,14,27);\r
-aWE("calculation",8,9,11);\r
+aWE("build",14,24,19);\r
+aWE("built",14,11,24);\r
+aWE("button",14,2,12,13,24,17,25,18,26,19,22);\r
+aWE("c",3,14,15);\r
+aWE("ca",10);\r
+aWE("cad",10,11);\r
+aWE("cal",3,0,14);\r
+aWE("calculation",9,10,11);\r
aWE("call",14,17,19,22);\r
-aWE("cam",1);\r
+aWE("cam",3);\r
+aWE("camera",24);\r
aWE("cancel",14);\r
aWE("capability",19);\r
aWE("caption",14);\r
-aWE("car",14,9);\r
+aWE("car",14,10);\r
aWE("careful",14);\r
-aWE("carry",9);\r
-aWE("cas",1,7,14,11,16,17,27);\r
-aWE("cascad",14,27);\r
+aWE("carri",23);\r
+aWE("carry",10);\r
+aWE("cas",3,8,14,11,24,16,17);\r
+aWE("cascad",14);\r
aWE("casroot",14);\r
aWE("cat",14);\r
aWE("catalog",19);\r
aWE("catalogmodulegeneral",19);\r
aWE("catalogmodulepersonnel",19);\r
-aWE("catalogu",10,15);\r
+aWE("catalogu",2,15);\r
aWE("categori",20);\r
aWE("cd",14);\r
-aWE("cel",18);\r
-aWE("chang",1,5,7,14,23,16,17,18,25,27);\r
-aWE("chapt",23);\r
-aWE("chapter",2);\r
+aWE("cel",24,25);\r
+aWE("center",24);\r
+aWE("centr",24);\r
+aWE("central",24);\r
+aWE("chang",3,6,8,14,23,24,16,17,18,26);\r
+aWE("channel",24);\r
+aWE("chapter",4);\r
+aWE("character",25);\r
aWE("charg",14);\r
-aWE("check",14);\r
+aWE("check",0,14,24,16,18);\r
aWE("check_version",14);\r
aWE("checkbox",14,23,24);\r
-aWE("choic",14,27);\r
-aWE("choos",3,4,6,7,14,23,13,24,18,19,22);\r
-aWE("chosen",24,18,19);\r
+aWE("choic",0,14,24,25);\r
+aWE("choos",5,7,1,8,14,23,13,24,16,25,19,22);\r
+aWE("chosen",24,25,19);\r
+aWE("clamp",24);\r
aWE("classic",16);\r
aWE("clear",14);\r
aWE("clearall",16);\r
-aWE("click",3,6,7,14,12,13,16,17,18,25,19,20,21,22,27);\r
+aWE("click",5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22);\r
aWE("clickabl",12);\r
-aWE("client",1);\r
-aWE("clon",27);\r
-aWE("clos",1,14,12,17,20);\r
-aWE("cluster",1);\r
-aWE("cod",1,14);\r
-aWE("coefficient",23);\r
+aWE("client",3);\r
+aWE("clip",24);\r
+aWE("clos",3,14,12,24,17,26,20);\r
+aWE("cluster",3);\r
+aWE("cod",3,14);\r
+aWE("coef",23);\r
aWE("coincid",14);\r
aWE("collect",14);\r
-aWE("color",0,23,24,18,21);\r
+aWE("color",1,23,24,25,18,21);\r
aWE("column",18,21,22);\r
-aWE("combin",11);\r
+aWE("combin",11,24);\r
aWE("comfortabl",16);\r
aWE("comma",14);\r
-aWE("command",1,14,15);\r
-aWE("common",14,10,11,16,17,25,27);\r
-aWE("compar",1);\r
+aWE("command",3,0,14,15);\r
+aWE("common",14,2,11,16,17,26);\r
+aWE("compar",3,23);\r
aWE("compatibl",14);\r
aWE("compil",14);\r
aWE("compilation",14);\r
-aWE("complet",7,14,20,22);\r
-aWE("complex",1,9);\r
-aWE("component",1,2,4,6,9,10,11,12,13,24,16,17,18,19,21,22);\r
+aWE("complet",8,14,20,22);\r
+aWE("complex",3,10);\r
+aWE("component",3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22);\r
aWE("compos",24);\r
aWE("comput",14,18);\r
-aWE("computation",1,9);\r
-aWE("computational",9);\r
-aWE("concept",1,12);\r
-aWE("concern",14,9);\r
-aWE("conclusion",1);\r
+aWE("computation",3,10);\r
+aWE("computational",10);\r
+aWE("concept",3,12);\r
+aWE("concern",14,10);\r
+aWE("conclusion",3);\r
aWE("config",14);\r
aWE("config_fil",14);\r
aWE("config_mandrake10_1",14);\r
-aWE("configur",14,9);\r
+aWE("configur",14,10);\r
aWE("configurabl",11);\r
aWE("configuration",14);\r
-aWE("confirm",14);\r
-aWE("connect",8,11,13,16,18);\r
+aWE("confirm",0,14);\r
+aWE("connect",9,11,13,16,18);\r
aWE("consist",16);\r
-aWE("consol",9,15,16,17,18);\r
-aWE("constant",1,15);\r
-aWE("construction",9,11);\r
-aWE("contain",1,2,3,7,14,13,15,16,19,20,21,22);\r
+aWE("consol",6,10,15,16,17,18);\r
+aWE("constant",3,15);\r
+aWE("construction",10,11);\r
+aWE("consum",0);\r
+aWE("contain",3,4,5,0,8,14,13,15,16,19,20,21,22);\r
aWE("container",15);\r
-aWE("content",14,20);\r
-aWE("context",4,14,16,21);\r
+aWE("content",0,14,24,20);\r
+aWE("context",14,16,21);\r
aWE("continu",14);\r
-aWE("control",3,14,23);\r
-aWE("convenienc",16,27);\r
-aWE("convert",14);\r
+aWE("control",5,14,23,24);\r
+aWE("convert",0,14);\r
aWE("cooperat",11);\r
-aWE("coordinat",18,27);\r
-aWE("copy",6,14,16,17);\r
+aWE("coordinat",18);\r
+aWE("copi",24);\r
+aWE("copy",7,14,16,17);\r
aWE("copyright",14);\r
-aWE("corba",1,3,10);\r
-aWE("corn",17,18);\r
+aWE("corba",3,5,2);\r
+aWE("corn",24,17,25);\r
aWE("correct",16);\r
-aWE("correspond",14,23,13,15,20);\r
-aWE("cost",9);\r
-aWE("coupl",1,9);\r
+aWE("correspond",14,23,13,24,15,20);\r
+aWE("cost",10);\r
+aWE("coupl",3,10);\r
aWE("cpp",15);\r
-aWE("creat",1,2,3,5,8,14,9,10,11,13,15,16,17,18,19,21);\r
-aWE("creation",1,14,10,27);\r
+aWE("creat",3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21);\r
+aWE("creation",3,14,2);\r
aWE("cros",12,17);\r
aWE("csh",14,15);\r
aWE("cshell",15);\r
-aWE("current",5,6,7,14,12,15,17,25,21,22);\r
+aWE("ctrl",24);\r
+aWE("current",6,0,8,14,12,24,15,17,18,26,21,22);\r
+aWE("cursor",24);\r
aWE("curv",18);\r
-aWE("custom",9,18,19);\r
-aWE("customiz",27);\r
-aWE("customization",1);\r
+aWE("custom",10,25,18,19);\r
+aWE("customization",3);\r
aWE("cycl",24);\r
-aWE("cyrillic",18);\r
+aWE("cyrillic",25);\r
aWE("d",14);\r
-aWE("dat",7,22);\r
-aWE("data",1,3,8,14,9,10,11,17,18,19);\r
-aWE("databas",1);\r
+aWE("dat",8,22);\r
+aWE("data",3,5,0,9,14,10,2,11,17,18,19);\r
+aWE("databas",3);\r
aWE("debug",21);\r
-aWE("default",3,4,0,14,11,23,24,15,17,18,25,21,27);\r
-aWE("defin",1,14,9,24,18,27);\r
-aWE("definit",1,3,4,6,15,17,18,21,22);\r
-aWE("definition",1,9,20);\r
-aWE("delay",9);\r
-aWE("demand",9,10);\r
-aWE("depend",6,14,21);\r
+aWE("decreas",24);\r
+aWE("default",5,1,14,23,24,15,16,17,18,26,21);\r
+aWE("defin",3,0,1,14,10,23,24,25,18);\r
+aWE("definit",3,5,7,15,16,21,22);\r
+aWE("definition",3,10,20);\r
+aWE("delay",10);\r
+aWE("delet",17);\r
+aWE("demand",10,2,24);\r
+aWE("depend",7,14,21);\r
aWE("dependanci",14);\r
aWE("dependenci",14);\r
-aWE("deriv",1);\r
+aWE("deriv",3);\r
aWE("descend",21);\r
-aWE("describ",1,2,14,23,19,27);\r
+aWE("describ",3,4,14,19);\r
aWE("description",14,15,19);\r
-aWE("design",9);\r
+aWE("design",10,24);\r
aWE("desir",19);\r
-aWE("desktop",5,4,8,14,10,16,17);\r
-aWE("destin",8,16,21,22,27);\r
+aWE("desktop",6,9,14,2,16,17);\r
+aWE("destin",9,16,21,22);\r
aWE("destination",12);\r
-aWE("detail",0,14,23,18,27);\r
+aWE("detail",14,18);\r
aWE("dev",14);\r
-aWE("develop",1);\r
-aWE("development",1,9);\r
+aWE("develop",3);\r
+aWE("development",3,10);\r
+aWE("devic",24);\r
aWE("diagram",23);\r
-aWE("dialog",0,7,14,23,13,16,17,18,19,22);\r
+aWE("dialog",0,1,8,14,23,13,24,16,17,25,18,19,22);\r
aWE("dif",14);\r
aWE("differ",16);\r
-aWE("differenc",1,14,16,17,27);\r
-aWE("different",1,2,3,8,14,13,15,16,17,21,27);\r
+aWE("differenc",3,14,16,17);\r
+aWE("different",3,4,5,9,14,13,24,15,16,17,21);\r
aWE("digit",23);\r
-aWE("digital",9);\r
+aWE("digital",10);\r
aWE("dir",14);\r
-aWE("direction",5);\r
+aWE("direction",6,24);\r
aWE("directori",14,18);\r
aWE("directory",14,15,17,18,19);\r
-aWE("disabl",14,18);\r
+aWE("disabl",14,24,18);\r
aWE("disable_flag",14);\r
aWE("disk",14,15);\r
-aWE("display",5,4,0,14,23,12,15,16,17,18,20,21,22);\r
-aWE("distinction",1);\r
-aWE("distribut",1,14);\r
+aWE("display",6,1,14,23,12,24,15,16,17,18,20,21,22);\r
+aWE("distanc",24);\r
+aWE("distinction",3);\r
+aWE("distribut",3,14);\r
aWE("distribution",14);\r
-aWE("divid",2,22);\r
-aWE("do",6,14);\r
-aWE("dockabl",10,16,17);\r
-aWE("document",3,8,14,16);\r
-aWE("domain",1,11);\r
-aWE("don",14,19,27);\r
+aWE("divid",4,24,22);\r
+aWE("do",7,14);\r
+aWE("dockabl",6,2,16,17);\r
+aWE("document",5,0,9,14,16);\r
+aWE("domain",3,11);\r
+aWE("dominant",24);\r
+aWE("don",14,24,19);\r
aWE("dot",14);\r
aWE("doubl",22);\r
-aWE("down",7,12,21);\r
+aWE("down",8,12,21);\r
aWE("doxygen",14);\r
aWE("doxytag",14);\r
aWE("doxywizard",14);\r
-aWE("drag",4,27);\r
-aWE("dramatical",1);\r
-aWE("draw",27);\r
+aWE("drag",16);\r
+aWE("dramatical",3);\r
aWE("driv",14);\r
-aWE("drop",4,12);\r
-aWE("dump",27);\r
+aWE("drop",12,16);\r
+aWE("dump",0);\r
aWE("dumpversion",14);\r
-aWE("duplicat",27);\r
-aWE("dynamic",10);\r
-aWE("dynamical",11);\r
-aWE("e",14,10,16,17);\r
-aWE("eas",27);\r
-aWE("easi",1,9);\r
-aWE("easy",1);\r
-aWE("economical",1);\r
+aWE("dynamic",2);\r
+aWE("dynamical",11,24);\r
+aWE("e",14,2,16,17);\r
+aWE("easi",3,10);\r
+aWE("easy",3);\r
+aWE("economical",3);\r
aWE("edg",23);\r
-aWE("edit",6,7,14,10,15);\r
-aWE("editor",25);\r
-aWE("efficient",9);\r
+aWE("edit",7,8,14,2,15);\r
+aWE("editabl",24);\r
+aWE("edition",24);\r
+aWE("editor",26);\r
+aWE("efficient",10);\r
aWE("egrep",14);\r
-aWE("eith",24,18,19);\r
-aWE("electrical",9);\r
-aWE("electronic",9);\r
-aWE("element",9,23);\r
-aWE("empty",5,14);\r
+aWE("eith",24,25,18,19);\r
+aWE("electrical",10);\r
+aWE("electronic",10);\r
+aWE("element",10,23,24);\r
+aWE("empty",6,14);\r
aWE("enabl",18,20);\r
-aWE("encourag",1);\r
-aWE("end",1,14,25);\r
-aWE("enforc",1);\r
-aWE("engin",1);\r
+aWE("encourag",3);\r
+aWE("end",3,14,24,18,26);\r
+aWE("enforc",3);\r
+aWE("engin",3);\r
aWE("enough",14);\r
-aWE("ensur",1,9);\r
-aWE("ent",7,14,15,17);\r
+aWE("ensur",3,10);\r
+aWE("ent",8,14,15,17);\r
aWE("enter",14);\r
aWE("entity",23);\r
aWE("entry",18,21);\r
aWE("env_for_launch",14);\r
aWE("env_product",14);\r
aWE("env_vtk",14);\r
-aWE("environment",1,5,8,14,9,10,15);\r
-aWE("equal",14);\r
-aWE("equipment",9);\r
-aWE("error",14);\r
-aWE("etc",1,4,14,10,11,16);\r
+aWE("environment",3,6,9,14,10,2,15);\r
+aWE("equal",3,14);\r
+aWE("equipment",10);\r
+aWE("error",0,14);\r
+aWE("etc",3,14,2,11,24,16);\r
aWE("ev",22);\r
-aWE("even",1,16);\r
-aWE("every",9,20);\r
+aWE("even",3,16);\r
+aWE("every",10,20);\r
aWE("everyth",14);\r
-aWE("evolution",9);\r
-aWE("evolv",1);\r
+aWE("evolution",10);\r
+aWE("evolv",3);\r
aWE("ex",15);\r
-aWE("exact",14);\r
+aWE("exact",14,24);\r
aWE("examl",14);\r
-aWE("exampl",5,14,9,16,17,19);\r
-aWE("exception",10);\r
-aWE("exchang",1);\r
-aWE("execution",9,11);\r
-aWE("exist",1,14,11,13,17,25,19);\r
+aWE("exampl",6,14,10,16,17,19);\r
+aWE("exceed",24);\r
+aWE("exception",2);\r
+aWE("exchang",3);\r
+aWE("execution",10,11);\r
+aWE("exist",3,14,11,13,17,26,19);\r
aWE("existenc",14);\r
aWE("expand",12);\r
-aWE("expandability",1);\r
-aWE("expectation",9);\r
-aWE("exploit",1);\r
-aWE("explor",2);\r
-aWE("export",9,27);\r
-aWE("expos",1);\r
-aWE("extend",18);\r
+aWE("expandability",3);\r
+aWE("expectation",10);\r
+aWE("expert",0);\r
+aWE("exploit",3);\r
+aWE("explor",4);\r
+aWE("export",10,23);\r
+aWE("expos",3);\r
+aWE("extend",25);\r
aWE("extension",17);\r
-aWE("exterior",27);\r
aWE("external",18);\r
aWE("extract",14);\r
-aWE("extreme",9);\r
+aWE("extreme",10);\r
aWE("f",14);\r
aWE("fac",23,24,18);\r
-aWE("facilitat",1,11);\r
+aWE("facilitat",3,11);\r
aWE("fact",14,16);\r
aWE("factory",19);\r
aWE("fail",14);\r
aWE("fals",14);\r
-aWE("fast",27);\r
-aWE("featur",2,6,14);\r
-aWE("field",7,14,9,23,24,18);\r
+aWE("famili",24);\r
+aWE("featur",4,7,14,24);\r
+aWE("field",8,14,10,23,24,25);\r
aWE("fig",14);\r
-aWE("figur",3,14);\r
-aWE("fil",3,7,14,13,24,15,16,17,18,25,19);\r
+aWE("figur",1,14);\r
+aWE("fil",5,0,8,14,11,13,24,15,16,17,18,26,19);\r
aWE("fill",23);\r
aWE("find",14,19,20);\r
aWE("find_in_path",14);\r
-aWE("fine",1);\r
-aWE("finish",14,12);\r
-aWE("finit",9);\r
-aWE("first",14,21);\r
-aWE("fit",27);\r
-aWE("fiv",11);\r
+aWE("fine",3);\r
+aWE("finish",14,12,24);\r
+aWE("finit",10);\r
+aWE("first",0,14,24,18,21);\r
+aWE("fit",18);\r
aWE("flag",14);\r
-aWE("flexibility",1);\r
-aWE("flexibl",14,9,10);\r
+aWE("flexibility",3,0);\r
+aWE("flexibl",14,10,2);\r
+aWE("focal",24);\r
aWE("focu",12);\r
-aWE("fold",14,21);\r
-aWE("follow",1,0,7,8,14,12,13,15,16,17,18,19,20,22,27);\r
-aWE("font",23,24,18);\r
+aWE("fold",14,17,21);\r
+aWE("follow",3,0,8,9,14,12,13,15,16,17,18,19,20,22);\r
+aWE("font",23,24,25,18);\r
aWE("forget",19);\r
-aWE("format",2,9,13,18,27);\r
-aWE("four",10,27);\r
-aWE("fram",14);\r
-aWE("framework",10,21);\r
-aWE("fre",9);\r
-aWE("friend",9);\r
-aWE("front",27);\r
-aWE("full",23,24,20,27);\r
-aWE("function",14,9,11,16,17,27);\r
+aWE("format",4,10,13,18);\r
+aWE("forth",24);\r
+aWE("fp",24);\r
+aWE("fram",14,24);\r
+aWE("framework",2,21);\r
+aWE("fre",10,24);\r
+aWE("friend",10);\r
+aWE("ful",24);\r
+aWE("fulfill",0);\r
+aWE("full",24,20);\r
+aWE("function",0,14,10,11,16,17);\r
aWE("function_nam",14);\r
aWE("functional",16);\r
-aWE("functionality",1,2,6,8,23,16,19,27);\r
-aWE("functionnaliti",9);\r
-aWE("fundamental",1);\r
+aWE("functionaliti",10);\r
+aWE("functionality",3,4,7,9,16,19);\r
+aWE("fundamental",3);\r
aWE("furth",14);\r
aWE("g",14,15);\r
+aWE("gap",23);\r
+aWE("gaus",2,24);\r
aWE("gcc",14);\r
-aWE("general",8,14,23,16,18);\r
-aWE("generat",14,11,19);\r
-aWE("generator",9,10,19);\r
-aWE("generic",9,11);\r
-aWE("geom",1,4,6,0,14,11,27);\r
-aWE("geometrical",9,11,27);\r
-aWE("geometry",0);\r
-aWE("get",2,7,8,14,9,21);\r
-aWE("giv",7,14,16,18,27);\r
-aWE("given",14,11);\r
-aWE("gl",27);\r
+aWE("general",9,14,23,16,18);\r
+aWE("generat",0,14,11,19);\r
+aWE("generator",10,2,19);\r
+aWE("generic",10,11);\r
+aWE("geom",14,11);\r
+aWE("geometrical",1,10,11,24);\r
+aWE("geometry",3,1,11,24,16);\r
+aWE("get",4,9,14,10,21);\r
+aWE("giv",0,8,14,16,25);\r
+aWE("given",14,11,24);\r
+aWE("gl",24);\r
+aWE("global",24);\r
aWE("glossary",20);\r
aWE("go",14,12);\r
-aWE("graph",5,11,18,27);\r
-aWE("graphical",10,11);\r
+aWE("graph",6,11,18);\r
+aWE("graphic",24);\r
+aWE("graphical",0,2,11);\r
aWE("graphviz",14);\r
-aWE("great",27);\r
-aWE("greek",18);\r
+aWE("great",0,24);\r
+aWE("greek",25);\r
aWE("grep",14);\r
-aWE("group",18);\r
-aWE("gui",1,3,14,10,11,15,18,25);\r
+aWE("group",23,24,25);\r
+aWE("gui",3,5,0,14,2,11,15,17,18,26);\r
aWE("h",14,15);\r
-aWE("hand",1,12,20);\r
-aWE("handl",14,9,10);\r
+aWE("half",24);\r
+aWE("hand",3,12,20);\r
+aWE("handl",14,10,2);\r
aWE("happydoc",14);\r
aWE("hard",14,15);\r
aWE("hasn",17);\r
aWE("hdf",14,13,17,18);\r
aWE("hdf5",14);\r
aWE("hdf5hom",14);\r
-aWE("heal",9);\r
+aWE("heal",10);\r
+aWE("height",23,24);\r
aWE("hello",22);\r
-aWE("help",1,2,14,9,12,13,15,18,20,21,22,27);\r
+aWE("help",3,4,14,10,12,13,15,18,20,21);\r
aWE("helpful",14);\r
-aWE("her",14,23,24,18,26);\r
-aWE("heterogeneou",9);\r
-aWE("hid",4,16,18,21,27);\r
-aWE("high",14,9);\r
-aWE("highlight",14,21);\r
+aWE("her",14,23,24,18);\r
+aWE("heterogeneou",10);\r
+aWE("hid",24,16,18,21);\r
+aWE("high",14,10);\r
+aWE("highlight",14,23,21);\r
aWE("hint",14);\r
aWE("history",22);\r
aWE("hom",15);\r
-aWE("horizontal",5,23,24,18,27);\r
-aWE("host",1);\r
+aWE("horizontal",6,23,24,18);\r
+aWE("host",3);\r
aWE("hotspot",12);\r
-aWE("how",1,14);\r
+aWE("how",3,14);\r
aWE("hpp",14);\r
-aWE("html",2,20);\r
+aWE("html",4,20);\r
aWE("hxx",14);\r
-aWE("i",14,10,16,17);\r
-aWE("iapp",1);\r
-aWE("icon",3,6,16,19);\r
+aWE("i",14,2,16,17);\r
+aWE("icon",5,7,16,19);\r
aWE("idea",14);\r
aWE("identification",21,22);\r
aWE("identify",14);\r
-aWE("idl",1,19);\r
+aWE("idl",3,19);\r
aWE("ie",18);\r
-aWE("if",3,5,6,14,23,13,24,15,16,17,18,19,21,27);\r
-aWE("ig",9);\r
+aWE("if",5,6,0,7,14,23,13,24,15,16,17,18,19,21);\r
+aWE("ig",10);\r
aWE("ignor",14);\r
-aWE("imag",9,27);\r
+aWE("imag",10,24);\r
aWE("immediate",12);\r
-aWE("implement",1,14);\r
-aWE("implementation",1,19);\r
+aWE("implement",3,14);\r
+aWE("implementation",3,19);\r
aWE("impli",14);\r
-aWE("import",14,9,10,11,24,16);\r
+aWE("import",0,14,10,2,11,24,16);\r
aWE("important",14);\r
aWE("impos",24);\r
aWE("impossibl",14);\r
-aWE("improv",10);\r
+aWE("improv",2);\r
aWE("inc",14);\r
-aWE("includ",14,12,20);\r
-aWE("inclusiv",1);\r
-aWE("increas",9);\r
-aWE("incremental",1);\r
-aWE("independenc",1);\r
-aWE("independent",1);\r
-aWE("index",21);\r
+aWE("includ",14,12,24,20);\r
+aWE("inclusiv",3);\r
+aWE("increas",0,10,24);\r
+aWE("increment",1,24);\r
+aWE("incremental",3);\r
+aWE("independenc",3);\r
+aWE("independent",3);\r
+aWE("index",23,21);\r
aWE("indicat",16,17);\r
-aWE("information",1,0,7,14,12,17,20,22,27);\r
-aWE("initial",8,27);\r
-aWE("input",9,19);\r
+aWE("information",3,8,14,12,24,17,20,22);\r
+aWE("initial",9);\r
+aWE("input",10,19);\r
aWE("insert",14);\r
-aWE("insid",1,5,12,19);\r
-aWE("inspect",14);\r
+aWE("insid",3,6,12,24,19);\r
+aWE("inspect",14,24);\r
aWE("instal",14,19);\r
aWE("instalation",14);\r
aWE("install",14,15);\r
aWE("installdiskspac",14);\r
aWE("installwizard_root_directory",14);\r
aWE("installworkxxxxx",14);\r
-aWE("instanc",3);\r
+aWE("instanc",5);\r
aWE("instead",14);\r
-aWE("instrument",27);\r
-aWE("instrumental",1);\r
+aWE("instrumental",3);\r
aWE("integ",14);\r
aWE("integer",23);\r
-aWE("integrat",1,9,10,11);\r
-aWE("integration",1,9,10,19);\r
+aWE("integrat",3,10,2,11);\r
+aWE("integration",3,10,2,19);\r
aWE("intend",14);\r
-aWE("interaction",10);\r
-aWE("interfac",1,9,10,11,16,19);\r
-aWE("internal",1,14);\r
-aWE("internet",2);\r
-aWE("interoperability",9);\r
+aWE("interaction",2);\r
+aWE("interfac",3,0,10,2,11,16,19);\r
+aWE("interior",23);\r
+aWE("internal",3,14);\r
+aWE("internet",4);\r
+aWE("interoperability",10);\r
aWE("interoperabl",21);\r
-aWE("interpret",10,16);\r
-aWE("interval",22);\r
+aWE("interpret",2,16);\r
+aWE("interval",24,22);\r
aWE("introduc",14);\r
-aWE("introduction",14,9,10,11);\r
+aWE("introduction",14,10,2,11);\r
aWE("invalid",17);\r
aWE("invok",14,16);\r
aWE("ior",18,21);\r
aWE("isolin",18);\r
aWE("ispython",14);\r
-aWE("item",7,9,10);\r
+aWE("item",8,10,2);\r
+aWE("iteration",24);\r
aWE("itself",14);\r
-aWE("java",2);\r
-aWE("jpeg",27);\r
-aWE("jpg",27);\r
+aWE("java",4);\r
aWE("just",14,18);\r
aWE("k",15);\r
aWE("kbyt",14);\r
aWE("kernel",14,11,15);\r
-aWE("key",14);\r
+aWE("key",14,24);\r
+aWE("keyboard",24);\r
aWE("kill",15);\r
aWE("killall",15);\r
-aWE("kind",7,12);\r
+aWE("kind",8,12);\r
aWE("know",19);\r
+aWE("knowledg",0);\r
aWE("l",15);\r
aWE("label",23,24);\r
-aWE("languag",1);\r
+aWE("languag",3);\r
aWE("larg",14);\r
-aWE("last",17,22);\r
-aWE("latin",18);\r
-aWE("launch",2,14,13,15,25,19,22);\r
-aWE("lay",3);\r
-aWE("layout",17);\r
+aWE("largest",24);\r
+aWE("last",18,22);\r
+aWE("latest",24);\r
+aWE("latin",25);\r
+aWE("launch",4,0,14,13,15,26,19,22);\r
+aWE("lay",5);\r
+aWE("layout",0,17);\r
aWE("ld_library_path",14);\r
aWE("lead",17);\r
-aWE("learn",14,9);\r
-aWE("left",14,18,20);\r
-aWE("legend",18,27);\r
-aWE("level",1,23,18);\r
+aWE("learn",14,10);\r
+aWE("left",14,23,24,25,18,20);\r
+aWE("legend",18);\r
+aWE("length",24);\r
+aWE("les",24);\r
+aWE("level",3,23,24,18);\r
aWE("lib",14);\r
aWE("libcosnotify4",14);\r
aWE("libhdf5",14);\r
aWE("libomniorb4",14);\r
aWE("libqwt",14);\r
aWE("librari",14);\r
-aWE("library",14,10);\r
+aWE("library",14,2);\r
aWE("libstdplugin",14);\r
aWE("libtcl8",14);\r
aWE("libtk8",14);\r
aWE("libvtkcommon",14);\r
aWE("licens",14);\r
-aWE("lik",1,5,4,14,12,16,17,19,21);\r
+aWE("lik",3,6,14,12,24,16,17,19,21);\r
aWE("like",14);\r
aWE("limit",24);\r
-aWE("lin",2,14,23,15,18);\r
+aWE("limitation",24);\r
+aWE("lin",4,1,14,23,24,15,18);\r
aWE("linear",18);\r
-aWE("link",1,0,9,12);\r
-aWE("linux",2,14);\r
-aWE("list",7,14,12,15,18,20,22);\r
+aWE("link",3,10,12);\r
+aWE("linux",4,14);\r
+aWE("list",8,14,12,24,15,18,20,22);\r
aWE("list_of_prerequisit",14);\r
-aWE("ll",18,27);\r
-aWE("load",1,10,13,24,15,16,18,25,21);\r
-aWE("locat",1,4,15,18,20,21);\r
-aWE("location",19);\r
-aWE("lock",7);\r
+aWE("ll",18);\r
+aWE("load",3,0,2,13,24,15,16,18,26,21);\r
+aWE("local",24);\r
+aWE("locat",3,24,15,16,18,20,21);\r
+aWE("location",0,19);\r
+aWE("lock",8,24);\r
aWE("log",15);\r
-aWE("logarithmic",24,18,27);\r
-aWE("long",1);\r
+aWE("logarithmic",24,18);\r
+aWE("long",3);\r
aWE("look",14,19,20);\r
+aWE("lookout",23,24);\r
aWE("lost",17);\r
aWE("lot",16);\r
-aWE("low",14,18,20);\r
+aWE("low",14,24,25,20);\r
aWE("m",15);\r
-aWE("machin",1,17,22);\r
-aWE("macintosh",2);\r
-aWE("macro",1);\r
-aWE("main",3,4,6,7,14,9,13,16,17,18,19,22);\r
+aWE("machin",3,17,22);\r
+aWE("macintosh",4);\r
+aWE("macro",3);\r
+aWE("magnification",24);\r
+aWE("main",5,0,7,8,14,10,13,24,16,17,18,19,22);\r
aWE("major",14);\r
-aWE("mak",3,14,9,23,27);\r
+aWE("mak",5,14,10,23);\r
aWE("make_dir",14);\r
aWE("make_env",14);\r
-aWE("manag",9,18);\r
-aWE("management",9,10,16);\r
+aWE("manag",10,18);\r
+aWE("management",10,2,16);\r
aWE("mandrak",14);\r
aWE("mandrake10",14);\r
-aWE("manual",2,14,18);\r
-aWE("map",1);\r
-aWE("mark",4,14,18);\r
+aWE("manipulat",24);\r
+aWE("manipulator",24);\r
+aWE("manual",4,0,14,18);\r
+aWE("map",3);\r
+aWE("mark",14,18);\r
aWE("marker",18);\r
-aWE("market",9);\r
-aWE("massive",1);\r
+aWE("market",10);\r
+aWE("massive",3);\r
aWE("mast",14);\r
aWE("match",20);\r
+aWE("matrix",24);\r
aWE("max",24);\r
-aWE("maximiz",3,16);\r
-aWE("maximum",27);\r
-aWE("mean",5,8,14,16,17);\r
-aWE("mechanism",10);\r
+aWE("maximiz",5);\r
+aWE("maximum",24);\r
+aWE("mean",6,9,14,24,16,17);\r
+aWE("mechanism",0,2);\r
aWE("med2hom",14);\r
-aWE("meet",9);\r
-aWE("memoriz",27);\r
+aWE("meet",10);\r
+aWE("memory",24);\r
aWE("mention",14);\r
-aWE("menu",1,3,4,6,7,10,23,12,13,24,16,17,18,19,21,22,27);\r
+aWE("menu",3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22);\r
aWE("menubar",16);\r
-aWE("mesh",0,9,11,23,27);\r
-aWE("messag",7,14,10,15,22);\r
+aWE("mesh",3,10,11,23,24,16);\r
+aWE("messag",8,14,2,15);\r
aWE("middl",14);\r
aWE("min",24);\r
-aWE("minimiz",3,16);\r
+aWE("minimiz",5);\r
+aWE("minimum",24);\r
aWE("minor",14);\r
aWE("mis",14);\r
aWE("mistak",16);\r
aWE("mix",16);\r
-aWE("mod",1,0,14,23,24,15);\r
-aWE("model",1,9,11,23,27);\r
-aWE("modern",9);\r
-aWE("modification",1,7);\r
-aWE("modify",14,9);\r
-aWE("modul",1,2,6,0,14,10,11,23,24,15,16,17,18,25,19,27);\r
+aWE("mod",3,0,1,14,23,24,15);\r
+aWE("model",3,10,11,23);\r
+aWE("modern",10);\r
+aWE("modification",3,0,8);\r
+aWE("modify",0,14,10);\r
+aWE("modul",3,4,7,1,14,2,11,23,24,15,16,17,18,26,19);\r
aWE("module_root_dir",14);\r
aWE("module_src_dir",14);\r
aWE("module1",15);\r
aWE("module2",15);\r
aWE("modulu",24);\r
-aWE("moment",14);\r
-aWE("mous",4,27);\r
-aWE("mov",5);\r
+aWE("moment",14,24);\r
+aWE("momentari",24);\r
+aWE("mous",23,24,16);\r
+aWE("mov",6);\r
+aWE("movement",24);\r
aWE("mozilla",18);\r
aWE("msg2qm",14);\r
aWE("msg2qm_root",14);\r
aWE("much",14);\r
-aWE("multi",5,8,9,10,16,19);\r
+aWE("multi",6,9,10,2,16,19);\r
aWE("multifil",17,18);\r
aWE("multipl",17);\r
-aWE("multiti",1);\r
-aWE("must",1,9,11);\r
-aWE("n",14);\r
-aWE("nam",1,3,7,14,17,19,21,22);\r
+aWE("multipli",24);\r
+aWE("multiti",3);\r
+aWE("must",3,10,11);\r
+aWE("n",14,24);\r
+aWE("nam",3,5,0,8,14,17,19,21,22);\r
aWE("nativ",14);\r
-aWE("natur",6);\r
-aWE("natural",1);\r
+aWE("natur",7);\r
+aWE("natural",3);\r
aWE("navigat",14,12);\r
-aWE("navigation",2,12);\r
-aWE("navigator",2);\r
-aWE("ne",5,14,12,18);\r
-aWE("necessary",14,23,15,16,17,21);\r
+aWE("navigation",4,12,24);\r
+aWE("navigator",4);\r
+aWE("ne",6,14,12,25,18);\r
+aWE("necessary",0,14,23,15,16,17,21);\r
+aWE("need",24);\r
+aWE("negativ",24);\r
aWE("netgen",14);\r
aWE("netgenroot",14);\r
-aWE("netscap",2,18);\r
-aWE("new",1,3,7,8,14,9,17,25,19,27);\r
-aWE("next",7,14,15,18,25,19);\r
+aWE("netscap",4,18);\r
+aWE("new",3,5,8,9,14,10,17,18,26,19);\r
+aWE("next",8,14,15,26,19);\r
aWE("nf",14);\r
aWE("nod",23,19);\r
-aWE("normal",5);\r
-aWE("not",14,18);\r
-aWE("noticeab",1);\r
+aWE("normal",6);\r
+aWE("not",14);\r
+aWE("noticeab",3);\r
aWE("notifd",14);\r
-aWE("notification",25);\r
-aWE("notion",8);\r
+aWE("notification",26);\r
+aWE("notify",24);\r
+aWE("notion",9);\r
aWE("now",16);\r
-aWE("null",14);\r
-aWE("numb",14,23,24,18,22);\r
-aWE("number",14,23);\r
-aWE("numeric",14,9,11,18);\r
-aWE("numerical",1,8,9,27);\r
+aWE("nth",24);\r
+aWE("null",14,24);\r
+aWE("numb",14,11,23,24,18,22);\r
+aWE("number",14,23,24);\r
+aWE("numeric",14,10,11,25);\r
+aWE("numerical",3,9,10);\r
aWE("numerou",15);\r
-aWE("object",1,3,6,10,23,13,16,18,25,21,27);\r
-aWE("objectiv",1);\r
+aWE("object",3,5,6,0,7,2,23,13,24,16,17,18,26,21);\r
+aWE("objectiv",3);\r
aWE("obligatory",14);\r
-aWE("obtain",27);\r
-aWE("occ",3,5,10,18,27);\r
+aWE("occ",5,6,2,18);\r
aWE("occ_version_major",14);\r
aWE("occ_version_minor",14);\r
aWE("occupi",14);\r
aWE("off",14);\r
-aWE("offer",1);\r
-aWE("often",9);\r
-aWE("ok",14,13,25);\r
-aWE("omg",1);\r
+aWE("offer",3);\r
+aWE("often",10);\r
+aWE("ok",14,13,26);\r
+aWE("omg",3);\r
aWE("omit",14);\r
aWE("omni",14);\r
aWE("omninotify",14);\r
aWE("omniorb",14);\r
aWE("omniorbdir",14);\r
aWE("omniorbpy",14);\r
-aWE("on",1,5,6,14,10,12,13,24,15,16,17,18,19,21,27);\r
+aWE("on",3,6,0,7,14,2,12,13,24,15,16,17,25,18,19,21);\r
+aWE("onc",24);\r
aWE("onlin",20);\r
-aWE("open",5,8,14,9,11,12,13,15,17,19,20,27);\r
+aWE("opaqu",24);\r
+aWE("open",6,0,9,14,10,11,12,13,24,15,17,19,20);\r
aWE("opencascad",14);\r
-aWE("operat",27);\r
-aWE("operation",6,8,17,27);\r
-aWE("optimiz",14,9);\r
+aWE("operat",0);\r
+aWE("operation",7,9,23,24,17);\r
+aWE("optimiz",14,10,24);\r
aWE("optimization",11);\r
-aWE("option",6,7,14,13,24,15,16,17,18,21);\r
-aWE("optional",14,9,11);\r
+aWE("option",7,8,14,13,24,15,16,17,18,21);\r
+aWE("optional",14,10,11);\r
aWE("ord",14);\r
-aWE("org",1);\r
+aWE("ordinat",23,24);\r
+aWE("org",3);\r
aWE("orientation",23,24);\r
aWE("origin",23,24);\r
+aWE("original",0);\r
aWE("originality",11);\r
aWE("os",14);\r
aWE("os_version",14);\r
-aWE("other",2,25);\r
-aWE("otherwis",14,17);\r
-aWE("out",9);\r
+aWE("other",4,0);\r
+aWE("otherwis",0,14,24,17);\r
+aWE("out",10,23,25);\r
aWE("outlin",23);\r
-aWE("output",14,10);\r
-aWE("outsid",16);\r
+aWE("output",14,2);\r
+aWE("outsid",24,16);\r
aWE("overload",14);\r
-aWE("own",14,10,11,16);\r
+aWE("own",14,2,11,16);\r
aWE("p",15);\r
aWE("packag",14,15,19);\r
-aWE("pag",14,18,20);\r
-aWE("pan",12,20,27);\r
-aWE("parallel",1);\r
+aWE("pag",14,20);\r
+aWE("pan",12,17,20);\r
+aWE("parallel",3);\r
aWE("paramet",14,19);\r
-aWE("parameter",1,0,14,23,24,18,19);\r
-aWE("part",5,14,16,27);\r
-aWE("particular",9,17);\r
+aWE("parameter",3,14,24,25,18,19);\r
+aWE("parent",24);\r
+aWE("part",6,14,16);\r
+aWE("particular",10,17);\r
aWE("party",11);\r
aWE("pas",14);\r
-aWE("past",6,16);\r
-aWE("path",14);\r
-aWE("pc",1);\r
-aWE("perform",14,9);\r
-aWE("performanc",1,8,9);\r
+aWE("past",7,16);\r
+aWE("patent",24);\r
+aWE("path",14,24);\r
+aWE("pc",3);\r
+aWE("per",24);\r
+aWE("perform",14,10,23,24);\r
+aWE("performanc",3,9,10);\r
aWE("permission",14);\r
-aWE("phenomena",1);\r
+aWE("phenomena",3);\r
aWE("phras",20);\r
-aWE("physic",9);\r
-aWE("physical",1,9,11);\r
-aWE("pick",14);\r
+aWE("physic",10);\r
+aWE("physical",3,10,11);\r
+aWE("pick",14,24);\r
aWE("pickup",14);\r
aWE("pickup_env",14);\r
aWE("pickup_env_flag",14);\r
aWE("pickupenv",14);\r
-aWE("pictur",7);\r
+aWE("pictur",8);\r
aWE("pid",22);\r
-aWE("piec",1);\r
-aWE("plac",5,4,14,10,16,27);\r
-aWE("platform",1,2,5,4,8,14,9,10,11,15,16,17,19,22,27);\r
-aWE("pleas",14,18);\r
-aWE("plot",5,10,27);\r
-aWE("plot2d",3,18);\r
-aWE("plug",10);\r
-aWE("png",27);\r
+aWE("piec",3);\r
+aWE("pixel",24);\r
+aWE("plac",6,14,2,16);\r
+aWE("placement",23,24);\r
+aWE("platform",3,4,6,0,9,14,10,2,11,15,16,17,19,22);\r
+aWE("play",0);\r
+aWE("pleas",14);\r
+aWE("plot",6,2);\r
+aWE("plot2d",5,18);\r
+aWE("plug",2);\r
aWE("po",14);\r
-aWE("point",1,14,23,18,27);\r
+aWE("point",3,14,2,23,24,18);\r
aWE("pop",12,13,16,21);\r
aWE("popup",12);\r
aWE("port",15);\r
aWE("portkill",15);\r
-aWE("position",16,17,18,27);\r
+aWE("position",24,16,17,18);\r
aWE("positive",16);\r
-aWE("possibiliti",27);\r
-aWE("possibility",1,14,15,18,19,27);\r
-aWE("possibl",1,14,23,16,17,21,27);\r
-aWE("post",9,11,24,27);\r
-aWE("powerful",10);\r
-aWE("pr",9,11);\r
+aWE("possibility",3,0,14,15,25,19);\r
+aWE("possibl",3,0,14,16,17,25,21);\r
+aWE("post",3,10,11,24,16,17);\r
+aWE("powerful",2);\r
+aWE("pr",10,11);\r
aWE("precision",23);\r
aWE("precompil",14);\r
-aWE("predefin",1,14,18);\r
+aWE("predefin",3,14,25);\r
aWE("preferabl",15);\r
-aWE("preferenc",0,23,24,18,25,26,21,27);\r
+aWE("preferenc",1,23,24,25,18,26,21);\r
aWE("prefix",14);\r
aWE("preinstal",14);\r
aWE("preliminary",14);\r
aWE("prerequisit",14);\r
-aWE("pres",14,18);\r
+aWE("pres",14,24,18);\r
+aWE("preselect",23);\r
aWE("preselection",23);\r
-aWE("present",23);\r
-aWE("presentation",3,23,16,18);\r
+aWE("present",23,24);\r
+aWE("presentation",5,23,24,16,18);\r
+aWE("prevent",24);\r
+aWE("preview",25);\r
aWE("previou",14,13);\r
aWE("previous",14,11,13,17);\r
+aWE("primitiv",24);\r
aWE("print",14,15);\r
aWE("print_env",14);\r
-aWE("priority",9);\r
-aWE("pro",24,27);\r
-aWE("probab",3);\r
-aWE("problem",14,9);\r
-aWE("proce",8,14);\r
-aWE("procedur",14,15,18);\r
-aWE("proces",1,14,9,10,11,22);\r
-aWE("processor",1,9);\r
-aWE("product",14,9,15);\r
+aWE("priority",10);\r
+aWE("pro",3,11,24,16,17);\r
+aWE("probab",5);\r
+aWE("problem",0,14,10);\r
+aWE("proce",9,14);\r
+aWE("procedur",14,15);\r
+aWE("proces",3,0,14,10,2,11,24,22);\r
+aWE("processor",3,10);\r
+aWE("produc",24);\r
+aWE("product",14,10,15);\r
aWE("product_context",14);\r
aWE("product_description",14);\r
aWE("product_nam",14);\r
aWE("product_script_nam",14);\r
aWE("product_version",14);\r
-aWE("productivity",1);\r
+aWE("productivity",3,0);\r
aWE("products_directory",14);\r
aWE("profil",15);\r
-aWE("program",1,14);\r
-aWE("programmatic",9);\r
-aWE("progres",14);\r
-aWE("prompt",14,15,27);\r
+aWE("program",3,14);\r
+aWE("programmatic",10);\r
+aWE("progres",14,24);\r
+aWE("progressiv",24);\r
+aWE("prompt",14,15);\r
+aWE("pron",0);\r
aWE("prop",14);\r
aWE("proper",14);\r
-aWE("properti",7,9,11,18);\r
-aWE("propos",14,10);\r
-aWE("provid",1,6,14,9,10,11,24,15,19,20,22,27);\r
-aWE("pur",1);\r
-aWE("purpos",8,21);\r
+aWE("properti",8,10,11,24,18);\r
+aWE("propos",14,2);\r
+aWE("provid",3,7,14,10,2,11,24,15,25,19,20,22);\r
+aWE("publish",0,17);\r
+aWE("pur",3);\r
+aWE("purpos",9,21);\r
aWE("py",15);\r
aWE("pyqt",14);\r
aWE("pyqtdir",14);\r
-aWE("python",1,14,9,10,15,16,17,18);\r
+aWE("pyramid",24);\r
+aWE("python",3,6,0,14,10,2,15,16,17,18);\r
aWE("pythonhom",14);\r
aWE("qglobal",14);\r
aWE("qm",14);\r
aWE("qt",14);\r
aWE("qt_version_str",14);\r
aWE("qtdir",14);\r
-aWE("quality",9,23);\r
-aWE("quantiti",9);\r
+aWE("quality",10,23,24);\r
+aWE("quantiti",10);\r
aWE("question",14);\r
aWE("quick",14,18,21);\r
-aWE("quit",14,17);\r
+aWE("quit",0,14,17,26);\r
aWE("quot",14);\r
aWE("qwt",14);\r
aWE("qwthom",14);\r
aWE("radio",14);\r
+aWE("rainbow",24);\r
aWE("rang",11,24);\r
-aWE("rapid",1);\r
-aWE("re",12);\r
-aWE("reactivity",9);\r
-aWE("read",14,9,12);\r
+aWE("rapid",3);\r
+aWE("rat",24);\r
+aWE("rath",0);\r
+aWE("ratio",24);\r
+aWE("re",0,12);\r
+aWE("reactivity",10);\r
+aWE("read",14,10,12);\r
aWE("readm",14);\r
-aWE("realiz",8);\r
-aWE("receiv",25);\r
-aWE("recommend",14);\r
-aWE("record",7);\r
+aWE("real",24);\r
+aWE("realiz",9);\r
+aWE("reassign",24);\r
+aWE("receiv",26);\r
+aWE("recommend",14,24);\r
+aWE("record",8,24);\r
aWE("red",21);\r
aWE("redirection",15);\r
-aWE("redo",6);\r
-aWE("reduc",9);\r
-aWE("ref",18,25);\r
+aWE("redo",7);\r
+aWE("reduc",10);\r
+aWE("ref",18,26);\r
aWE("refer",14);\r
-aWE("referenc",2,12,18,21);\r
-aWE("refin",9);\r
+aWE("referenc",4,12,24,18,21);\r
+aWE("refin",10,24);\r
aWE("refresh",22);\r
aWE("refreshment",22);\r
-aWE("registry",10,22);\r
+aWE("regim",24);\r
+aWE("registry",2,22);\r
aWE("reinstal",14);\r
aWE("reinstall",14);\r
aWE("reinstallation",14);\r
aWE("relat",12,20);\r
-aWE("relativ",14);\r
+aWE("relativ",14,23,18);\r
aWE("releas",14);\r
aWE("relevant",12);\r
-aWE("reliability",9);\r
+aWE("reliability",10);\r
aWE("reload",17);\r
-aWE("relocat",4);\r
-aWE("remain",1);\r
-aWE("remot",3,27);\r
+aWE("relocat",16);\r
+aWE("remain",3);\r
+aWE("remot",5);\r
aWE("remov",14,18);\r
+aWE("renam",17);\r
+aWE("render",24);\r
+aWE("reopen",18);\r
aWE("repeat",24);\r
-aWE("represent",1,8,9,11,20,27);\r
-aWE("representation",5,11,23,24,18,27);\r
-aWE("requir",14,9,13,17);\r
-aWE("requirement",1,9,15);\r
-aWE("reset",14,27);\r
-aWE("resiz",16,27);\r
-aWE("resourc",14,10);\r
-aWE("respectiv",25);\r
-aWE("respond",1);\r
+aWE("represent",3,9,10,11,20);\r
+aWE("representation",6,11,24,18);\r
+aWE("representativ",24);\r
+aWE("requir",14,10,13,24,17);\r
+aWE("requirement",3,10,15);\r
+aWE("reset",14);\r
+aWE("resolution",24);\r
+aWE("resolv",0);\r
+aWE("resourc",14,2,24);\r
+aWE("respectiv",24,26);\r
+aWE("respective",24);\r
+aWE("respond",3);\r
aWE("responsibl",14);\r
-aWE("restor",9,25);\r
-aWE("result",5,8,9,17);\r
-aWE("retroactiv",25);\r
-aWE("return",27);\r
-aWE("reus",1);\r
-aWE("reusabl",9);\r
-aWE("reveal",27);\r
-aWE("right",14,12,13,16,17,18,20,21);\r
-aWE("risk",9);\r
-aWE("robustnes",9);\r
-aWE("rol",1);\r
+aWE("rest",18);\r
+aWE("restor",10,17,18,26);\r
+aWE("result",9,10,24);\r
+aWE("retroactiv",26);\r
+aWE("reus",3);\r
+aWE("reusabl",10);\r
+aWE("reversib",0,24);\r
+aWE("right",6,14,12,13,24,16,17,25,18,20,21);\r
+aWE("risk",10);\r
+aWE("robustnes",10);\r
+aWE("rol",3);\r
aWE("root",14);\r
-aWE("rotat",27);\r
-aWE("rotation",27);\r
+aWE("rotat",24);\r
+aWE("rotation",24);\r
aWE("rul",14);\r
-aWE("run",1,14,15,19,22);\r
-aWE("runic",18);\r
+aWE("run",3,14,15,19,22);\r
+aWE("runic",25);\r
aWE("runinstall",14);\r
aWE("runsalom",15,19);\r
aWE("runsalomewithport",19);\r
-aWE("s",1,14,12);\r
-aWE("saf",10);\r
-aWE("salom",1,2,3,5,4,6,8,14,9,10,11,12,13,15,16,17,18,25,19,20,21,22,27);\r
+aWE("s",3,14,12);\r
+aWE("saf",2);\r
+aWE("salom",3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22);\r
aWE("salome_modulecatalog_serv",19);\r
-aWE("sam",5,12,16,17,18,19,22);\r
-aWE("sav",1,14,9,10,16,17,18,25,27);\r
-aWE("scal",1,24,18,27);\r
+aWE("salomed",0);\r
+aWE("sam",6,12,24,16,17,19,22);\r
+aWE("sampl",25);\r
+aWE("sav",3,0,14,10,2,16,17,18,26);\r
+aWE("scal",3,24,18);\r
aWE("scalar",23,24);\r
-aWE("scen",27);\r
-aWE("schem",1,14,9);\r
-aWE("schema",9);\r
-aWE("scientific",1);\r
-aWE("screen",5);\r
-aWE("script",1,14,15,18,19);\r
-aWE("scroll",7);\r
-aWE("se",3,5,0,7,14,13,17,18,19,21,27);\r
-aWE("search",2,14,13,17,20);\r
-aWE("second",14);\r
+aWE("schem",3,14,10);\r
+aWE("schema",10);\r
+aWE("scientific",3);\r
+aWE("screen",6);\r
+aWE("script",3,0,14,15,25,19);\r
+aWE("scroll",8);\r
+aWE("se",6,8,14,13,17,18,19,21);\r
+aWE("search",4,14,13,17,20);\r
+aWE("second",0,14,24);\r
aWE("section",14,16,18);\r
aWE("sectionthi",14);\r
aWE("sed",14);\r
-aWE("select",3,5,0,7,14,23,13,17,18,20,27);\r
+aWE("seen",23);\r
+aWE("select",5,6,0,1,8,14,23,13,24,17,25,18,20);\r
aWE("selectall",16);\r
-aWE("selection",10,23,18);\r
+aWE("selection",2,23,24);\r
aWE("send",14);\r
-aWE("sensitiv",4,16,21);\r
-aWE("separat",1,14,16);\r
-aWE("serv",1,19);\r
-aWE("server",1,15);\r
-aWE("servic",1,14,19);\r
-aWE("session",0,23,13,24,17,18,25,21,22);\r
-aWE("set",2,0,7,14,9,23,24,15,16,17,18,25,21,22);\r
-aWE("setting",0,14,23,24,16,17,18,25,27);\r
-aWE("sever",9);\r
+aWE("sensitiv",16,21);\r
+aWE("separat",3,14,24,16);\r
+aWE("serv",3,19);\r
+aWE("server",3,15);\r
+aWE("servic",3,14,19);\r
+aWE("session",1,23,13,24,17,18,26,21,22);\r
+aWE("set",4,0,1,8,14,10,23,24,15,16,17,18,26,21,22);\r
+aWE("setting",14,24,16,17,18,26);\r
+aWE("sever",10);\r
aWE("sh",14);\r
-aWE("shad",0,23);\r
-aWE("shap",27);\r
-aWE("shell",14,10,11,15);\r
+aWE("shad",1,23,24);\r
+aWE("shap",24);\r
+aWE("shell",14,2,11,15);\r
aWE("short",14,20);\r
-aWE("shot",5);\r
-aWE("should",8,14,17,19);\r
-aWE("show",14,21,27);\r
-aWE("shown",7,14);\r
+aWE("shot",6);\r
+aWE("should",9,14,17,19);\r
+aWE("show",14,21);\r
+aWE("shown",8,14);\r
aWE("shrink",23);\r
-aWE("signal",14,10);\r
+aWE("sid",23,24);\r
+aWE("signal",14,2);\r
aWE("signatur",14);\r
aWE("sigterm",14);\r
-aWE("simp",18);\r
-aWE("simpl",1);\r
+aWE("simpl",3);\r
aWE("simplify",14);\r
-aWE("simulat",1);\r
-aWE("simulation",9,11);\r
-aWE("simultaneous",5,8,14);\r
-aWE("sinc",14,10);\r
+aWE("simulat",3);\r
+aWE("simulation",10,11);\r
+aWE("simultaneous",6,9,14);\r
+aWE("sinc",14,2);\r
aWE("singl",14);\r
aWE("sip",14);\r
aWE("sipdir",14);\r
-aWE("situation",1);\r
-aWE("siz",5,23,24,16,17,18);\r
+aWE("situation",3);\r
+aWE("siz",6,23,24,16,17,25,18);\r
aWE("skip",14);\r
aWE("slight",14);\r
-aWE("small",17);\r
-aWE("smesh",1,4,27);\r
+aWE("slow",24);\r
+aWE("smallest",24);\r
aWE("smooth",18);\r
-aWE("so",1,6,14,15,25,20,21);\r
-aWE("softwar",1,9,11);\r
-aWE("solution",9);\r
-aWE("solv",9);\r
-aWE("solver",9,11);\r
+aWE("smoothnes",24);\r
+aWE("so",3,7,14,24,15,26,20,21);\r
+aWE("softwar",3,10,11);\r
+aWE("solution",10);\r
+aWE("solv",10);\r
+aWE("solver",10,11);\r
aWE("someth",14);\r
aWE("sort",18,21);\r
aWE("sort_path",14);\r
-aWE("sourc",14,9,11,15);\r
-aWE("spac",14);\r
-aWE("special",1,14,13,15,16,17,25);\r
-aWE("specializ",27);\r
-aWE("specifi",1);\r
-aWE("specific",1,4,9,15,16,25,20);\r
+aWE("sourc",14,10,11,15);\r
+aWE("spac",14,23,24);\r
+aWE("spacemous",24);\r
+aWE("spe",24);\r
+aWE("special",3,14,13,24,15,16,17,18,26);\r
+aWE("specifi",3,24);\r
+aWE("specific",3,0,10,15,16,26,20);\r
aWE("specification",11);\r
-aWE("specify",17,18,19,27);\r
-aWE("spin",0);\r
+aWE("specify",17,18,19);\r
+aWE("spher",24);\r
+aWE("spin",1);\r
aWE("splin",18);\r
-aWE("split",5);\r
-aWE("standalon",10);\r
-aWE("standard",1,3,14,10,13,16,17,19);\r
+aWE("split",6);\r
+aWE("sprit",24);\r
+aWE("stamp",24);\r
+aWE("standalon",2);\r
+aWE("standard",3,5,14,2,13,24,16,17,19);\r
aWE("standard_version",14);\r
-aWE("start",1,5,8,14,16,18,19,22);\r
-aWE("stat",14);\r
-aWE("station",1);\r
+aWE("start",6,9,14,16,18,19,22);\r
+aWE("stat",0,14,17,18);\r
+aWE("station",3);\r
aWE("statu",14);\r
-aWE("step",0,14,9,24);\r
+aWE("step",1,14,10,24);\r
aWE("still",14);\r
-aWE("stor",1,14,13,17,19);\r
+aWE("stor",3,0,14,13,17,18,19);\r
aWE("str",14);\r
aWE("strict",14);\r
aWE("strong",14);\r
-aWE("structur",1,14,9,10,13,21);\r
-aWE("structural",9);\r
-aWE("studi",3,5,6,8,9,10,13,16,17);\r
-aWE("study",1,3,5,6,7,8,9,10,13,16,17,18,25,19,21,22);\r
-aWE("study1",3);\r
-aWE("styl",18);\r
-aWE("sub",14,20,27);\r
-aWE("submenu",3,4,18);\r
-aWE("subset",18);\r
+aWE("struck",25);\r
+aWE("structur",3,14,10,2,13,21);\r
+aWE("structural",10);\r
+aWE("studi",5,6,7,9,10,2,13,16,17);\r
+aWE("study",3,5,6,0,7,8,9,10,2,13,24,16,17,18,26,19,21,22);\r
+aWE("study1",5);\r
+aWE("styl",25,18);\r
+aWE("sub",14,20);\r
+aWE("submenu",5,16,18);\r
+aWE("subset",25);\r
+aWE("substitut",24);\r
aWE("successful",14);\r
-aWE("suit",10);\r
+aWE("suit",2);\r
aWE("summariz",14);\r
+aWE("superposition",24);\r
aWE("superv",15);\r
-aWE("supervision",10,11,15,19);\r
-aWE("supervisor",26);\r
+aWE("supervision",2,15,19);\r
+aWE("supervisor",11,18,19);\r
aWE("supplementary",21,22);\r
-aWE("support",14,9,19);\r
+aWE("support",14,10,19);\r
aWE("supported_installation_mod",14);\r
aWE("suppos",14);\r
aWE("sur",14);\r
+aWE("surfac",23);\r
aWE("sweep",24);\r
aWE("swig",14);\r
-aWE("switch",5,14,10);\r
-aWE("system",1,2,14,9,12,20);\r
-aWE("t",6,14,15,16,17,18,19,27);\r
-aWE("tab",5,20,22);\r
-aWE("tabl",14,18);\r
+aWE("switch",6,14,2,24);\r
+aWE("system",3,4,14,10,12,24,20);\r
+aWE("t",7,14,24,15,16,17,18,19);\r
+aWE("tab",6,20,22);\r
+aWE("tabl",14,25);\r
aWE("tag",14);\r
-aWE("tailor",9);\r
-aWE("tak",1,14);\r
+aWE("tailor",10);\r
+aWE("tak",3,14);\r
aWE("taken",14,15);\r
aWE("target",14);\r
aWE("target_directory",14);\r
aWE("target_platform",14);\r
aWE("targetdir",14);\r
+aWE("task",0);\r
aWE("tcl",14);\r
aWE("tclhom",14);\r
aWE("tclsh8",14);\r
-aWE("technologi",1);\r
-aWE("technological",9);\r
-aWE("technology",1);\r
+aWE("technologi",3);\r
+aWE("technological",10);\r
+aWE("technology",3);\r
aWE("temp",14);\r
aWE("temp_directory",14);\r
aWE("temp_fold",14);\r
aWE("tempdir",14);\r
aWE("temporary",14);\r
aWE("temporarydiskspac",14);\r
-aWE("term",9,12,20);\r
+aWE("tensor",24);\r
+aWE("term",10,12,20);\r
aWE("terminal",14,15);\r
-aWE("test",1,14,19);\r
-aWE("text",14,12,26,20);\r
-aWE("them",1,5,14,9,15,16,22,27);\r
+aWE("test",3,14,19);\r
+aWE("text",14,12,20);\r
+aWE("textur",24);\r
+aWE("them",3,6,14,10,23,15,16,25,22);\r
aWE("therefor",14);\r
aWE("third",11);\r
aWE("thos",14,18,20);\r
aWE("thre",14);\r
-aWE("thu",1);\r
-aWE("tim",1,5,7,14,9,24,15,25,19,22);\r
-aWE("titl",14,23,24);\r
+aWE("threshold",24);\r
+aWE("thu",3,0);\r
+aWE("tim",3,6,0,8,14,10,24,15,17,26,19,22);\r
+aWE("titl",14,23,24,18);\r
aWE("tk",14);\r
aWE("tmp",14);\r
aWE("tmp_disk_spac",14);\r
aWE("togeth",14);\r
aWE("toggl",23,24,21);\r
-aWE("tool",1,14,10,11,16,19,22);\r
-aWE("toolbar",1,3,4,6,10,13,16,17,27);\r
-aWE("toolkit",10,27);\r
-aWE("top",3,4,14,10,18);\r
-aWE("topic",2,12,26,20);\r
+aWE("toleranc",24);\r
+aWE("tool",3,14,2,11,16,19,22);\r
+aWE("toolbar",3,5,7,2,13,16,17);\r
+aWE("toolkit",2);\r
+aWE("top",5,14,2,24,16,18);\r
+aWE("topic",4,12,20);\r
aWE("topmost",14);\r
aWE("total",14);\r
-aWE("totality",1);\r
+aWE("totality",3);\r
+aWE("touch",0);\r
aWE("tr",14);\r
-aWE("train",9);\r
-aWE("tre",3,14,18,19,21);\r
+aWE("train",10);\r
+aWE("translat",24);\r
+aWE("translation",24);\r
+aWE("transparency",24);\r
+aWE("transparent",24);\r
+aWE("tre",5,14,18,19,21);\r
aWE("tri",14);\r
-aWE("trihedron",18,27);\r
+aWE("trihedron",18);\r
aWE("trolltech",14);\r
aWE("tru",14);\r
-aWE("try",7,14,17,19);\r
+aWE("try",8,14,17,19);\r
aWE("try_exist",14);\r
aWE("try_nativ",14);\r
aWE("try_preinstal",14);\r
-aWE("two",5,14,12,17,19);\r
-aWE("typ",14,23,24,18,26,19);\r
+aWE("twic",24);\r
+aWE("two",6,14,12,24,17,19);\r
+aWE("typ",0,14,23,24,25,18,19);\r
aWE("typical",19);\r
aWE("u",18);\r
-aWE("ultimat",1);\r
-aWE("undo",6,18);\r
+aWE("ultimat",3);\r
+aWE("uncheck",24,16);\r
+aWE("underlin",25);\r
+aWE("undo",7,18);\r
aWE("undon",18);\r
-aWE("unfortunate",14,27);\r
-aWE("uniqu",14,27);\r
-aWE("unix",2);\r
+aWE("unfortunate",14);\r
+aWE("uniqu",14);\r
+aWE("unit",24);\r
+aWE("unix",4);\r
aWE("unload",13,17);\r
-aWE("unmark",4);\r
aWE("unnecessary",14);\r
aWE("unselect",14);\r
-aWE("up",14,9,12,13,16,17,18,21);\r
-aWE("updat",23,16,17,19);\r
-aWE("upload",4,10,16);\r
-aWE("us",1,6,0,7,8,14,9,10,11,23,24,15,16,17,18,25,19,20,21,22,27);\r
-aWE("usability",10);\r
-aWE("usag",14);\r
-aWE("usecas",10);\r
-aWE("useful",27);\r
-aWE("user",7,19,27);\r
+aWE("unus",0);\r
+aWE("up",14,10,12,13,16,17,25,21);\r
+aWE("updat",23,24,16,17,19);\r
+aWE("upload",2,16);\r
+aWE("us",3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22);\r
+aWE("usability",2);\r
+aWE("usag",14,24);\r
+aWE("user",8,19);\r
aWE("usr",14);\r
aWE("usual",14);\r
-aWE("utiliti",2);\r
+aWE("utiliti",4);\r
aWE("v",14,18);\r
aWE("valid",18);\r
-aWE("validation",1);\r
-aWE("valu",0,14,23,18,21);\r
+aWE("validation",3);\r
+aWE("valu",1,14,23,24,18,21);\r
aWE("variabl",14,15);\r
aWE("varibl",14);\r
-aWE("variety",2,12);\r
+aWE("variety",4,12);\r
aWE("variou",14,11);\r
aWE("ve",14,18);\r
+aWE("vector",24);\r
aWE("ver",14);\r
aWE("ver_major",14);\r
aWE("ver_minor",14);\r
-aWE("verbal",27);\r
-aWE("version",1,5,14,10,16,19);\r
-aWE("vertical",5,23,24,18,27);\r
-aWE("very",14,9,10,16);\r
-aWE("via",27);\r
-aWE("view",1,3,4,7,14,10,23,12,16,18,20,22,27);\r
-aWE("viewer",3,5,10,11,16,18,27);\r
-aWE("visibl",27);\r
-aWE("visu",1,4,6,11);\r
+aWE("version",6,14,2,16,19);\r
+aWE("vertical",6,23,24,18);\r
+aWE("very",14,10,2,24,16);\r
+aWE("view",3,5,8,14,2,23,12,24,16,18,20,22);\r
+aWE("viewer",5,6,2,11,16,17,18);\r
aWE("visual",11);\r
-aWE("visualiz",9,27);\r
-aWE("visualization",8,9,10,11,16,27);\r
-aWE("vtk",3,5,14,10,18,27);\r
+aWE("visualisation",1,24);\r
+aWE("visualiz",10,24);\r
+aWE("visualization",9,10,2,11,16);\r
+aWE("vtk",5,6,14,2,18);\r
aWE("vtkhom",14);\r
aWE("wait",14);\r
-aWE("want",5,14,12);\r
-aWE("warn",7,14);\r
+aWE("want",6,14,12);\r
+aWE("warn",8,14,24);\r
aWE("way",14,11,19);\r
-aWE("web",2);\r
-aWE("welcom",2,9);\r
-aWE("well",16);\r
-aWE("what",1,14,9,12,25,21);\r
-aWE("whenev",23);\r
-aWE("wherev",5);\r
+aWE("web",4);\r
+aWE("welcom",4,10);\r
+aWE("what",3,14,10,12,26,21);\r
+aWE("whenev",23,18);\r
+aWE("wherev",6);\r
aWE("wheth",14);\r
-aWE("whil",1);\r
-aWE("whol",24,16,17,18,25);\r
-aWE("wid",2,11,27);\r
+aWE("whil",3);\r
+aWE("whol",24,18,26);\r
+aWE("whos",23);\r
+aWE("wid",4,11,25);\r
aWE("widget",11);\r
-aWE("width",23);\r
-aWE("will",2,3,4,7,14,23,13,24,15,16,17,18,25,19,21,22);\r
-aWE("window",2,3,5,4,8,14,10,12,15,16,17,18,22);\r
-aWE("wirefram",0,23);\r
-aWE("wish",5,27);\r
+aWE("width",23,24);\r
+aWE("will",4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22);\r
+aWE("window",4,5,6,9,14,2,12,24,15,16,17,25,18,22);\r
+aWE("wirefram",1,23);\r
+aWE("wish",6);\r
aWE("wish8",14);\r
-aWE("within",1,3,6,22);\r
-aWE("without",1,14,15);\r
+aWE("within",3,5,7,22);\r
+aWE("without",3,0,14,24,15,26);\r
aWE("wizard",14);\r
-aWE("won",6,14,15);\r
+aWE("won",7,14,15);\r
aWE("word",20);\r
-aWE("work",1,5,8,14,16,17,27);\r
-aWE("would",4,14,17,19);\r
-aWE("writ",9,17);\r
-aWE("written",1,17);\r
+aWE("work",3,6,0,9,14,11,24,16,17);\r
+aWE("would",14,16,17,19);\r
+aWE("writ",10,17);\r
+aWE("written",3,17);\r
aWE("wrong",14);\r
-aWE("www",1);\r
-aWE("x",15);\r
+aWE("www",3);\r
+aWE("x",23,24,15);\r
aWE("xml",14,15,19);\r
aWE("xterm",15);\r
aWE("xxxxx",14);\r
-aWE("y",14);\r
-aWE("year",9);\r
-aWE("yes",7,14);\r
+aWE("y",14,23,24);\r
+aWE("year",10);\r
+aWE("yes",8,14);\r
aWE("yet",14,18);\r
-aWE("your",3,5,6,7,14,23,24,15,16,17,18,19,27);\r
-aWE("yourselv",18);\r
-aWE("zon",3,5);\r
+aWE("your",5,6,0,7,8,14,23,24,15,17,18,19);\r
+aWE("yourselv",25);\r
+aWE("zon",5,6,24);\r
+aWE("zoom",24,17);\r
\r
//-->\r
</script>\r
aTE(2,0,"Installing SALOME","kernel/readme.html");\r
aTE(2,0,"Running SALOME","kernel/running_salome_pro.htm");\r
aTE(1,21,"GUI module");\r
- aTE(2,0,"Introduction to GUI","kernel/introduction_to_iapp.htm");\r
+ aTE(2,0,"Introduction to GUI","introduction_to_gui.htm");\r
aTE(2,0,"Getting started","kernel/getting_started2.htm");\r
aTE(2,0,"SALOME desktop","kernel/salome_pro_desktop.htm");\r
- aTE(2,0,"Viewers","viewers.htm");\r
- aTE(2,0,"Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm");\r
- aTE(1,6,"Study management");\r
+ aTE(1,7,"Study management");\r
aTE(2,0,"Creating a new study","kernel/creating_a_new_study.htm");\r
aTE(2,0,"Opening studies","kernel/opening_studies.htm");\r
aTE(2,0,"Saving and closing studies","kernel/saving_a_study.htm");\r
aTE(2,0,"Editing studies","kernel/editing_studies.htm");\r
aTE(2,0,"Displaying studies","kernel/displaying_studies.htm");\r
- aTE(2,0,"Getting and setting study properties","kernel/getting_properties_of_the_study.htm");\r
+ aTE(2,0,"Working with Python Scripts","dump_study.htm");\r
+ aTE(2,0,"Setting study properties","kernel/getting_properties_of_the_study.htm");\r
aTE(2,0,"Using Object Browser","kernel/using_object_browser.htm");\r
aTE(2,0,"Using Registry tool","kernel/using_registry.htm");\r
aTE(2,0,"Using Catalog Generator","kernel/using_catalog_generator.htm");\r
- aTE(1,5,"Setting Preferences");\r
+ aTE(1,6,"Setting Preferences");\r
aTE(2,0,"Setting Preferences","setting_preferences.htm");\r
+ aTE(2,0,"Select Color and Font","select_color_and_font.htm");\r
aTE(2,0,"SALOME preferences","kernel/setting_preferences.htm");\r
- aTE(2,0,"GEOM preferences","geom_preferences.htm");\r
- aTE(2,0,"MESH preferences","mesh_preferences.htm");\r
+ aTE(2,0,"Geometry preferences","geom_preferences.htm");\r
+ aTE(2,0,"Mesh preferences","mesh_preferences.htm");\r
aTE(2,0,"Post-Pro Preferences","post-pro_preferences.htm");\r
\r
//-->\r
<p class="ftsbody" >\r
\r
\r
-<a name="bm_{"></a><a name="subkey_{{"></a><a href="../kernel/readme.html"><b>__version__</b></a> <br><a name="bms_{O"></a><a name="subkey_{O"></a><a href="../kernel/readme.html"><b>_omnipymodule</b></a> <br><nobr><a name="bms_{D"></a><a name="subkey_{D"></a>2d <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> </nobr><br><nobr>3d <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br>\r
+<a name="bm_{"></a><a name="subkey_{{"></a><a href="../kernel/readme.html"><b>__version__</b></a> <br><a name="bms_{O"></a><a name="subkey_{O"></a><a href="../kernel/readme.html"><b>_omnipymodule</b></a> <br><a name="bms_{{"></a><a name="subkey_{{"></a><a href="../post-pro_preferences.htm"><b>16x16</b></a> <br><nobr><a name="bms_{D"></a><a name="subkey_{D"></a>2d <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> </nobr><br><nobr>3d <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_A"></a><a name="subkey_AB"></a>able <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>abort</b></a> <br><nobr>above <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>abstraction</b></a> <br><nobr><a name="bms_AC"></a><a name="subkey_AC"></a>access <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>accessible <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>accidentally</b></a> <br><nobr>according <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>account</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieved</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieves</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>acquainted</b></a> <br><a href="../kernel/setting_preferences.htm"><b>actions</b></a> <br><nobr>activated <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>active <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>actual</b></a> <br><nobr>actually <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_AD"></a><a name="subkey_AD"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>adapted</b></a> <br><nobr>add <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>added</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>adding</b></a> <br><nobr>addition <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><nobr>additional <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>adjust</b></a> <br><nobr>advanced <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_AF"></a><a name="subkey_AF"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>affecting</b></a> <br><nobr><a name="bms_AG"></a><a name="subkey_AG"></a>again <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a name="bms_AI"></a><a name="subkey_AI"></a><a href="../viewers.htm"><b>aims</b></a> <br><a name="bms_AL"></a><a name="subkey_AL"></a><a href="../kernel/readme.html"><b>algorithm</b></a> <br><nobr>algorithms <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>allow <a href="../kernel/readme.html"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> </nobr><br><nobr>allowing <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>allows <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>along <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>alongside</b></a> <br><a href="../kernel/readme.html"><b>already</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>always</b></a> <br><a name="bms_AM"></a><a name="subkey_AM"></a><a href="../kernel/readme.html"><b>amount</b></a> <br><a name="bms_AN"></a><a name="subkey_AN"></a><a href="../post-pro_preferences.htm"><b>animation</b></a> <br><a href="../kernel/readme.html"><b>annoying</b></a> <br><nobr>another <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>answer</b></a> <br><nobr>any <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>8</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>anything</b></a> <br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>appear <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>appears <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>applets</b></a> <br><nobr>application <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../setting_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>applications <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>applies</b></a> <br><nobr>apply <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>approach <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>appropriate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>approximate</b></a> <br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../kernel/setting_preferences.htm"><b>arabic</b></a> <br><nobr>architecture <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>architectures</b></a> <br><nobr>area <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>areas <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>argument</b></a> <br><a href="../kernel/readme.html"><b>arguments</b></a> <br><a href="../kernel/using_object_browser.htm"><b>arrow</b></a> <br><a name="bms_AS"></a><a name="subkey_AS"></a><a href="../kernel/using_object_browser.htm"><b>ascending</b></a> <br><nobr>ascii <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>ask</b></a> <br><nobr>associated <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a name="bms_AT"></a><a name="subkey_AT"></a><a href="../kernel/introduction.htm"><b>attached</b></a> <br><a href="../kernel/using_object_browser.htm"><b>attribute</b></a> <br><a href="../kernel/using_object_browser.htm"><b>attributes</b></a> <br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>author <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>auto <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>automatic</b></a> <br><nobr>automatically <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a name="bms_AV"></a><a name="subkey_AV"></a><a href="../kernel/editing_studies.htm"><b>availability</b></a> <br><nobr>available <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>avoid</b></a> <br><a name="bms_AW"></a><a name="subkey_AW"></a><a href="../kernel/readme.html"><b>aware</b></a> <br><a href="../kernel/readme.html"><b>awk</b></a> <br><nobr><a name="bms_AX"></a><a name="subkey_AX"></a>axes <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>axis <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br>\r
+<nobr><a name="bm_A"></a><a name="subkey_AB"></a>able <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>abort</b></a> <br><nobr>above <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>abscissa <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>absolute</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>abstraction</b></a> <br><a name="bms_AC"></a><a name="subkey_AC"></a><a href="../post-pro_preferences.htm"><b>acceptable</b></a> <br><nobr>access <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>accessible <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>accidentally</b></a> <br><nobr>according <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>account</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieved</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieves</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>acquainted</b></a> <br><nobr>actions <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>activated <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>active <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>activity</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>actual</b></a> <br><a href="../kernel/editing_studies.htm"><b>actually</b></a> <br><a name="bms_AD"></a><a name="subkey_AD"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>adapted</b></a> <br><nobr>add <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>added</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>adding</b></a> <br><nobr>addition <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><nobr>additional <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>addressing</b></a> <br><a href="../dump_study.htm"><b>adds</b></a> <br><a href="../post-pro_preferences.htm"><b>adjust</b></a> <br><nobr>advanced <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_AF"></a><a name="subkey_AF"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>affecting</b></a> <br><nobr><a name="bms_AG"></a><a name="subkey_AG"></a>again <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a name="bms_AL"></a><a name="subkey_AL"></a><a href="../kernel/readme.html"><b>algorithm</b></a> <br><nobr>algorithms <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>allow <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>allowing <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>allows <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>almost</b></a> <br><nobr>along <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>alongside</b></a> <br><a href="../post-pro_preferences.htm"><b>alpha</b></a> <br><a href="../kernel/readme.html"><b>already</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>always</b></a> <br><a name="bms_AM"></a><a name="subkey_AM"></a><a href="../kernel/readme.html"><b>amount</b></a> <br><a name="bms_AN"></a><a name="subkey_AN"></a><a href="../post-pro_preferences.htm"><b>animation</b></a> <br><a href="../kernel/readme.html"><b>annoying</b></a> <br><nobr>another <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>answer</b></a> <br><nobr>any <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../setting_preferences.htm"><b>9</b></a> <a href="../post-pro_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/readme.html"><b>anything</b></a> <br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>api <a href="../dump_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>appear <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>appearance</b></a> <br><nobr>appears <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>applets</b></a> <br><nobr>application <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../dump_study.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>applications <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>apply <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>approach <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>appropriate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>approximate</b></a> <br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../select_color_and_font.htm"><b>arabic</b></a> <br><nobr>architecture <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>architectures</b></a> <br><nobr>area <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>areas <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>argument</b></a> <br><a href="../kernel/readme.html"><b>arguments</b></a> <br><a href="../post-pro_preferences.htm"><b>arrange</b></a> <br><a href="../kernel/using_object_browser.htm"><b>arrow</b></a> <br><a name="bms_AS"></a><a name="subkey_AS"></a><a href="../kernel/using_object_browser.htm"><b>ascending</b></a> <br><nobr>ascii <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>ask</b></a> <br><a href="../post-pro_preferences.htm"><b>assigned</b></a> <br><nobr>associated <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a name="bms_AT"></a><a name="subkey_AT"></a><a href="../kernel/introduction.htm"><b>attached</b></a> <br><a href="../kernel/using_object_browser.htm"><b>attribute</b></a> <br><a href="../kernel/using_object_browser.htm"><b>attributes</b></a> <br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>author <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>auto <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>automatic</b></a> <br><nobr>automatically <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a name="bms_AV"></a><a name="subkey_AV"></a><a href="../kernel/editing_studies.htm"><b>availability</b></a> <br><nobr>available <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>average</b></a> <br><a href="../post-pro_preferences.htm"><b>avi</b></a> <br><a href="../kernel/readme.html"><b>avoid</b></a> <br><a href="../dump_study.htm"><b>avoiding</b></a> <br><a name="bms_AW"></a><a name="subkey_AW"></a><a href="../kernel/readme.html"><b>aware</b></a> <br><a href="../kernel/readme.html"><b>awk</b></a> <br><a name="bms_AX"></a><a name="subkey_AX"></a><a href="../kernel/setting_preferences.htm"><b>axes</b></a> <br><a href="../kernel/setting_preferences.htm"><b>axis</b></a> <br>\r
<br><br>\r
-<a name="bm_B"></a><a name="subkey_B{"></a><a href="../kernel/readme.html"><b>b</b></a> <br><nobr><a name="bms_BA"></a><a name="subkey_BA"></a>back <a href="../kernel/readme.html"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>background</b></a> <br><nobr>bar <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>base</b></a> <br><nobr>based <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>bash</b></a> <br><nobr>basic <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>basis</b></a> <br><nobr>batch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_BE"></a><a name="subkey_BE"></a><a href="../kernel/displaying_studies.htm"><b>becomes</b></a> <br><a href="../kernel/readme.html"><b>before</b></a> <br><a href="../kernel/setting_preferences.htm"><b>begin</b></a> <br><a href="../kernel/using_registry.htm"><b>begins</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>behave</b></a> <br><a href="../kernel/introduction.htm"><b>behavior</b></a> <br><a href="../kernel/readme.html"><b>being</b></a> <br><nobr>below <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_BI"></a><a name="subkey_BI"></a>bin <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>binaries</b></a> <br><nobr>binary <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_BL"></a><a name="subkey_BL"></a><a href="../kernel/readme.html"><b>blue</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>blur</b></a> <br><a name="bms_BM"></a><a name="subkey_BM"></a><a href="../viewers.htm"><b>bmp</b></a> <br><a name="bms_BO"></a><a name="subkey_BO"></a><a href="../kernel/readme.html"><b>bold</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>book</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>books</b></a> <br><a href="../kernel/readme.html"><b>boost</b></a> <br><a href="../kernel/readme.html"><b>boost_version</b></a> <br><a href="../kernel/readme.html"><b>boostdir</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>borders</b></a> <br><nobr>both <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>bottom <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>box <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><a href="../geom_preferences.htm"><b>boxes</b></a> <br><a name="bms_BR"></a><a name="subkey_BR"></a><a href="../kernel/readme.html"><b>brackets</b></a> <br><nobr>brief <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>bringing</b></a> <br><nobr>browse <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>browser <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a name="bms_BU"></a><a name="subkey_BU"></a><a href="../kernel/readme.html"><b>bug</b></a> <br><nobr>build <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>building</b></a> <br><nobr>built <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><nobr>button <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>buttons <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br>\r
-<br><br>\r
-<nobr><a name="bm_C"></a><a name="subkey_C{"></a>c <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_CA"></a><a name="subkey_CA"></a>cad <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>cae</b></a> <br><a href="../kernel/introduction.htm"><b>calculation</b></a> <br><nobr>calculations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>call <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>called <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>calling</b></a> <br><a href="../viewers.htm"><b>calls</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>cam</b></a> <br><a href="../kernel/readme.html"><b>cancel</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>capability</b></a> <br><a href="../kernel/readme.html"><b>caption</b></a> <br><a href="../kernel/readme.html"><b>care</b></a> <br><a href="../kernel/readme.html"><b>carefully</b></a> <br><a href="../kernel/introduction.htm"><b>carrying</b></a> <br><a href="../kernel/introduction.htm"><b>cars</b></a> <br><nobr>cascade <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>case <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>casroot</b></a> <br><a href="../kernel/readme.html"><b>cat</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalog</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulegeneral</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulepersonnel</b></a> <br><nobr>catalogue <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>categories</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_B"></a><a name="subkey_B{"></a><a href="../kernel/readme.html"><b>b</b></a> <br><nobr><a name="bms_BA"></a><a name="subkey_BA"></a>back <a href="../kernel/readme.html"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>background <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>bar <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>bars <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>base</b></a> <br><nobr>based <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>bash</b></a> <br><nobr>basic <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>basis</b></a> <br><nobr>batch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_BE"></a><a name="subkey_BE"></a>becomes <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>before</b></a> <br><a href="../kernel/setting_preferences.htm"><b>begin</b></a> <br><a href="../kernel/using_registry.htm"><b>begins</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>behave</b></a> <br><a href="../kernel/introduction.htm"><b>behavior</b></a> <br><a href="../post-pro_preferences.htm"><b>behaviour</b></a> <br><a href="../kernel/readme.html"><b>being</b></a> <br><nobr>below <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>better</b></a> <br><a name="bms_BI"></a><a name="subkey_BI"></a><a href="../post-pro_preferences.htm"><b>bicolor</b></a> <br><a href="../post-pro_preferences.htm"><b>big</b></a> <br><nobr>bin <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>binaries</b></a> <br><nobr>binary <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_BL"></a><a name="subkey_BL"></a><a href="../kernel/readme.html"><b>blue</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>blur</b></a> <br><a name="bms_BO"></a><a name="subkey_BO"></a><a href="../kernel/readme.html"><b>bold</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>book</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>books</b></a> <br><a href="../kernel/readme.html"><b>boost</b></a> <br><a href="../kernel/readme.html"><b>boost_version</b></a> <br><a href="../kernel/readme.html"><b>boostdir</b></a> <br><nobr>borders <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>both <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>bottom <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>box <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../select_color_and_font.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../mesh_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> </nobr><br><a href="../geom_preferences.htm"><b>boxes</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf0.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_CD"></a><a name="subkey_CD"></a><a href="../kernel/readme.html"><b>cd</b></a> <br><a name="bms_CE"></a><a name="subkey_CE"></a><a href="../kernel/setting_preferences.htm"><b>cells</b></a> <br><nobr><a name="bms_CH"></a><a name="subkey_CH"></a>change <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../setting_preferences.htm"><b>changed</b></a> <br><nobr>changes <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>changing</b></a> <br><a href="../mesh_preferences.htm"><b>chapter</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>chapters</b></a> <br><a href="../kernel/readme.html"><b>charge</b></a> <br><a href="../kernel/readme.html"><b>check</b></a> <br><a href="../kernel/readme.html"><b>check_version</b></a> <br><nobr>checkbox <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>checkboxes</b></a> <br><a href="../kernel/readme.html"><b>checked</b></a> <br><a href="../kernel/readme.html"><b>checking</b></a> <br><a href="../kernel/readme.html"><b>checks</b></a> <br><nobr>choice <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>choose <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../mesh_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> </nobr><br><nobr>chosen <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_CL"></a><a name="subkey_CL"></a><a href="../kernel/salome_pro_desktop.htm"><b>classic</b></a> <br><a href="../kernel/readme.html"><b>clear</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>clearall</b></a> <br><nobr>click <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/setting_preferences.htm"><b>13</b></a> <a href="../kernel/saving_a_study.htm"><b>14</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>15</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>clickable</b></a> <br><a href="../kernel/navigating_topics.htm"><b>clicked</b></a> <br><nobr>clicking <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>client</b></a> <br><a href="../viewers.htm"><b>clone</b></a> <br><nobr>close <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>closed</b></a> <br><nobr>closes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>closing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>clusters</b></a> <br><nobr><a name="bms_CO"></a><a name="subkey_CO"></a>code <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>coefficient</b></a> <br><a href="../kernel/readme.html"><b>coincide</b></a> <br><a href="../kernel/readme.html"><b>collect</b></a> <br><a href="../kernel/readme.html"><b>collected</b></a> <br><a href="../kernel/readme.html"><b>collects</b></a> <br><nobr>color <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>colored</b></a> <br><nobr>colors <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>column</b></a> <br><nobr>columns <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>combines</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>comfortable</b></a> <br><a href="../kernel/readme.html"><b>comma</b></a> <br><nobr>command <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>commands</b></a> <br><nobr>common <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>compared</b></a> <br><a href="../kernel/readme.html"><b>compatible</b></a> <br><a href="../kernel/readme.html"><b>compilation</b></a> <br><a href="../kernel/readme.html"><b>compiled</b></a> <br><a href="../kernel/readme.html"><b>compiling</b></a> <br><nobr>complete <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><nobr>completed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>complex <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>component <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><nobr>components <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/introduction.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>compose</b></a> <br><nobr>computation <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>computational</b></a> <br><a href="../kernel/introduction.htm"><b>computations</b></a> <br><nobr>computer <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>concept <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>concerning</b></a> <br><a href="../kernel/readme.html"><b>concerns</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>conclusion</b></a> <br><a href="../kernel/readme.html"><b>config</b></a> <br><a href="../kernel/readme.html"><b>config_files</b></a> <br><a href="../kernel/readme.html"><b>config_mandrake10_1</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>configurable</b></a> <br><a href="../kernel/readme.html"><b>configuration</b></a> <br><nobr>configure <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>confirm</b></a> <br><a href="../kernel/opening_studies.htm"><b>connect</b></a> <br><nobr>connected <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>consists</b></a> <br><nobr>console <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>constant</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>constantly</b></a> <br><nobr>construction <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>contain <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>container</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>containers</b></a> <br><nobr>containing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>contains <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>content <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>contents</b></a> <br><nobr>context <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>continue</b></a> <br><nobr>control <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>controls</b></a> <br><nobr>convenience <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>convert</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>cooperate</b></a> <br><a href="../viewers.htm"><b>coordinate</b></a> <br><a href="../kernel/setting_preferences.htm"><b>coordinates</b></a> <br><nobr>copy <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>copying</b></a> <br><a href="../kernel/readme.html"><b>copyright</b></a> <br><nobr>corba <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>corner <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>correcting</b></a> <br><nobr>corresponding <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>correspondingly</b></a> <br><a href="../kernel/readme.html"><b>corresponds</b></a> <br><a href="../kernel/introduction.htm"><b>costs</b></a> <br><nobr>coupling <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_CP"></a><a name="subkey_CP"></a><a href="../kernel/running_salome_pro.htm"><b>cpp</b></a> <br><nobr><a name="bms_CR"></a><a name="subkey_CR"></a>create <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> </nobr><br><nobr>created <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/readme.html"><b>creates</b></a> <br><nobr>creating <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>creation <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> </nobr><br><nobr>cross <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CS"></a><a name="subkey_CS"></a>csh <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>cshell</b></a> <br><nobr><a name="bms_CU"></a><a name="subkey_CU"></a>current <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>currently <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>curve</b></a> <br><nobr>custom <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>customer</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>customization</b></a> <br><a href="../viewers.htm"><b>customizing</b></a> <br><a name="bms_CY"></a><a name="subkey_CY"></a><a href="../post-pro_preferences.htm"><b>cycles</b></a> <br><a href="../kernel/setting_preferences.htm"><b>cyrillic</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bms_BR"></a><a name="subkey_BR"></a><a href="../kernel/readme.html"><b>brackets</b></a> <br><a href="../kernel/introduction.htm"><b>brep</b></a> <br><nobr>brief <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><a href="../introduction_to_gui.htm"><b>bringing</b></a> <br><nobr>browse <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>browser <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a name="bms_BU"></a><a name="subkey_BU"></a><a href="../kernel/readme.html"><b>bug</b></a> <br><nobr>build <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>building</b></a> <br><nobr>built <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><nobr>button <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><nobr>buttons <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_C"></a><a name="subkey_C{"></a>c <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_CA"></a><a name="subkey_CA"></a>cad <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>cae</b></a> <br><a href="../kernel/introduction.htm"><b>calculation</b></a> <br><nobr>calculations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>call <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>called <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>calling</b></a> <br><a href="../dump_study.htm"><b>calls</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>cam</b></a> <br><a href="../post-pro_preferences.htm"><b>camera</b></a> <br><a href="../kernel/readme.html"><b>cancel</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>capability</b></a> <br><a href="../kernel/readme.html"><b>caption</b></a> <br><a href="../kernel/readme.html"><b>care</b></a> <br><a href="../kernel/readme.html"><b>carefully</b></a> <br><a href="../mesh_preferences.htm"><b>carried</b></a> <br><a href="../kernel/introduction.htm"><b>carrying</b></a> <br><a href="../kernel/introduction.htm"><b>cars</b></a> <br><a href="../kernel/readme.html"><b>cascade</b></a> <br><nobr>case <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>casroot</b></a> <br><a href="../kernel/readme.html"><b>cat</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalog</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulegeneral</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulepersonnel</b></a> <br><nobr>catalogue <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>categories</b></a> <br><a name="bms_CD"></a><a name="subkey_CD"></a><a href="../kernel/readme.html"><b>cd</b></a> <br><nobr><a name="bms_CE"></a><a name="subkey_CE"></a>cells <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>centered</b></a> <br><a href="../post-pro_preferences.htm"><b>central</b></a> <br><a href="../post-pro_preferences.htm"><b>centred</b></a> <br><nobr><a name="bms_CH"></a><a name="subkey_CH"></a>change <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../setting_preferences.htm"><b>changed</b></a> <br><nobr>changes <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>changing</b></a> <br><a href="../post-pro_preferences.htm"><b>channel</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>chapters</b></a> <br><a href="../select_color_and_font.htm"><b>characters</b></a> <br><a href="../kernel/readme.html"><b>charge</b></a> <br><nobr>check <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>check_version</b></a> <br><nobr>checkbox <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>checkboxes</b></a> <br><nobr>checked <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>checking</b></a> <br><a href="../kernel/readme.html"><b>checks</b></a> <br><nobr>choice <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> </nobr><br><nobr>choose <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../select_color_and_font.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>chosen <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_CL"></a><a name="subkey_CL"></a><a href="../post-pro_preferences.htm"><b>clamp</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>classic</b></a> <br><a href="../kernel/readme.html"><b>clear</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>clearall</b></a> <br><nobr>click <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../geom_preferences.htm"><b>8</b></a> <a href="../dump_study.htm"><b>9</b></a> <a href="../setting_preferences.htm"><b>10</b></a> <a href="../select_color_and_font.htm"><b>11</b></a> <a href="../post-pro_preferences.htm"><b>12</b></a> <a href="../mesh_preferences.htm"><b>13</b></a> <a href="../kernel/using_registry.htm"><b>14</b></a> <a href="../kernel/using_object_browser.htm"><b>15</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>16</b></a> <a href="../kernel/using_catalog_generator.htm"><b>17</b></a> <a href="../kernel/setting_preferences.htm"><b>18</b></a> <a href="../kernel/saving_a_study.htm"><b>19</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>20</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>clickable</b></a> <br><a href="../kernel/navigating_topics.htm"><b>clicked</b></a> <br><nobr>clicking <a href="../kernel/readme.html"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>client</b></a> <br><a href="../post-pro_preferences.htm"><b>clip</b></a> <br><nobr>close <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>closed <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>closes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>closing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>clusters</b></a> <br><nobr><a name="bms_CO"></a><a name="subkey_CO"></a>code <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>coef</b></a> <br><a href="../kernel/readme.html"><b>coincide</b></a> <br><a href="../kernel/readme.html"><b>collect</b></a> <br><a href="../kernel/readme.html"><b>collected</b></a> <br><a href="../kernel/readme.html"><b>collects</b></a> <br><nobr>color <a href="../geom_preferences.htm"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>colored <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>colors <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>column <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>columns <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>combined</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>combines</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>comfortable</b></a> <br><a href="../kernel/readme.html"><b>comma</b></a> <br><nobr>command <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>commands <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>common <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>compared <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>compatible</b></a> <br><a href="../kernel/readme.html"><b>compilation</b></a> <br><a href="../kernel/readme.html"><b>compiled</b></a> <br><a href="../kernel/readme.html"><b>compiling</b></a> <br><nobr>complete <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><nobr>completed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>complex <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>component <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../dump_study.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><nobr>components <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../introduction_to_gui.htm"><b>7</b></a> <a href="../dump_study.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>compose</b></a> <br><nobr>computation <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>computational</b></a> <br><a href="../kernel/introduction.htm"><b>computations</b></a> <br><nobr>computer <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>concept <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>concerning</b></a> <br><a href="../kernel/readme.html"><b>concerns</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>conclusion</b></a> <br><a href="../kernel/readme.html"><b>config</b></a> <br><a href="../kernel/readme.html"><b>config_files</b></a> <br><a href="../kernel/readme.html"><b>config_mandrake10_1</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>configurable</b></a> <br><a href="../kernel/readme.html"><b>configuration</b></a> <br><nobr>configure <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>confirm <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/opening_studies.htm"><b>connect</b></a> <br><nobr>connected <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>consists</b></a> <br><nobr>console <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>constant</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>constantly</b></a> <br><nobr>construction <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../dump_study.htm"><b>consuming</b></a> <br><nobr>contain <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>container</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>containers</b></a> <br><nobr>containing <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>contains <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>content <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>contents <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>context <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>continue</b></a> <br><nobr>control <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> </nobr><br><nobr>controls <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>convert <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>cooperate</b></a> <br><a href="../kernel/setting_preferences.htm"><b>coordinate</b></a> <br><a href="../kernel/setting_preferences.htm"><b>coordinates</b></a> <br><a href="../post-pro_preferences.htm"><b>copies</b></a> <br><nobr>copy <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>copying</b></a> <br><a href="../kernel/readme.html"><b>copyright</b></a> <br><nobr>corba <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> </nobr><br><nobr>corner <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>correcting</b></a> <br><nobr>corresponding <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>correspondingly</b></a> <br><nobr>corresponds <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>costs</b></a> <br><nobr>coupling <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf9.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_WO"></a><a name="subkey_WO"></a>won <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>word</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>words</b></a> <br><nobr>work <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> </nobr><br><nobr>working <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>would <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_WR"></a><a name="subkey_WR"></a>write <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>written <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>wrong</b></a> <br><a name="bms_WW"></a><a name="subkey_WW"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>www</b></a> <br>\r
+<a name="bms_TE"></a><a name="subkey_TE"></a><a href="../kernel/introduction.htm"><b>technological</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technologies</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technology</b></a> <br><a href="../kernel/readme.html"><b>temp</b></a> <br><a href="../kernel/readme.html"><b>temp_directory</b></a> <br><a href="../kernel/readme.html"><b>temp_folder</b></a> <br><a href="../kernel/readme.html"><b>tempdir</b></a> <br><a href="../kernel/readme.html"><b>temporary</b></a> <br><a href="../kernel/readme.html"><b>temporarydiskspace</b></a> <br><a href="../post-pro_preferences.htm"><b>tensor</b></a> <br><nobr>term <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>terminal <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>terms</b></a> <br><nobr>test <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>tests</b></a> <br><nobr>text <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>texture</b></a> <br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../select_color_and_font.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>therefore</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>third</b></a> <br><nobr>those <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>three</b></a> <br><a href="../post-pro_preferences.htm"><b>threshold</b></a> <br><nobr>thus <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_TI"></a><a name="subkey_TI"></a>time <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>times</b></a> <br><nobr>title <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a name="bms_TK"></a><a name="subkey_TK"></a><a href="../kernel/readme.html"><b>tk</b></a> <br><a name="bms_TM"></a><a name="subkey_TM"></a><a href="../kernel/readme.html"><b>tmp</b></a> <br><a href="../kernel/readme.html"><b>tmp_disk_space</b></a> <br><a name="bms_TO"></a><a name="subkey_TO"></a><a href="../kernel/readme.html"><b>together</b></a> <br><a href="../mesh_preferences.htm"><b>toggle</b></a> <br><a href="../post-pro_preferences.htm"><b>toggles</b></a> <br><a href="../kernel/using_object_browser.htm"><b>toggling</b></a> <br><a href="../post-pro_preferences.htm"><b>tolerance</b></a> <br><nobr>tool <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>toolbar <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>toolbars <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../introduction_to_gui.htm"><b>toolkit</b></a> <br><nobr>tools <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>top <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>topic <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>topics <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>topmost</b></a> <br><a href="../kernel/readme.html"><b>total</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>totality</b></a> <br><a href="../dump_study.htm"><b>touching</b></a> <br><a name="bms_TR"></a><a name="subkey_TR"></a><a href="../kernel/readme.html"><b>tr</b></a> <br><a href="../kernel/introduction.htm"><b>training</b></a> <br><a href="../post-pro_preferences.htm"><b>translate</b></a> <br><a href="../post-pro_preferences.htm"><b>translation</b></a> <br><a href="../post-pro_preferences.htm"><b>transparency</b></a> <br><a href="../post-pro_preferences.htm"><b>transparent</b></a> <br><nobr>tree <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>tries</b></a> <br><a href="../kernel/setting_preferences.htm"><b>trihedron</b></a> <br><a href="../kernel/readme.html"><b>trolltech</b></a> <br><a href="../kernel/readme.html"><b>true</b></a> <br><nobr>try <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>try_existing</b></a> <br><a href="../kernel/readme.html"><b>try_native</b></a> <br><a href="../kernel/readme.html"><b>try_preinstalled</b></a> <br><a name="bms_TW"></a><a name="subkey_TW"></a><a href="../post-pro_preferences.htm"><b>twice</b></a> <br><nobr>two <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>typical</b></a> <br><nobr>typing <a href="../kernel/readme.html"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_X"></a><a name="subkey_X{"></a><a href="../kernel/running_salome_pro.htm"><b>x</b></a> <br><nobr><a name="bms_XM"></a><a name="subkey_XM"></a>xml <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_XT"></a><a name="subkey_XT"></a><a href="../kernel/running_salome_pro.htm"><b>xterm</b></a> <br><a name="bms_XX"></a><a name="subkey_XX"></a><a href="../kernel/readme.html"><b>xxxxx</b></a> <br>\r
+<a name="bm_U"></a><a name="subkey_U{"></a><a href="../kernel/setting_preferences.htm"><b>u</b></a> <br><a name="bms_UL"></a><a name="subkey_UL"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>ultimate</b></a> <br><a name="bms_UN"></a><a name="subkey_UN"></a><a href="../kernel/salome_pro_desktop.htm"><b>uncheck</b></a> <br><a href="../post-pro_preferences.htm"><b>unchecked</b></a> <br><a href="../select_color_and_font.htm"><b>underlined</b></a> <br><nobr>undo <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>undone</b></a> <br><a href="../kernel/readme.html"><b>unfortunately</b></a> <br><a href="../kernel/readme.html"><b>unique</b></a> <br><a href="../post-pro_preferences.htm"><b>units</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>unix</b></a> <br><a href="../kernel/saving_a_study.htm"><b>unload</b></a> <br><nobr>unloaded <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>unnecessary</b></a> <br><a href="../kernel/readme.html"><b>unselect</b></a> <br><a href="../kernel/readme.html"><b>unselecting</b></a> <br><a href="../dump_study.htm"><b>unused</b></a> <br><nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>update <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>updated <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>uploading <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>upper <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_US"></a><a name="subkey_US"></a><a href="../introduction_to_gui.htm"><b>usability</b></a> <br><nobr>usage <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>used <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>user <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../introduction_to_gui.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> </nobr><br><nobr>users <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>uses <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>using <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../dump_study.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> </nobr><br><a href="../kernel/readme.html"><b>usr</b></a> <br><a href="../kernel/readme.html"><b>usually</b></a> <br><a name="bms_UT"></a><a name="subkey_UT"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>utilities</b></a> <br>\r
<br><br>\r
-<a name="bm_Y"></a><a name="subkey_Y{"></a><a href="../kernel/readme.html"><b>y</b></a> <br><a name="bms_YE"></a><a name="subkey_YE"></a><a href="../kernel/introduction.htm"><b>year</b></a> <br><nobr>yes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>yet <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_YO"></a><a name="subkey_YO"></a>your <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>yourselves</b></a> <br>\r
-<br><br>\r
-<nobr><a name="bm_Z"></a><a name="subkey_ZO"></a>zone <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><br><br></p>\r
+<nobr><a name="bm_V"></a><a name="subkey_V{"></a>v <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_VA"></a><a name="subkey_VA"></a><a href="../kernel/setting_preferences.htm"><b>valid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>validation</b></a> <br><nobr>value <a href="../kernel/readme.html"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>values <a href="../kernel/readme.html"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>variable</b></a> <br><nobr>variables <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>varible</b></a> <br><nobr>variety <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>various <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_VE"></a><a name="subkey_VE"></a>ve <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>vector</b></a> <br><a href="../kernel/readme.html"><b>ver</b></a> <br><a href="../kernel/readme.html"><b>ver_major</b></a> <br><a href="../kernel/readme.html"><b>ver_minor</b></a> <br><nobr>version <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>versions</b></a> <br><nobr>vertical <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>vertically</b></a> <br><nobr>very <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_VI"></a><a name="subkey_VI"></a>view <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>viewer <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>viewers <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>viewing <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>visual</b></a> <br><nobr>visualisation <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>visualization <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>visualize <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf11.htm" target="_self" title="previous search group"><b>>></b></a>\r
+\r
</body>\r
\r
</html>\r
--- /dev/null
+<html>\r
+<head>\r
+<title>Search Words List</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
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000; font-style:normal; text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal; text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal; text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf10.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_VT"></a><a name="subkey_VT"></a>vtk <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>vtkhome</b></a> <br>\r
+<br><br>\r
+<a name="bm_W"></a><a name="subkey_WA"></a><a href="../kernel/readme.html"><b>wait</b></a> <br><a href="../kernel/readme.html"><b>waiting</b></a> <br><nobr>want <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>warned</b></a> <br><nobr>warning <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>way <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_WE"></a><a name="subkey_WE"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>web</b></a> <br><nobr>welcome <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_WH"></a><a name="subkey_WH"></a>what <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> </nobr><br><nobr>whenever <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>wherever</b></a> <br><a href="../kernel/readme.html"><b>whether</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>while</b></a> <br><nobr>whole <a href="../setting_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>whose</b></a> <br><nobr><a name="bms_WI"></a><a name="subkey_WI"></a>wide <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>widgets</b></a> <br><nobr>width <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>will <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../select_color_and_font.htm"><b>9</b></a> <a href="../post-pro_preferences.htm"><b>10</b></a> <a href="../mesh_preferences.htm"><b>11</b></a> <a href="../kernel/using_registry.htm"><b>12</b></a> <a href="../kernel/using_object_browser.htm"><b>13</b></a> <a href="../kernel/using_catalog_generator.htm"><b>14</b></a> <a href="../kernel/setting_preferences.htm"><b>15</b></a> <a href="../kernel/saving_a_study.htm"><b>16</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>17</b></a> </nobr><br><nobr>window <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../introduction_to_gui.htm"><b>7</b></a> <a href="../select_color_and_font.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../introduction_to_gui.htm"><b>windowed</b></a> <br><nobr>windows <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>wireframe <a href="../geom_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>wish</b></a> <br><a href="../kernel/readme.html"><b>wish8</b></a> <br><nobr>within <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> </nobr><br><nobr>without <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>wizard</b></a> <br><a href="../kernel/readme.html"><b>wizards</b></a> <br><nobr><a name="bms_WO"></a><a name="subkey_WO"></a>won <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>word</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>words</b></a> <br><nobr>work <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> </nobr><br><nobr>working <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>would <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_WR"></a><a name="subkey_WR"></a>write <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>written <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>wrong</b></a> <br><a name="bms_WW"></a><a name="subkey_WW"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>www</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_X"></a><a name="subkey_X{"></a>x <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_XM"></a><a name="subkey_XM"></a>xml <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_XT"></a><a name="subkey_XT"></a><a href="../kernel/running_salome_pro.htm"><b>xterm</b></a> <br><a name="bms_XX"></a><a name="subkey_XX"></a><a href="../kernel/readme.html"><b>xxxxx</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_Y"></a><a name="subkey_Y{"></a>y <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_YE"></a><a name="subkey_YE"></a><a href="../kernel/introduction.htm"><b>year</b></a> <br><nobr>yes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>yet <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_YO"></a><a name="subkey_YO"></a>your <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>yourselves</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_Z"></a><a name="subkey_ZO"></a>zone <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>zones</b></a> <br><a href="../post-pro_preferences.htm"><b>zoom</b></a> <br><a href="../post-pro_preferences.htm"><b>zoomed</b></a> <br><a href="../kernel/saving_a_study.htm"><b>zooming</b></a> <br><br><br></p>\r
+</body>\r
+\r
+</html>\r
+\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-\r
-\r
-<a name="bm_D"></a><a name="subkey_D{"></a><a href="../kernel/readme.html"><b>d</b></a> <br><nobr><a name="bms_DA"></a><a name="subkey_DA"></a>data <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>database</b></a> <br><nobr>date <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../kernel/using_object_browser.htm"><b>debugging</b></a> <br><nobr>default <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../mesh_preferences.htm"><b>10</b></a> <a href="../kernel/using_object_browser.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> </nobr><br><nobr>define <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>defined <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>definite <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>definition <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>definitions</b></a> <br><a href="../kernel/introduction.htm"><b>delays</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>demand</b></a> <br><a href="../kernel/introduction.htm"><b>demands</b></a> <br><a href="../kernel/readme.html"><b>dependancies</b></a> <br><a href="../kernel/readme.html"><b>dependencies</b></a> <br><a href="../kernel/readme.html"><b>depending</b></a> <br><nobr>depends <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>derived</b></a> <br><a href="../kernel/using_object_browser.htm"><b>descending</b></a> <br><nobr>described <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>describes</b></a> <br><nobr>describing <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>description <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>descriptions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>design</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>desired</b></a> <br><nobr>desktop <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>destination</b></a> <br><nobr>destined <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>detail <a href="../viewers.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>detailed <a href="../geom_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>details</b></a> <br><a href="../kernel/readme.html"><b>dev</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>developer</b></a> <br><nobr>development <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>developments</b></a> <br><a name="bms_DI"></a><a name="subkey_DI"></a><a href="../mesh_preferences.htm"><b>diagrams</b></a> <br><nobr>dialog <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>dialogs</b></a> <br><a href="../kernel/readme.html"><b>differ</b></a> <br><nobr>difference <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../viewers.htm"><b>differences</b></a> <br><nobr>different <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../viewers.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>differs</b></a> <br><a href="../kernel/introduction.htm"><b>digital</b></a> <br><a href="../mesh_preferences.htm"><b>digits</b></a> <br><a href="../kernel/readme.html"><b>dir</b></a> <br><a href="../kernel/displaying_studies.htm"><b>direction</b></a> <br><nobr>directories <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>directory <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>disable <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>disable_flag</b></a> <br><nobr>disk <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>display <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><nobr>displayed <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>displaying <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>displays <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>distinction</b></a> <br><a href="../kernel/readme.html"><b>distribute</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>distributed</b></a> <br><a href="../kernel/readme.html"><b>distribution</b></a> <br><nobr>divided <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_DO"></a><a name="subkey_DO"></a>dockable <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>document <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>does <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>doing</b></a> <br><nobr>domain <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>don <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>done</b></a> <br><a href="../kernel/readme.html"><b>dot</b></a> <br><a href="../kernel/using_registry.htm"><b>double</b></a> <br><nobr>down <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>doxygen</b></a> <br><a href="../kernel/readme.html"><b>doxytag</b></a> <br><a href="../kernel/readme.html"><b>doxywizard</b></a> <br><a name="bms_DR"></a><a name="subkey_DR"></a><a href="../viewers.htm"><b>drag</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>dragging</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>dramatically</b></a> <br><a href="../viewers.htm"><b>draw</b></a> <br><a href="../kernel/readme.html"><b>drive</b></a> <br><a href="../kernel/navigating_topics.htm"><b>drop</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>dropping</b></a> <br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../viewers.htm"><b>dump</b></a> <br><a href="../kernel/readme.html"><b>dumpversion</b></a> <br><a href="../viewers.htm"><b>duplicate</b></a> <br><a name="bms_DY"></a><a name="subkey_DY"></a><a href="../kernel/introduction_to_iapp.htm"><b>dynamic</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>dynamically</b></a> <br>\r
+<a name="bms_CP"></a><a name="subkey_CP"></a><a href="../kernel/running_salome_pro.htm"><b>cpp</b></a> <br><nobr><a name="bms_CR"></a><a name="subkey_CR"></a>create <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../introduction_to_gui.htm"><b>8</b></a> <a href="../dump_study.htm"><b>9</b></a> <a href="../mesh_preferences.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> </nobr><br><nobr>created <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../introduction_to_gui.htm"><b>8</b></a> <a href="../dump_study.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>creates <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>creating <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>creation <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> </nobr><br><nobr>cross <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CS"></a><a name="subkey_CS"></a>csh <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>cshell</b></a> <br><a name="bms_CT"></a><a name="subkey_CT"></a><a href="../post-pro_preferences.htm"><b>ctrl</b></a> <br><nobr><a name="bms_CU"></a><a name="subkey_CU"></a>current <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../setting_preferences.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> </nobr><br><nobr>currently <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>cursor</b></a> <br><a href="../kernel/setting_preferences.htm"><b>curve</b></a> <br><nobr>custom <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>customer</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>customization</b></a> <br><a name="bms_CY"></a><a name="subkey_CY"></a><a href="../post-pro_preferences.htm"><b>cycles</b></a> <br><a href="../select_color_and_font.htm"><b>cyrillic</b></a> <br>\r
+<br><br>\r
+<a name="bm_D"></a><a name="subkey_D{"></a><a href="../kernel/readme.html"><b>d</b></a> <br><nobr><a name="bms_DA"></a><a name="subkey_DA"></a>data <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../introduction_to_gui.htm"><b>7</b></a> <a href="../dump_study.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>database</b></a> <br><nobr>date <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../kernel/using_object_browser.htm"><b>debugging</b></a> <br><a href="../post-pro_preferences.htm"><b>decrease</b></a> <br><a href="../post-pro_preferences.htm"><b>decreases</b></a> <br><nobr>default <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>defaults</b></a> <br><nobr>define <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> </nobr><br><nobr>defined <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>defines</b></a> <br><nobr>definite <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>definition <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>definitions</b></a> <br><a href="../kernel/introduction.htm"><b>delays</b></a> <br><a href="../kernel/saving_a_study.htm"><b>deleted</b></a> <br><nobr>demand <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>demands</b></a> <br><a href="../kernel/readme.html"><b>dependancies</b></a> <br><a href="../kernel/readme.html"><b>dependencies</b></a> <br><a href="../kernel/readme.html"><b>depending</b></a> <br><nobr>depends <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>derived</b></a> <br><a href="../kernel/using_object_browser.htm"><b>descending</b></a> <br><nobr>described <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>describes</b></a> <br><nobr>describing <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>description <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>descriptions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>design</b></a> <br><a href="../post-pro_preferences.htm"><b>designed</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>desired</b></a> <br><nobr>desktop <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>destination</b></a> <br><nobr>destined <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>detailed</b></a> <br><a href="../kernel/readme.html"><b>details</b></a> <br><a href="../kernel/readme.html"><b>dev</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>developer</b></a> <br><nobr>development <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>developments</b></a> <br><a href="../post-pro_preferences.htm"><b>device</b></a> <br><a name="bms_DI"></a><a name="subkey_DI"></a><a href="../mesh_preferences.htm"><b>diagrams</b></a> <br><nobr>dialog <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../select_color_and_font.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../mesh_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>dialogs</b></a> <br><a href="../kernel/readme.html"><b>differ</b></a> <br><nobr>difference <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>different <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>differently</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>differs</b></a> <br><a href="../kernel/introduction.htm"><b>digital</b></a> <br><a href="../mesh_preferences.htm"><b>digits</b></a> <br><a href="../kernel/readme.html"><b>dir</b></a> <br><nobr>direction <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>directories <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>directory <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>disable <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>disable_flag</b></a> <br><a href="../post-pro_preferences.htm"><b>disabled</b></a> <br><nobr>disk <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>display <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>displayed <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><nobr>displaying <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>displays <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>distance</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>distinction</b></a> <br><a href="../kernel/readme.html"><b>distribute</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>distributed</b></a> <br><a href="../kernel/readme.html"><b>distribution</b></a> <br><nobr>divided <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>divides</b></a> <br><nobr><a name="bms_DO"></a><a name="subkey_DO"></a>dockable <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>document <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>does <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>doing</b></a> <br><nobr>domain <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>dominant</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>don</b></a> <br><nobr>done <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>dot</b></a> <br><a href="../kernel/using_registry.htm"><b>double</b></a> <br><nobr>down <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>doxygen</b></a> <br><a href="../kernel/readme.html"><b>doxytag</b></a> <br><a href="../kernel/readme.html"><b>doxywizard</b></a> <br><a name="bms_DR"></a><a name="subkey_DR"></a><a href="../kernel/salome_pro_desktop.htm"><b>dragging</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>dramatically</b></a> <br><a href="../kernel/readme.html"><b>drive</b></a> <br><a href="../kernel/navigating_topics.htm"><b>drop</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>dropping</b></a> <br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../dump_study.htm"><b>dump</b></a> <br><a href="../kernel/readme.html"><b>dumpversion</b></a> <br><a name="bms_DY"></a><a name="subkey_DY"></a><a href="../introduction_to_gui.htm"><b>dynamic</b></a> <br><nobr>dynamically <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_E"></a><a name="subkey_E{"></a>e <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_EA"></a><a name="subkey_EA"></a><a href="../viewers.htm"><b>ease</b></a> <br><a href="../kernel/introduction.htm"><b>easier</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easily</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easy</b></a> <br><a name="bms_EC"></a><a name="subkey_EC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>economically</b></a> <br><a name="bms_ED"></a><a name="subkey_ED"></a><a href="../mesh_preferences.htm"><b>edges</b></a> <br><nobr>edit <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> </nobr><br><nobr>editing <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><a href="../setting_preferences.htm"><b>editor</b></a> <br><a name="bms_EF"></a><a name="subkey_EF"></a><a href="../kernel/introduction.htm"><b>efficient</b></a> <br><a name="bms_EG"></a><a name="subkey_EG"></a><a href="../kernel/readme.html"><b>egrep</b></a> <br><nobr><a name="bms_EI"></a><a name="subkey_EI"></a>either <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_EL"></a><a name="subkey_EL"></a><a href="../kernel/introduction.htm"><b>electrical</b></a> <br><a href="../kernel/introduction.htm"><b>electronic</b></a> <br><a href="../kernel/introduction.htm"><b>element</b></a> <br><a href="../mesh_preferences.htm"><b>elements</b></a> <br><nobr><a name="bms_EM"></a><a name="subkey_EM"></a>empty <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> </nobr><br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../kernel/setting_preferences.htm"><b>enable</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>enables</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>encouraging</b></a> <br><nobr>end <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>enforcing</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>engine</b></a> <br><a href="../kernel/readme.html"><b>enough</b></a> <br><a href="../kernel/introduction.htm"><b>ensure</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>ensuring</b></a> <br><nobr>enter <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>entered</b></a> <br><a href="../mesh_preferences.htm"><b>entity</b></a> <br><nobr>entry <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>env</b></a> <br><a href="../kernel/readme.html"><b>env_</b></a> <br><a href="../kernel/readme.html"><b>env_for_launch</b></a> <br><a href="../kernel/readme.html"><b>env_products</b></a> <br><a href="../kernel/readme.html"><b>env_vtk</b></a> <br><nobr>environment <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> </nobr><br><nobr>environments <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_EQ"></a><a name="subkey_EQ"></a><a href="../kernel/readme.html"><b>equal</b></a> <br><a href="../kernel/introduction.htm"><b>equipment</b></a> <br><a name="bms_ER"></a><a name="subkey_ER"></a><a href="../kernel/readme.html"><b>error</b></a> <br><nobr><a name="bms_ET"></a><a name="subkey_ET"></a>etc <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_EV"></a><a name="subkey_EV"></a>even <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>ever</b></a> <br><nobr>every <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>everything</b></a> <br><a href="../kernel/introduction.htm"><b>evolutions</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>evolve</b></a> <br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../kernel/running_salome_pro.htm"><b>ex</b></a> <br><a href="../kernel/readme.html"><b>exact</b></a> <br><a href="../kernel/readme.html"><b>exactly</b></a> <br><a href="../kernel/readme.html"><b>examle</b></a> <br><nobr>example <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>exception</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exchanges</b></a> <br><nobr>execution <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>exist</b></a> <br><a href="../kernel/readme.html"><b>existence</b></a> <br><nobr>existing <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>exists</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>expandability</b></a> <br><a href="../kernel/navigating_topics.htm"><b>expanding</b></a> <br><a href="../kernel/introduction.htm"><b>expectations</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exploits</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>explorer</b></a> <br><a href="../kernel/introduction.htm"><b>export</b></a> <br><a href="../viewers.htm"><b>exports</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exposes</b></a> <br><a href="../kernel/setting_preferences.htm"><b>extended</b></a> <br><a href="../kernel/saving_a_study.htm"><b>extensions</b></a> <br><a href="../viewers.htm"><b>exterior</b></a> <br><a href="../kernel/setting_preferences.htm"><b>external</b></a> <br><a href="../kernel/readme.html"><b>extracting</b></a> <br><a href="../kernel/introduction.htm"><b>extremely</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_E"></a><a name="subkey_E{"></a>e <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_EA"></a><a name="subkey_EA"></a><a href="../kernel/introduction.htm"><b>easier</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easily</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easy</b></a> <br><a name="bms_EC"></a><a name="subkey_EC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>economically</b></a> <br><a name="bms_ED"></a><a name="subkey_ED"></a><a href="../mesh_preferences.htm"><b>edges</b></a> <br><nobr>edit <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>editable</b></a> <br><nobr>editing <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>edition</b></a> <br><a href="../setting_preferences.htm"><b>editor</b></a> <br><a name="bms_EF"></a><a name="subkey_EF"></a><a href="../kernel/introduction.htm"><b>efficient</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-\r
-\r
-<a name="bm_F"></a><a name="subkey_F{"></a><a href="../kernel/readme.html"><b>f</b></a> <br><nobr><a name="bms_FA"></a><a name="subkey_FA"></a>face <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>faces</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>facilitated</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>facilitates</b></a> <br><nobr>fact <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>factory</b></a> <br><a href="../kernel/readme.html"><b>fail</b></a> <br><a href="../kernel/readme.html"><b>fails</b></a> <br><a href="../kernel/readme.html"><b>false</b></a> <br><a href="../viewers.htm"><b>fast</b></a> <br><a name="bms_FE"></a><a name="subkey_FE"></a><a href="../kernel/readme.html"><b>feature</b></a> <br><nobr>features <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>fields</b></a> <br><a href="../kernel/readme.html"><b>fig</b></a> <br><nobr>figure <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><nobr>file <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../setting_preferences.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><nobr>files <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>fill</b></a> <br><nobr>find <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>find_in_path</b></a> <br><a href="../kernel/readme.html"><b>finds</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>finely</b></a> <br><nobr>finish <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>finishes</b></a> <br><a href="../kernel/introduction.htm"><b>finite</b></a> <br><nobr>first <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>fit</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>five</b></a> <br><a name="bms_FL"></a><a name="subkey_FL"></a><a href="../kernel/readme.html"><b>flag</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>flexibility</b></a> <br><nobr>flexible <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a name="bms_FO"></a><a name="subkey_FO"></a><a href="../kernel/navigating_topics.htm"><b>focus</b></a> <br><nobr>folder <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>follow <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> </nobr><br><nobr>following <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../geom_preferences.htm"><b>8</b></a> <a href="../viewers.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/setting_preferences.htm"><b>13</b></a> <a href="../kernel/saving_a_study.htm"><b>14</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>15</b></a> </nobr><br><nobr>font <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>forget</b></a> <br><nobr>format <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>formats</b></a> <br><nobr>four <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a name="bms_FR"></a><a name="subkey_FR"></a><a href="../kernel/readme.html"><b>frame</b></a> <br><nobr>framework <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>free</b></a> <br><a href="../kernel/introduction.htm"><b>friendly</b></a> <br><a href="../viewers.htm"><b>front</b></a> <br><nobr><a name="bms_FU"></a><a name="subkey_FU"></a>full <a href="../viewers.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><nobr>function <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>function_name</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>functional</b></a> <br><nobr>functionality <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>functioning</b></a> <br><a href="../kernel/introduction.htm"><b>functionnalities</b></a> <br><nobr>functions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>fundamental</b></a> <br><a href="../kernel/readme.html"><b>further</b></a> <br>\r
-<br><br>\r
-<nobr><a name="bm_G"></a><a name="subkey_G{"></a>g <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a name="bms_GC"></a><a name="subkey_GC"></a><a href="../kernel/readme.html"><b>gcc</b></a> <br><nobr><a name="bms_GE"></a><a name="subkey_GE"></a>general <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>generate</b></a> <br><nobr>generated <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generates <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>generator <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>generators</b></a> <br><nobr>generic <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>geom <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> </nobr><br><nobr>geometrical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../geom_preferences.htm"><b>geometry</b></a> <br><nobr>get <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>getting <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_GI"></a><a name="subkey_GI"></a>give <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>given <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>gives <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../viewers.htm"><b>gl</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>glossary</b></a> <br><nobr><a name="bms_GO"></a><a name="subkey_GO"></a>go <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_GR"></a><a name="subkey_GR"></a>graph <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>graphical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><nobr>graphs <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>graphviz</b></a> <br><a href="../viewers.htm"><b>greater</b></a> <br><a href="../kernel/setting_preferences.htm"><b>greek</b></a> <br><a href="../kernel/readme.html"><b>grep</b></a> <br><a href="../kernel/setting_preferences.htm"><b>grouped</b></a> <br><nobr><a name="bms_GU"></a><a name="subkey_GU"></a>gui <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> </nobr><br>\r
+<a name="bms_EG"></a><a name="subkey_EG"></a><a href="../kernel/readme.html"><b>egrep</b></a> <br><nobr><a name="bms_EI"></a><a name="subkey_EI"></a>either <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a name="bms_EL"></a><a name="subkey_EL"></a><a href="../kernel/introduction.htm"><b>electrical</b></a> <br><a href="../kernel/introduction.htm"><b>electronic</b></a> <br><nobr>element <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>elements</b></a> <br><nobr><a name="bms_EM"></a><a name="subkey_EM"></a>empty <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> </nobr><br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../kernel/setting_preferences.htm"><b>enable</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>enables</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>encouraging</b></a> <br><nobr>end <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>enforcing</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>engine</b></a> <br><a href="../kernel/readme.html"><b>enough</b></a> <br><a href="../kernel/introduction.htm"><b>ensure</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>ensuring</b></a> <br><nobr>enter <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>entered</b></a> <br><a href="../mesh_preferences.htm"><b>entity</b></a> <br><nobr>entry <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>env</b></a> <br><a href="../kernel/readme.html"><b>env_</b></a> <br><a href="../kernel/readme.html"><b>env_for_launch</b></a> <br><a href="../kernel/readme.html"><b>env_products</b></a> <br><a href="../kernel/readme.html"><b>env_vtk</b></a> <br><nobr>environment <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../introduction_to_gui.htm"><b>6</b></a> </nobr><br><nobr>environments <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_EQ"></a><a name="subkey_EQ"></a><a href="../kernel/readme.html"><b>equal</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>equally</b></a> <br><a href="../kernel/introduction.htm"><b>equipment</b></a> <br><nobr><a name="bms_ER"></a><a name="subkey_ER"></a>error <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ET"></a><a name="subkey_ET"></a>etc <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_EV"></a><a name="subkey_EV"></a>even <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>ever</b></a> <br><nobr>every <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>everything</b></a> <br><a href="../kernel/introduction.htm"><b>evolutions</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>evolve</b></a> <br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../kernel/running_salome_pro.htm"><b>ex</b></a> <br><a href="../kernel/readme.html"><b>exact</b></a> <br><nobr>exactly <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>examle</b></a> <br><nobr>example <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>exceeds</b></a> <br><a href="../introduction_to_gui.htm"><b>exception</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exchanges</b></a> <br><nobr>execution <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>exist</b></a> <br><a href="../kernel/readme.html"><b>existence</b></a> <br><nobr>existing <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>exists</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>expandability</b></a> <br><a href="../kernel/navigating_topics.htm"><b>expanding</b></a> <br><a href="../kernel/introduction.htm"><b>expectations</b></a> <br><a href="../dump_study.htm"><b>expert</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exploits</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>explorer</b></a> <br><nobr>export <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>exposes</b></a> <br><a href="../select_color_and_font.htm"><b>extended</b></a> <br><a href="../kernel/saving_a_study.htm"><b>extensions</b></a> <br><a href="../kernel/setting_preferences.htm"><b>external</b></a> <br><a href="../kernel/readme.html"><b>extracting</b></a> <br><a href="../kernel/introduction.htm"><b>extremely</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_H"></a><a name="subkey_H{"></a>h <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr><a name="bms_HA"></a><a name="subkey_HA"></a>hand <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>handle</b></a> <br><a href="../kernel/introduction.htm"><b>handled</b></a> <br><a href="../kernel/readme.html"><b>handler</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>handling</b></a> <br><a href="../kernel/readme.html"><b>happydoc</b></a> <br><nobr>hard <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>hasn</b></a> <br><a href="../kernel/setting_preferences.htm"><b>haven</b></a> <br><nobr>having <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_HD"></a><a name="subkey_HD"></a>hdf <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>hdf5</b></a> <br><a href="../kernel/readme.html"><b>hdf5home</b></a> <br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../kernel/introduction.htm"><b>healing</b></a> <br><a href="../kernel/using_registry.htm"><b>hello</b></a> <br><nobr>help <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> </nobr><br><a href="../kernel/readme.html"><b>helpful</b></a> <br><nobr>helps <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>here <a href="../kernel/readme.html"><b>1</b></a> <a href="../supervisor_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>heterogeneous</b></a> <br><nobr><a name="bms_HI"></a><a name="subkey_HI"></a>hide <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../viewers.htm"><b>hides</b></a> <br><nobr>hiding <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>high</b></a> <br><a href="../kernel/readme.html"><b>higher</b></a> <br><nobr>highlighted <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>hints</b></a> <br><a href="../kernel/using_registry.htm"><b>history</b></a> <br><a name="bms_HO"></a><a name="subkey_HO"></a><a href="../kernel/running_salome_pro.htm"><b>home</b></a> <br><nobr>horizontal <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>horizontally</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>host</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspot</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspots</b></a> <br><nobr>how <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_HP"></a><a name="subkey_HP"></a><a href="../kernel/readme.html"><b>hpp</b></a> <br><nobr><a name="bms_HT"></a><a name="subkey_HT"></a>html <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a name="bms_HX"></a><a name="subkey_HX"></a><a href="../kernel/readme.html"><b>hxx</b></a> <br>\r
+<a name="bm_F"></a><a name="subkey_F{"></a><a href="../kernel/readme.html"><b>f</b></a> <br><nobr><a name="bms_FA"></a><a name="subkey_FA"></a>face <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>faces <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>facilitated</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>facilitates</b></a> <br><nobr>fact <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>factory</b></a> <br><a href="../kernel/readme.html"><b>fail</b></a> <br><a href="../kernel/readme.html"><b>fails</b></a> <br><a href="../kernel/readme.html"><b>false</b></a> <br><a href="../post-pro_preferences.htm"><b>families</b></a> <br><nobr><a name="bms_FE"></a><a name="subkey_FE"></a>feature <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>features <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> </nobr><br><nobr>fields <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>fig</b></a> <br><a href="../kernel/readme.html"><b>figure</b></a> <br><a href="../geom_preferences.htm"><b>figures</b></a> <br><nobr>file <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../dump_study.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>files <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>fill</b></a> <br><nobr>find <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>find_in_path</b></a> <br><a href="../kernel/readme.html"><b>finds</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>finely</b></a> <br><nobr>finish <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>finishes</b></a> <br><a href="../kernel/introduction.htm"><b>finite</b></a> <br><nobr>first <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>fit</b></a> <br><a name="bms_FL"></a><a name="subkey_FL"></a><a href="../kernel/readme.html"><b>flag</b></a> <br><nobr>flexibility <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>flexible <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> </nobr><br><a name="bms_FO"></a><a name="subkey_FO"></a><a href="../post-pro_preferences.htm"><b>focal</b></a> <br><a href="../kernel/navigating_topics.htm"><b>focus</b></a> <br><nobr>folder <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>follow <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>following <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../dump_study.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><nobr>font <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>fonts</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>forget</b></a> <br><nobr>format <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>formats</b></a> <br><a href="../post-pro_preferences.htm"><b>forth</b></a> <br><a name="bms_FP"></a><a name="subkey_FP"></a><a href="../post-pro_preferences.htm"><b>fps</b></a> <br><a name="bms_FR"></a><a name="subkey_FR"></a><a href="../kernel/readme.html"><b>frame</b></a> <br><a href="../post-pro_preferences.htm"><b>frames</b></a> <br><nobr>framework <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>free <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>friendly</b></a> <br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../dump_study.htm"><b>fulfill</b></a> <br><nobr>full <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>fully</b></a> <br><nobr>function <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>function_name</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>functional</b></a> <br><a href="../kernel/introduction.htm"><b>functionalities</b></a> <br><nobr>functionality <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>functioning</b></a> <br><nobr>functions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>fundamental</b></a> <br><a href="../kernel/readme.html"><b>further</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_I"></a><a name="subkey_I{"></a>i <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_IA"></a><a name="subkey_IA"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>iapp</b></a> <br><nobr><a name="bms_IC"></a><a name="subkey_IC"></a>icon <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>icons <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a name="bms_ID"></a><a name="subkey_ID"></a><a href="../kernel/readme.html"><b>idea</b></a> <br><nobr>identification <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>identify</b></a> <br><nobr>idl <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_IE"></a><a name="subkey_IE"></a><a href="../kernel/setting_preferences.htm"><b>ie</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_G"></a><a name="subkey_G{"></a>g <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a name="bms_GA"></a><a name="subkey_GA"></a><a href="../mesh_preferences.htm"><b>gaps</b></a> <br><nobr>gauss <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_GC"></a><a name="subkey_GC"></a><a href="../kernel/readme.html"><b>gcc</b></a> <br><nobr><a name="bms_GE"></a><a name="subkey_GE"></a>general <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>generate <a href="../dump_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generated <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>generates <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>generator <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>generators</b></a> <br><nobr>generic <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>geom <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>geometrical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> </nobr><br><nobr>geometry <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>get <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>getting <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><a name="bms_IG"></a><a name="subkey_IG"></a><a href="../kernel/introduction.htm"><b>iges</b></a> <br><a href="../kernel/readme.html"><b>ignored</b></a> <br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../viewers.htm"><b>image</b></a> <br><a href="../kernel/introduction.htm"><b>images</b></a> <br><a href="../kernel/navigating_topics.htm"><b>immediately</b></a> <br><nobr>implement <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>implementation <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>implementing</b></a> <br><a href="../kernel/readme.html"><b>implied</b></a> <br><nobr>import <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>important</b></a> <br><nobr>imported <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>imposed</b></a> <br><a href="../kernel/readme.html"><b>impossible</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>improves</b></a> <br><a name="bms_IN"></a><a name="subkey_IN"></a><a href="../kernel/readme.html"><b>inc</b></a> <br><a href="../kernel/readme.html"><b>included</b></a> <br><nobr>includes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>including <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>inclusive</b></a> <br><a href="../kernel/introduction.htm"><b>increasingly</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>incrementally</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independence</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independent</b></a> <br><a href="../kernel/using_object_browser.htm"><b>index</b></a> <br><nobr>indicate <a href="../kernel/saving_a_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>information <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../geom_preferences.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>initial <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>input <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>insert</b></a> <br><nobr>inside <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>inspect</b></a> <br><a href="../kernel/readme.html"><b>instalation</b></a> <br><nobr>install <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>install_binary</b></a> <br><a href="../kernel/readme.html"><b>install_disk_space</b></a> <br><a href="../kernel/readme.html"><b>install_source</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_caption</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_copyright</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_license_info</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_root_directory</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_version</b></a> <br><nobr>installation <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installation_mode</b></a> <br><a href="../kernel/readme.html"><b>installation_script_name</b></a> <br><a href="../kernel/readme.html"><b>installdiskspace</b></a> <br><nobr>installed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installing</b></a> <br><a href="../kernel/readme.html"><b>installwizard_root_directory</b></a> <br><a href="../kernel/readme.html"><b>installworkxxxxx</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>instances</b></a> <br><a href="../kernel/readme.html"><b>instead</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>instrumental</b></a> <br><a href="../viewers.htm"><b>instruments</b></a> <br><a href="../kernel/readme.html"><b>integer</b></a> <br><a href="../mesh_preferences.htm"><b>integers</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>integrate</b></a> <br><nobr>integrated <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>integration <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>intend</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>interaction</b></a> <br><nobr>interface <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>interfaces <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>internal <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>internet</b></a> <br><a href="../kernel/introduction.htm"><b>interoperability</b></a> <br><a href="../kernel/using_object_browser.htm"><b>interoperable</b></a> <br><nobr>interpreter <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>interval</b></a> <br><a href="../kernel/readme.html"><b>introduced</b></a> <br><nobr>introduction <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>invalid</b></a> <br><a href="../kernel/readme.html"><b>invoke</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>invoked</b></a> <br><nobr><a name="bms_IO"></a><a name="subkey_IO"></a>ior <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_IS"></a><a name="subkey_IS"></a><a href="../kernel/setting_preferences.htm"><b>isolines</b></a> <br><a href="../kernel/readme.html"><b>ispython</b></a> <br><a name="bms_IT"></a><a name="subkey_IT"></a><a href="../kernel/getting_properties_of_the_study.htm"><b>item</b></a> <br><nobr>items <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>itself</b></a> <br>\r
+<a name="bms_GI"></a><a name="subkey_GI"></a><a href="../kernel/readme.html"><b>give</b></a> <br><nobr>given <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><nobr>gives <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../post-pro_preferences.htm"><b>gl</b></a> <br><a href="../post-pro_preferences.htm"><b>global</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>glossary</b></a> <br><nobr><a name="bms_GO"></a><a name="subkey_GO"></a>go <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a name="bms_GR"></a><a name="subkey_GR"></a><a href="../kernel/setting_preferences.htm"><b>graph</b></a> <br><a href="../post-pro_preferences.htm"><b>graphic</b></a> <br><nobr>graphical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><nobr>graphs <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>graphviz</b></a> <br><a href="../dump_study.htm"><b>great</b></a> <br><a href="../post-pro_preferences.htm"><b>greater</b></a> <br><a href="../dump_study.htm"><b>greatly</b></a> <br><a href="../select_color_and_font.htm"><b>greek</b></a> <br><a href="../kernel/readme.html"><b>grep</b></a> <br><a href="../select_color_and_font.htm"><b>grouped</b></a> <br><nobr>groups <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_GU"></a><a name="subkey_GU"></a>gui <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../introduction_to_gui.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_J"></a><a name="subkey_JA"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>java</b></a> <br><a name="bms_JP"></a><a name="subkey_JP"></a><a href="../viewers.htm"><b>jpeg</b></a> <br><a href="../viewers.htm"><b>jpg</b></a> <br><nobr><a name="bms_JU"></a><a name="subkey_JU"></a>just <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br>\r
+<nobr><a name="bm_H"></a><a name="subkey_H{"></a>h <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a name="bms_HA"></a><a name="subkey_HA"></a><a href="../post-pro_preferences.htm"><b>half</b></a> <br><nobr>hand <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>handle</b></a> <br><a href="../kernel/introduction.htm"><b>handled</b></a> <br><a href="../kernel/readme.html"><b>handler</b></a> <br><a href="../introduction_to_gui.htm"><b>handling</b></a> <br><a href="../kernel/readme.html"><b>happydoc</b></a> <br><nobr>hard <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>hasn</b></a> <br><a href="../kernel/setting_preferences.htm"><b>haven</b></a> <br><nobr>having <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_HD"></a><a name="subkey_HD"></a>hdf <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>hdf5</b></a> <br><a href="../kernel/readme.html"><b>hdf5home</b></a> <br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../kernel/introduction.htm"><b>healing</b></a> <br><nobr>height <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>hello</b></a> <br><nobr>help <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>helpful</b></a> <br><nobr>helps <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>here <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>heterogeneous</b></a> <br><nobr><a name="bms_HI"></a><a name="subkey_HI"></a>hide <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>hiding</b></a> <br><a href="../kernel/introduction.htm"><b>high</b></a> <br><a href="../kernel/readme.html"><b>higher</b></a> <br><a href="../mesh_preferences.htm"><b>highlight</b></a> <br><nobr>highlighted <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>hints</b></a> <br><a href="../kernel/using_registry.htm"><b>history</b></a> <br><a name="bms_HO"></a><a name="subkey_HO"></a><a href="../kernel/running_salome_pro.htm"><b>home</b></a> <br><nobr>horizontal <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>horizontally</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>host</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspot</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspots</b></a> <br><nobr>how <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_HP"></a><a name="subkey_HP"></a><a href="../kernel/readme.html"><b>hpp</b></a> <br><nobr><a name="bms_HT"></a><a name="subkey_HT"></a>html <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a name="bms_HX"></a><a name="subkey_HX"></a><a href="../kernel/readme.html"><b>hxx</b></a> <br>\r
<br><br>\r
-<a name="bm_K"></a><a name="subkey_K{"></a><a href="../kernel/running_salome_pro.htm"><b>k</b></a> <br><a name="bms_KB"></a><a name="subkey_KB"></a><a href="../kernel/readme.html"><b>kbytes</b></a> <br><nobr><a name="bms_KE"></a><a name="subkey_KE"></a>kernel <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>key</b></a> <br><a name="bms_KI"></a><a name="subkey_KI"></a><a href="../kernel/running_salome_pro.htm"><b>kill</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>killall</b></a> <br><nobr>kind <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a name="bms_KN"></a><a name="subkey_KN"></a><a href="../kernel/using_catalog_generator.htm"><b>know</b></a> <br>\r
-<br><br>\r
-<a name="bm_L"></a><a name="subkey_L{"></a><a href="../kernel/running_salome_pro.htm"><b>l</b></a> <br><nobr><a name="bms_LA"></a><a name="subkey_LA"></a>labels <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>language</b></a> <br><a href="../kernel/readme.html"><b>larger</b></a> <br><nobr>last <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>latin</b></a> <br><nobr>launch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>launched <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>launches</b></a> <br><nobr>launching <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>layer</b></a> <br><a href="../kernel/saving_a_study.htm"><b>layout</b></a> <br><a name="bms_LD"></a><a name="subkey_LD"></a><a href="../kernel/readme.html"><b>ld_library_path</b></a> <br><a name="bms_LE"></a><a name="subkey_LE"></a><a href="../kernel/saving_a_study.htm"><b>lead</b></a> <br><a href="../kernel/readme.html"><b>learn</b></a> <br><a href="../kernel/introduction.htm"><b>learning</b></a> <br><nobr>left <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>legend <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>level <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_LI"></a><a name="subkey_LI"></a><a href="../kernel/readme.html"><b>lib</b></a> <br><a href="../kernel/readme.html"><b>libcosnotify4</b></a> <br><a href="../kernel/readme.html"><b>libhdf5</b></a> <br><a href="../kernel/readme.html"><b>libmed</b></a> <br><a href="../kernel/readme.html"><b>libomniorb4</b></a> <br><a href="../kernel/readme.html"><b>libqwt</b></a> <br><a href="../kernel/readme.html"><b>libraries</b></a> <br><nobr>library <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>libstdplugin</b></a> <br><a href="../kernel/readme.html"><b>libtcl8</b></a> <br><a href="../kernel/readme.html"><b>libtk8</b></a> <br><a href="../kernel/readme.html"><b>libvtkcommon</b></a> <br><a href="../kernel/readme.html"><b>license</b></a> <br><nobr>like <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>likely</b></a> <br><a href="../post-pro_preferences.htm"><b>limits</b></a> <br><nobr>line <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>linear</b></a> <br><nobr>lines <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>link <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> </nobr><br><nobr>links <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>linux <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>list <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>list_of_prerequisites</b></a> <br><nobr><a name="bms_LL"></a><a name="subkey_LL"></a>ll <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_LO"></a><a name="subkey_LO"></a>load <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>loaded <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>loading <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>locate</b></a> <br><nobr>located <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>location</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>lock</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>locked</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>log</b></a> <br><nobr>logarithmic <a href="../viewers.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>logger</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>long</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>look</b></a> <br><nobr>looks <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>lost</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>lot</b></a> <br><nobr>lower <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_I"></a><a name="subkey_I{"></a>i <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_IC"></a><a name="subkey_IC"></a>icon <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>icons <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a name="bms_ID"></a><a name="subkey_ID"></a><a href="../kernel/readme.html"><b>idea</b></a> <br><nobr>identification <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>identify</b></a> <br><nobr>idl <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_IE"></a><a name="subkey_IE"></a><a href="../kernel/setting_preferences.htm"><b>ie</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><a name="bms_IG"></a><a name="subkey_IG"></a><a href="../kernel/introduction.htm"><b>iges</b></a> <br><a href="../kernel/readme.html"><b>ignored</b></a> <br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../post-pro_preferences.htm"><b>image</b></a> <br><nobr>images <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>immediately</b></a> <br><nobr>implement <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>implementation <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>implementing</b></a> <br><a href="../kernel/readme.html"><b>implied</b></a> <br><nobr>import <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>important</b></a> <br><nobr>imported <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>imposed</b></a> <br><a href="../kernel/readme.html"><b>impossible</b></a> <br><a href="../introduction_to_gui.htm"><b>improves</b></a> <br><a name="bms_IN"></a><a name="subkey_IN"></a><a href="../kernel/readme.html"><b>inc</b></a> <br><a href="../kernel/readme.html"><b>included</b></a> <br><nobr>includes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>including <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>inclusive</b></a> <br><a href="../post-pro_preferences.htm"><b>increase</b></a> <br><nobr>increases <a href="../dump_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>increasingly</b></a> <br><nobr>increment <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>incrementally</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independence</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independent</b></a> <br><a href="../kernel/using_object_browser.htm"><b>index</b></a> <br><a href="../mesh_preferences.htm"><b>indexing</b></a> <br><nobr>indicate <a href="../kernel/saving_a_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>information <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><a href="../kernel/getting_started2.htm"><b>initial</b></a> <br><nobr>input <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>insert</b></a> <br><nobr>inside <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>inspect</b></a> <br><a href="../post-pro_preferences.htm"><b>inspected</b></a> <br><a href="../kernel/readme.html"><b>instalation</b></a> <br><nobr>install <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>install_binary</b></a> <br><a href="../kernel/readme.html"><b>install_disk_space</b></a> <br><a href="../kernel/readme.html"><b>install_source</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_caption</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_copyright</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_license_info</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_root_directory</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_version</b></a> <br><nobr>installation <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installation_mode</b></a> <br><a href="../kernel/readme.html"><b>installation_script_name</b></a> <br><a href="../kernel/readme.html"><b>installdiskspace</b></a> <br><nobr>installed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installing</b></a> <br><a href="../kernel/readme.html"><b>installwizard_root_directory</b></a> <br><a href="../kernel/readme.html"><b>installworkxxxxx</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>instances</b></a> <br><a href="../kernel/readme.html"><b>instead</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>instrumental</b></a> <br><a href="../kernel/readme.html"><b>integer</b></a> <br><a href="../mesh_preferences.htm"><b>integers</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>integrate</b></a> <br><nobr>integrated <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>integrates</b></a> <br><nobr>integration <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>intend</b></a> <br><a href="../introduction_to_gui.htm"><b>interaction</b></a> <br><nobr>interface <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>interfaces <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>interior</b></a> <br><nobr>internal <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>internet</b></a> <br><a href="../kernel/introduction.htm"><b>interoperability</b></a> <br><a href="../kernel/using_object_browser.htm"><b>interoperable</b></a> <br><nobr>interpreter <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>interval <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>introduced</b></a> <br><nobr>introduction <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>invalid</b></a> <br><a href="../kernel/readme.html"><b>invoke</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>invoked</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-\r
-\r
-<a name="bm_M"></a><a name="subkey_M{"></a><a href="../kernel/running_salome_pro.htm"><b>m</b></a> <br><nobr><a name="bms_MA"></a><a name="subkey_MA"></a>machine <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>machines</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>macintosh</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>macro</b></a> <br><nobr>main <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/readme.html"><b>major</b></a> <br><nobr>make <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>make_dir</b></a> <br><a href="../kernel/readme.html"><b>make_env</b></a> <br><a href="../kernel/introduction.htm"><b>makes</b></a> <br><nobr>manage <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>management <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>mandrake</b></a> <br><a href="../kernel/readme.html"><b>mandrake10</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>manual</b></a> <br><a href="../kernel/readme.html"><b>manually</b></a> <br><a href="../kernel/setting_preferences.htm"><b>manuals</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>mapped</b></a> <br><nobr>mark <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> </nobr><br><nobr>marked <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>marker</b></a> <br><a href="../kernel/setting_preferences.htm"><b>markers</b></a> <br><a href="../kernel/introduction.htm"><b>market</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>massively</b></a> <br><a href="../kernel/readme.html"><b>master</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>matches</b></a> <br><a href="../post-pro_preferences.htm"><b>max</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>maximize</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>maximized</b></a> <br><a href="../viewers.htm"><b>maximum</b></a> <br><nobr><a name="bms_ME"></a><a name="subkey_ME"></a>means <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>mechanisms</b></a> <br><a href="../kernel/readme.html"><b>med2home</b></a> <br><a href="../kernel/introduction.htm"><b>meet</b></a> <br><a href="../viewers.htm"><b>memorize</b></a> <br><a href="../kernel/readme.html"><b>mentioned</b></a> <br><nobr>menu <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../viewers.htm"><b>9</b></a> <a href="../post-pro_preferences.htm"><b>10</b></a> <a href="../mesh_preferences.htm"><b>11</b></a> <a href="../kernel/using_registry.htm"><b>12</b></a> <a href="../kernel/using_object_browser.htm"><b>13</b></a> <a href="../kernel/using_catalog_generator.htm"><b>14</b></a> <a href="../kernel/setting_preferences.htm"><b>15</b></a> <a href="../kernel/saving_a_study.htm"><b>16</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>17</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>menubar</b></a> <br><nobr>menus <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>mesh <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> </nobr><br><nobr>meshes <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>meshing <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>message <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> </nobr><br><nobr>messages <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../kernel/readme.html"><b>middle</b></a> <br><a href="../post-pro_preferences.htm"><b>min</b></a> <br><nobr>minimized <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>minor</b></a> <br><a href="../kernel/readme.html"><b>missed</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>mistakes</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>mix</b></a> <br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> </nobr><br><nobr>model <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>modeling <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>models <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>modern</b></a> <br><a href="../kernel/readme.html"><b>modes</b></a> <br><nobr>modification <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>modifications</b></a> <br><nobr>modify <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>modifying</b></a> <br><nobr>module <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../mesh_preferences.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><a href="../kernel/readme.html"><b>module_root_dir</b></a> <br><a href="../kernel/readme.html"><b>module_src_dir</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module1</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module2</b></a> <br><nobr>modules <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>modulus</b></a> <br><a href="../kernel/readme.html"><b>moment</b></a> <br><nobr>mouse <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>move</b></a> <br><a href="../kernel/setting_preferences.htm"><b>mozilla</b></a> <br><a name="bms_MS"></a><a name="subkey_MS"></a><a href="../kernel/readme.html"><b>msg2qm</b></a> <br><a href="../kernel/readme.html"><b>msg2qm_root</b></a> <br><a name="bms_MU"></a><a name="subkey_MU"></a><a href="../kernel/readme.html"><b>much</b></a> <br><nobr>multi <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>multifile <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>multiple</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>multitier</b></a> <br><nobr>must <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br>\r
+<nobr><a name="bms_IO"></a><a name="subkey_IO"></a>ior <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_IS"></a><a name="subkey_IS"></a><a href="../kernel/setting_preferences.htm"><b>isolines</b></a> <br><a href="../kernel/readme.html"><b>ispython</b></a> <br><a name="bms_IT"></a><a name="subkey_IT"></a><a href="../kernel/getting_properties_of_the_study.htm"><b>item</b></a> <br><nobr>items <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>iterations</b></a> <br><a href="../kernel/readme.html"><b>itself</b></a> <br>\r
+<br><br>\r
+<a name="bm_J"></a><a name="subkey_JA"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>java</b></a> <br><nobr><a name="bms_JU"></a><a name="subkey_JU"></a>just <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_K"></a><a name="subkey_K{"></a><a href="../kernel/running_salome_pro.htm"><b>k</b></a> <br><a name="bms_KB"></a><a name="subkey_KB"></a><a href="../kernel/readme.html"><b>kbytes</b></a> <br><nobr><a name="bms_KE"></a><a name="subkey_KE"></a>kernel <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>key <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>keyboard</b></a> <br><a name="bms_KI"></a><a name="subkey_KI"></a><a href="../kernel/running_salome_pro.htm"><b>kill</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>killall</b></a> <br><nobr>kind <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a name="bms_KN"></a><a name="subkey_KN"></a><a href="../kernel/using_catalog_generator.htm"><b>know</b></a> <br><a href="../dump_study.htm"><b>knowledge</b></a> <br>\r
<br><br>\r
-<a name="bm_N"></a><a name="subkey_N{"></a><a href="../kernel/readme.html"><b>n</b></a> <br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>named <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>names</b></a> <br><a href="../kernel/readme.html"><b>native</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>natural</b></a> <br><a href="../kernel/editing_studies.htm"><b>nature</b></a> <br><nobr>navigate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>navigating</b></a> <br><nobr>navigation <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>navigator</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>need <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>netgen</b></a> <br><a href="../kernel/readme.html"><b>netgenroot</b></a> <br><nobr>netscape <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../kernel/readme.html"><b>newer</b></a> <br><nobr>next <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a name="bms_NF"></a><a name="subkey_NF"></a><a href="../kernel/readme.html"><b>nf</b></a> <br><nobr><a name="bms_NO"></a><a name="subkey_NO"></a>nodes <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>normal</b></a> <br><nobr>note <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>notes</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>noticeably</b></a> <br><a href="../kernel/readme.html"><b>notifd</b></a> <br><a href="../setting_preferences.htm"><b>notification</b></a> <br><a href="../kernel/getting_started2.htm"><b>notion</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>now</b></a> <br><a name="bms_NU"></a><a name="subkey_NU"></a><a href="../kernel/readme.html"><b>null</b></a> <br><nobr>number <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>numbers <a href="../kernel/readme.html"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>numeric <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>numerical <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>numerous</b></a> <br>\r
+<a name="bm_L"></a><a name="subkey_L{"></a><a href="../kernel/running_salome_pro.htm"><b>l</b></a> <br><nobr><a name="bms_LA"></a><a name="subkey_LA"></a>labels <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>language</b></a> <br><a href="../kernel/readme.html"><b>larger</b></a> <br><a href="../post-pro_preferences.htm"><b>largest</b></a> <br><nobr>last <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>latest</b></a> <br><a href="../select_color_and_font.htm"><b>latin</b></a> <br><nobr>launch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>launched <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>launches</b></a> <br><nobr>launching <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>layer</b></a> <br><nobr>layout <a href="../dump_study.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_LD"></a><a name="subkey_LD"></a><a href="../kernel/readme.html"><b>ld_library_path</b></a> <br><a name="bms_LE"></a><a name="subkey_LE"></a><a href="../kernel/saving_a_study.htm"><b>lead</b></a> <br><a href="../kernel/readme.html"><b>learn</b></a> <br><a href="../kernel/introduction.htm"><b>learning</b></a> <br><nobr>left <a href="../kernel/readme.html"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>legend</b></a> <br><a href="../post-pro_preferences.htm"><b>length</b></a> <br><a href="../post-pro_preferences.htm"><b>less</b></a> <br><nobr>level <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a name="bms_LI"></a><a name="subkey_LI"></a><a href="../kernel/readme.html"><b>lib</b></a> <br><a href="../kernel/readme.html"><b>libcosnotify4</b></a> <br><a href="../kernel/readme.html"><b>libhdf5</b></a> <br><a href="../kernel/readme.html"><b>libmed</b></a> <br><a href="../kernel/readme.html"><b>libomniorb4</b></a> <br><a href="../kernel/readme.html"><b>libqwt</b></a> <br><a href="../kernel/readme.html"><b>libraries</b></a> <br><nobr>library <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>libstdplugin</b></a> <br><a href="../kernel/readme.html"><b>libtcl8</b></a> <br><a href="../kernel/readme.html"><b>libtk8</b></a> <br><a href="../kernel/readme.html"><b>libvtkcommon</b></a> <br><a href="../kernel/readme.html"><b>license</b></a> <br><nobr>like <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>likely</b></a> <br><a href="../post-pro_preferences.htm"><b>limitation</b></a> <br><a href="../post-pro_preferences.htm"><b>limits</b></a> <br><nobr>line <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>linear</b></a> <br><nobr>lines <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>link <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>links <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>linux <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>list <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>list_of_prerequisites</b></a> <br><a href="../post-pro_preferences.htm"><b>listed</b></a> <br><a name="bms_LL"></a><a name="subkey_LL"></a><a href="../kernel/setting_preferences.htm"><b>ll</b></a> <br><nobr><a name="bms_LO"></a><a name="subkey_LO"></a>load <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>loaded <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>loading <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>local</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>locate</b></a> <br><nobr>located <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>location <a href="../dump_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>lock</b></a> <br><nobr>locked <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>locking</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>log</b></a> <br><nobr>logarithmic <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>logger</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>long</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>look</b></a> <br><nobr>lookout <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>looks <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>lost</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>lot</b></a> <br><nobr>lower <a href="../kernel/readme.html"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_O"></a><a name="subkey_OB"></a>object <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>objectives</b></a> <br><nobr>objects <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>obligatory</b></a> <br><a href="../viewers.htm"><b>obtained</b></a> <br><nobr><a name="bms_OC"></a><a name="subkey_OC"></a>occ <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>occ_version_major</b></a> <br><a href="../kernel/readme.html"><b>occ_version_minor</b></a> <br><a href="../kernel/readme.html"><b>occupies</b></a> <br><a name="bms_OF"></a><a name="subkey_OF"></a><a href="../kernel/readme.html"><b>off</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>offered</b></a> <br><a href="../kernel/introduction.htm"><b>often</b></a> <br><nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_OM"></a><a name="subkey_OM"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>omg</b></a> <br><a href="../kernel/readme.html"><b>omit</b></a> <br><a href="../kernel/readme.html"><b>omni</b></a> <br><a href="../kernel/readme.html"><b>omninotify</b></a> <br><a href="../kernel/readme.html"><b>omniorb</b></a> <br><a href="../kernel/readme.html"><b>omniorbdir</b></a> <br><a href="../kernel/readme.html"><b>omniorbpy</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_M"></a><a name="subkey_M{"></a><a href="../kernel/running_salome_pro.htm"><b>m</b></a> <br><nobr><a name="bms_MA"></a><a name="subkey_MA"></a>machine <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>machines</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>macintosh</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>macro</b></a> <br><a href="../post-pro_preferences.htm"><b>magnification</b></a> <br><nobr>main <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><a href="../kernel/readme.html"><b>major</b></a> <br><nobr>make <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>make_dir</b></a> <br><a href="../kernel/readme.html"><b>make_env</b></a> <br><a href="../kernel/introduction.htm"><b>makes</b></a> <br><nobr>manage <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>management <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>mandrake</b></a> <br><a href="../kernel/readme.html"><b>mandrake10</b></a> <br><a href="../post-pro_preferences.htm"><b>manipulate</b></a> <br><a href="../post-pro_preferences.htm"><b>manipulator</b></a> <br><nobr>manual <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>manually</b></a> <br><a href="../kernel/setting_preferences.htm"><b>manuals</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>mapped</b></a> <br><a href="../kernel/readme.html"><b>mark</b></a> <br><a href="../kernel/readme.html"><b>marked</b></a> <br><a href="../kernel/setting_preferences.htm"><b>marker</b></a> <br><a href="../kernel/setting_preferences.htm"><b>markers</b></a> <br><a href="../kernel/introduction.htm"><b>market</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>massively</b></a> <br><a href="../kernel/readme.html"><b>master</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>matches</b></a> <br><a href="../post-pro_preferences.htm"><b>matrix</b></a> <br><a href="../post-pro_preferences.htm"><b>max</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>maximize</b></a> <br><a href="../post-pro_preferences.htm"><b>maximum</b></a> <br><a name="bms_ME"></a><a name="subkey_ME"></a><a href="../post-pro_preferences.htm"><b>mean</b></a> <br><nobr>means <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../dump_study.htm"><b>mechanism</b></a> <br><a href="../introduction_to_gui.htm"><b>mechanisms</b></a> <br><a href="../kernel/readme.html"><b>med2home</b></a> <br><a href="../kernel/introduction.htm"><b>meet</b></a> <br><a href="../post-pro_preferences.htm"><b>memory</b></a> <br><a href="../kernel/readme.html"><b>mentioned</b></a> <br><nobr>menu <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../introduction_to_gui.htm"><b>7</b></a> <a href="../dump_study.htm"><b>8</b></a> <a href="../setting_preferences.htm"><b>9</b></a> <a href="../select_color_and_font.htm"><b>10</b></a> <a href="../post-pro_preferences.htm"><b>11</b></a> <a href="../mesh_preferences.htm"><b>12</b></a> <a href="../kernel/using_registry.htm"><b>13</b></a> <a href="../kernel/using_object_browser.htm"><b>14</b></a> <a href="../kernel/using_catalog_generator.htm"><b>15</b></a> <a href="../kernel/setting_preferences.htm"><b>16</b></a> <a href="../kernel/saving_a_study.htm"><b>17</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>18</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>menubar</b></a> <br><nobr>menus <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>mesh <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>meshes <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>meshing <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>message <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>messages <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../kernel/readme.html"><b>middle</b></a> <br><a href="../post-pro_preferences.htm"><b>min</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>minimized</b></a> <br><a href="../post-pro_preferences.htm"><b>minimum</b></a> <br><a href="../kernel/readme.html"><b>minor</b></a> <br><a href="../kernel/readme.html"><b>missed</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>mistakes</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>mix</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_ON"></a><a name="subkey_ON"></a>one <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>5</b></a> <a href="../kernel/editing_studies.htm"><b>6</b></a> <a href="../kernel/displaying_studies.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../viewers.htm"><b>9</b></a> <a href="../post-pro_preferences.htm"><b>10</b></a> <a href="../kernel/using_object_browser.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/setting_preferences.htm"><b>13</b></a> <a href="../kernel/saving_a_study.htm"><b>14</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>15</b></a> </nobr><br><nobr>ones <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>online</b></a> <br><nobr><a name="bms_OP"></a><a name="subkey_OP"></a>open <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/introduction.htm"><b>6</b></a> <a href="../kernel/getting_started2.htm"><b>7</b></a> <a href="../kernel/displaying_studies.htm"><b>8</b></a> <a href="../viewers.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> </nobr><br><a href="../kernel/readme.html"><b>opencascade</b></a> <br><nobr>opening <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>opens <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../viewers.htm"><b>operate</b></a> <br><nobr>operation <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>operations <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>optimization</b></a> <br><a href="../kernel/introduction.htm"><b>optimize</b></a> <br><a href="../kernel/readme.html"><b>optimized</b></a> <br><nobr>option <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>optional</b></a> <br><nobr>optionally <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>options <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a name="bms_OR"></a><a name="subkey_OR"></a><a href="../kernel/readme.html"><b>order</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>org</b></a> <br><nobr>orientation <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>origin <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>originality</b></a> <br><a name="bms_OS"></a><a name="subkey_OS"></a><a href="../kernel/readme.html"><b>os</b></a> <br><a href="../kernel/readme.html"><b>os_version</b></a> <br><nobr><a name="bms_OT"></a><a name="subkey_OT"></a>others <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>otherwise <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_OU"></a><a name="subkey_OU"></a><a href="../kernel/introduction.htm"><b>out</b></a> <br><a href="../mesh_preferences.htm"><b>outline</b></a> <br><nobr>output <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>outside</b></a> <br><a name="bms_OV"></a><a name="subkey_OV"></a><a href="../kernel/readme.html"><b>overloads</b></a> <br><nobr><a name="bms_OW"></a><a name="subkey_OW"></a>own <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br>\r
+<nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> </nobr><br><nobr>model <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>modeling <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>models <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>modern</b></a> <br><nobr>modes <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>modification <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>modifications</b></a> <br><nobr>modify <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>modifying</b></a> <br><nobr>module <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../mesh_preferences.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/readme.html"><b>module_root_dir</b></a> <br><a href="../kernel/readme.html"><b>module_src_dir</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module1</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module2</b></a> <br><nobr>modules <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../introduction_to_gui.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>modulus</b></a> <br><nobr>moment <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>momentarily</b></a> <br><nobr>mouse <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>move</b></a> <br><a href="../post-pro_preferences.htm"><b>movement</b></a> <br><a href="../post-pro_preferences.htm"><b>movements</b></a> <br><a href="../kernel/setting_preferences.htm"><b>mozilla</b></a> <br><a name="bms_MS"></a><a name="subkey_MS"></a><a href="../kernel/readme.html"><b>msg2qm</b></a> <br><a href="../kernel/readme.html"><b>msg2qm_root</b></a> <br><a name="bms_MU"></a><a name="subkey_MU"></a><a href="../kernel/readme.html"><b>much</b></a> <br><nobr>multi <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>multifile <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>multiple</b></a> <br><a href="../post-pro_preferences.htm"><b>multiplied</b></a> <br><a href="../post-pro_preferences.htm"><b>multiplies</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>multitier</b></a> <br><nobr>must <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_P"></a><a name="subkey_P{"></a><a href="../kernel/running_salome_pro.htm"><b>p</b></a> <br><nobr><a name="bms_PA"></a><a name="subkey_PA"></a>package <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>packages</b></a> <br><nobr>page <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>pages <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>pane <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>panning</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>parallel</b></a> <br><nobr>parameter <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>parameters <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../geom_preferences.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>part</b></a> <br><a href="../kernel/saving_a_study.htm"><b>particular</b></a> <br><a href="../kernel/introduction.htm"><b>particularly</b></a> <br><nobr>parts <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>party</b></a> <br><a href="../kernel/readme.html"><b>pass</b></a> <br><nobr>paste <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>pasting</b></a> <br><a href="../kernel/readme.html"><b>path</b></a> <br><a name="bms_PC"></a><a name="subkey_PC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>pc</b></a> <br><nobr><a name="bms_PE"></a><a name="subkey_PE"></a>perform <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>performance <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>performed</b></a> <br><a href="../kernel/readme.html"><b>permission</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>phenomena</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>phrases</b></a> <br><nobr>physical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>physics</b></a> <br><a name="bms_PI"></a><a name="subkey_PI"></a><a href="../kernel/readme.html"><b>pick</b></a> <br><a href="../kernel/readme.html"><b>picks</b></a> <br><a href="../kernel/readme.html"><b>pickup</b></a> <br><a href="../kernel/readme.html"><b>pickup_env</b></a> <br><a href="../kernel/readme.html"><b>pickup_env_flag</b></a> <br><a href="../kernel/readme.html"><b>pickupenv</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>picture</b></a> <br><a href="../kernel/using_registry.htm"><b>pid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>piece</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>place <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>placed <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>platform <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/introduction.htm"><b>5</b></a> <a href="../kernel/getting_started2.htm"><b>6</b></a> <a href="../kernel/displaying_studies.htm"><b>7</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>8</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>9</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>10</b></a> <a href="../viewers.htm"><b>11</b></a> <a href="../kernel/using_registry.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/saving_a_study.htm"><b>14</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>15</b></a> </nobr><br><a href="../kernel/readme.html"><b>platforms</b></a> <br><nobr>please <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>plot <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><nobr>plot2d <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>plots</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>plug</b></a> <br><a name="bms_PN"></a><a name="subkey_PN"></a><a href="../viewers.htm"><b>png</b></a> <br><a name="bms_PO"></a><a name="subkey_PO"></a><a href="../kernel/readme.html"><b>po</b></a> <br><nobr>point <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>points <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>pop <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>popup</b></a> <br><a href="../kernel/navigating_topics.htm"><b>popups</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>port</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>portkill</b></a> <br><nobr>position <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>positions <a href="../kernel/saving_a_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>positively</b></a> <br><a href="../viewers.htm"><b>possibilities</b></a> <br><nobr>possibility <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>possible <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>post <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>powerful</b></a> <br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>pre <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>precision</b></a> <br><a href="../kernel/readme.html"><b>precompiled</b></a> <br><nobr>predefined <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>preferable</b></a> <br><nobr>preferences <a href="../geom_preferences.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../supervisor_preferences.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>prefix</b></a> <br><a href="../kernel/readme.html"><b>preinstalled</b></a> <br><a href="../kernel/readme.html"><b>preliminary</b></a> <br><a href="../kernel/readme.html"><b>prerequisite</b></a> <br><a href="../kernel/readme.html"><b>prerequisites</b></a> <br><a href="../mesh_preferences.htm"><b>preselection</b></a> <br><nobr>presentation <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>presentations <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>presented</b></a> <br><nobr>press <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>pressing</b></a> <br><nobr>previous <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>previously <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>print <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>print_env</b></a> <br><a href="../kernel/readme.html"><b>prints</b></a> <br><a href="../kernel/introduction.htm"><b>priority</b></a> <br><nobr>pro <a href="../viewers.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>probably</b></a> <br><nobr>problem <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>problems</b></a> <br><nobr>procedure <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>proceed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>process <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>processes</b></a> <br><nobr>processing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> </nobr><br><nobr>processors <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>product</b></a> <br><a href="../kernel/readme.html"><b>product_context</b></a> <br><a href="../kernel/readme.html"><b>product_description</b></a> <br><a href="../kernel/readme.html"><b>product_name</b></a> <br><a href="../kernel/readme.html"><b>product_script_name</b></a> <br><a href="../kernel/readme.html"><b>product_version</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>productivity</b></a> <br><nobr>products <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>products_directory</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>profile</b></a> <br><a href="../kernel/readme.html"><b>program</b></a> <br><a href="../kernel/introduction.htm"><b>programmatic</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>programming</b></a> <br><a href="../kernel/readme.html"><b>progress</b></a> <br><a href="../kernel/readme.html"><b>prompted</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>prompting</b></a> <br><a href="../viewers.htm"><b>promptly</b></a> <br><a href="../kernel/readme.html"><b>proper</b></a> <br><a href="../kernel/readme.html"><b>properly</b></a> <br><nobr>properties <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>proposed</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>proposes</b></a> <br><nobr>provide <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><nobr>provided <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>provides <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> </nobr><br><nobr>providing <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_N"></a><a name="subkey_N{"></a>n <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>named <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>names <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>native</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>natural</b></a> <br><a href="../kernel/editing_studies.htm"><b>nature</b></a> <br><nobr>navigate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>navigating</b></a> <br><nobr>navigation <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>navigator</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>need <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>needed</b></a> <br><a href="../post-pro_preferences.htm"><b>negative</b></a> <br><a href="../kernel/readme.html"><b>netgen</b></a> <br><a href="../kernel/readme.html"><b>netgenroot</b></a> <br><nobr>netscape <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../kernel/readme.html"><b>newer</b></a> <br><nobr>next <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><a name="bms_NF"></a><a name="subkey_NF"></a><a href="../kernel/readme.html"><b>nf</b></a> <br><nobr><a name="bms_NO"></a><a name="subkey_NO"></a>nodes <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>normal</b></a> <br><a href="../kernel/readme.html"><b>note</b></a> <br><a href="../kernel/readme.html"><b>notes</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>noticeably</b></a> <br><a href="../kernel/readme.html"><b>notifd</b></a> <br><a href="../setting_preferences.htm"><b>notification</b></a> <br><a href="../post-pro_preferences.htm"><b>notify</b></a> <br><a href="../kernel/getting_started2.htm"><b>notion</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>now</b></a> <br><a name="bms_NT"></a><a name="subkey_NT"></a><a href="../post-pro_preferences.htm"><b>nth</b></a> <br><nobr><a name="bms_NU"></a><a name="subkey_NU"></a>null <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>number <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>numbers <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>numeric <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> </nobr><br><nobr>numerical <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>numerous</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_O"></a><a name="subkey_OB"></a>object <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>objectives</b></a> <br><nobr>objects <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>obligatory</b></a> <br><nobr><a name="bms_OC"></a><a name="subkey_OC"></a>occ <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>occ_version_major</b></a> <br><a href="../kernel/readme.html"><b>occ_version_minor</b></a> <br><a href="../kernel/readme.html"><b>occupies</b></a> <br><a name="bms_OF"></a><a name="subkey_OF"></a><a href="../kernel/readme.html"><b>off</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>offered</b></a> <br><a href="../kernel/introduction.htm"><b>often</b></a> <br><nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_OM"></a><a name="subkey_OM"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>omg</b></a> <br><a href="../kernel/readme.html"><b>omit</b></a> <br><a href="../kernel/readme.html"><b>omni</b></a> <br><a href="../kernel/readme.html"><b>omninotify</b></a> <br><a href="../kernel/readme.html"><b>omniorb</b></a> <br><a href="../kernel/readme.html"><b>omniorbdir</b></a> <br><a href="../kernel/readme.html"><b>omniorbpy</b></a> <br><a name="bms_ON"></a><a name="subkey_ON"></a><a href="../post-pro_preferences.htm"><b>once</b></a> <br><nobr>one <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../introduction_to_gui.htm"><b>8</b></a> <a href="../dump_study.htm"><b>9</b></a> <a href="../select_color_and_font.htm"><b>10</b></a> <a href="../post-pro_preferences.htm"><b>11</b></a> <a href="../kernel/using_object_browser.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/setting_preferences.htm"><b>14</b></a> <a href="../kernel/saving_a_study.htm"><b>15</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><a href="../kernel/readme.html"><b>ones</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>online</b></a> <br><a name="bms_OP"></a><a name="subkey_OP"></a><a href="../post-pro_preferences.htm"><b>opaque</b></a> <br><nobr>open <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/introduction.htm"><b>6</b></a> <a href="../kernel/getting_started2.htm"><b>7</b></a> <a href="../kernel/displaying_studies.htm"><b>8</b></a> <a href="../dump_study.htm"><b>9</b></a> <a href="../post-pro_preferences.htm"><b>10</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> </nobr><br><a href="../kernel/readme.html"><b>opencascade</b></a> <br><nobr>opening <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>opens <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../dump_study.htm"><b>operated</b></a> <br><nobr>operation <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>operations <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>optimization</b></a> <br><nobr>optimize <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>optimized</b></a> <br><nobr>option <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>optional</b></a> <br><nobr>optionally <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>options <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a name="bms_OR"></a><a name="subkey_OR"></a><a href="../kernel/readme.html"><b>order</b></a> <br><nobr>ordinate <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>org</b></a> <br><nobr>orientation <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>origin <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../dump_study.htm"><b>original</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>originality</b></a> <br><a name="bms_OS"></a><a name="subkey_OS"></a><a href="../kernel/readme.html"><b>os</b></a> <br><a href="../kernel/readme.html"><b>os_version</b></a> <br><nobr><a name="bms_OT"></a><a name="subkey_OT"></a>others <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>otherwise <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_OU"></a><a name="subkey_OU"></a>out <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>outline</b></a> <br><nobr>output <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><nobr>outside <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_PU"></a><a name="subkey_PU"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>pure</b></a> <br><a href="../kernel/getting_started2.htm"><b>purpose</b></a> <br><a href="../kernel/using_object_browser.htm"><b>purposes</b></a> <br><a name="bms_PY"></a><a name="subkey_PY"></a><a href="../kernel/running_salome_pro.htm"><b>py</b></a> <br><a href="../kernel/readme.html"><b>pyqt</b></a> <br><a href="../kernel/readme.html"><b>pyqtdir</b></a> <br><nobr>python <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>pythonhome</b></a> <br>\r
+<a name="bms_OV"></a><a name="subkey_OV"></a><a href="../kernel/readme.html"><b>overloads</b></a> <br><nobr><a name="bms_OW"></a><a name="subkey_OW"></a>own <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../introduction_to_gui.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_Q"></a><a name="subkey_QG"></a><a href="../kernel/readme.html"><b>qglobal</b></a> <br><a name="bms_QM"></a><a name="subkey_QM"></a><a href="../kernel/readme.html"><b>qm</b></a> <br><a name="bms_QT"></a><a name="subkey_QT"></a><a href="../kernel/readme.html"><b>qt</b></a> <br><a href="../kernel/readme.html"><b>qt_version_str</b></a> <br><a href="../kernel/readme.html"><b>qtdir</b></a> <br><nobr><a name="bms_QU"></a><a name="subkey_QU"></a>quality <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>quantities</b></a> <br><a href="../kernel/readme.html"><b>question</b></a> <br><nobr>quick <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>quickly <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>quit</b></a> <br><a href="../kernel/readme.html"><b>quits</b></a> <br><a href="../kernel/readme.html"><b>quoted</b></a> <br><a name="bms_QW"></a><a name="subkey_QW"></a><a href="../kernel/readme.html"><b>qwt</b></a> <br><a href="../kernel/readme.html"><b>qwthome</b></a> <br>\r
-<br><br>\r
-<a name="bm_R"></a><a name="subkey_RA"></a><a href="../kernel/readme.html"><b>radio</b></a> <br><nobr>range <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>ranges</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>rapidly</b></a> <br><a name="bms_RE"></a><a name="subkey_RE"></a><a href="../kernel/navigating_topics.htm"><b>re</b></a> <br><a href="../kernel/introduction.htm"><b>reactivity</b></a> <br><nobr>read <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>reading</b></a> <br><a href="../kernel/readme.html"><b>readme</b></a> <br><a href="../kernel/getting_started2.htm"><b>realize</b></a> <br><a href="../setting_preferences.htm"><b>receives</b></a> <br><a href="../kernel/readme.html"><b>recommended</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>record</b></a> <br><a href="../kernel/using_object_browser.htm"><b>red</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>redirection</b></a> <br><a href="../kernel/editing_studies.htm"><b>redo</b></a> <br><a href="../kernel/introduction.htm"><b>reduce</b></a> <br><a href="../kernel/introduction.htm"><b>reduces</b></a> <br><nobr>refer <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>reference <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>references</b></a> <br><a href="../kernel/readme.html"><b>refers</b></a> <br><a href="../kernel/introduction.htm"><b>refined</b></a> <br><a href="../kernel/using_registry.htm"><b>refresh</b></a> <br><a href="../kernel/using_registry.htm"><b>refreshment</b></a> <br><nobr>registry <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>reinstall</b></a> <br><a href="../kernel/readme.html"><b>reinstallation</b></a> <br><a href="../kernel/readme.html"><b>reinstalling</b></a> <br><nobr>related <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>relative</b></a> <br><a href="../kernel/readme.html"><b>release</b></a> <br><a href="../kernel/navigating_topics.htm"><b>relevant</b></a> <br><a href="../kernel/introduction.htm"><b>reliability</b></a> <br><a href="../kernel/saving_a_study.htm"><b>reload</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>relocate</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>remains</b></a> <br><nobr>remote <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>remove</b></a> <br><a href="../kernel/readme.html"><b>removed</b></a> <br><a href="../kernel/readme.html"><b>removing</b></a> <br><a href="../post-pro_preferences.htm"><b>repeated</b></a> <br><nobr>represent <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>representation <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../viewers.htm"><b>represented</b></a> <br><nobr>represents <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> </nobr><br><nobr>required <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>requirements <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>requires <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>reset <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>resized</b></a> <br><a href="../viewers.htm"><b>resizes</b></a> <br><a href="../kernel/readme.html"><b>resource</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>resources</b></a> <br><a href="../setting_preferences.htm"><b>respective</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>responds</b></a> <br><a href="../kernel/readme.html"><b>responsible</b></a> <br><a href="../kernel/introduction.htm"><b>restore</b></a> <br><a href="../setting_preferences.htm"><b>restored</b></a> <br><nobr>result <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/getting_started2.htm"><b>resulting</b></a> <br><nobr>results <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> </nobr><br><a href="../setting_preferences.htm"><b>retroactive</b></a> <br><a href="../viewers.htm"><b>returns</b></a> <br><a href="../kernel/introduction.htm"><b>reusable</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>reuse</b></a> <br><a href="../viewers.htm"><b>reveals</b></a> <br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>risks</b></a> <br><a name="bms_RO"></a><a name="subkey_RO"></a><a href="../kernel/introduction.htm"><b>robustness</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>roles</b></a> <br><a href="../kernel/readme.html"><b>root</b></a> <br><a href="../viewers.htm"><b>rotate</b></a> <br><a href="../viewers.htm"><b>rotation</b></a> <br><a name="bms_RU"></a><a name="subkey_RU"></a><a href="../kernel/readme.html"><b>rules</b></a> <br><nobr>run <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>runic</b></a> <br><a href="../kernel/readme.html"><b>runinstall</b></a> <br><nobr>running <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>runs</b></a> <br><nobr>runsalome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>runsalomewithport</b></a> <br>\r
-<br><br>\r
-<nobr><a name="bm_S"></a><a name="subkey_S{"></a>s <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_SA"></a><a name="subkey_SA"></a><a href="../kernel/introduction_to_iapp.htm"><b>safe</b></a> <br><nobr>salome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>6</b></a> <a href="../kernel/introduction.htm"><b>7</b></a> <a href="../kernel/getting_started2.htm"><b>8</b></a> <a href="../kernel/editing_studies.htm"><b>9</b></a> <a href="../kernel/displaying_studies.htm"><b>10</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>11</b></a> <a href="../kernel/creating_a_new_study.htm"><b>12</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>13</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>14</b></a> <a href="../viewers.htm"><b>15</b></a> <a href="../setting_preferences.htm"><b>16</b></a> <a href="../kernel/using_registry.htm"><b>17</b></a> <a href="../kernel/using_object_browser.htm"><b>18</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>19</b></a> <a href="../kernel/using_catalog_generator.htm"><b>20</b></a> <a href="../kernel/setting_preferences.htm"><b>21</b></a> <a href="../kernel/saving_a_study.htm"><b>22</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>23</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>salome_modulecatalog_server</b></a> <br><nobr>same <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>save <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>saved <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>saves <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>saving <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_SC"></a><a name="subkey_SC"></a>scalar <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>scale <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>scaling <a href="../viewers.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>scene</b></a> <br><a href="../kernel/introduction.htm"><b>schemas</b></a> <br><a href="../kernel/readme.html"><b>scheme</b></a> <br><nobr>schemes <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>scientific</b></a> <br><a href="../kernel/displaying_studies.htm"><b>screen</b></a> <br><nobr>script <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>scripts <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>scroll</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>searching</b></a> <br><a href="../kernel/readme.html"><b>second</b></a> <br><a href="../kernel/readme.html"><b>seconds</b></a> <br><nobr>section <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>sections <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sectionthis</b></a> <br><a href="../kernel/readme.html"><b>sed</b></a> <br><nobr>see <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> </nobr><br><nobr>select <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>selectall</b></a> <br><nobr>selected <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>selecting</b></a> <br><nobr>selection <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>sends</b></a> <br><nobr>sensitive <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>separate</b></a> <br><nobr>separated <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>server</b></a> <br><nobr>servers <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>serves</b></a> <br><a href="../kernel/readme.html"><b>service</b></a> <br><nobr>services <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>session <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>sessions <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>set <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../mesh_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><nobr>sets <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>setting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>settings <a href="../kernel/readme.html"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../setting_preferences.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../mesh_preferences.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>severe</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_P"></a><a name="subkey_P{"></a><a href="../kernel/running_salome_pro.htm"><b>p</b></a> <br><nobr><a name="bms_PA"></a><a name="subkey_PA"></a>package <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>packages</b></a> <br><a href="../kernel/readme.html"><b>page</b></a> <br><nobr>pages <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>pane <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>panning</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>parallel</b></a> <br><nobr>parameter <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>parameters <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>parent</b></a> <br><nobr>part <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>particular</b></a> <br><a href="../kernel/introduction.htm"><b>particularly</b></a> <br><nobr>parts <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>party</b></a> <br><a href="../kernel/readme.html"><b>pass</b></a> <br><nobr>paste <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>pasting</b></a> <br><a href="../post-pro_preferences.htm"><b>patent</b></a> <br><nobr>path <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_PC"></a><a name="subkey_PC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>pc</b></a> <br><a name="bms_PE"></a><a name="subkey_PE"></a><a href="../post-pro_preferences.htm"><b>per</b></a> <br><nobr>perform <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><nobr>performance <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>performed <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>permission</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>phenomena</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>phrases</b></a> <br><nobr>physical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>physics</b></a> <br><a name="bms_PI"></a><a name="subkey_PI"></a><a href="../kernel/readme.html"><b>pick</b></a> <br><a href="../post-pro_preferences.htm"><b>picking</b></a> <br><a href="../kernel/readme.html"><b>picks</b></a> <br><a href="../kernel/readme.html"><b>pickup</b></a> <br><a href="../kernel/readme.html"><b>pickup_env</b></a> <br><a href="../kernel/readme.html"><b>pickup_env_flag</b></a> <br><a href="../kernel/readme.html"><b>pickupenv</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>picture</b></a> <br><a href="../kernel/using_registry.htm"><b>pid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>piece</b></a> <br><a href="../post-pro_preferences.htm"><b>pixels</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>place <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>placed <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>placement <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>platform <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../introduction_to_gui.htm"><b>9</b></a> <a href="../dump_study.htm"><b>10</b></a> <a href="../kernel/using_registry.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><a href="../kernel/readme.html"><b>platforms</b></a> <br><a href="../dump_study.htm"><b>played</b></a> <br><a href="../kernel/readme.html"><b>please</b></a> <br><nobr>plot <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><nobr>plot2d <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../introduction_to_gui.htm"><b>plug</b></a> <br><a name="bms_PO"></a><a name="subkey_PO"></a><a href="../kernel/readme.html"><b>po</b></a> <br><nobr>point <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>points <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>pop <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>popup</b></a> <br><a href="../kernel/navigating_topics.htm"><b>popups</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>port</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>portkill</b></a> <br><nobr>position <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>positions <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>positively</b></a> <br><nobr>possibility <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> </nobr><br><nobr>possible <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>post <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../introduction_to_gui.htm"><b>powerful</b></a> <br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>pre <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>precision</b></a> <br><a href="../kernel/readme.html"><b>precompiled</b></a> <br><nobr>predefined <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>preferable</b></a> <br><nobr>preferences <a href="../geom_preferences.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../select_color_and_font.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../mesh_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>prefix</b></a> <br><a href="../kernel/readme.html"><b>preinstalled</b></a> <br><a href="../kernel/readme.html"><b>preliminary</b></a> <br><a href="../kernel/readme.html"><b>prerequisite</b></a> <br><a href="../kernel/readme.html"><b>prerequisites</b></a> <br><a href="../mesh_preferences.htm"><b>preselected</b></a> <br><a href="../mesh_preferences.htm"><b>preselection</b></a> <br><a href="../post-pro_preferences.htm"><b>present</b></a> <br><nobr>presentation <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>presentations <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>presented</b></a> <br><nobr>press <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>pressed</b></a> <br><nobr>pressing <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>prevents</b></a> <br><a href="../select_color_and_font.htm"><b>preview</b></a> <br><nobr>previous <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>previously <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>primitive</b></a> <br><a href="../post-pro_preferences.htm"><b>primitives</b></a> <br><nobr>print <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>print_env</b></a> <br><a href="../kernel/readme.html"><b>prints</b></a> <br><a href="../kernel/introduction.htm"><b>priority</b></a> <br><nobr>pro <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>probably</b></a> <br><nobr>problem <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>problems</b></a> <br><nobr>procedure <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>proceed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>process <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>processed</b></a> <br><a href="../kernel/using_registry.htm"><b>processes</b></a> <br><nobr>processing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> </nobr><br><nobr>processors <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>produces</b></a> <br><a href="../kernel/readme.html"><b>product</b></a> <br><a href="../kernel/readme.html"><b>product_context</b></a> <br><a href="../kernel/readme.html"><b>product_description</b></a> <br><a href="../kernel/readme.html"><b>product_name</b></a> <br><a href="../kernel/readme.html"><b>product_script_name</b></a> <br><a href="../kernel/readme.html"><b>product_version</b></a> <br><nobr>productivity <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>products <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>products_directory</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>profile</b></a> <br><a href="../kernel/readme.html"><b>program</b></a> <br><a href="../kernel/introduction.htm"><b>programmatic</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>programming</b></a> <br><nobr>progress <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>progressive</b></a> <br><a href="../kernel/readme.html"><b>prompted</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>prompting</b></a> <br><a href="../dump_study.htm"><b>prone</b></a> <br><a href="../kernel/readme.html"><b>proper</b></a> <br><a href="../kernel/readme.html"><b>properly</b></a> <br><nobr>properties <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>proposed</b></a> <br><a href="../introduction_to_gui.htm"><b>proposes</b></a> <br><nobr>provide <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><nobr>provided <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>provides <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../select_color_and_font.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> </nobr><br><nobr>providing <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a name="bms_PU"></a><a name="subkey_PU"></a><a href="../dump_study.htm"><b>publish</b></a> <br><nobr>published <a href="../dump_study.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>pure</b></a> <br><a href="../kernel/getting_started2.htm"><b>purpose</b></a> <br><a href="../kernel/using_object_browser.htm"><b>purposes</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_SH"></a><a name="subkey_SH"></a><a href="../kernel/readme.html"><b>sh</b></a> <br><nobr>shading <a href="../geom_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>shapes</b></a> <br><nobr>shell <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> </nobr><br><nobr>short <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>shot</b></a> <br><nobr>should <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../viewers.htm"><b>show</b></a> <br><nobr>shown <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>shows <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>shrink</b></a> <br><a name="bms_SI"></a><a name="subkey_SI"></a><a href="../kernel/readme.html"><b>signal</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>signals</b></a> <br><a href="../kernel/readme.html"><b>signature</b></a> <br><a href="../kernel/readme.html"><b>sigterm</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simple</b></a> <br><a href="../kernel/readme.html"><b>simplify</b></a> <br><a href="../kernel/setting_preferences.htm"><b>simply</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simulate</b></a> <br><a href="../kernel/introduction.htm"><b>simulation</b></a> <br><nobr>simulations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>simultaneously <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><nobr>since <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>single</b></a> <br><a href="../kernel/readme.html"><b>sip</b></a> <br><a href="../kernel/readme.html"><b>sipdir</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>situations</b></a> <br><nobr>size <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>sizes <a href="../kernel/saving_a_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>sizing</b></a> <br><a name="bms_SK"></a><a name="subkey_SK"></a><a href="../kernel/readme.html"><b>skip</b></a> <br><a href="../kernel/readme.html"><b>skipped</b></a> <br><a name="bms_SL"></a><a name="subkey_SL"></a><a href="../kernel/readme.html"><b>slightly</b></a> <br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../kernel/saving_a_study.htm"><b>small</b></a> <br><nobr>smesh <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>smooth</b></a> <br><nobr><a name="bms_SO"></a><a name="subkey_SO"></a>so <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> </nobr><br><nobr>software <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>solution</b></a> <br><a href="../kernel/introduction.htm"><b>solutions</b></a> <br><a href="../kernel/introduction.htm"><b>solver</b></a> <br><nobr>solvers <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>something</b></a> <br><nobr>sort <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sort_path</b></a> <br><a href="../kernel/using_object_browser.htm"><b>sorting</b></a> <br><nobr>source <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>sources</b></a> <br><a name="bms_SP"></a><a name="subkey_SP"></a><a href="../kernel/readme.html"><b>space</b></a> <br><a href="../kernel/readme.html"><b>spaces</b></a> <br><nobr>special <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../viewers.htm"><b>specialize</b></a> <br><nobr>specific <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>specification</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>specifies</b></a> <br><nobr>specify <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../geom_preferences.htm"><b>spin</b></a> <br><a href="../kernel/setting_preferences.htm"><b>splines</b></a> <br><a href="../kernel/displaying_studies.htm"><b>split</b></a> <br><a name="bms_ST"></a><a name="subkey_ST"></a><a href="../kernel/introduction_to_iapp.htm"><b>standalone</b></a> <br><nobr>standard <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>standard_version</b></a> <br><nobr>start <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>started <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>starting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>state</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>stations</b></a> <br><a href="../kernel/readme.html"><b>status</b></a> <br><nobr>step <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><nobr>steps <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>still</b></a> <br><nobr>store <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>stored <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>storing</b></a> <br><a href="../kernel/readme.html"><b>strict</b></a> <br><a href="../kernel/readme.html"><b>string</b></a> <br><a href="../kernel/readme.html"><b>strongly</b></a> <br><a href="../kernel/introduction.htm"><b>structural</b></a> <br><nobr>structure <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>structures</b></a> <br><nobr>studies <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>study <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/editing_studies.htm"><b>6</b></a> <a href="../kernel/displaying_studies.htm"><b>7</b></a> <a href="../kernel/creating_a_new_study.htm"><b>8</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>9</b></a> <a href="../setting_preferences.htm"><b>10</b></a> <a href="../kernel/using_registry.htm"><b>11</b></a> <a href="../kernel/using_object_browser.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/setting_preferences.htm"><b>14</b></a> <a href="../kernel/saving_a_study.htm"><b>15</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>study1</b></a> <br><a href="../kernel/setting_preferences.htm"><b>style</b></a> <br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>sub <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>submenu <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>subsets</b></a> <br><a href="../kernel/readme.html"><b>successfully</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>suit</b></a> <br><a href="../kernel/readme.html"><b>summarizes</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>superv</b></a> <br><nobr>supervision <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../supervisor_preferences.htm"><b>supervisor</b></a> <br><nobr>supplementary <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>support <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>supported</b></a> <br><a href="../kernel/readme.html"><b>supported_installation_modes</b></a> <br><a href="../kernel/introduction.htm"><b>supports</b></a> <br><a href="../kernel/readme.html"><b>supposed</b></a> <br><a href="../kernel/readme.html"><b>sure</b></a> <br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../post-pro_preferences.htm"><b>sweep</b></a> <br><a href="../post-pro_preferences.htm"><b>sweeping</b></a> <br><a href="../kernel/readme.html"><b>swig</b></a> <br><a href="../kernel/displaying_studies.htm"><b>switch</b></a> <br><a href="../kernel/readme.html"><b>switched</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>switching</b></a> <br><nobr><a name="bms_SY"></a><a name="subkey_SY"></a>system <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><nobr>systems <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br>\r
+<a name="bms_PY"></a><a name="subkey_PY"></a><a href="../kernel/running_salome_pro.htm"><b>py</b></a> <br><a href="../kernel/readme.html"><b>pyqt</b></a> <br><a href="../kernel/readme.html"><b>pyqtdir</b></a> <br><a href="../post-pro_preferences.htm"><b>pyramids</b></a> <br><nobr>python <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../introduction_to_gui.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><a href="../kernel/readme.html"><b>pythonhome</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_T"></a><a name="subkey_T{"></a>t <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../viewers.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr><a name="bms_TA"></a><a name="subkey_TA"></a>tab <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>table <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>tabs <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>tag</b></a> <br><a href="../kernel/readme.html"><b>tags</b></a> <br><a href="../kernel/introduction.htm"><b>tailored</b></a> <br><a href="../kernel/readme.html"><b>take</b></a> <br><nobr>taken <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>takes</b></a> <br><a href="../kernel/readme.html"><b>target</b></a> <br><a href="../kernel/readme.html"><b>target_directory</b></a> <br><a href="../kernel/readme.html"><b>target_platform</b></a> <br><a href="../kernel/readme.html"><b>targetdir</b></a> <br><a name="bms_TC"></a><a name="subkey_TC"></a><a href="../kernel/readme.html"><b>tcl</b></a> <br><a href="../kernel/readme.html"><b>tclhome</b></a> <br><a href="../kernel/readme.html"><b>tclsh8</b></a> <br><a name="bms_TE"></a><a name="subkey_TE"></a><a href="../kernel/introduction.htm"><b>technological</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technologies</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technology</b></a> <br><a href="../kernel/readme.html"><b>temp</b></a> <br><a href="../kernel/readme.html"><b>temp_directory</b></a> <br><a href="../kernel/readme.html"><b>temp_folder</b></a> <br><a href="../kernel/readme.html"><b>tempdir</b></a> <br><a href="../kernel/readme.html"><b>temporary</b></a> <br><a href="../kernel/readme.html"><b>temporarydiskspace</b></a> <br><nobr>term <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>terminal <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>terms</b></a> <br><nobr>test <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>tests</b></a> <br><nobr>text <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../supervisor_preferences.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf9.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_Q"></a><a name="subkey_QG"></a><a href="../kernel/readme.html"><b>qglobal</b></a> <br><a name="bms_QM"></a><a name="subkey_QM"></a><a href="../kernel/readme.html"><b>qm</b></a> <br><a name="bms_QT"></a><a name="subkey_QT"></a><a href="../kernel/readme.html"><b>qt</b></a> <br><a href="../kernel/readme.html"><b>qt_version_str</b></a> <br><a href="../kernel/readme.html"><b>qtdir</b></a> <br><nobr><a name="bms_QU"></a><a name="subkey_QU"></a>quality <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>quantities</b></a> <br><a href="../kernel/readme.html"><b>question</b></a> <br><nobr>quick <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>quickly <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>quit <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../dump_study.htm"><b>quite</b></a> <br><a href="../kernel/readme.html"><b>quits</b></a> <br><a href="../kernel/readme.html"><b>quoted</b></a> <br><a name="bms_QW"></a><a name="subkey_QW"></a><a href="../kernel/readme.html"><b>qwt</b></a> <br><a href="../kernel/readme.html"><b>qwthome</b></a> <br>\r
+<br><br>\r
+<a name="bm_R"></a><a name="subkey_RA"></a><a href="../kernel/readme.html"><b>radio</b></a> <br><a href="../post-pro_preferences.htm"><b>rainbow</b></a> <br><nobr>range <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>ranges</b></a> <br><a href="../post-pro_preferences.htm"><b>ranging</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>rapidly</b></a> <br><a href="../post-pro_preferences.htm"><b>rate</b></a> <br><a href="../dump_study.htm"><b>rather</b></a> <br><a href="../post-pro_preferences.htm"><b>ratio</b></a> <br><nobr><a name="bms_RE"></a><a name="subkey_RE"></a>re <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>reactivity</b></a> <br><nobr>read <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>reading</b></a> <br><a href="../kernel/readme.html"><b>readme</b></a> <br><a href="../post-pro_preferences.htm"><b>real</b></a> <br><a href="../kernel/getting_started2.htm"><b>realize</b></a> <br><a href="../post-pro_preferences.htm"><b>reassign</b></a> <br><a href="../setting_preferences.htm"><b>receives</b></a> <br><nobr>recommended <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>record <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>recorded</b></a> <br><a href="../post-pro_preferences.htm"><b>recorder</b></a> <br><a href="../post-pro_preferences.htm"><b>recording</b></a> <br><a href="../post-pro_preferences.htm"><b>records</b></a> <br><a href="../kernel/using_object_browser.htm"><b>red</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>redirection</b></a> <br><a href="../kernel/editing_studies.htm"><b>redo</b></a> <br><a href="../kernel/introduction.htm"><b>reduce</b></a> <br><a href="../kernel/introduction.htm"><b>reduces</b></a> <br><nobr>refer <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>reference <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>references</b></a> <br><a href="../kernel/readme.html"><b>refers</b></a> <br><a href="../kernel/introduction.htm"><b>refined</b></a> <br><a href="../post-pro_preferences.htm"><b>refining</b></a> <br><a href="../kernel/using_registry.htm"><b>refresh</b></a> <br><a href="../kernel/using_registry.htm"><b>refreshment</b></a> <br><a href="../post-pro_preferences.htm"><b>regimes</b></a> <br><nobr>registry <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>reinstall</b></a> <br><a href="../kernel/readme.html"><b>reinstallation</b></a> <br><a href="../kernel/readme.html"><b>reinstalling</b></a> <br><nobr>related <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>relative <a href="../kernel/readme.html"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>release</b></a> <br><a href="../kernel/navigating_topics.htm"><b>relevant</b></a> <br><a href="../kernel/introduction.htm"><b>reliability</b></a> <br><a href="../kernel/saving_a_study.htm"><b>reload</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>relocate</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>remains</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>remote</b></a> <br><a href="../kernel/setting_preferences.htm"><b>remove</b></a> <br><a href="../kernel/readme.html"><b>removed</b></a> <br><a href="../kernel/readme.html"><b>removing</b></a> <br><a href="../kernel/saving_a_study.htm"><b>renamed</b></a> <br><a href="../post-pro_preferences.htm"><b>rendering</b></a> <br><a href="../kernel/setting_preferences.htm"><b>reopened</b></a> <br><a href="../post-pro_preferences.htm"><b>repeated</b></a> <br><nobr>represent <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>representation <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>representative</b></a> <br><nobr>represents <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> </nobr><br><nobr>required <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>requirements <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>requires <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>reset</b></a> <br><a href="../post-pro_preferences.htm"><b>resolution</b></a> <br><a href="../dump_study.htm"><b>resolved</b></a> <br><a href="../kernel/readme.html"><b>resource</b></a> <br><nobr>resources <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr>respective <a href="../setting_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>respectively</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>responds</b></a> <br><a href="../kernel/readme.html"><b>responsible</b></a> <br><a href="../kernel/setting_preferences.htm"><b>rest</b></a> <br><nobr>restore <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>restored <a href="../setting_preferences.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>result</b></a> <br><a href="../kernel/getting_started2.htm"><b>resulting</b></a> <br><nobr>results <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../setting_preferences.htm"><b>retroactive</b></a> <br><a href="../kernel/introduction.htm"><b>reusable</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>reuse</b></a> <br><nobr>reversibly <a href="../dump_study.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../select_color_and_font.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>risks</b></a> <br><a name="bms_RO"></a><a name="subkey_RO"></a><a href="../kernel/introduction.htm"><b>robustness</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>roles</b></a> <br><a href="../kernel/readme.html"><b>root</b></a> <br><a href="../post-pro_preferences.htm"><b>rotate</b></a> <br><a href="../post-pro_preferences.htm"><b>rotation</b></a> <br><a name="bms_RU"></a><a name="subkey_RU"></a><a href="../kernel/readme.html"><b>rules</b></a> <br><nobr>run <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>runic</b></a> <br><a href="../kernel/readme.html"><b>runinstall</b></a> <br><nobr>running <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>runs</b></a> <br><nobr>runsalome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>runsalomewithport</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_S"></a><a name="subkey_S{"></a>s <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_SA"></a><a name="subkey_SA"></a><a href="../introduction_to_gui.htm"><b>safe</b></a> <br><nobr>salome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/introduction.htm"><b>6</b></a> <a href="../kernel/getting_started2.htm"><b>7</b></a> <a href="../kernel/editing_studies.htm"><b>8</b></a> <a href="../kernel/displaying_studies.htm"><b>9</b></a> <a href="../kernel/creating_a_new_study.htm"><b>10</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>11</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>12</b></a> <a href="../introduction_to_gui.htm"><b>13</b></a> <a href="../dump_study.htm"><b>14</b></a> <a href="../setting_preferences.htm"><b>15</b></a> <a href="../post-pro_preferences.htm"><b>16</b></a> <a href="../kernel/using_registry.htm"><b>17</b></a> <a href="../kernel/using_object_browser.htm"><b>18</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>19</b></a> <a href="../kernel/using_catalog_generator.htm"><b>20</b></a> <a href="../kernel/setting_preferences.htm"><b>21</b></a> <a href="../kernel/saving_a_study.htm"><b>22</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>23</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>salome_modulecatalog_server</b></a> <br><a href="../dump_study.htm"><b>salomeds</b></a> <br><nobr>same <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>sample</b></a> <br><nobr>save <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>saved <a href="../dump_study.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>saves <a href="../kernel/saving_a_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>saving <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_SC"></a><a name="subkey_SC"></a>scalar <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>scale <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>scaling</b></a> <br><a href="../kernel/introduction.htm"><b>schemas</b></a> <br><a href="../kernel/readme.html"><b>scheme</b></a> <br><nobr>schemes <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>scientific</b></a> <br><a href="../kernel/displaying_studies.htm"><b>screen</b></a> <br><nobr>script <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../select_color_and_font.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><a href="../dump_study.htm"><b>scripting</b></a> <br><nobr>scripts <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../dump_study.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>scroll</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>searching</b></a> <br><nobr>second <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>seconds</b></a> <br><nobr>section <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>sections <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sectionthis</b></a> <br><a href="../kernel/readme.html"><b>sed</b></a> <br><nobr>see <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>seen</b></a> <br><nobr>select <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../geom_preferences.htm"><b>6</b></a> <a href="../dump_study.htm"><b>7</b></a> <a href="../select_color_and_font.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../mesh_preferences.htm"><b>10</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>selectall</b></a> <br><nobr>selected <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>selecting <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> </nobr><br><nobr>selection <a href="../introduction_to_gui.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>sends</b></a> <br><nobr>sensitive <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>separate <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>separated <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>server</b></a> <br><nobr>servers <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>serves</b></a> <br><a href="../kernel/readme.html"><b>service</b></a> <br><nobr>services <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>session <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>sessions <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><nobr>set <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../geom_preferences.htm"><b>4</b></a> <a href="../dump_study.htm"><b>5</b></a> <a href="../setting_preferences.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../mesh_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>sets <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>setting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../setting_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>settings <a href="../kernel/readme.html"><b>1</b></a> <a href="../setting_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>severe</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf9.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>therefore</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>third</b></a> <br><nobr>those <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>three</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>thus</b></a> <br><nobr><a name="bms_TI"></a><a name="subkey_TI"></a>time <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../post-pro_preferences.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>times</b></a> <br><nobr>title <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_TK"></a><a name="subkey_TK"></a><a href="../kernel/readme.html"><b>tk</b></a> <br><a name="bms_TM"></a><a name="subkey_TM"></a><a href="../kernel/readme.html"><b>tmp</b></a> <br><a href="../kernel/readme.html"><b>tmp_disk_space</b></a> <br><a name="bms_TO"></a><a name="subkey_TO"></a><a href="../kernel/readme.html"><b>together</b></a> <br><a href="../mesh_preferences.htm"><b>toggle</b></a> <br><a href="../post-pro_preferences.htm"><b>toggles</b></a> <br><a href="../kernel/using_object_browser.htm"><b>toggling</b></a> <br><nobr>tool <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>toolbar <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../viewers.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>toolbars <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>toolkit <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>tools <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>top <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>topic <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../supervisor_preferences.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>topics <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>topmost</b></a> <br><a href="../kernel/readme.html"><b>total</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>totality</b></a> <br><a name="bms_TR"></a><a name="subkey_TR"></a><a href="../kernel/readme.html"><b>tr</b></a> <br><a href="../kernel/introduction.htm"><b>training</b></a> <br><nobr>tree <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>tries</b></a> <br><nobr>trihedron <a href="../viewers.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>trolltech</b></a> <br><a href="../kernel/readme.html"><b>true</b></a> <br><nobr>try <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>try_existing</b></a> <br><a href="../kernel/readme.html"><b>try_native</b></a> <br><a href="../kernel/readme.html"><b>try_preinstalled</b></a> <br><nobr><a name="bms_TW"></a><a name="subkey_TW"></a>two <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../kernel/readme.html"><b>1</b></a> <a href="../supervisor_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>typical</b></a> <br><nobr>typing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br>\r
+<a name="bms_SH"></a><a name="subkey_SH"></a><a href="../kernel/readme.html"><b>sh</b></a> <br><nobr>shading <a href="../geom_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>shape</b></a> <br><nobr>shell <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> </nobr><br><nobr>short <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>shot</b></a> <br><nobr>should <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>shown <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>shows <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>shrink</b></a> <br><nobr><a name="bms_SI"></a><a name="subkey_SI"></a>side <a href="../post-pro_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>signal</b></a> <br><a href="../introduction_to_gui.htm"><b>signals</b></a> <br><a href="../kernel/readme.html"><b>signature</b></a> <br><a href="../kernel/readme.html"><b>sigterm</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simple</b></a> <br><a href="../kernel/readme.html"><b>simplify</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simulate</b></a> <br><a href="../kernel/introduction.htm"><b>simulation</b></a> <br><nobr>simulations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>simultaneously <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><nobr>since <a href="../kernel/readme.html"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>single</b></a> <br><a href="../kernel/readme.html"><b>sip</b></a> <br><a href="../kernel/readme.html"><b>sipdir</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>situations</b></a> <br><nobr>size <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>sizes <a href="../select_color_and_font.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_SK"></a><a name="subkey_SK"></a><a href="../kernel/readme.html"><b>skip</b></a> <br><a href="../kernel/readme.html"><b>skipped</b></a> <br><a name="bms_SL"></a><a name="subkey_SL"></a><a href="../kernel/readme.html"><b>slightly</b></a> <br><a href="../post-pro_preferences.htm"><b>slow</b></a> <br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../post-pro_preferences.htm"><b>smallest</b></a> <br><a href="../kernel/setting_preferences.htm"><b>smooth</b></a> <br><a href="../post-pro_preferences.htm"><b>smoothness</b></a> <br><nobr><a name="bms_SO"></a><a name="subkey_SO"></a>so <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> </nobr><br><nobr>software <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>solution</b></a> <br><a href="../kernel/introduction.htm"><b>solutions</b></a> <br><a href="../kernel/introduction.htm"><b>solver</b></a> <br><nobr>solvers <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>something</b></a> <br><nobr>sort <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sort_path</b></a> <br><a href="../kernel/using_object_browser.htm"><b>sorting</b></a> <br><nobr>source <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>sources</b></a> <br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>spacemouse</b></a> <br><a href="../kernel/readme.html"><b>spaces</b></a> <br><a href="../post-pro_preferences.htm"><b>spacing</b></a> <br><nobr>special <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>specially</b></a> <br><nobr>specific <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>specification</b></a> <br><a href="../post-pro_preferences.htm"><b>specified</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>specifies</b></a> <br><nobr>specify <a href="../kernel/using_catalog_generator.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../post-pro_preferences.htm"><b>speed</b></a> <br><a href="../post-pro_preferences.htm"><b>sphere</b></a> <br><a href="../post-pro_preferences.htm"><b>spheres</b></a> <br><a href="../geom_preferences.htm"><b>spin</b></a> <br><a href="../kernel/setting_preferences.htm"><b>splines</b></a> <br><a href="../kernel/displaying_studies.htm"><b>split</b></a> <br><a href="../post-pro_preferences.htm"><b>sprite</b></a> <br><a href="../post-pro_preferences.htm"><b>sprites</b></a> <br><a name="bms_ST"></a><a name="subkey_ST"></a><a href="../post-pro_preferences.htm"><b>stamps</b></a> <br><a href="../introduction_to_gui.htm"><b>standalone</b></a> <br><nobr>standard <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../introduction_to_gui.htm"><b>5</b></a> <a href="../post-pro_preferences.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>standard_version</b></a> <br><nobr>start <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>started <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>starting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>state <a href="../kernel/readme.html"><b>1</b></a> <a href="../dump_study.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>states</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>stations</b></a> <br><a href="../kernel/readme.html"><b>status</b></a> <br><nobr>step <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> </nobr><br><nobr>steps <a href="../kernel/readme.html"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>still</b></a> <br><nobr>store <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>stored <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../dump_study.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>storing</b></a> <br><a href="../kernel/readme.html"><b>strict</b></a> <br><a href="../kernel/readme.html"><b>string</b></a> <br><a href="../kernel/readme.html"><b>strongly</b></a> <br><a href="../select_color_and_font.htm"><b>struck</b></a> <br><a href="../kernel/introduction.htm"><b>structural</b></a> <br><nobr>structure <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../introduction_to_gui.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>structures</b></a> <br><nobr>studies <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../introduction_to_gui.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>study <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../introduction_to_gui.htm"><b>9</b></a> <a href="../dump_study.htm"><b>10</b></a> <a href="../setting_preferences.htm"><b>11</b></a> <a href="../post-pro_preferences.htm"><b>12</b></a> <a href="../kernel/using_registry.htm"><b>13</b></a> <a href="../kernel/using_object_browser.htm"><b>14</b></a> <a href="../kernel/using_catalog_generator.htm"><b>15</b></a> <a href="../kernel/setting_preferences.htm"><b>16</b></a> <a href="../kernel/saving_a_study.htm"><b>17</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>18</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>study1</b></a> <br><a href="../kernel/setting_preferences.htm"><b>style</b></a> <br><a href="../select_color_and_font.htm"><b>styles</b></a> <br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>sub <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>submenu <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../select_color_and_font.htm"><b>subsets</b></a> <br><a href="../post-pro_preferences.htm"><b>substituted</b></a> <br><a href="../kernel/readme.html"><b>successfully</b></a> <br><a href="../introduction_to_gui.htm"><b>suit</b></a> <br><a href="../kernel/readme.html"><b>summarizes</b></a> <br><a href="../post-pro_preferences.htm"><b>superposition</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>superv</b></a> <br><nobr>supervision <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../introduction_to_gui.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>supervisor <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>supplementary <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>support <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>supported</b></a> <br><a href="../kernel/readme.html"><b>supported_installation_modes</b></a> <br><a href="../kernel/introduction.htm"><b>supports</b></a> <br><a href="../kernel/readme.html"><b>supposed</b></a> <br><a href="../kernel/readme.html"><b>sure</b></a> <br><a href="../mesh_preferences.htm"><b>surface</b></a> <br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../post-pro_preferences.htm"><b>sweep</b></a> <br><a href="../post-pro_preferences.htm"><b>sweeping</b></a> <br><a href="../kernel/readme.html"><b>swig</b></a> <br><nobr>switch <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>switched</b></a> <br><a href="../introduction_to_gui.htm"><b>switching</b></a> <br><nobr><a name="bms_SY"></a><a name="subkey_SY"></a>system <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../post-pro_preferences.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> </nobr><br><nobr>systems <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_U"></a><a name="subkey_U{"></a><a href="../kernel/setting_preferences.htm"><b>u</b></a> <br><a name="bms_UL"></a><a name="subkey_UL"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>ultimate</b></a> <br><nobr><a name="bms_UN"></a><a name="subkey_UN"></a>undo <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>undone</b></a> <br><nobr>unfortunately <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr>unique <a href="../kernel/readme.html"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>unix</b></a> <br><a href="../kernel/saving_a_study.htm"><b>unload</b></a> <br><nobr>unloaded <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_hiding_toolbars.htm"><b>unmark</b></a> <br><a href="../kernel/readme.html"><b>unnecessary</b></a> <br><a href="../kernel/readme.html"><b>unselect</b></a> <br><a href="../kernel/readme.html"><b>unselecting</b></a> <br><nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>update <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>updated <a href="../mesh_preferences.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>uploading <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>upper <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a name="bms_US"></a><a name="subkey_US"></a><a href="../kernel/introduction_to_iapp.htm"><b>usability</b></a> <br><a href="../kernel/readme.html"><b>usage</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>usecase</b></a> <br><nobr>used <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../geom_preferences.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../post-pro_preferences.htm"><b>7</b></a> <a href="../mesh_preferences.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../viewers.htm"><b>useful</b></a> <br><nobr>user <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../setting_preferences.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> </nobr><br><nobr>users <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>uses <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>using <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> </nobr><br><a href="../kernel/readme.html"><b>usr</b></a> <br><a href="../kernel/readme.html"><b>usually</b></a> <br><a name="bms_UT"></a><a name="subkey_UT"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>utilities</b></a> <br>\r
-<br><br>\r
-<nobr><a name="bm_V"></a><a name="subkey_V{"></a>v <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_VA"></a><a name="subkey_VA"></a><a href="../kernel/setting_preferences.htm"><b>valid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>validation</b></a> <br><nobr>value <a href="../kernel/readme.html"><b>1</b></a> <a href="../geom_preferences.htm"><b>2</b></a> <a href="../mesh_preferences.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>values</b></a> <br><a href="../kernel/readme.html"><b>variable</b></a> <br><nobr>variables <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>varible</b></a> <br><nobr>variety <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>various <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_VE"></a><a name="subkey_VE"></a>ve <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>ver</b></a> <br><a href="../kernel/readme.html"><b>ver_major</b></a> <br><a href="../kernel/readme.html"><b>ver_minor</b></a> <br><a href="../viewers.htm"><b>verbal</b></a> <br><nobr>version <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>versions</b></a> <br><nobr>vertical <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> <a href="../post-pro_preferences.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>vertically</b></a> <br><nobr>very <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_VI"></a><a name="subkey_VI"></a><a href="../viewers.htm"><b>via</b></a> <br><nobr>view <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../viewers.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>8</b></a> </nobr><br><nobr>viewer <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> <a href="../mesh_preferences.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>viewers <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>viewing <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../viewers.htm"><b>visible</b></a> <br><nobr>visu <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>visual</b></a> <br><nobr>visualization <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>visualize <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_VT"></a><a name="subkey_VT"></a>vtk <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../viewers.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>vtkhome</b></a> <br>\r
-<br><br>\r
-<a name="bm_W"></a><a name="subkey_WA"></a><a href="../kernel/readme.html"><b>wait</b></a> <br><a href="../kernel/readme.html"><b>waiting</b></a> <br><nobr>want <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> </nobr><br><nobr>warning <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>way <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_WE"></a><a name="subkey_WE"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>web</b></a> <br><nobr>welcome <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>well</b></a> <br><nobr><a name="bms_WH"></a><a name="subkey_WH"></a>what <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../setting_preferences.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> </nobr><br><a href="../mesh_preferences.htm"><b>whenever</b></a> <br><a href="../kernel/displaying_studies.htm"><b>wherever</b></a> <br><a href="../kernel/readme.html"><b>whether</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>while</b></a> <br><nobr>whole <a href="../setting_preferences.htm"><b>1</b></a> <a href="../post-pro_preferences.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_WI"></a><a name="subkey_WI"></a>wide <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../viewers.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>widgets</b></a> <br><a href="../mesh_preferences.htm"><b>width</b></a> <br><nobr>will <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../setting_preferences.htm"><b>8</b></a> <a href="../post-pro_preferences.htm"><b>9</b></a> <a href="../mesh_preferences.htm"><b>10</b></a> <a href="../kernel/using_registry.htm"><b>11</b></a> <a href="../kernel/using_object_browser.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/setting_preferences.htm"><b>14</b></a> <a href="../kernel/saving_a_study.htm"><b>15</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><nobr>window <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../kernel/creating_a_new_study.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>windowed</b></a> <br><nobr>windows <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>wireframe <a href="../geom_preferences.htm"><b>1</b></a> <a href="../mesh_preferences.htm"><b>2</b></a> </nobr><br><nobr>wish <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../viewers.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>wish8</b></a> <br><nobr>within <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> </nobr><br><nobr>without <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>wizard</b></a> <br><a href="../kernel/readme.html"><b>wizards</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf10.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_T"></a><a name="subkey_T{"></a>t <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../post-pro_preferences.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr><a name="bms_TA"></a><a name="subkey_TA"></a>tab <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>table <a href="../kernel/readme.html"><b>1</b></a> <a href="../select_color_and_font.htm"><b>2</b></a> </nobr><br><nobr>tabs <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>tag</b></a> <br><a href="../kernel/readme.html"><b>tags</b></a> <br><a href="../kernel/introduction.htm"><b>tailored</b></a> <br><a href="../kernel/readme.html"><b>take</b></a> <br><nobr>taken <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>takes</b></a> <br><a href="../kernel/readme.html"><b>target</b></a> <br><a href="../kernel/readme.html"><b>target_directory</b></a> <br><a href="../kernel/readme.html"><b>target_platform</b></a> <br><a href="../kernel/readme.html"><b>targetdir</b></a> <br><a href="../dump_study.htm"><b>tasks</b></a> <br><a name="bms_TC"></a><a name="subkey_TC"></a><a href="../kernel/readme.html"><b>tcl</b></a> <br><a href="../kernel/readme.html"><b>tclhome</b></a> <br><a href="../kernel/readme.html"><b>tclsh8</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf10.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_{"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_{" target="ftslist" title="search letter { "><b>{ </b></a> <a href="whlstf0.htm#bms_{O" target="ftslist" title="search letter {O"><b>{O</b></a> <a href="whlstf0.htm#bms_{D" target="ftslist" title="search letter {D"><b>{D</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_{"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_{" target="ftslist" title="search letter { "><b>{ </b></a> <a href="whlstf0.htm#bms_{O" target="ftslist" title="search letter {O"><b>{O</b></a> <a href="whlstf0.htm#bms_{{" target="ftslist" title="search letter { "><b>{ </b></a> <a href="whlstf0.htm#bms_{D" target="ftslist" title="search letter {D"><b>{D</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_A"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_A" target="ftslist" title="search letter AB"><b>AB</b></a> <a href="whlstf0.htm#bms_AC" target="ftslist" title="search letter AC"><b>AC</b></a> <a href="whlstf0.htm#bms_AD" target="ftslist" title="search letter AD"><b>AD</b></a> <a href="whlstf0.htm#bms_AF" target="ftslist" title="search letter AF"><b>AF</b></a> <a href="whlstf0.htm#bms_AG" target="ftslist" title="search letter AG"><b>AG</b></a> <a href="whlstf0.htm#bms_AI" target="ftslist" title="search letter AI"><b>AI</b></a> <a href="whlstf0.htm#bms_AL" target="ftslist" title="search letter AL"><b>AL</b></a> <a href="whlstf0.htm#bms_AM" target="ftslist" title="search letter AM"><b>AM</b></a> <a href="whlstf0.htm#bms_AN" target="ftslist" title="search letter AN"><b>AN</b></a> <a href="whlstf0.htm#bms_AP" target="ftslist" title="search letter AP"><b>AP</b></a> <a href="whlstf0.htm#bms_AR" target="ftslist" title="search letter AR"><b>AR</b></a> <a href="whlstf0.htm#bms_AS" target="ftslist" title="search letter AS"><b>AS</b></a> <a href="whlstf0.htm#bms_AT" target="ftslist" title="search letter AT"><b>AT</b></a> <a href="whlstf0.htm#bms_AU" target="ftslist" title="search letter AU"><b>AU</b></a> <a href="whlstf0.htm#bms_AV" target="ftslist" title="search letter AV"><b>AV</b></a> <a href="whlstf0.htm#bms_AW" target="ftslist" title="search letter AW"><b>AW</b></a> <a href="whlstf0.htm#bms_AX" target="ftslist" title="search letter AX"><b>AX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_A"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_A" target="ftslist" title="search letter AB"><b>AB</b></a> <a href="whlstf0.htm#bms_AC" target="ftslist" title="search letter AC"><b>AC</b></a> <a href="whlstf0.htm#bms_AD" target="ftslist" title="search letter AD"><b>AD</b></a> <a href="whlstf0.htm#bms_AF" target="ftslist" title="search letter AF"><b>AF</b></a> <a href="whlstf0.htm#bms_AG" target="ftslist" title="search letter AG"><b>AG</b></a> <a href="whlstf0.htm#bms_AL" target="ftslist" title="search letter AL"><b>AL</b></a> <a href="whlstf0.htm#bms_AM" target="ftslist" title="search letter AM"><b>AM</b></a> <a href="whlstf0.htm#bms_AN" target="ftslist" title="search letter AN"><b>AN</b></a> <a href="whlstf0.htm#bms_AP" target="ftslist" title="search letter AP"><b>AP</b></a> <a href="whlstf0.htm#bms_AR" target="ftslist" title="search letter AR"><b>AR</b></a> <a href="whlstf0.htm#bms_AS" target="ftslist" title="search letter AS"><b>AS</b></a> <a href="whlstf0.htm#bms_AT" target="ftslist" title="search letter AT"><b>AT</b></a> <a href="whlstf0.htm#bms_AU" target="ftslist" title="search letter AU"><b>AU</b></a> <a href="whlstf0.htm#bms_AV" target="ftslist" title="search letter AV"><b>AV</b></a> <a href="whlstf0.htm#bms_AW" target="ftslist" title="search letter AW"><b>AW</b></a> <a href="whlstf0.htm#bms_AX" target="ftslist" title="search letter AX"><b>AX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_J"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_J" target="ftslist" title="search letter JA"><b>JA</b></a> <a href="whlstf4.htm#bms_JP" target="ftslist" title="search letter JP"><b>JP</b></a> <a href="whlstf4.htm#bms_JU" target="ftslist" title="search letter JU"><b>JU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_J"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_J" target="ftslist" title="search letter JA"><b>JA</b></a> <a href="whlstf5.htm#bms_JU" target="ftslist" title="search letter JU"><b>JU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_K"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_K" target="ftslist" title="search letter K "><b>K </b></a> <a href="whlstf4.htm#bms_KB" target="ftslist" title="search letter KB"><b>KB</b></a> <a href="whlstf4.htm#bms_KE" target="ftslist" title="search letter KE"><b>KE</b></a> <a href="whlstf4.htm#bms_KI" target="ftslist" title="search letter KI"><b>KI</b></a> <a href="whlstf4.htm#bms_KN" target="ftslist" title="search letter KN"><b>KN</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_K"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_K" target="ftslist" title="search letter K "><b>K </b></a> <a href="whlstf5.htm#bms_KB" target="ftslist" title="search letter KB"><b>KB</b></a> <a href="whlstf5.htm#bms_KE" target="ftslist" title="search letter KE"><b>KE</b></a> <a href="whlstf5.htm#bms_KI" target="ftslist" title="search letter KI"><b>KI</b></a> <a href="whlstf5.htm#bms_KN" target="ftslist" title="search letter KN"><b>KN</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_L"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_L" target="ftslist" title="search letter L "><b>L </b></a> <a href="whlstf4.htm#bms_LA" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf4.htm#bms_LD" target="ftslist" title="search letter LD"><b>LD</b></a> <a href="whlstf4.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf4.htm#bms_LI" target="ftslist" title="search letter LI"><b>LI</b></a> <a href="whlstf4.htm#bms_LL" target="ftslist" title="search letter LL"><b>LL</b></a> <a href="whlstf4.htm#bms_LO" target="ftslist" title="search letter LO"><b>LO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_L"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_L" target="ftslist" title="search letter L "><b>L </b></a> <a href="whlstf5.htm#bms_LA" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf5.htm#bms_LD" target="ftslist" title="search letter LD"><b>LD</b></a> <a href="whlstf5.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf5.htm#bms_LI" target="ftslist" title="search letter LI"><b>LI</b></a> <a href="whlstf5.htm#bms_LL" target="ftslist" title="search letter LL"><b>LL</b></a> <a href="whlstf5.htm#bms_LO" target="ftslist" title="search letter LO"><b>LO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_M"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_M" target="ftslist" title="search letter M "><b>M </b></a> <a href="whlstf5.htm#bms_MA" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf5.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf5.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf5.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf5.htm#bms_MS" target="ftslist" title="search letter MS"><b>MS</b></a> <a href="whlstf5.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_M"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_M" target="ftslist" title="search letter M "><b>M </b></a> <a href="whlstf5.htm#bms_MA" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf5.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf5.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf6.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf6.htm#bms_MS" target="ftslist" title="search letter MS"><b>MS</b></a> <a href="whlstf6.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_N"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf5.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf5.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf5.htm#bms_NF" target="ftslist" title="search letter NF"><b>NF</b></a> <a href="whlstf5.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf5.htm#bms_NU" target="ftslist" title="search letter NU"><b>NU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_N"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf6.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf6.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf6.htm#bms_NF" target="ftslist" title="search letter NF"><b>NF</b></a> <a href="whlstf6.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf6.htm#bms_NT" target="ftslist" title="search letter NT"><b>NT</b></a> <a href="whlstf6.htm#bms_NU" target="ftslist" title="search letter NU"><b>NU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_O"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf5.htm#bms_OC" target="ftslist" title="search letter OC"><b>OC</b></a> <a href="whlstf5.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf5.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf5.htm#bms_OM" target="ftslist" title="search letter OM"><b>OM</b></a> <a href="whlstf6.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf6.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf6.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf6.htm#bms_OS" target="ftslist" title="search letter OS"><b>OS</b></a> <a href="whlstf6.htm#bms_OT" target="ftslist" title="search letter OT"><b>OT</b></a> <a href="whlstf6.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf6.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf6.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_O"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf6.htm#bms_OC" target="ftslist" title="search letter OC"><b>OC</b></a> <a href="whlstf6.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf6.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf6.htm#bms_OM" target="ftslist" title="search letter OM"><b>OM</b></a> <a href="whlstf6.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf6.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf6.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf6.htm#bms_OS" target="ftslist" title="search letter OS"><b>OS</b></a> <a href="whlstf6.htm#bms_OT" target="ftslist" title="search letter OT"><b>OT</b></a> <a href="whlstf6.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf7.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf7.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_P"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_P" target="ftslist" title="search letter P "><b>P </b></a> <a href="whlstf6.htm#bms_PA" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf6.htm#bms_PC" target="ftslist" title="search letter PC"><b>PC</b></a> <a href="whlstf6.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf6.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf6.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf6.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf6.htm#bms_PN" target="ftslist" title="search letter PN"><b>PN</b></a> <a href="whlstf6.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf6.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf7.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf7.htm#bms_PY" target="ftslist" title="search letter PY"><b>PY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_P"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_P" target="ftslist" title="search letter P "><b>P </b></a> <a href="whlstf7.htm#bms_PA" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf7.htm#bms_PC" target="ftslist" title="search letter PC"><b>PC</b></a> <a href="whlstf7.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf7.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf7.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf7.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf7.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf7.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf7.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf8.htm#bms_PY" target="ftslist" title="search letter PY"><b>PY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_Q"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_Q" target="ftslist" title="search letter QG"><b>QG</b></a> <a href="whlstf7.htm#bms_QM" target="ftslist" title="search letter QM"><b>QM</b></a> <a href="whlstf7.htm#bms_QT" target="ftslist" title="search letter QT"><b>QT</b></a> <a href="whlstf7.htm#bms_QU" target="ftslist" title="search letter QU"><b>QU</b></a> <a href="whlstf7.htm#bms_QW" target="ftslist" title="search letter QW"><b>QW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_Q"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_Q" target="ftslist" title="search letter QG"><b>QG</b></a> <a href="whlstf8.htm#bms_QM" target="ftslist" title="search letter QM"><b>QM</b></a> <a href="whlstf8.htm#bms_QT" target="ftslist" title="search letter QT"><b>QT</b></a> <a href="whlstf8.htm#bms_QU" target="ftslist" title="search letter QU"><b>QU</b></a> <a href="whlstf8.htm#bms_QW" target="ftslist" title="search letter QW"><b>QW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_R"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf7.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf7.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf7.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf7.htm#bms_RU" target="ftslist" title="search letter RU"><b>RU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_R"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf8.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf8.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf8.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf8.htm#bms_RU" target="ftslist" title="search letter RU"><b>RU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_S"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf7.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf7.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf7.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf8.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf8.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf8.htm#bms_SK" target="ftslist" title="search letter SK"><b>SK</b></a> <a href="whlstf8.htm#bms_SL" target="ftslist" title="search letter SL"><b>SL</b></a> <a href="whlstf8.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf8.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf8.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf8.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf8.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf8.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whlstf8.htm#bms_SY" target="ftslist" title="search letter SY"><b>SY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_S"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf8.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf8.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf8.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf9.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf9.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf9.htm#bms_SK" target="ftslist" title="search letter SK"><b>SK</b></a> <a href="whlstf9.htm#bms_SL" target="ftslist" title="search letter SL"><b>SL</b></a> <a href="whlstf9.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf9.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf9.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf9.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf9.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf9.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whlstf9.htm#bms_SY" target="ftslist" title="search letter SY"><b>SY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_B"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_B" target="ftslist" title="search letter B "><b>B </b></a> <a href="whlstf0.htm#bms_BA" target="ftslist" title="search letter BA"><b>BA</b></a> <a href="whlstf0.htm#bms_BE" target="ftslist" title="search letter BE"><b>BE</b></a> <a href="whlstf0.htm#bms_BI" target="ftslist" title="search letter BI"><b>BI</b></a> <a href="whlstf0.htm#bms_BL" target="ftslist" title="search letter BL"><b>BL</b></a> <a href="whlstf0.htm#bms_BM" target="ftslist" title="search letter BM"><b>BM</b></a> <a href="whlstf0.htm#bms_BO" target="ftslist" title="search letter BO"><b>BO</b></a> <a href="whlstf0.htm#bms_BR" target="ftslist" title="search letter BR"><b>BR</b></a> <a href="whlstf0.htm#bms_BU" target="ftslist" title="search letter BU"><b>BU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_B"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_B" target="ftslist" title="search letter B "><b>B </b></a> <a href="whlstf0.htm#bms_BA" target="ftslist" title="search letter BA"><b>BA</b></a> <a href="whlstf0.htm#bms_BE" target="ftslist" title="search letter BE"><b>BE</b></a> <a href="whlstf0.htm#bms_BI" target="ftslist" title="search letter BI"><b>BI</b></a> <a href="whlstf0.htm#bms_BL" target="ftslist" title="search letter BL"><b>BL</b></a> <a href="whlstf0.htm#bms_BO" target="ftslist" title="search letter BO"><b>BO</b></a> <a href="whlstf1.htm#bms_BR" target="ftslist" title="search letter BR"><b>BR</b></a> <a href="whlstf1.htm#bms_BU" target="ftslist" title="search letter BU"><b>BU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_T"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_T" target="ftslist" title="search letter T "><b>T </b></a> <a href="whlstf8.htm#bms_TA" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf8.htm#bms_TC" target="ftslist" title="search letter TC"><b>TC</b></a> <a href="whlstf8.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf9.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf9.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf9.htm#bms_TK" target="ftslist" title="search letter TK"><b>TK</b></a> <a href="whlstf9.htm#bms_TM" target="ftslist" title="search letter TM"><b>TM</b></a> <a href="whlstf9.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf9.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf9.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf9.htm#bms_TY" target="ftslist" title="search letter TY"><b>TY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_T"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf9.htm#bm_T" target="ftslist" title="search letter T "><b>T </b></a> <a href="whlstf9.htm#bms_TA" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf9.htm#bms_TC" target="ftslist" title="search letter TC"><b>TC</b></a> <a href="whlstf10.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf10.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf10.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf10.htm#bms_TK" target="ftslist" title="search letter TK"><b>TK</b></a> <a href="whlstf10.htm#bms_TM" target="ftslist" title="search letter TM"><b>TM</b></a> <a href="whlstf10.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf10.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf10.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf10.htm#bms_TY" target="ftslist" title="search letter TY"><b>TY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_U"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf9.htm#bm_U" target="ftslist" title="search letter U "><b>U </b></a> <a href="whlstf9.htm#bms_UL" target="ftslist" title="search letter UL"><b>UL</b></a> <a href="whlstf9.htm#bms_UN" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf9.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf9.htm#bms_US" target="ftslist" title="search letter US"><b>US</b></a> <a href="whlstf9.htm#bms_UT" target="ftslist" title="search letter UT"><b>UT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_U"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf10.htm#bm_U" target="ftslist" title="search letter U "><b>U </b></a> <a href="whlstf10.htm#bms_UL" target="ftslist" title="search letter UL"><b>UL</b></a> <a href="whlstf10.htm#bms_UN" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf10.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf10.htm#bms_US" target="ftslist" title="search letter US"><b>US</b></a> <a href="whlstf10.htm#bms_UT" target="ftslist" title="search letter UT"><b>UT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_V"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf9.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf9.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf9.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf9.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf9.htm#bms_VT" target="ftslist" title="search letter VT"><b>VT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_V"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf10.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf10.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf10.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf10.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf11.htm#bms_VT" target="ftslist" title="search letter VT"><b>VT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_W"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf9.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf9.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf9.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf9.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf10.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whlstf10.htm#bms_WR" target="ftslist" title="search letter WR"><b>WR</b></a> <a href="whlstf10.htm#bms_WW" target="ftslist" title="search letter WW"><b>WW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_W"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf11.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf11.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf11.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf11.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf11.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whlstf11.htm#bms_WR" target="ftslist" title="search letter WR"><b>WR</b></a> <a href="whlstf11.htm#bms_WW" target="ftslist" title="search letter WW"><b>WW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf10.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf10.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf10.htm#bms_XT" target="ftslist" title="search letter XT"><b>XT</b></a> <a href="whlstf10.htm#bms_XX" target="ftslist" title="search letter XX"><b>XX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf11.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf11.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf11.htm#bms_XT" target="ftslist" title="search letter XT"><b>XT</b></a> <a href="whlstf11.htm#bms_XX" target="ftslist" title="search letter XX"><b>XX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_Y"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf10.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf10.htm#bms_YE" target="ftslist" title="search letter YE"><b>YE</b></a> <a href="whlstf10.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_Y"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf11.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf11.htm#bms_YE" target="ftslist" title="search letter YE"><b>YE</b></a> <a href="whlstf11.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_C"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_C" target="ftslist" title="search letter C "><b>C </b></a> <a href="whlstf0.htm#bms_CA" target="ftslist" title="search letter CA"><b>CA</b></a> <a href="whlstf1.htm#bms_CD" target="ftslist" title="search letter CD"><b>CD</b></a> <a href="whlstf1.htm#bms_CE" target="ftslist" title="search letter CE"><b>CE</b></a> <a href="whlstf1.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf1.htm#bms_CL" target="ftslist" title="search letter CL"><b>CL</b></a> <a href="whlstf1.htm#bms_CO" target="ftslist" title="search letter CO"><b>CO</b></a> <a href="whlstf1.htm#bms_CP" target="ftslist" title="search letter CP"><b>CP</b></a> <a href="whlstf1.htm#bms_CR" target="ftslist" title="search letter CR"><b>CR</b></a> <a href="whlstf1.htm#bms_CS" target="ftslist" title="search letter CS"><b>CS</b></a> <a href="whlstf1.htm#bms_CU" target="ftslist" title="search letter CU"><b>CU</b></a> <a href="whlstf1.htm#bms_CY" target="ftslist" title="search letter CY"><b>CY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_C"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf1.htm#bm_C" target="ftslist" title="search letter C "><b>C </b></a> <a href="whlstf1.htm#bms_CA" target="ftslist" title="search letter CA"><b>CA</b></a> <a href="whlstf1.htm#bms_CD" target="ftslist" title="search letter CD"><b>CD</b></a> <a href="whlstf1.htm#bms_CE" target="ftslist" title="search letter CE"><b>CE</b></a> <a href="whlstf1.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf1.htm#bms_CL" target="ftslist" title="search letter CL"><b>CL</b></a> <a href="whlstf1.htm#bms_CO" target="ftslist" title="search letter CO"><b>CO</b></a> <a href="whlstf2.htm#bms_CP" target="ftslist" title="search letter CP"><b>CP</b></a> <a href="whlstf2.htm#bms_CR" target="ftslist" title="search letter CR"><b>CR</b></a> <a href="whlstf2.htm#bms_CS" target="ftslist" title="search letter CS"><b>CS</b></a> <a href="whlstf2.htm#bms_CT" target="ftslist" title="search letter CT"><b>CT</b></a> <a href="whlstf2.htm#bms_CU" target="ftslist" title="search letter CU"><b>CU</b></a> <a href="whlstf2.htm#bms_CY" target="ftslist" title="search letter CY"><b>CY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_E"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_E" target="ftslist" title="search letter E "><b>E </b></a> <a href="whlstf2.htm#bms_EA" target="ftslist" title="search letter EA"><b>EA</b></a> <a href="whlstf2.htm#bms_EC" target="ftslist" title="search letter EC"><b>EC</b></a> <a href="whlstf2.htm#bms_ED" target="ftslist" title="search letter ED"><b>ED</b></a> <a href="whlstf2.htm#bms_EF" target="ftslist" title="search letter EF"><b>EF</b></a> <a href="whlstf2.htm#bms_EG" target="ftslist" title="search letter EG"><b>EG</b></a> <a href="whlstf2.htm#bms_EI" target="ftslist" title="search letter EI"><b>EI</b></a> <a href="whlstf2.htm#bms_EL" target="ftslist" title="search letter EL"><b>EL</b></a> <a href="whlstf2.htm#bms_EM" target="ftslist" title="search letter EM"><b>EM</b></a> <a href="whlstf2.htm#bms_EN" target="ftslist" title="search letter EN"><b>EN</b></a> <a href="whlstf2.htm#bms_EQ" target="ftslist" title="search letter EQ"><b>EQ</b></a> <a href="whlstf2.htm#bms_ER" target="ftslist" title="search letter ER"><b>ER</b></a> <a href="whlstf2.htm#bms_ET" target="ftslist" title="search letter ET"><b>ET</b></a> <a href="whlstf2.htm#bms_EV" target="ftslist" title="search letter EV"><b>EV</b></a> <a href="whlstf2.htm#bms_EX" target="ftslist" title="search letter EX"><b>EX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_E"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_E" target="ftslist" title="search letter E "><b>E </b></a> <a href="whlstf2.htm#bms_EA" target="ftslist" title="search letter EA"><b>EA</b></a> <a href="whlstf2.htm#bms_EC" target="ftslist" title="search letter EC"><b>EC</b></a> <a href="whlstf2.htm#bms_ED" target="ftslist" title="search letter ED"><b>ED</b></a> <a href="whlstf2.htm#bms_EF" target="ftslist" title="search letter EF"><b>EF</b></a> <a href="whlstf3.htm#bms_EG" target="ftslist" title="search letter EG"><b>EG</b></a> <a href="whlstf3.htm#bms_EI" target="ftslist" title="search letter EI"><b>EI</b></a> <a href="whlstf3.htm#bms_EL" target="ftslist" title="search letter EL"><b>EL</b></a> <a href="whlstf3.htm#bms_EM" target="ftslist" title="search letter EM"><b>EM</b></a> <a href="whlstf3.htm#bms_EN" target="ftslist" title="search letter EN"><b>EN</b></a> <a href="whlstf3.htm#bms_EQ" target="ftslist" title="search letter EQ"><b>EQ</b></a> <a href="whlstf3.htm#bms_ER" target="ftslist" title="search letter ER"><b>ER</b></a> <a href="whlstf3.htm#bms_ET" target="ftslist" title="search letter ET"><b>ET</b></a> <a href="whlstf3.htm#bms_EV" target="ftslist" title="search letter EV"><b>EV</b></a> <a href="whlstf3.htm#bms_EX" target="ftslist" title="search letter EX"><b>EX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_F"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_F" target="ftslist" title="search letter F "><b>F </b></a> <a href="whlstf3.htm#bms_FA" target="ftslist" title="search letter FA"><b>FA</b></a> <a href="whlstf3.htm#bms_FE" target="ftslist" title="search letter FE"><b>FE</b></a> <a href="whlstf3.htm#bms_FI" target="ftslist" title="search letter FI"><b>FI</b></a> <a href="whlstf3.htm#bms_FL" target="ftslist" title="search letter FL"><b>FL</b></a> <a href="whlstf3.htm#bms_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf3.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf3.htm#bms_FU" target="ftslist" title="search letter FU"><b>FU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_F"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_F" target="ftslist" title="search letter F "><b>F </b></a> <a href="whlstf3.htm#bms_FA" target="ftslist" title="search letter FA"><b>FA</b></a> <a href="whlstf3.htm#bms_FE" target="ftslist" title="search letter FE"><b>FE</b></a> <a href="whlstf3.htm#bms_FI" target="ftslist" title="search letter FI"><b>FI</b></a> <a href="whlstf3.htm#bms_FL" target="ftslist" title="search letter FL"><b>FL</b></a> <a href="whlstf3.htm#bms_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf3.htm#bms_FP" target="ftslist" title="search letter FP"><b>FP</b></a> <a href="whlstf3.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf3.htm#bms_FU" target="ftslist" title="search letter FU"><b>FU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_G"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_G" target="ftslist" title="search letter G "><b>G </b></a> <a href="whlstf3.htm#bms_GC" target="ftslist" title="search letter GC"><b>GC</b></a> <a href="whlstf3.htm#bms_GE" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf3.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf3.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf3.htm#bms_GO" target="ftslist" title="search letter GO"><b>GO</b></a> <a href="whlstf3.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whlstf3.htm#bms_GU" target="ftslist" title="search letter GU"><b>GU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_G"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_G" target="ftslist" title="search letter G "><b>G </b></a> <a href="whlstf3.htm#bms_GA" target="ftslist" title="search letter GA"><b>GA</b></a> <a href="whlstf3.htm#bms_GC" target="ftslist" title="search letter GC"><b>GC</b></a> <a href="whlstf3.htm#bms_GE" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf4.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf4.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf4.htm#bms_GO" target="ftslist" title="search letter GO"><b>GO</b></a> <a href="whlstf4.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whlstf4.htm#bms_GU" target="ftslist" title="search letter GU"><b>GU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_H"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf3.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf3.htm#bms_HD" target="ftslist" title="search letter HD"><b>HD</b></a> <a href="whlstf3.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf3.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf3.htm#bms_HO" target="ftslist" title="search letter HO"><b>HO</b></a> <a href="whlstf3.htm#bms_HP" target="ftslist" title="search letter HP"><b>HP</b></a> <a href="whlstf3.htm#bms_HT" target="ftslist" title="search letter HT"><b>HT</b></a> <a href="whlstf3.htm#bms_HX" target="ftslist" title="search letter HX"><b>HX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_H"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf4.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf4.htm#bms_HD" target="ftslist" title="search letter HD"><b>HD</b></a> <a href="whlstf4.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf4.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf4.htm#bms_HO" target="ftslist" title="search letter HO"><b>HO</b></a> <a href="whlstf4.htm#bms_HP" target="ftslist" title="search letter HP"><b>HP</b></a> <a href="whlstf4.htm#bms_HT" target="ftslist" title="search letter HT"><b>HT</b></a> <a href="whlstf4.htm#bms_HX" target="ftslist" title="search letter HX"><b>HX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_I"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_I" target="ftslist" title="search letter I "><b>I </b></a> <a href="whlstf3.htm#bms_IA" target="ftslist" title="search letter IA"><b>IA</b></a> <a href="whlstf3.htm#bms_IC" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf3.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf3.htm#bms_IE" target="ftslist" title="search letter IE"><b>IE</b></a> <a href="whlstf4.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf4.htm#bms_IG" target="ftslist" title="search letter IG"><b>IG</b></a> <a href="whlstf4.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf4.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf4.htm#bms_IO" target="ftslist" title="search letter IO"><b>IO</b></a> <a href="whlstf4.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf4.htm#bms_IT" target="ftslist" title="search letter IT"><b>IT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_I"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_I" target="ftslist" title="search letter I "><b>I </b></a> <a href="whlstf4.htm#bms_IC" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf4.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf4.htm#bms_IE" target="ftslist" title="search letter IE"><b>IE</b></a> <a href="whlstf4.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf4.htm#bms_IG" target="ftslist" title="search letter IG"><b>IG</b></a> <a href="whlstf4.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf4.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf5.htm#bms_IO" target="ftslist" title="search letter IO"><b>IO</b></a> <a href="whlstf5.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf5.htm#bms_IT" target="ftslist" title="search letter IT"><b>IT</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
<nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> GUI module</a></nobr><br>\r
- <nobr><a href="../kernel/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
+ <nobr><a href="../introduction_to_gui.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
<nobr><a href="../kernel/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
<nobr><a href="../kernel/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
- <nobr><a href="../viewers.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Viewers</a></nobr><br>\r
- <nobr><a href="../kernel/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Study management</a></nobr><br>\r
<nobr><a href="../kernel/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
<nobr><a href="../kernel/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
<nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> GUI module</a></nobr><br>\r
- <nobr><a href="../kernel/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
+ <nobr><a href="../introduction_to_gui.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
<nobr><a href="../kernel/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
<nobr><a href="../kernel/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
- <nobr><a href="../viewers.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Viewers</a></nobr><br>\r
- <nobr><a href="../kernel/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
<nobr><a name="4"></a><a href="whlstt3.htm#4" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Study management</a></nobr><br>\r
<nobr><a href="../kernel/creating_a_new_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Creating a new study</a></nobr><br>\r
<nobr><a href="../kernel/opening_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Opening studies</a></nobr><br>\r
<nobr><a href="../kernel/saving_a_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Saving and closing studies</a></nobr><br>\r
<nobr><a href="../kernel/editing_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Editing studies</a></nobr><br>\r
<nobr><a href="../kernel/displaying_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying studies</a></nobr><br>\r
- <nobr><a href="../kernel/getting_properties_of_the_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting and setting study properties</a></nobr><br>\r
+ <nobr><a href="../dump_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Working with Python Scripts</a></nobr><br>\r
+ <nobr><a href="../kernel/getting_properties_of_the_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting study properties</a></nobr><br>\r
<nobr><a href="../kernel/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
<nobr><a href="../kernel/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
<nobr><a href="../kernel/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
<nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> GUI module</a></nobr><br>\r
- <nobr><a href="../kernel/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
+ <nobr><a href="../introduction_to_gui.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to GUI</a></nobr><br>\r
<nobr><a href="../kernel/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
<nobr><a href="../kernel/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
- <nobr><a href="../viewers.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Viewers</a></nobr><br>\r
- <nobr><a href="../kernel/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Study management</a></nobr><br>\r
<nobr><a href="../kernel/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
<nobr><a href="../kernel/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
<nobr><a href="../kernel/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
<nobr><a name="5"></a><a href="whlstt3.htm#5" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Setting Preferences</a></nobr><br>\r
<nobr><a href="../setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting Preferences</a></nobr><br>\r
+ <nobr><a href="../select_color_and_font.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Select Color and Font</a></nobr><br>\r
<nobr><a href="../kernel/setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME preferences</a></nobr><br>\r
- <nobr><a href="../geom_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> GEOM preferences</a></nobr><br>\r
- <nobr><a href="../mesh_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> MESH preferences</a></nobr><br>\r
+ <nobr><a href="../geom_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Geometry preferences</a></nobr><br>\r
+ <nobr><a href="../mesh_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Mesh preferences</a></nobr><br>\r
<nobr><a href="../post-pro_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Post-Pro Preferences</a></nobr><br>\r
</p>\r
\r
<a href="whlstfl23.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
<a href="whlstfl24.htm#subkey_X" target="_self"title="search letter X"><b>X</b></a> \r
<a href="whlstfl25.htm#subkey_Y" target="_self"title="search letter Y"><b>Y</b></a> \r
- <a href="whlstf10.htm#bm_Z" target="ftslist"title="search letter Z" ><b>Z</b></a> \r
+ <a href="whlstf11.htm#bm_Z" target="ftslist"title="search letter Z" ><b>Z</b></a> \r
</p>\r
\r
<body>\r
<table>\r
<tr><td> Start Page </td><td>kernel.htm</td></tr>\r
<tr><td> Skin Name </td><td>Default</td></tr>\r
-<tr><td> Generating Time </td><td>17:12 09/29/2005</td></tr>\r
+<tr><td> Generating Time </td><td>15:59 04/20/2006</td></tr>\r
<tr><td> Language ID </td><td>1033</td></tr>\r
<tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>\r
<tr><td> Compile Build Version </td><td>13.10.606</td></tr>\r
<?xml version='1.0' encoding='windows-1252' ?>\r
<ftstdata>\r
+<topic name="Dump Study" url="dump_study.htm" />\r
<topic name="GEOM preferences" url="geom_preferences.htm" />\r
+<topic name="Introduction to GUI" url="introduction_to_gui.htm" />\r
<topic name="About SALOME architecture" url="kernel/about_salome_pro_architecture.htm" />\r
<topic name="About SALOME help system" url="kernel/about_salome_pro_help_system.htm" />\r
<topic name="Creating a new study" url="kernel/creating_a_new_study.htm" />\r
-<topic name="Displaying/hiding toolbars" url="kernel/displaying_hiding_toolbars.htm" />\r
<topic name="Displaying studies" url="kernel/displaying_studies.htm" />\r
<topic name="Editing studies" url="kernel/editing_studies.htm" />\r
<topic name="Getting properties of the study" url="kernel/getting_properties_of_the_study.htm" />\r
<topic name="Getting started2" url="kernel/getting_started2.htm" />\r
<topic name="Introduction" url="kernel/introduction.htm" />\r
-<topic name="Introduction to IAPP" url="kernel/introduction_to_iapp.htm" />\r
<topic name="Introduction to SALOME" url="kernel/introduction_to_salome_pro.htm" />\r
<topic name="Navigating topics" url="kernel/navigating_topics.htm" />\r
<topic name="Opening studies" url="kernel/opening_studies.htm" />\r
<topic name="Using Registry tool" url="kernel/using_registry.htm" />\r
<topic name="MESH preferences" url="mesh_preferences.htm" />\r
<topic name="Post-Pro Preferences" url="post-pro_preferences.htm" />\r
+<topic name="Select Color and Font" url="select_color_and_font.htm" />\r
<topic name="Setting Preferences" url="setting_preferences.htm" />\r
-<topic name="Supervisor Preferences" url="supervisor_preferences.htm" />\r
-<topic name="Viewers" url="viewers.htm" />\r
\r
</ftstdata> \r
<?xml version='1.0' encoding='windows-1252' ?>\r
<fts>\r
-<chunkinfo url="whfwdata0.xml" first="__version__" last="zon"/>\r
+<chunkinfo url="whfwdata0.xml" first="__version__" last="zoom"/>\r
\r
-<tchunkinfo first="0" last="27" url="whftdata0.xml" />\r
+<tchunkinfo first="0" last="26" url="whftdata0.xml" />\r
\r
</fts>\r
<ftswdata>\r
<key name="__version__"> 14, </key>\r
<key name="_omnipymodul"> 14, </key>\r
-<key name="0"> 1,5,14,10,16, </key>\r
-<key name="1"> 3,14,24,15, </key>\r
-<key name="10"> 14, </key>\r
+<key name="0"> 6,14,2,24,16, </key>\r
+<key name="001"> 24, </key>\r
+<key name="01"> 24, </key>\r
+<key name="1"> 5,14,24,15, </key>\r
+<key name="10"> 14,24, </key>\r
+<key name="100"> 24, </key>\r
<key name="103100"> 14, </key>\r
<key name="13"> 14, </key>\r
-<key name="2"> 3,14,24,15, </key>\r
+<key name="16"> 24, </key>\r
+<key name="16x16"> 24, </key>\r
+<key name="2"> 5,14,24,15, </key>\r
+<key name="200"> 24, </key>\r
<key name="23"> 14, </key>\r
<key name="24"> 14, </key>\r
-<key name="2d"> 5,9,10,27, </key>\r
-<key name="3"> 1,5,14,10,24,15,16, </key>\r
+<key name="256"> 24, </key>\r
+<key name="2d"> 6,10,2,24, </key>\r
+<key name="3"> 6,14,2,15,16, </key>\r
<key name="31"> 14, </key>\r
-<key name="3d"> 9,10,18,27, </key>\r
+<key name="33"> 24, </key>\r
+<key name="3d"> 10,2,24,18, </key>\r
<key name="4"> 14, </key>\r
<key name="5"> 14, </key>\r
+<key name="50"> 24, </key>\r
+<key name="512"> 24, </key>\r
<key name="6"> 14, </key>\r
<key name="7"> 14, </key>\r
<key name="8"> 14, </key>\r
<key name="9"> 14, </key>\r
-<key name="abl"> 1,5,14,18,27, </key>\r
+<key name="abl"> 3,6,14,18, </key>\r
<key name="abort"> 14, </key>\r
-<key name="abov"> 7,14, </key>\r
-<key name="abstraction"> 3, </key>\r
-<key name="acces"> 1,16,18,21,27, </key>\r
-<key name="accessibl"> 9,25, </key>\r
+<key name="abov"> 8,14, </key>\r
+<key name="abscissa"> 23,24, </key>\r
+<key name="absolut"> 24, </key>\r
+<key name="abstraction"> 5, </key>\r
+<key name="acceptabl"> 24, </key>\r
+<key name="acces"> 3,1,23,24,16,18,21, </key>\r
+<key name="accessibl"> 10,26, </key>\r
<key name="accidental"> 14, </key>\r
-<key name="accord"> 14,15,16,21, </key>\r
+<key name="accord"> 14,24,15,16,21, </key>\r
<key name="account"> 14, </key>\r
-<key name="achiev"> 1, </key>\r
-<key name="acquaint"> 2, </key>\r
-<key name="action"> 18, </key>\r
-<key name="activ"> 3,5,16,17, </key>\r
-<key name="activat"> 3,16,17, </key>\r
-<key name="actual"> 1,3,6, </key>\r
-<key name="ad"> 18,19, </key>\r
-<key name="adapt"> 1, </key>\r
-<key name="add"> 4,14,15,18,19, </key>\r
-<key name="addition"> 3,14, </key>\r
-<key name="additional"> 1,4,6,14,10,21, </key>\r
-<key name="adjust"> 18, </key>\r
-<key name="advanc"> 14,19,27, </key>\r
-<key name="affect"> 1, </key>\r
-<key name="again"> 14,12,17, </key>\r
-<key name="aim"> 27, </key>\r
-<key name="algorithm"> 1,14,11, </key>\r
-<key name="allow"> 1,6,0,14,11,15,16,17,18,19,22, </key>\r
+<key name="achiev"> 3, </key>\r
+<key name="acquaint"> 4, </key>\r
+<key name="action"> 24,18, </key>\r
+<key name="activ"> 5,6,24,16,17, </key>\r
+<key name="activat"> 5,16,17, </key>\r
+<key name="activity"> 24, </key>\r
+<key name="actual"> 5,7, </key>\r
+<key name="ad"> 0,25,19, </key>\r
+<key name="adapt"> 3, </key>\r
+<key name="add"> 14,15,16,25,18,19, </key>\r
+<key name="addition"> 5,14, </key>\r
+<key name="additional"> 3,7,14,2,24,16,21, </key>\r
+<key name="addres"> 24, </key>\r
+<key name="adjust"> 24, </key>\r
+<key name="advanc"> 14,19, </key>\r
+<key name="affect"> 3, </key>\r
+<key name="again"> 6,14,12,17, </key>\r
+<key name="algorithm"> 3,14,11, </key>\r
+<key name="allow"> 3,0,7,1,14,11,23,24,15,16,17,25,18,19,22, </key>\r
+<key name="almost"> 17, </key>\r
<key name="along"> 11,18, </key>\r
<key name="alongsid"> 19, </key>\r
+<key name="alpha"> 24, </key>\r
<key name="already"> 14, </key>\r
<key name="alway"> 11, </key>\r
<key name="amount"> 14, </key>\r
<key name="animation"> 24, </key>\r
<key name="annoy"> 14, </key>\r
-<key name="anoth"> 1,17, </key>\r
+<key name="anoth"> 3,17, </key>\r
<key name="answ"> 14, </key>\r
-<key name="any"> 1,2,5,4,7,14,11,12,15, </key>\r
+<key name="any"> 3,4,6,8,14,11,12,24,15,16,17,26, </key>\r
<key name="anyth"> 14, </key>\r
-<key name="ap"> 25,21, </key>\r
-<key name="appear"> 7,8,14,18,19,22, </key>\r
-<key name="applet"> 2, </key>\r
-<key name="appli"> 18, </key>\r
-<key name="application"> 1,5,9,10,15,16,17,18,25,19,21, </key>\r
+<key name="ap"> 26,21, </key>\r
+<key name="api"> 0,24, </key>\r
+<key name="appear"> 0,8,9,14,18,19,22, </key>\r
+<key name="appearanc"> 23, </key>\r
+<key name="applet"> 4, </key>\r
+<key name="application"> 3,6,0,10,2,15,16,17,18,26,19,21, </key>\r
<key name="approach"> 14,11,16, </key>\r
-<key name="appropriat"> 14,9, </key>\r
+<key name="appropriat"> 14,10, </key>\r
<key name="approximat"> 14, </key>\r
-<key name="arabic"> 18, </key>\r
-<key name="architectur"> 1,9, </key>\r
-<key name="area"> 5,16,27, </key>\r
+<key name="arabic"> 25, </key>\r
+<key name="architectur"> 3,0,10, </key>\r
+<key name="area"> 6,16,18, </key>\r
<key name="argument"> 14, </key>\r
+<key name="arrang"> 24, </key>\r
<key name="arrow"> 21, </key>\r
<key name="ascend"> 21, </key>\r
<key name="ascii"> 17,18, </key>\r
<key name="ask"> 14, </key>\r
-<key name="associat"> 13,21, </key>\r
-<key name="attach"> 9, </key>\r
+<key name="assign"> 24, </key>\r
+<key name="associat"> 13,24,21, </key>\r
+<key name="attach"> 10, </key>\r
<key name="attribut"> 21, </key>\r
-<key name="author"> 7,19, </key>\r
+<key name="author"> 8,19, </key>\r
<key name="auto"> 14,18, </key>\r
<key name="automatic"> 23, </key>\r
-<key name="automatical"> 4,14,23,13,15,17,25, </key>\r
-<key name="availability"> 6, </key>\r
-<key name="availabl"> 1,3,6,14,9,27, </key>\r
-<key name="avoid"> 14, </key>\r
+<key name="automatical"> 0,14,23,13,24,15,16,17,26, </key>\r
+<key name="availability"> 7, </key>\r
+<key name="availabl"> 3,5,7,14,10, </key>\r
+<key name="averag"> 24, </key>\r
+<key name="avi"> 24, </key>\r
+<key name="avoid"> 0,14, </key>\r
<key name="awar"> 14, </key>\r
<key name="awk"> 14, </key>\r
-<key name="ax"> 18,27, </key>\r
-<key name="axi"> 18,27, </key>\r
+<key name="ax"> 18, </key>\r
+<key name="axi"> 18, </key>\r
<key name="b"> 14, </key>\r
<key name="back"> 14,23, </key>\r
-<key name="background"> 18, </key>\r
+<key name="background"> 24,18, </key>\r
<key name="bar"> 23,24,21, </key>\r
-<key name="bas"> 1,9,10,17, </key>\r
+<key name="bas"> 3,10,2,17, </key>\r
<key name="bash"> 14, </key>\r
-<key name="basi"> 1, </key>\r
-<key name="basic"> 1,14,11,16,18, </key>\r
-<key name="batch"> 1,14,15, </key>\r
+<key name="basi"> 3, </key>\r
+<key name="basic"> 3,14,11,16,25, </key>\r
+<key name="batch"> 3,0,14,15, </key>\r
<key name="be"> 14, </key>\r
-<key name="becom"> 5, </key>\r
+<key name="becom"> 6,24, </key>\r
<key name="befor"> 14, </key>\r
<key name="begin"> 18,22, </key>\r
-<key name="behav"> 1, </key>\r
-<key name="behavior"> 9, </key>\r
-<key name="below"> 14,12, </key>\r
+<key name="behav"> 3, </key>\r
+<key name="behavior"> 10, </key>\r
+<key name="behaviour"> 24, </key>\r
+<key name="below"> 14,12,24, </key>\r
+<key name="bet"> 24, </key>\r
+<key name="bicolor"> 24, </key>\r
+<key name="big"> 24, </key>\r
<key name="bin"> 14,15,19, </key>\r
<key name="binari"> 14, </key>\r
<key name="binary"> 14,17, </key>\r
<key name="blu"> 14, </key>\r
-<key name="blur"> 1, </key>\r
-<key name="bmp"> 27, </key>\r
+<key name="blur"> 3, </key>\r
<key name="bold"> 14, </key>\r
<key name="book"> 20, </key>\r
<key name="boost"> 14, </key>\r
<key name="boost_version"> 14, </key>\r
<key name="boostdir"> 14, </key>\r
-<key name="border"> 16, </key>\r
-<key name="both"> 10,23,27, </key>\r
-<key name="bottom"> 9,18, </key>\r
-<key name="box"> 0,7,14,23,13,17,18,19,22, </key>\r
+<key name="border"> 23,16, </key>\r
+<key name="both"> 2,23,24, </key>\r
+<key name="bottom"> 10,23,24,18, </key>\r
+<key name="box"> 0,1,8,14,23,13,24,17,25,18,19,22, </key>\r
<key name="bracket"> 14, </key>\r
-<key name="brief"> 5,14,12, </key>\r
-<key name="bring"> 10, </key>\r
-<key name="brows"> 2,3,14,10,13,16,18,19,21, </key>\r
+<key name="brep"> 10, </key>\r
+<key name="brief"> 6,14,12, </key>\r
+<key name="bring"> 2, </key>\r
+<key name="brows"> 4,5,6,0,14,2,13,16,17,18,19,21, </key>\r
<key name="bug"> 14, </key>\r
-<key name="build"> 14,19, </key>\r
-<key name="built"> 14,11,27, </key>\r
-<key name="button"> 14,10,12,13,17,18,25,19,22,27, </key>\r
-<key name="c"> 1,14,15, </key>\r
-<key name="ca"> 9, </key>\r
-<key name="cad"> 9,11, </key>\r
-<key name="cal"> 1,14,27, </key>\r
-<key name="calculation"> 8,9,11, </key>\r
+<key name="build"> 14,24,19, </key>\r
+<key name="built"> 14,11,24, </key>\r
+<key name="button"> 14,2,12,13,24,17,25,18,26,19,22, </key>\r
+<key name="c"> 3,14,15, </key>\r
+<key name="ca"> 10, </key>\r
+<key name="cad"> 10,11, </key>\r
+<key name="cal"> 3,0,14, </key>\r
+<key name="calculation"> 9,10,11, </key>\r
<key name="call"> 14,17,19,22, </key>\r
-<key name="cam"> 1, </key>\r
+<key name="cam"> 3, </key>\r
+<key name="camera"> 24, </key>\r
<key name="cancel"> 14, </key>\r
<key name="capability"> 19, </key>\r
<key name="caption"> 14, </key>\r
-<key name="car"> 14,9, </key>\r
+<key name="car"> 14,10, </key>\r
<key name="careful"> 14, </key>\r
-<key name="carry"> 9, </key>\r
-<key name="cas"> 1,7,14,11,16,17,27, </key>\r
-<key name="cascad"> 14,27, </key>\r
+<key name="carri"> 23, </key>\r
+<key name="carry"> 10, </key>\r
+<key name="cas"> 3,8,14,11,24,16,17, </key>\r
+<key name="cascad"> 14, </key>\r
<key name="casroot"> 14, </key>\r
<key name="cat"> 14, </key>\r
<key name="catalog"> 19, </key>\r
<key name="catalogmodulegeneral"> 19, </key>\r
<key name="catalogmodulepersonnel"> 19, </key>\r
-<key name="catalogu"> 10,15, </key>\r
+<key name="catalogu"> 2,15, </key>\r
<key name="categori"> 20, </key>\r
<key name="cd"> 14, </key>\r
-<key name="cel"> 18, </key>\r
-<key name="chang"> 1,5,7,14,23,16,17,18,25,27, </key>\r
-<key name="chapt"> 23, </key>\r
-<key name="chapter"> 2, </key>\r
+<key name="cel"> 24,25, </key>\r
+<key name="center"> 24, </key>\r
+<key name="centr"> 24, </key>\r
+<key name="central"> 24, </key>\r
+<key name="chang"> 3,6,8,14,23,24,16,17,18,26, </key>\r
+<key name="channel"> 24, </key>\r
+<key name="chapter"> 4, </key>\r
+<key name="character"> 25, </key>\r
<key name="charg"> 14, </key>\r
-<key name="check"> 14, </key>\r
+<key name="check"> 0,14,24,16,18, </key>\r
<key name="check_version"> 14, </key>\r
<key name="checkbox"> 14,23,24, </key>\r
-<key name="choic"> 14,27, </key>\r
-<key name="choos"> 3,4,6,7,14,23,13,24,18,19,22, </key>\r
-<key name="chosen"> 24,18,19, </key>\r
+<key name="choic"> 0,14,24,25, </key>\r
+<key name="choos"> 5,7,1,8,14,23,13,24,16,25,19,22, </key>\r
+<key name="chosen"> 24,25,19, </key>\r
+<key name="clamp"> 24, </key>\r
<key name="classic"> 16, </key>\r
<key name="clear"> 14, </key>\r
<key name="clearall"> 16, </key>\r
-<key name="click"> 3,6,7,14,12,13,16,17,18,25,19,20,21,22,27, </key>\r
+<key name="click"> 5,6,0,7,1,8,14,23,12,13,24,16,17,25,18,26,19,20,21,22, </key>\r
<key name="clickabl"> 12, </key>\r
-<key name="client"> 1, </key>\r
-<key name="clon"> 27, </key>\r
-<key name="clos"> 1,14,12,17,20, </key>\r
-<key name="cluster"> 1, </key>\r
-<key name="cod"> 1,14, </key>\r
-<key name="coefficient"> 23, </key>\r
+<key name="client"> 3, </key>\r
+<key name="clip"> 24, </key>\r
+<key name="clos"> 3,14,12,24,17,26,20, </key>\r
+<key name="cluster"> 3, </key>\r
+<key name="cod"> 3,14, </key>\r
+<key name="coef"> 23, </key>\r
<key name="coincid"> 14, </key>\r
<key name="collect"> 14, </key>\r
-<key name="color"> 0,23,24,18,21, </key>\r
+<key name="color"> 1,23,24,25,18,21, </key>\r
<key name="column"> 18,21,22, </key>\r
-<key name="combin"> 11, </key>\r
+<key name="combin"> 11,24, </key>\r
<key name="comfortabl"> 16, </key>\r
<key name="comma"> 14, </key>\r
-<key name="command"> 1,14,15, </key>\r
-<key name="common"> 14,10,11,16,17,25,27, </key>\r
-<key name="compar"> 1, </key>\r
+<key name="command"> 3,0,14,15, </key>\r
+<key name="common"> 14,2,11,16,17,26, </key>\r
+<key name="compar"> 3,23, </key>\r
<key name="compatibl"> 14, </key>\r
<key name="compil"> 14, </key>\r
<key name="compilation"> 14, </key>\r
-<key name="complet"> 7,14,20,22, </key>\r
-<key name="complex"> 1,9, </key>\r
-<key name="component"> 1,2,4,6,9,10,11,12,13,24,16,17,18,19,21,22, </key>\r
+<key name="complet"> 8,14,20,22, </key>\r
+<key name="complex"> 3,10, </key>\r
+<key name="component"> 3,4,0,7,10,2,11,12,13,24,16,17,18,19,21,22, </key>\r
<key name="compos"> 24, </key>\r
<key name="comput"> 14,18, </key>\r
-<key name="computation"> 1,9, </key>\r
-<key name="computational"> 9, </key>\r
-<key name="concept"> 1,12, </key>\r
-<key name="concern"> 14,9, </key>\r
-<key name="conclusion"> 1, </key>\r
+<key name="computation"> 3,10, </key>\r
+<key name="computational"> 10, </key>\r
+<key name="concept"> 3,12, </key>\r
+<key name="concern"> 14,10, </key>\r
+<key name="conclusion"> 3, </key>\r
<key name="config"> 14, </key>\r
<key name="config_fil"> 14, </key>\r
<key name="config_mandrake10_1"> 14, </key>\r
-<key name="configur"> 14,9, </key>\r
+<key name="configur"> 14,10, </key>\r
<key name="configurabl"> 11, </key>\r
<key name="configuration"> 14, </key>\r
-<key name="confirm"> 14, </key>\r
-<key name="connect"> 8,11,13,16,18, </key>\r
+<key name="confirm"> 0,14, </key>\r
+<key name="connect"> 9,11,13,16,18, </key>\r
<key name="consist"> 16, </key>\r
-<key name="consol"> 9,15,16,17,18, </key>\r
-<key name="constant"> 1,15, </key>\r
-<key name="construction"> 9,11, </key>\r
-<key name="contain"> 1,2,3,7,14,13,15,16,19,20,21,22, </key>\r
+<key name="consol"> 6,10,15,16,17,18, </key>\r
+<key name="constant"> 3,15, </key>\r
+<key name="construction"> 10,11, </key>\r
+<key name="consum"> 0, </key>\r
+<key name="contain"> 3,4,5,0,8,14,13,15,16,19,20,21,22, </key>\r
<key name="container"> 15, </key>\r
-<key name="content"> 14,20, </key>\r
-<key name="context"> 4,14,16,21, </key>\r
+<key name="content"> 0,14,24,20, </key>\r
+<key name="context"> 14,16,21, </key>\r
<key name="continu"> 14, </key>\r
-<key name="control"> 3,14,23, </key>\r
-<key name="convenienc"> 16,27, </key>\r
-<key name="convert"> 14, </key>\r
+<key name="control"> 5,14,23,24, </key>\r
+<key name="convert"> 0,14, </key>\r
<key name="cooperat"> 11, </key>\r
-<key name="coordinat"> 18,27, </key>\r
-<key name="copy"> 6,14,16,17, </key>\r
+<key name="coordinat"> 18, </key>\r
+<key name="copi"> 24, </key>\r
+<key name="copy"> 7,14,16,17, </key>\r
<key name="copyright"> 14, </key>\r
-<key name="corba"> 1,3,10, </key>\r
-<key name="corn"> 17,18, </key>\r
+<key name="corba"> 3,5,2, </key>\r
+<key name="corn"> 24,17,25, </key>\r
<key name="correct"> 16, </key>\r
-<key name="correspond"> 14,23,13,15,20, </key>\r
-<key name="cost"> 9, </key>\r
-<key name="coupl"> 1,9, </key>\r
+<key name="correspond"> 14,23,13,24,15,20, </key>\r
+<key name="cost"> 10, </key>\r
+<key name="coupl"> 3,10, </key>\r
<key name="cpp"> 15, </key>\r
-<key name="creat"> 1,2,3,5,8,14,9,10,11,13,15,16,17,18,19,21, </key>\r
-<key name="creation"> 1,14,10,27, </key>\r
+<key name="creat"> 3,4,5,6,0,9,14,10,2,11,23,13,15,16,17,18,19,21, </key>\r
+<key name="creation"> 3,14,2, </key>\r
<key name="cros"> 12,17, </key>\r
<key name="csh"> 14,15, </key>\r
<key name="cshell"> 15, </key>\r
-<key name="current"> 5,6,7,14,12,15,17,25,21,22, </key>\r
+<key name="ctrl"> 24, </key>\r
+<key name="current"> 6,0,8,14,12,24,15,17,18,26,21,22, </key>\r
+<key name="cursor"> 24, </key>\r
<key name="curv"> 18, </key>\r
-<key name="custom"> 9,18,19, </key>\r
-<key name="customiz"> 27, </key>\r
-<key name="customization"> 1, </key>\r
+<key name="custom"> 10,25,18,19, </key>\r
+<key name="customization"> 3, </key>\r
<key name="cycl"> 24, </key>\r
-<key name="cyrillic"> 18, </key>\r
+<key name="cyrillic"> 25, </key>\r
<key name="d"> 14, </key>\r
-<key name="dat"> 7,22, </key>\r
-<key name="data"> 1,3,8,14,9,10,11,17,18,19, </key>\r
-<key name="databas"> 1, </key>\r
+<key name="dat"> 8,22, </key>\r
+<key name="data"> 3,5,0,9,14,10,2,11,17,18,19, </key>\r
+<key name="databas"> 3, </key>\r
<key name="debug"> 21, </key>\r
-<key name="default"> 3,4,0,14,11,23,24,15,17,18,25,21,27, </key>\r
-<key name="defin"> 1,14,9,24,18,27, </key>\r
-<key name="definit"> 1,3,4,6,15,17,18,21,22, </key>\r
-<key name="definition"> 1,9,20, </key>\r
-<key name="delay"> 9, </key>\r
-<key name="demand"> 9,10, </key>\r
-<key name="depend"> 6,14,21, </key>\r
+<key name="decreas"> 24, </key>\r
+<key name="default"> 5,1,14,23,24,15,16,17,18,26,21, </key>\r
+<key name="defin"> 3,0,1,14,10,23,24,25,18, </key>\r
+<key name="definit"> 3,5,7,15,16,21,22, </key>\r
+<key name="definition"> 3,10,20, </key>\r
+<key name="delay"> 10, </key>\r
+<key name="delet"> 17, </key>\r
+<key name="demand"> 10,2,24, </key>\r
+<key name="depend"> 7,14,21, </key>\r
<key name="dependanci"> 14, </key>\r
<key name="dependenci"> 14, </key>\r
-<key name="deriv"> 1, </key>\r
+<key name="deriv"> 3, </key>\r
<key name="descend"> 21, </key>\r
-<key name="describ"> 1,2,14,23,19,27, </key>\r
+<key name="describ"> 3,4,14,19, </key>\r
<key name="description"> 14,15,19, </key>\r
-<key name="design"> 9, </key>\r
+<key name="design"> 10,24, </key>\r
<key name="desir"> 19, </key>\r
-<key name="desktop"> 5,4,8,14,10,16,17, </key>\r
-<key name="destin"> 8,16,21,22,27, </key>\r
+<key name="desktop"> 6,9,14,2,16,17, </key>\r
+<key name="destin"> 9,16,21,22, </key>\r
<key name="destination"> 12, </key>\r
-<key name="detail"> 0,14,23,18,27, </key>\r
+<key name="detail"> 14,18, </key>\r
<key name="dev"> 14, </key>\r
-<key name="develop"> 1, </key>\r
-<key name="development"> 1,9, </key>\r
+<key name="develop"> 3, </key>\r
+<key name="development"> 3,10, </key>\r
+<key name="devic"> 24, </key>\r
<key name="diagram"> 23, </key>\r
-<key name="dialog"> 0,7,14,23,13,16,17,18,19,22, </key>\r
+<key name="dialog"> 0,1,8,14,23,13,24,16,17,25,18,19,22, </key>\r
<key name="dif"> 14, </key>\r
<key name="differ"> 16, </key>\r
-<key name="differenc"> 1,14,16,17,27, </key>\r
-<key name="different"> 1,2,3,8,14,13,15,16,17,21,27, </key>\r
+<key name="differenc"> 3,14,16,17, </key>\r
+<key name="different"> 3,4,5,9,14,13,24,15,16,17,21, </key>\r
<key name="digit"> 23, </key>\r
-<key name="digital"> 9, </key>\r
+<key name="digital"> 10, </key>\r
<key name="dir"> 14, </key>\r
-<key name="direction"> 5, </key>\r
+<key name="direction"> 6,24, </key>\r
<key name="directori"> 14,18, </key>\r
<key name="directory"> 14,15,17,18,19, </key>\r
-<key name="disabl"> 14,18, </key>\r
+<key name="disabl"> 14,24,18, </key>\r
<key name="disable_flag"> 14, </key>\r
<key name="disk"> 14,15, </key>\r
-<key name="display"> 5,4,0,14,23,12,15,16,17,18,20,21,22, </key>\r
-<key name="distinction"> 1, </key>\r
-<key name="distribut"> 1,14, </key>\r
+<key name="display"> 6,1,14,23,12,24,15,16,17,18,20,21,22, </key>\r
+<key name="distanc"> 24, </key>\r
+<key name="distinction"> 3, </key>\r
+<key name="distribut"> 3,14, </key>\r
<key name="distribution"> 14, </key>\r
-<key name="divid"> 2,22, </key>\r
-<key name="do"> 6,14, </key>\r
-<key name="dockabl"> 10,16,17, </key>\r
-<key name="document"> 3,8,14,16, </key>\r
-<key name="domain"> 1,11, </key>\r
-<key name="don"> 14,19,27, </key>\r
+<key name="divid"> 4,24,22, </key>\r
+<key name="do"> 7,14, </key>\r
+<key name="dockabl"> 6,2,16,17, </key>\r
+<key name="document"> 5,0,9,14,16, </key>\r
+<key name="domain"> 3,11, </key>\r
+<key name="dominant"> 24, </key>\r
+<key name="don"> 14,24,19, </key>\r
<key name="dot"> 14, </key>\r
<key name="doubl"> 22, </key>\r
-<key name="down"> 7,12,21, </key>\r
+<key name="down"> 8,12,21, </key>\r
<key name="doxygen"> 14, </key>\r
<key name="doxytag"> 14, </key>\r
<key name="doxywizard"> 14, </key>\r
-<key name="drag"> 4,27, </key>\r
-<key name="dramatical"> 1, </key>\r
-<key name="draw"> 27, </key>\r
+<key name="drag"> 16, </key>\r
+<key name="dramatical"> 3, </key>\r
<key name="driv"> 14, </key>\r
-<key name="drop"> 4,12, </key>\r
-<key name="dump"> 27, </key>\r
+<key name="drop"> 12,16, </key>\r
+<key name="dump"> 0, </key>\r
<key name="dumpversion"> 14, </key>\r
-<key name="duplicat"> 27, </key>\r
-<key name="dynamic"> 10, </key>\r
-<key name="dynamical"> 11, </key>\r
-<key name="e"> 14,10,16,17, </key>\r
-<key name="eas"> 27, </key>\r
-<key name="easi"> 1,9, </key>\r
-<key name="easy"> 1, </key>\r
-<key name="economical"> 1, </key>\r
+<key name="dynamic"> 2, </key>\r
+<key name="dynamical"> 11,24, </key>\r
+<key name="e"> 14,2,16,17, </key>\r
+<key name="easi"> 3,10, </key>\r
+<key name="easy"> 3, </key>\r
+<key name="economical"> 3, </key>\r
<key name="edg"> 23, </key>\r
-<key name="edit"> 6,7,14,10,15, </key>\r
-<key name="editor"> 25, </key>\r
-<key name="efficient"> 9, </key>\r
+<key name="edit"> 7,8,14,2,15, </key>\r
+<key name="editabl"> 24, </key>\r
+<key name="edition"> 24, </key>\r
+<key name="editor"> 26, </key>\r
+<key name="efficient"> 10, </key>\r
<key name="egrep"> 14, </key>\r
-<key name="eith"> 24,18,19, </key>\r
-<key name="electrical"> 9, </key>\r
-<key name="electronic"> 9, </key>\r
-<key name="element"> 9,23, </key>\r
-<key name="empty"> 5,14, </key>\r
+<key name="eith"> 24,25,18,19, </key>\r
+<key name="electrical"> 10, </key>\r
+<key name="electronic"> 10, </key>\r
+<key name="element"> 10,23,24, </key>\r
+<key name="empty"> 6,14, </key>\r
<key name="enabl"> 18,20, </key>\r
-<key name="encourag"> 1, </key>\r
-<key name="end"> 1,14,25, </key>\r
-<key name="enforc"> 1, </key>\r
-<key name="engin"> 1, </key>\r
+<key name="encourag"> 3, </key>\r
+<key name="end"> 3,14,24,18,26, </key>\r
+<key name="enforc"> 3, </key>\r
+<key name="engin"> 3, </key>\r
<key name="enough"> 14, </key>\r
-<key name="ensur"> 1,9, </key>\r
-<key name="ent"> 7,14,15,17, </key>\r
+<key name="ensur"> 3,10, </key>\r
+<key name="ent"> 8,14,15,17, </key>\r
<key name="enter"> 14, </key>\r
<key name="entity"> 23, </key>\r
<key name="entry"> 18,21, </key>\r
<key name="env_for_launch"> 14, </key>\r
<key name="env_product"> 14, </key>\r
<key name="env_vtk"> 14, </key>\r
-<key name="environment"> 1,5,8,14,9,10,15, </key>\r
-<key name="equal"> 14, </key>\r
-<key name="equipment"> 9, </key>\r
-<key name="error"> 14, </key>\r
-<key name="etc"> 1,4,14,10,11,16, </key>\r
+<key name="environment"> 3,6,9,14,10,2,15, </key>\r
+<key name="equal"> 3,14, </key>\r
+<key name="equipment"> 10, </key>\r
+<key name="error"> 0,14, </key>\r
+<key name="etc"> 3,14,2,11,24,16, </key>\r
<key name="ev"> 22, </key>\r
-<key name="even"> 1,16, </key>\r
-<key name="every"> 9,20, </key>\r
+<key name="even"> 3,16, </key>\r
+<key name="every"> 10,20, </key>\r
<key name="everyth"> 14, </key>\r
-<key name="evolution"> 9, </key>\r
-<key name="evolv"> 1, </key>\r
+<key name="evolution"> 10, </key>\r
+<key name="evolv"> 3, </key>\r
<key name="ex"> 15, </key>\r
-<key name="exact"> 14, </key>\r
+<key name="exact"> 14,24, </key>\r
<key name="examl"> 14, </key>\r
-<key name="exampl"> 5,14,9,16,17,19, </key>\r
-<key name="exception"> 10, </key>\r
-<key name="exchang"> 1, </key>\r
-<key name="execution"> 9,11, </key>\r
-<key name="exist"> 1,14,11,13,17,25,19, </key>\r
+<key name="exampl"> 6,14,10,16,17,19, </key>\r
+<key name="exceed"> 24, </key>\r
+<key name="exception"> 2, </key>\r
+<key name="exchang"> 3, </key>\r
+<key name="execution"> 10,11, </key>\r
+<key name="exist"> 3,14,11,13,17,26,19, </key>\r
<key name="existenc"> 14, </key>\r
<key name="expand"> 12, </key>\r
-<key name="expandability"> 1, </key>\r
-<key name="expectation"> 9, </key>\r
-<key name="exploit"> 1, </key>\r
-<key name="explor"> 2, </key>\r
-<key name="export"> 9,27, </key>\r
-<key name="expos"> 1, </key>\r
-<key name="extend"> 18, </key>\r
+<key name="expandability"> 3, </key>\r
+<key name="expectation"> 10, </key>\r
+<key name="expert"> 0, </key>\r
+<key name="exploit"> 3, </key>\r
+<key name="explor"> 4, </key>\r
+<key name="export"> 10,23, </key>\r
+<key name="expos"> 3, </key>\r
+<key name="extend"> 25, </key>\r
<key name="extension"> 17, </key>\r
-<key name="exterior"> 27, </key>\r
<key name="external"> 18, </key>\r
<key name="extract"> 14, </key>\r
-<key name="extreme"> 9, </key>\r
+<key name="extreme"> 10, </key>\r
<key name="f"> 14, </key>\r
<key name="fac"> 23,24,18, </key>\r
-<key name="facilitat"> 1,11, </key>\r
+<key name="facilitat"> 3,11, </key>\r
<key name="fact"> 14,16, </key>\r
<key name="factory"> 19, </key>\r
<key name="fail"> 14, </key>\r
<key name="fals"> 14, </key>\r
-<key name="fast"> 27, </key>\r
-<key name="featur"> 2,6,14, </key>\r
-<key name="field"> 7,14,9,23,24,18, </key>\r
+<key name="famili"> 24, </key>\r
+<key name="featur"> 4,7,14,24, </key>\r
+<key name="field"> 8,14,10,23,24,25, </key>\r
<key name="fig"> 14, </key>\r
-<key name="figur"> 3,14, </key>\r
-<key name="fil"> 3,7,14,13,24,15,16,17,18,25,19, </key>\r
+<key name="figur"> 1,14, </key>\r
+<key name="fil"> 5,0,8,14,11,13,24,15,16,17,18,26,19, </key>\r
<key name="fill"> 23, </key>\r
<key name="find"> 14,19,20, </key>\r
<key name="find_in_path"> 14, </key>\r
-<key name="fine"> 1, </key>\r
-<key name="finish"> 14,12, </key>\r
-<key name="finit"> 9, </key>\r
-<key name="first"> 14,21, </key>\r
-<key name="fit"> 27, </key>\r
-<key name="fiv"> 11, </key>\r
+<key name="fine"> 3, </key>\r
+<key name="finish"> 14,12,24, </key>\r
+<key name="finit"> 10, </key>\r
+<key name="first"> 0,14,24,18,21, </key>\r
+<key name="fit"> 18, </key>\r
<key name="flag"> 14, </key>\r
-<key name="flexibility"> 1, </key>\r
-<key name="flexibl"> 14,9,10, </key>\r
+<key name="flexibility"> 3,0, </key>\r
+<key name="flexibl"> 14,10,2, </key>\r
+<key name="focal"> 24, </key>\r
<key name="focu"> 12, </key>\r
-<key name="fold"> 14,21, </key>\r
-<key name="follow"> 1,0,7,8,14,12,13,15,16,17,18,19,20,22,27, </key>\r
-<key name="font"> 23,24,18, </key>\r
+<key name="fold"> 14,17,21, </key>\r
+<key name="follow"> 3,0,8,9,14,12,13,15,16,17,18,19,20,22, </key>\r
+<key name="font"> 23,24,25,18, </key>\r
<key name="forget"> 19, </key>\r
-<key name="format"> 2,9,13,18,27, </key>\r
-<key name="four"> 10,27, </key>\r
-<key name="fram"> 14, </key>\r
-<key name="framework"> 10,21, </key>\r
-<key name="fre"> 9, </key>\r
-<key name="friend"> 9, </key>\r
-<key name="front"> 27, </key>\r
-<key name="full"> 23,24,20,27, </key>\r
-<key name="function"> 14,9,11,16,17,27, </key>\r
+<key name="format"> 4,10,13,18, </key>\r
+<key name="forth"> 24, </key>\r
+<key name="fp"> 24, </key>\r
+<key name="fram"> 14,24, </key>\r
+<key name="framework"> 2,21, </key>\r
+<key name="fre"> 10,24, </key>\r
+<key name="friend"> 10, </key>\r
+<key name="ful"> 24, </key>\r
+<key name="fulfill"> 0, </key>\r
+<key name="full"> 24,20, </key>\r
+<key name="function"> 0,14,10,11,16,17, </key>\r
<key name="function_nam"> 14, </key>\r
<key name="functional"> 16, </key>\r
-<key name="functionality"> 1,2,6,8,23,16,19,27, </key>\r
-<key name="functionnaliti"> 9, </key>\r
-<key name="fundamental"> 1, </key>\r
+<key name="functionaliti"> 10, </key>\r
+<key name="functionality"> 3,4,7,9,16,19, </key>\r
+<key name="fundamental"> 3, </key>\r
<key name="furth"> 14, </key>\r
<key name="g"> 14,15, </key>\r
+<key name="gap"> 23, </key>\r
+<key name="gaus"> 2,24, </key>\r
<key name="gcc"> 14, </key>\r
-<key name="general"> 8,14,23,16,18, </key>\r
-<key name="generat"> 14,11,19, </key>\r
-<key name="generator"> 9,10,19, </key>\r
-<key name="generic"> 9,11, </key>\r
-<key name="geom"> 1,4,6,0,14,11,27, </key>\r
-<key name="geometrical"> 9,11,27, </key>\r
-<key name="geometry"> 0, </key>\r
-<key name="get"> 2,7,8,14,9,21, </key>\r
-<key name="giv"> 7,14,16,18,27, </key>\r
-<key name="given"> 14,11, </key>\r
-<key name="gl"> 27, </key>\r
+<key name="general"> 9,14,23,16,18, </key>\r
+<key name="generat"> 0,14,11,19, </key>\r
+<key name="generator"> 10,2,19, </key>\r
+<key name="generic"> 10,11, </key>\r
+<key name="geom"> 14,11, </key>\r
+<key name="geometrical"> 1,10,11,24, </key>\r
+<key name="geometry"> 3,1,11,24,16, </key>\r
+<key name="get"> 4,9,14,10,21, </key>\r
+<key name="giv"> 0,8,14,16,25, </key>\r
+<key name="given"> 14,11,24, </key>\r
+<key name="gl"> 24, </key>\r
+<key name="global"> 24, </key>\r
<key name="glossary"> 20, </key>\r
<key name="go"> 14,12, </key>\r
-<key name="graph"> 5,11,18,27, </key>\r
-<key name="graphical"> 10,11, </key>\r
+<key name="graph"> 6,11,18, </key>\r
+<key name="graphic"> 24, </key>\r
+<key name="graphical"> 0,2,11, </key>\r
<key name="graphviz"> 14, </key>\r
-<key name="great"> 27, </key>\r
-<key name="greek"> 18, </key>\r
+<key name="great"> 0,24, </key>\r
+<key name="greek"> 25, </key>\r
<key name="grep"> 14, </key>\r
-<key name="group"> 18, </key>\r
-<key name="gui"> 1,3,14,10,11,15,18,25, </key>\r
+<key name="group"> 23,24,25, </key>\r
+<key name="gui"> 3,5,0,14,2,11,15,17,18,26, </key>\r
<key name="h"> 14,15, </key>\r
-<key name="hand"> 1,12,20, </key>\r
-<key name="handl"> 14,9,10, </key>\r
+<key name="half"> 24, </key>\r
+<key name="hand"> 3,12,20, </key>\r
+<key name="handl"> 14,10,2, </key>\r
<key name="happydoc"> 14, </key>\r
<key name="hard"> 14,15, </key>\r
<key name="hasn"> 17, </key>\r
<key name="hdf"> 14,13,17,18, </key>\r
<key name="hdf5"> 14, </key>\r
<key name="hdf5hom"> 14, </key>\r
-<key name="heal"> 9, </key>\r
+<key name="heal"> 10, </key>\r
+<key name="height"> 23,24, </key>\r
<key name="hello"> 22, </key>\r
-<key name="help"> 1,2,14,9,12,13,15,18,20,21,22,27, </key>\r
+<key name="help"> 3,4,14,10,12,13,15,18,20,21, </key>\r
<key name="helpful"> 14, </key>\r
-<key name="her"> 14,23,24,18,26, </key>\r
-<key name="heterogeneou"> 9, </key>\r
-<key name="hid"> 4,16,18,21,27, </key>\r
-<key name="high"> 14,9, </key>\r
-<key name="highlight"> 14,21, </key>\r
+<key name="her"> 14,23,24,18, </key>\r
+<key name="heterogeneou"> 10, </key>\r
+<key name="hid"> 24,16,18,21, </key>\r
+<key name="high"> 14,10, </key>\r
+<key name="highlight"> 14,23,21, </key>\r
<key name="hint"> 14, </key>\r
<key name="history"> 22, </key>\r
<key name="hom"> 15, </key>\r
-<key name="horizontal"> 5,23,24,18,27, </key>\r
-<key name="host"> 1, </key>\r
+<key name="horizontal"> 6,23,24,18, </key>\r
+<key name="host"> 3, </key>\r
<key name="hotspot"> 12, </key>\r
-<key name="how"> 1,14, </key>\r
+<key name="how"> 3,14, </key>\r
<key name="hpp"> 14, </key>\r
-<key name="html"> 2,20, </key>\r
+<key name="html"> 4,20, </key>\r
<key name="hxx"> 14, </key>\r
-<key name="i"> 14,10,16,17, </key>\r
-<key name="iapp"> 1, </key>\r
-<key name="icon"> 3,6,16,19, </key>\r
+<key name="i"> 14,2,16,17, </key>\r
+<key name="icon"> 5,7,16,19, </key>\r
<key name="idea"> 14, </key>\r
<key name="identification"> 21,22, </key>\r
<key name="identify"> 14, </key>\r
-<key name="idl"> 1,19, </key>\r
+<key name="idl"> 3,19, </key>\r
<key name="ie"> 18, </key>\r
-<key name="if"> 3,5,6,14,23,13,24,15,16,17,18,19,21,27, </key>\r
-<key name="ig"> 9, </key>\r
+<key name="if"> 5,6,0,7,14,23,13,24,15,16,17,18,19,21, </key>\r
+<key name="ig"> 10, </key>\r
<key name="ignor"> 14, </key>\r
-<key name="imag"> 9,27, </key>\r
+<key name="imag"> 10,24, </key>\r
<key name="immediate"> 12, </key>\r
-<key name="implement"> 1,14, </key>\r
-<key name="implementation"> 1,19, </key>\r
+<key name="implement"> 3,14, </key>\r
+<key name="implementation"> 3,19, </key>\r
<key name="impli"> 14, </key>\r
-<key name="import"> 14,9,10,11,24,16, </key>\r
+<key name="import"> 0,14,10,2,11,24,16, </key>\r
<key name="important"> 14, </key>\r
<key name="impos"> 24, </key>\r
<key name="impossibl"> 14, </key>\r
-<key name="improv"> 10, </key>\r
+<key name="improv"> 2, </key>\r
<key name="inc"> 14, </key>\r
-<key name="includ"> 14,12,20, </key>\r
-<key name="inclusiv"> 1, </key>\r
-<key name="increas"> 9, </key>\r
-<key name="incremental"> 1, </key>\r
-<key name="independenc"> 1, </key>\r
-<key name="independent"> 1, </key>\r
-<key name="index"> 21, </key>\r
+<key name="includ"> 14,12,24,20, </key>\r
+<key name="inclusiv"> 3, </key>\r
+<key name="increas"> 0,10,24, </key>\r
+<key name="increment"> 1,24, </key>\r
+<key name="incremental"> 3, </key>\r
+<key name="independenc"> 3, </key>\r
+<key name="independent"> 3, </key>\r
+<key name="index"> 23,21, </key>\r
<key name="indicat"> 16,17, </key>\r
-<key name="information"> 1,0,7,14,12,17,20,22,27, </key>\r
-<key name="initial"> 8,27, </key>\r
-<key name="input"> 9,19, </key>\r
+<key name="information"> 3,8,14,12,24,17,20,22, </key>\r
+<key name="initial"> 9, </key>\r
+<key name="input"> 10,19, </key>\r
<key name="insert"> 14, </key>\r
-<key name="insid"> 1,5,12,19, </key>\r
-<key name="inspect"> 14, </key>\r
+<key name="insid"> 3,6,12,24,19, </key>\r
+<key name="inspect"> 14,24, </key>\r
<key name="instal"> 14,19, </key>\r
<key name="instalation"> 14, </key>\r
<key name="install"> 14,15, </key>\r
<key name="installdiskspac"> 14, </key>\r
<key name="installwizard_root_directory"> 14, </key>\r
<key name="installworkxxxxx"> 14, </key>\r
-<key name="instanc"> 3, </key>\r
+<key name="instanc"> 5, </key>\r
<key name="instead"> 14, </key>\r
-<key name="instrument"> 27, </key>\r
-<key name="instrumental"> 1, </key>\r
+<key name="instrumental"> 3, </key>\r
<key name="integ"> 14, </key>\r
<key name="integer"> 23, </key>\r
-<key name="integrat"> 1,9,10,11, </key>\r
-<key name="integration"> 1,9,10,19, </key>\r
+<key name="integrat"> 3,10,2,11, </key>\r
+<key name="integration"> 3,10,2,19, </key>\r
<key name="intend"> 14, </key>\r
-<key name="interaction"> 10, </key>\r
-<key name="interfac"> 1,9,10,11,16,19, </key>\r
-<key name="internal"> 1,14, </key>\r
-<key name="internet"> 2, </key>\r
-<key name="interoperability"> 9, </key>\r
+<key name="interaction"> 2, </key>\r
+<key name="interfac"> 3,0,10,2,11,16,19, </key>\r
+<key name="interior"> 23, </key>\r
+<key name="internal"> 3,14, </key>\r
+<key name="internet"> 4, </key>\r
+<key name="interoperability"> 10, </key>\r
<key name="interoperabl"> 21, </key>\r
-<key name="interpret"> 10,16, </key>\r
-<key name="interval"> 22, </key>\r
+<key name="interpret"> 2,16, </key>\r
+<key name="interval"> 24,22, </key>\r
<key name="introduc"> 14, </key>\r
-<key name="introduction"> 14,9,10,11, </key>\r
+<key name="introduction"> 14,10,2,11, </key>\r
<key name="invalid"> 17, </key>\r
<key name="invok"> 14,16, </key>\r
<key name="ior"> 18,21, </key>\r
<key name="isolin"> 18, </key>\r
<key name="ispython"> 14, </key>\r
-<key name="item"> 7,9,10, </key>\r
+<key name="item"> 8,10,2, </key>\r
+<key name="iteration"> 24, </key>\r
<key name="itself"> 14, </key>\r
-<key name="java"> 2, </key>\r
-<key name="jpeg"> 27, </key>\r
-<key name="jpg"> 27, </key>\r
+<key name="java"> 4, </key>\r
<key name="just"> 14,18, </key>\r
<key name="k"> 15, </key>\r
<key name="kbyt"> 14, </key>\r
<key name="kernel"> 14,11,15, </key>\r
-<key name="key"> 14, </key>\r
+<key name="key"> 14,24, </key>\r
+<key name="keyboard"> 24, </key>\r
<key name="kill"> 15, </key>\r
<key name="killall"> 15, </key>\r
-<key name="kind"> 7,12, </key>\r
+<key name="kind"> 8,12, </key>\r
<key name="know"> 19, </key>\r
+<key name="knowledg"> 0, </key>\r
<key name="l"> 15, </key>\r
<key name="label"> 23,24, </key>\r
-<key name="languag"> 1, </key>\r
+<key name="languag"> 3, </key>\r
<key name="larg"> 14, </key>\r
-<key name="last"> 17,22, </key>\r
-<key name="latin"> 18, </key>\r
-<key name="launch"> 2,14,13,15,25,19,22, </key>\r
-<key name="lay"> 3, </key>\r
-<key name="layout"> 17, </key>\r
+<key name="largest"> 24, </key>\r
+<key name="last"> 18,22, </key>\r
+<key name="latest"> 24, </key>\r
+<key name="latin"> 25, </key>\r
+<key name="launch"> 4,0,14,13,15,26,19,22, </key>\r
+<key name="lay"> 5, </key>\r
+<key name="layout"> 0,17, </key>\r
<key name="ld_library_path"> 14, </key>\r
<key name="lead"> 17, </key>\r
-<key name="learn"> 14,9, </key>\r
-<key name="left"> 14,18,20, </key>\r
-<key name="legend"> 18,27, </key>\r
-<key name="level"> 1,23,18, </key>\r
+<key name="learn"> 14,10, </key>\r
+<key name="left"> 14,23,24,25,18,20, </key>\r
+<key name="legend"> 18, </key>\r
+<key name="length"> 24, </key>\r
+<key name="les"> 24, </key>\r
+<key name="level"> 3,23,24,18, </key>\r
<key name="lib"> 14, </key>\r
<key name="libcosnotify4"> 14, </key>\r
<key name="libhdf5"> 14, </key>\r
<key name="libomniorb4"> 14, </key>\r
<key name="libqwt"> 14, </key>\r
<key name="librari"> 14, </key>\r
-<key name="library"> 14,10, </key>\r
+<key name="library"> 14,2, </key>\r
<key name="libstdplugin"> 14, </key>\r
<key name="libtcl8"> 14, </key>\r
<key name="libtk8"> 14, </key>\r
<key name="libvtkcommon"> 14, </key>\r
<key name="licens"> 14, </key>\r
-<key name="lik"> 1,5,4,14,12,16,17,19,21, </key>\r
+<key name="lik"> 3,6,14,12,24,16,17,19,21, </key>\r
<key name="like"> 14, </key>\r
<key name="limit"> 24, </key>\r
-<key name="lin"> 2,14,23,15,18, </key>\r
+<key name="limitation"> 24, </key>\r
+<key name="lin"> 4,1,14,23,24,15,18, </key>\r
<key name="linear"> 18, </key>\r
-<key name="link"> 1,0,9,12, </key>\r
-<key name="linux"> 2,14, </key>\r
-<key name="list"> 7,14,12,15,18,20,22, </key>\r
+<key name="link"> 3,10,12, </key>\r
+<key name="linux"> 4,14, </key>\r
+<key name="list"> 8,14,12,24,15,18,20,22, </key>\r
<key name="list_of_prerequisit"> 14, </key>\r
-<key name="ll"> 18,27, </key>\r
-<key name="load"> 1,10,13,24,15,16,18,25,21, </key>\r
-<key name="locat"> 1,4,15,18,20,21, </key>\r
-<key name="location"> 19, </key>\r
-<key name="lock"> 7, </key>\r
+<key name="ll"> 18, </key>\r
+<key name="load"> 3,0,2,13,24,15,16,18,26,21, </key>\r
+<key name="local"> 24, </key>\r
+<key name="locat"> 3,24,15,16,18,20,21, </key>\r
+<key name="location"> 0,19, </key>\r
+<key name="lock"> 8,24, </key>\r
<key name="log"> 15, </key>\r
-<key name="logarithmic"> 24,18,27, </key>\r
-<key name="long"> 1, </key>\r
+<key name="logarithmic"> 24,18, </key>\r
+<key name="long"> 3, </key>\r
<key name="look"> 14,19,20, </key>\r
+<key name="lookout"> 23,24, </key>\r
<key name="lost"> 17, </key>\r
<key name="lot"> 16, </key>\r
-<key name="low"> 14,18,20, </key>\r
+<key name="low"> 14,24,25,20, </key>\r
<key name="m"> 15, </key>\r
-<key name="machin"> 1,17,22, </key>\r
-<key name="macintosh"> 2, </key>\r
-<key name="macro"> 1, </key>\r
-<key name="main"> 3,4,6,7,14,9,13,16,17,18,19,22, </key>\r
+<key name="machin"> 3,17,22, </key>\r
+<key name="macintosh"> 4, </key>\r
+<key name="macro"> 3, </key>\r
+<key name="magnification"> 24, </key>\r
+<key name="main"> 5,0,7,8,14,10,13,24,16,17,18,19,22, </key>\r
<key name="major"> 14, </key>\r
-<key name="mak"> 3,14,9,23,27, </key>\r
+<key name="mak"> 5,14,10,23, </key>\r
<key name="make_dir"> 14, </key>\r
<key name="make_env"> 14, </key>\r
-<key name="manag"> 9,18, </key>\r
-<key name="management"> 9,10,16, </key>\r
+<key name="manag"> 10,18, </key>\r
+<key name="management"> 10,2,16, </key>\r
<key name="mandrak"> 14, </key>\r
<key name="mandrake10"> 14, </key>\r
-<key name="manual"> 2,14,18, </key>\r
-<key name="map"> 1, </key>\r
-<key name="mark"> 4,14,18, </key>\r
+<key name="manipulat"> 24, </key>\r
+<key name="manipulator"> 24, </key>\r
+<key name="manual"> 4,0,14,18, </key>\r
+<key name="map"> 3, </key>\r
+<key name="mark"> 14,18, </key>\r
<key name="marker"> 18, </key>\r
-<key name="market"> 9, </key>\r
-<key name="massive"> 1, </key>\r
+<key name="market"> 10, </key>\r
+<key name="massive"> 3, </key>\r
<key name="mast"> 14, </key>\r
<key name="match"> 20, </key>\r
+<key name="matrix"> 24, </key>\r
<key name="max"> 24, </key>\r
-<key name="maximiz"> 3,16, </key>\r
-<key name="maximum"> 27, </key>\r
-<key name="mean"> 5,8,14,16,17, </key>\r
-<key name="mechanism"> 10, </key>\r
+<key name="maximiz"> 5, </key>\r
+<key name="maximum"> 24, </key>\r
+<key name="mean"> 6,9,14,24,16,17, </key>\r
+<key name="mechanism"> 0,2, </key>\r
<key name="med2hom"> 14, </key>\r
-<key name="meet"> 9, </key>\r
-<key name="memoriz"> 27, </key>\r
+<key name="meet"> 10, </key>\r
+<key name="memory"> 24, </key>\r
<key name="mention"> 14, </key>\r
-<key name="menu"> 1,3,4,6,7,10,23,12,13,24,16,17,18,19,21,22,27, </key>\r
+<key name="menu"> 3,5,0,7,8,2,23,12,13,24,16,17,25,18,26,19,21,22, </key>\r
<key name="menubar"> 16, </key>\r
-<key name="mesh"> 0,9,11,23,27, </key>\r
-<key name="messag"> 7,14,10,15,22, </key>\r
+<key name="mesh"> 3,10,11,23,24,16, </key>\r
+<key name="messag"> 8,14,2,15, </key>\r
<key name="middl"> 14, </key>\r
<key name="min"> 24, </key>\r
-<key name="minimiz"> 3,16, </key>\r
+<key name="minimiz"> 5, </key>\r
+<key name="minimum"> 24, </key>\r
<key name="minor"> 14, </key>\r
<key name="mis"> 14, </key>\r
<key name="mistak"> 16, </key>\r
<key name="mix"> 16, </key>\r
-<key name="mod"> 1,0,14,23,24,15, </key>\r
-<key name="model"> 1,9,11,23,27, </key>\r
-<key name="modern"> 9, </key>\r
-<key name="modification"> 1,7, </key>\r
-<key name="modify"> 14,9, </key>\r
-<key name="modul"> 1,2,6,0,14,10,11,23,24,15,16,17,18,25,19,27, </key>\r
+<key name="mod"> 3,0,1,14,23,24,15, </key>\r
+<key name="model"> 3,10,11,23, </key>\r
+<key name="modern"> 10, </key>\r
+<key name="modification"> 3,0,8, </key>\r
+<key name="modify"> 0,14,10, </key>\r
+<key name="modul"> 3,4,7,1,14,2,11,23,24,15,16,17,18,26,19, </key>\r
<key name="module_root_dir"> 14, </key>\r
<key name="module_src_dir"> 14, </key>\r
<key name="module1"> 15, </key>\r
<key name="module2"> 15, </key>\r
<key name="modulu"> 24, </key>\r
-<key name="moment"> 14, </key>\r
-<key name="mous"> 4,27, </key>\r
-<key name="mov"> 5, </key>\r
+<key name="moment"> 14,24, </key>\r
+<key name="momentari"> 24, </key>\r
+<key name="mous"> 23,24,16, </key>\r
+<key name="mov"> 6, </key>\r
+<key name="movement"> 24, </key>\r
<key name="mozilla"> 18, </key>\r
<key name="msg2qm"> 14, </key>\r
<key name="msg2qm_root"> 14, </key>\r
<key name="much"> 14, </key>\r
-<key name="multi"> 5,8,9,10,16,19, </key>\r
+<key name="multi"> 6,9,10,2,16,19, </key>\r
<key name="multifil"> 17,18, </key>\r
<key name="multipl"> 17, </key>\r
-<key name="multiti"> 1, </key>\r
-<key name="must"> 1,9,11, </key>\r
-<key name="n"> 14, </key>\r
-<key name="nam"> 1,3,7,14,17,19,21,22, </key>\r
+<key name="multipli"> 24, </key>\r
+<key name="multiti"> 3, </key>\r
+<key name="must"> 3,10,11, </key>\r
+<key name="n"> 14,24, </key>\r
+<key name="nam"> 3,5,0,8,14,17,19,21,22, </key>\r
<key name="nativ"> 14, </key>\r
-<key name="natur"> 6, </key>\r
-<key name="natural"> 1, </key>\r
+<key name="natur"> 7, </key>\r
+<key name="natural"> 3, </key>\r
<key name="navigat"> 14,12, </key>\r
-<key name="navigation"> 2,12, </key>\r
-<key name="navigator"> 2, </key>\r
-<key name="ne"> 5,14,12,18, </key>\r
-<key name="necessary"> 14,23,15,16,17,21, </key>\r
+<key name="navigation"> 4,12,24, </key>\r
+<key name="navigator"> 4, </key>\r
+<key name="ne"> 6,14,12,25,18, </key>\r
+<key name="necessary"> 0,14,23,15,16,17,21, </key>\r
+<key name="need"> 24, </key>\r
+<key name="negativ"> 24, </key>\r
<key name="netgen"> 14, </key>\r
<key name="netgenroot"> 14, </key>\r
-<key name="netscap"> 2,18, </key>\r
-<key name="new"> 1,3,7,8,14,9,17,25,19,27, </key>\r
-<key name="next"> 7,14,15,18,25,19, </key>\r
+<key name="netscap"> 4,18, </key>\r
+<key name="new"> 3,5,8,9,14,10,17,18,26,19, </key>\r
+<key name="next"> 8,14,15,26,19, </key>\r
<key name="nf"> 14, </key>\r
<key name="nod"> 23,19, </key>\r
-<key name="normal"> 5, </key>\r
-<key name="not"> 14,18, </key>\r
-<key name="noticeab"> 1, </key>\r
+<key name="normal"> 6, </key>\r
+<key name="not"> 14, </key>\r
+<key name="noticeab"> 3, </key>\r
<key name="notifd"> 14, </key>\r
-<key name="notification"> 25, </key>\r
-<key name="notion"> 8, </key>\r
+<key name="notification"> 26, </key>\r
+<key name="notify"> 24, </key>\r
+<key name="notion"> 9, </key>\r
<key name="now"> 16, </key>\r
-<key name="null"> 14, </key>\r
-<key name="numb"> 14,23,24,18,22, </key>\r
-<key name="number"> 14,23, </key>\r
-<key name="numeric"> 14,9,11,18, </key>\r
-<key name="numerical"> 1,8,9,27, </key>\r
+<key name="nth"> 24, </key>\r
+<key name="null"> 14,24, </key>\r
+<key name="numb"> 14,11,23,24,18,22, </key>\r
+<key name="number"> 14,23,24, </key>\r
+<key name="numeric"> 14,10,11,25, </key>\r
+<key name="numerical"> 3,9,10, </key>\r
<key name="numerou"> 15, </key>\r
-<key name="object"> 1,3,6,10,23,13,16,18,25,21,27, </key>\r
-<key name="objectiv"> 1, </key>\r
+<key name="object"> 3,5,6,0,7,2,23,13,24,16,17,18,26,21, </key>\r
+<key name="objectiv"> 3, </key>\r
<key name="obligatory"> 14, </key>\r
-<key name="obtain"> 27, </key>\r
-<key name="occ"> 3,5,10,18,27, </key>\r
+<key name="occ"> 5,6,2,18, </key>\r
<key name="occ_version_major"> 14, </key>\r
<key name="occ_version_minor"> 14, </key>\r
<key name="occupi"> 14, </key>\r
<key name="off"> 14, </key>\r
-<key name="offer"> 1, </key>\r
-<key name="often"> 9, </key>\r
-<key name="ok"> 14,13,25, </key>\r
-<key name="omg"> 1, </key>\r
+<key name="offer"> 3, </key>\r
+<key name="often"> 10, </key>\r
+<key name="ok"> 14,13,26, </key>\r
+<key name="omg"> 3, </key>\r
<key name="omit"> 14, </key>\r
<key name="omni"> 14, </key>\r
<key name="omninotify"> 14, </key>\r
<key name="omniorb"> 14, </key>\r
<key name="omniorbdir"> 14, </key>\r
<key name="omniorbpy"> 14, </key>\r
-<key name="on"> 1,5,6,14,10,12,13,24,15,16,17,18,19,21,27, </key>\r
+<key name="on"> 3,6,0,7,14,2,12,13,24,15,16,17,25,18,19,21, </key>\r
+<key name="onc"> 24, </key>\r
<key name="onlin"> 20, </key>\r
-<key name="open"> 5,8,14,9,11,12,13,15,17,19,20,27, </key>\r
+<key name="opaqu"> 24, </key>\r
+<key name="open"> 6,0,9,14,10,11,12,13,24,15,17,19,20, </key>\r
<key name="opencascad"> 14, </key>\r
-<key name="operat"> 27, </key>\r
-<key name="operation"> 6,8,17,27, </key>\r
-<key name="optimiz"> 14,9, </key>\r
+<key name="operat"> 0, </key>\r
+<key name="operation"> 7,9,23,24,17, </key>\r
+<key name="optimiz"> 14,10,24, </key>\r
<key name="optimization"> 11, </key>\r
-<key name="option"> 6,7,14,13,24,15,16,17,18,21, </key>\r
-<key name="optional"> 14,9,11, </key>\r
+<key name="option"> 7,8,14,13,24,15,16,17,18,21, </key>\r
+<key name="optional"> 14,10,11, </key>\r
<key name="ord"> 14, </key>\r
-<key name="org"> 1, </key>\r
+<key name="ordinat"> 23,24, </key>\r
+<key name="org"> 3, </key>\r
<key name="orientation"> 23,24, </key>\r
<key name="origin"> 23,24, </key>\r
+<key name="original"> 0, </key>\r
<key name="originality"> 11, </key>\r
<key name="os"> 14, </key>\r
<key name="os_version"> 14, </key>\r
-<key name="other"> 2,25, </key>\r
-<key name="otherwis"> 14,17, </key>\r
-<key name="out"> 9, </key>\r
+<key name="other"> 4,0, </key>\r
+<key name="otherwis"> 0,14,24,17, </key>\r
+<key name="out"> 10,23,25, </key>\r
<key name="outlin"> 23, </key>\r
-<key name="output"> 14,10, </key>\r
-<key name="outsid"> 16, </key>\r
+<key name="output"> 14,2, </key>\r
+<key name="outsid"> 24,16, </key>\r
<key name="overload"> 14, </key>\r
-<key name="own"> 14,10,11,16, </key>\r
+<key name="own"> 14,2,11,16, </key>\r
<key name="p"> 15, </key>\r
<key name="packag"> 14,15,19, </key>\r
-<key name="pag"> 14,18,20, </key>\r
-<key name="pan"> 12,20,27, </key>\r
-<key name="parallel"> 1, </key>\r
+<key name="pag"> 14,20, </key>\r
+<key name="pan"> 12,17,20, </key>\r
+<key name="parallel"> 3, </key>\r
<key name="paramet"> 14,19, </key>\r
-<key name="parameter"> 1,0,14,23,24,18,19, </key>\r
-<key name="part"> 5,14,16,27, </key>\r
-<key name="particular"> 9,17, </key>\r
+<key name="parameter"> 3,14,24,25,18,19, </key>\r
+<key name="parent"> 24, </key>\r
+<key name="part"> 6,14,16, </key>\r
+<key name="particular"> 10,17, </key>\r
<key name="party"> 11, </key>\r
<key name="pas"> 14, </key>\r
-<key name="past"> 6,16, </key>\r
-<key name="path"> 14, </key>\r
-<key name="pc"> 1, </key>\r
-<key name="perform"> 14,9, </key>\r
-<key name="performanc"> 1,8,9, </key>\r
+<key name="past"> 7,16, </key>\r
+<key name="patent"> 24, </key>\r
+<key name="path"> 14,24, </key>\r
+<key name="pc"> 3, </key>\r
+<key name="per"> 24, </key>\r
+<key name="perform"> 14,10,23,24, </key>\r
+<key name="performanc"> 3,9,10, </key>\r
<key name="permission"> 14, </key>\r
-<key name="phenomena"> 1, </key>\r
+<key name="phenomena"> 3, </key>\r
<key name="phras"> 20, </key>\r
-<key name="physic"> 9, </key>\r
-<key name="physical"> 1,9,11, </key>\r
-<key name="pick"> 14, </key>\r
+<key name="physic"> 10, </key>\r
+<key name="physical"> 3,10,11, </key>\r
+<key name="pick"> 14,24, </key>\r
<key name="pickup"> 14, </key>\r
<key name="pickup_env"> 14, </key>\r
<key name="pickup_env_flag"> 14, </key>\r
<key name="pickupenv"> 14, </key>\r
-<key name="pictur"> 7, </key>\r
+<key name="pictur"> 8, </key>\r
<key name="pid"> 22, </key>\r
-<key name="piec"> 1, </key>\r
-<key name="plac"> 5,4,14,10,16,27, </key>\r
-<key name="platform"> 1,2,5,4,8,14,9,10,11,15,16,17,19,22,27, </key>\r
-<key name="pleas"> 14,18, </key>\r
-<key name="plot"> 5,10,27, </key>\r
-<key name="plot2d"> 3,18, </key>\r
-<key name="plug"> 10, </key>\r
-<key name="png"> 27, </key>\r
+<key name="piec"> 3, </key>\r
+<key name="pixel"> 24, </key>\r
+<key name="plac"> 6,14,2,16, </key>\r
+<key name="placement"> 23,24, </key>\r
+<key name="platform"> 3,4,6,0,9,14,10,2,11,15,16,17,19,22, </key>\r
+<key name="play"> 0, </key>\r
+<key name="pleas"> 14, </key>\r
+<key name="plot"> 6,2, </key>\r
+<key name="plot2d"> 5,18, </key>\r
+<key name="plug"> 2, </key>\r
<key name="po"> 14, </key>\r
-<key name="point"> 1,14,23,18,27, </key>\r
+<key name="point"> 3,14,2,23,24,18, </key>\r
<key name="pop"> 12,13,16,21, </key>\r
<key name="popup"> 12, </key>\r
<key name="port"> 15, </key>\r
<key name="portkill"> 15, </key>\r
-<key name="position"> 16,17,18,27, </key>\r
+<key name="position"> 24,16,17,18, </key>\r
<key name="positive"> 16, </key>\r
-<key name="possibiliti"> 27, </key>\r
-<key name="possibility"> 1,14,15,18,19,27, </key>\r
-<key name="possibl"> 1,14,23,16,17,21,27, </key>\r
-<key name="post"> 9,11,24,27, </key>\r
-<key name="powerful"> 10, </key>\r
-<key name="pr"> 9,11, </key>\r
+<key name="possibility"> 3,0,14,15,25,19, </key>\r
+<key name="possibl"> 3,0,14,16,17,25,21, </key>\r
+<key name="post"> 3,10,11,24,16,17, </key>\r
+<key name="powerful"> 2, </key>\r
+<key name="pr"> 10,11, </key>\r
<key name="precision"> 23, </key>\r
<key name="precompil"> 14, </key>\r
-<key name="predefin"> 1,14,18, </key>\r
+<key name="predefin"> 3,14,25, </key>\r
<key name="preferabl"> 15, </key>\r
-<key name="preferenc"> 0,23,24,18,25,26,21,27, </key>\r
+<key name="preferenc"> 1,23,24,25,18,26,21, </key>\r
<key name="prefix"> 14, </key>\r
<key name="preinstal"> 14, </key>\r
<key name="preliminary"> 14, </key>\r
<key name="prerequisit"> 14, </key>\r
-<key name="pres"> 14,18, </key>\r
+<key name="pres"> 14,24,18, </key>\r
+<key name="preselect"> 23, </key>\r
<key name="preselection"> 23, </key>\r
-<key name="present"> 23, </key>\r
-<key name="presentation"> 3,23,16,18, </key>\r
+<key name="present"> 23,24, </key>\r
+<key name="presentation"> 5,23,24,16,18, </key>\r
+<key name="prevent"> 24, </key>\r
+<key name="preview"> 25, </key>\r
<key name="previou"> 14,13, </key>\r
<key name="previous"> 14,11,13,17, </key>\r
+<key name="primitiv"> 24, </key>\r
<key name="print"> 14,15, </key>\r
<key name="print_env"> 14, </key>\r
-<key name="priority"> 9, </key>\r
-<key name="pro"> 24,27, </key>\r
-<key name="probab"> 3, </key>\r
-<key name="problem"> 14,9, </key>\r
-<key name="proce"> 8,14, </key>\r
-<key name="procedur"> 14,15,18, </key>\r
-<key name="proces"> 1,14,9,10,11,22, </key>\r
-<key name="processor"> 1,9, </key>\r
-<key name="product"> 14,9,15, </key>\r
+<key name="priority"> 10, </key>\r
+<key name="pro"> 3,11,24,16,17, </key>\r
+<key name="probab"> 5, </key>\r
+<key name="problem"> 0,14,10, </key>\r
+<key name="proce"> 9,14, </key>\r
+<key name="procedur"> 14,15, </key>\r
+<key name="proces"> 3,0,14,10,2,11,24,22, </key>\r
+<key name="processor"> 3,10, </key>\r
+<key name="produc"> 24, </key>\r
+<key name="product"> 14,10,15, </key>\r
<key name="product_context"> 14, </key>\r
<key name="product_description"> 14, </key>\r
<key name="product_nam"> 14, </key>\r
<key name="product_script_nam"> 14, </key>\r
<key name="product_version"> 14, </key>\r
-<key name="productivity"> 1, </key>\r
+<key name="productivity"> 3,0, </key>\r
<key name="products_directory"> 14, </key>\r
<key name="profil"> 15, </key>\r
-<key name="program"> 1,14, </key>\r
-<key name="programmatic"> 9, </key>\r
-<key name="progres"> 14, </key>\r
-<key name="prompt"> 14,15,27, </key>\r
+<key name="program"> 3,14, </key>\r
+<key name="programmatic"> 10, </key>\r
+<key name="progres"> 14,24, </key>\r
+<key name="progressiv"> 24, </key>\r
+<key name="prompt"> 14,15, </key>\r
+<key name="pron"> 0, </key>\r
<key name="prop"> 14, </key>\r
<key name="proper"> 14, </key>\r
-<key name="properti"> 7,9,11,18, </key>\r
-<key name="propos"> 14,10, </key>\r
-<key name="provid"> 1,6,14,9,10,11,24,15,19,20,22,27, </key>\r
-<key name="pur"> 1, </key>\r
-<key name="purpos"> 8,21, </key>\r
+<key name="properti"> 8,10,11,24,18, </key>\r
+<key name="propos"> 14,2, </key>\r
+<key name="provid"> 3,7,14,10,2,11,24,15,25,19,20,22, </key>\r
+<key name="publish"> 0,17, </key>\r
+<key name="pur"> 3, </key>\r
+<key name="purpos"> 9,21, </key>\r
<key name="py"> 15, </key>\r
<key name="pyqt"> 14, </key>\r
<key name="pyqtdir"> 14, </key>\r
-<key name="python"> 1,14,9,10,15,16,17,18, </key>\r
+<key name="pyramid"> 24, </key>\r
+<key name="python"> 3,6,0,14,10,2,15,16,17,18, </key>\r
<key name="pythonhom"> 14, </key>\r
<key name="qglobal"> 14, </key>\r
<key name="qm"> 14, </key>\r
<key name="qt"> 14, </key>\r
<key name="qt_version_str"> 14, </key>\r
<key name="qtdir"> 14, </key>\r
-<key name="quality"> 9,23, </key>\r
-<key name="quantiti"> 9, </key>\r
+<key name="quality"> 10,23,24, </key>\r
+<key name="quantiti"> 10, </key>\r
<key name="question"> 14, </key>\r
<key name="quick"> 14,18,21, </key>\r
-<key name="quit"> 14,17, </key>\r
+<key name="quit"> 0,14,17,26, </key>\r
<key name="quot"> 14, </key>\r
<key name="qwt"> 14, </key>\r
<key name="qwthom"> 14, </key>\r
<key name="radio"> 14, </key>\r
+<key name="rainbow"> 24, </key>\r
<key name="rang"> 11,24, </key>\r
-<key name="rapid"> 1, </key>\r
-<key name="re"> 12, </key>\r
-<key name="reactivity"> 9, </key>\r
-<key name="read"> 14,9,12, </key>\r
+<key name="rapid"> 3, </key>\r
+<key name="rat"> 24, </key>\r
+<key name="rath"> 0, </key>\r
+<key name="ratio"> 24, </key>\r
+<key name="re"> 0,12, </key>\r
+<key name="reactivity"> 10, </key>\r
+<key name="read"> 14,10,12, </key>\r
<key name="readm"> 14, </key>\r
-<key name="realiz"> 8, </key>\r
-<key name="receiv"> 25, </key>\r
-<key name="recommend"> 14, </key>\r
-<key name="record"> 7, </key>\r
+<key name="real"> 24, </key>\r
+<key name="realiz"> 9, </key>\r
+<key name="reassign"> 24, </key>\r
+<key name="receiv"> 26, </key>\r
+<key name="recommend"> 14,24, </key>\r
+<key name="record"> 8,24, </key>\r
<key name="red"> 21, </key>\r
<key name="redirection"> 15, </key>\r
-<key name="redo"> 6, </key>\r
-<key name="reduc"> 9, </key>\r
-<key name="ref"> 18,25, </key>\r
+<key name="redo"> 7, </key>\r
+<key name="reduc"> 10, </key>\r
+<key name="ref"> 18,26, </key>\r
<key name="refer"> 14, </key>\r
-<key name="referenc"> 2,12,18,21, </key>\r
-<key name="refin"> 9, </key>\r
+<key name="referenc"> 4,12,24,18,21, </key>\r
+<key name="refin"> 10,24, </key>\r
<key name="refresh"> 22, </key>\r
<key name="refreshment"> 22, </key>\r
-<key name="registry"> 10,22, </key>\r
+<key name="regim"> 24, </key>\r
+<key name="registry"> 2,22, </key>\r
<key name="reinstal"> 14, </key>\r
<key name="reinstall"> 14, </key>\r
<key name="reinstallation"> 14, </key>\r
<key name="relat"> 12,20, </key>\r
-<key name="relativ"> 14, </key>\r
+<key name="relativ"> 14,23,18, </key>\r
<key name="releas"> 14, </key>\r
<key name="relevant"> 12, </key>\r
-<key name="reliability"> 9, </key>\r
+<key name="reliability"> 10, </key>\r
<key name="reload"> 17, </key>\r
-<key name="relocat"> 4, </key>\r
-<key name="remain"> 1, </key>\r
-<key name="remot"> 3,27, </key>\r
+<key name="relocat"> 16, </key>\r
+<key name="remain"> 3, </key>\r
+<key name="remot"> 5, </key>\r
<key name="remov"> 14,18, </key>\r
+<key name="renam"> 17, </key>\r
+<key name="render"> 24, </key>\r
+<key name="reopen"> 18, </key>\r
<key name="repeat"> 24, </key>\r
-<key name="represent"> 1,8,9,11,20,27, </key>\r
-<key name="representation"> 5,11,23,24,18,27, </key>\r
-<key name="requir"> 14,9,13,17, </key>\r
-<key name="requirement"> 1,9,15, </key>\r
-<key name="reset"> 14,27, </key>\r
-<key name="resiz"> 16,27, </key>\r
-<key name="resourc"> 14,10, </key>\r
-<key name="respectiv"> 25, </key>\r
-<key name="respond"> 1, </key>\r
+<key name="represent"> 3,9,10,11,20, </key>\r
+<key name="representation"> 6,11,24,18, </key>\r
+<key name="representativ"> 24, </key>\r
+<key name="requir"> 14,10,13,24,17, </key>\r
+<key name="requirement"> 3,10,15, </key>\r
+<key name="reset"> 14, </key>\r
+<key name="resolution"> 24, </key>\r
+<key name="resolv"> 0, </key>\r
+<key name="resourc"> 14,2,24, </key>\r
+<key name="respectiv"> 24,26, </key>\r
+<key name="respective"> 24, </key>\r
+<key name="respond"> 3, </key>\r
<key name="responsibl"> 14, </key>\r
-<key name="restor"> 9,25, </key>\r
-<key name="result"> 5,8,9,17, </key>\r
-<key name="retroactiv"> 25, </key>\r
-<key name="return"> 27, </key>\r
-<key name="reus"> 1, </key>\r
-<key name="reusabl"> 9, </key>\r
-<key name="reveal"> 27, </key>\r
-<key name="right"> 14,12,13,16,17,18,20,21, </key>\r
-<key name="risk"> 9, </key>\r
-<key name="robustnes"> 9, </key>\r
-<key name="rol"> 1, </key>\r
+<key name="rest"> 18, </key>\r
+<key name="restor"> 10,17,18,26, </key>\r
+<key name="result"> 9,10,24, </key>\r
+<key name="retroactiv"> 26, </key>\r
+<key name="reus"> 3, </key>\r
+<key name="reusabl"> 10, </key>\r
+<key name="reversib"> 0,24, </key>\r
+<key name="right"> 6,14,12,13,24,16,17,25,18,20,21, </key>\r
+<key name="risk"> 10, </key>\r
+<key name="robustnes"> 10, </key>\r
+<key name="rol"> 3, </key>\r
<key name="root"> 14, </key>\r
-<key name="rotat"> 27, </key>\r
-<key name="rotation"> 27, </key>\r
+<key name="rotat"> 24, </key>\r
+<key name="rotation"> 24, </key>\r
<key name="rul"> 14, </key>\r
-<key name="run"> 1,14,15,19,22, </key>\r
-<key name="runic"> 18, </key>\r
+<key name="run"> 3,14,15,19,22, </key>\r
+<key name="runic"> 25, </key>\r
<key name="runinstall"> 14, </key>\r
<key name="runsalom"> 15,19, </key>\r
<key name="runsalomewithport"> 19, </key>\r
-<key name="s"> 1,14,12, </key>\r
-<key name="saf"> 10, </key>\r
-<key name="salom"> 1,2,3,5,4,6,8,14,9,10,11,12,13,15,16,17,18,25,19,20,21,22,27, </key>\r
+<key name="s"> 3,14,12, </key>\r
+<key name="saf"> 2, </key>\r
+<key name="salom"> 3,4,5,6,0,7,9,14,10,2,11,12,13,24,15,16,17,18,26,19,20,21,22, </key>\r
<key name="salome_modulecatalog_serv"> 19, </key>\r
-<key name="sam"> 5,12,16,17,18,19,22, </key>\r
-<key name="sav"> 1,14,9,10,16,17,18,25,27, </key>\r
-<key name="scal"> 1,24,18,27, </key>\r
+<key name="salomed"> 0, </key>\r
+<key name="sam"> 6,12,24,16,17,19,22, </key>\r
+<key name="sampl"> 25, </key>\r
+<key name="sav"> 3,0,14,10,2,16,17,18,26, </key>\r
+<key name="scal"> 3,24,18, </key>\r
<key name="scalar"> 23,24, </key>\r
-<key name="scen"> 27, </key>\r
-<key name="schem"> 1,14,9, </key>\r
-<key name="schema"> 9, </key>\r
-<key name="scientific"> 1, </key>\r
-<key name="screen"> 5, </key>\r
-<key name="script"> 1,14,15,18,19, </key>\r
-<key name="scroll"> 7, </key>\r
-<key name="se"> 3,5,0,7,14,13,17,18,19,21,27, </key>\r
-<key name="search"> 2,14,13,17,20, </key>\r
-<key name="second"> 14, </key>\r
+<key name="schem"> 3,14,10, </key>\r
+<key name="schema"> 10, </key>\r
+<key name="scientific"> 3, </key>\r
+<key name="screen"> 6, </key>\r
+<key name="script"> 3,0,14,15,25,19, </key>\r
+<key name="scroll"> 8, </key>\r
+<key name="se"> 6,8,14,13,17,18,19,21, </key>\r
+<key name="search"> 4,14,13,17,20, </key>\r
+<key name="second"> 0,14,24, </key>\r
<key name="section"> 14,16,18, </key>\r
<key name="sectionthi"> 14, </key>\r
<key name="sed"> 14, </key>\r
-<key name="select"> 3,5,0,7,14,23,13,17,18,20,27, </key>\r
+<key name="seen"> 23, </key>\r
+<key name="select"> 5,6,0,1,8,14,23,13,24,17,25,18,20, </key>\r
<key name="selectall"> 16, </key>\r
-<key name="selection"> 10,23,18, </key>\r
+<key name="selection"> 2,23,24, </key>\r
<key name="send"> 14, </key>\r
-<key name="sensitiv"> 4,16,21, </key>\r
-<key name="separat"> 1,14,16, </key>\r
-<key name="serv"> 1,19, </key>\r
-<key name="server"> 1,15, </key>\r
-<key name="servic"> 1,14,19, </key>\r
-<key name="session"> 0,23,13,24,17,18,25,21,22, </key>\r
-<key name="set"> 2,0,7,14,9,23,24,15,16,17,18,25,21,22, </key>\r
-<key name="setting"> 0,14,23,24,16,17,18,25,27, </key>\r
-<key name="sever"> 9, </key>\r
+<key name="sensitiv"> 16,21, </key>\r
+<key name="separat"> 3,14,24,16, </key>\r
+<key name="serv"> 3,19, </key>\r
+<key name="server"> 3,15, </key>\r
+<key name="servic"> 3,14,19, </key>\r
+<key name="session"> 1,23,13,24,17,18,26,21,22, </key>\r
+<key name="set"> 4,0,1,8,14,10,23,24,15,16,17,18,26,21,22, </key>\r
+<key name="setting"> 14,24,16,17,18,26, </key>\r
+<key name="sever"> 10, </key>\r
<key name="sh"> 14, </key>\r
-<key name="shad"> 0,23, </key>\r
-<key name="shap"> 27, </key>\r
-<key name="shell"> 14,10,11,15, </key>\r
+<key name="shad"> 1,23,24, </key>\r
+<key name="shap"> 24, </key>\r
+<key name="shell"> 14,2,11,15, </key>\r
<key name="short"> 14,20, </key>\r
-<key name="shot"> 5, </key>\r
-<key name="should"> 8,14,17,19, </key>\r
-<key name="show"> 14,21,27, </key>\r
-<key name="shown"> 7,14, </key>\r
+<key name="shot"> 6, </key>\r
+<key name="should"> 9,14,17,19, </key>\r
+<key name="show"> 14,21, </key>\r
+<key name="shown"> 8,14, </key>\r
<key name="shrink"> 23, </key>\r
-<key name="signal"> 14,10, </key>\r
+<key name="sid"> 23,24, </key>\r
+<key name="signal"> 14,2, </key>\r
<key name="signatur"> 14, </key>\r
<key name="sigterm"> 14, </key>\r
-<key name="simp"> 18, </key>\r
-<key name="simpl"> 1, </key>\r
+<key name="simpl"> 3, </key>\r
<key name="simplify"> 14, </key>\r
-<key name="simulat"> 1, </key>\r
-<key name="simulation"> 9,11, </key>\r
-<key name="simultaneous"> 5,8,14, </key>\r
-<key name="sinc"> 14,10, </key>\r
+<key name="simulat"> 3, </key>\r
+<key name="simulation"> 10,11, </key>\r
+<key name="simultaneous"> 6,9,14, </key>\r
+<key name="sinc"> 14,2, </key>\r
<key name="singl"> 14, </key>\r
<key name="sip"> 14, </key>\r
<key name="sipdir"> 14, </key>\r
-<key name="situation"> 1, </key>\r
-<key name="siz"> 5,23,24,16,17,18, </key>\r
+<key name="situation"> 3, </key>\r
+<key name="siz"> 6,23,24,16,17,25,18, </key>\r
<key name="skip"> 14, </key>\r
<key name="slight"> 14, </key>\r
-<key name="small"> 17, </key>\r
-<key name="smesh"> 1,4,27, </key>\r
+<key name="slow"> 24, </key>\r
+<key name="smallest"> 24, </key>\r
<key name="smooth"> 18, </key>\r
-<key name="so"> 1,6,14,15,25,20,21, </key>\r
-<key name="softwar"> 1,9,11, </key>\r
-<key name="solution"> 9, </key>\r
-<key name="solv"> 9, </key>\r
-<key name="solver"> 9,11, </key>\r
+<key name="smoothnes"> 24, </key>\r
+<key name="so"> 3,7,14,24,15,26,20,21, </key>\r
+<key name="softwar"> 3,10,11, </key>\r
+<key name="solution"> 10, </key>\r
+<key name="solv"> 10, </key>\r
+<key name="solver"> 10,11, </key>\r
<key name="someth"> 14, </key>\r
<key name="sort"> 18,21, </key>\r
<key name="sort_path"> 14, </key>\r
-<key name="sourc"> 14,9,11,15, </key>\r
-<key name="spac"> 14, </key>\r
-<key name="special"> 1,14,13,15,16,17,25, </key>\r
-<key name="specializ"> 27, </key>\r
-<key name="specifi"> 1, </key>\r
-<key name="specific"> 1,4,9,15,16,25,20, </key>\r
+<key name="sourc"> 14,10,11,15, </key>\r
+<key name="spac"> 14,23,24, </key>\r
+<key name="spacemous"> 24, </key>\r
+<key name="spe"> 24, </key>\r
+<key name="special"> 3,14,13,24,15,16,17,18,26, </key>\r
+<key name="specifi"> 3,24, </key>\r
+<key name="specific"> 3,0,10,15,16,26,20, </key>\r
<key name="specification"> 11, </key>\r
-<key name="specify"> 17,18,19,27, </key>\r
-<key name="spin"> 0, </key>\r
+<key name="specify"> 17,18,19, </key>\r
+<key name="spher"> 24, </key>\r
+<key name="spin"> 1, </key>\r
<key name="splin"> 18, </key>\r
-<key name="split"> 5, </key>\r
-<key name="standalon"> 10, </key>\r
-<key name="standard"> 1,3,14,10,13,16,17,19, </key>\r
+<key name="split"> 6, </key>\r
+<key name="sprit"> 24, </key>\r
+<key name="stamp"> 24, </key>\r
+<key name="standalon"> 2, </key>\r
+<key name="standard"> 3,5,14,2,13,24,16,17,19, </key>\r
<key name="standard_version"> 14, </key>\r
-<key name="start"> 1,5,8,14,16,18,19,22, </key>\r
-<key name="stat"> 14, </key>\r
-<key name="station"> 1, </key>\r
+<key name="start"> 6,9,14,16,18,19,22, </key>\r
+<key name="stat"> 0,14,17,18, </key>\r
+<key name="station"> 3, </key>\r
<key name="statu"> 14, </key>\r
-<key name="step"> 0,14,9,24, </key>\r
+<key name="step"> 1,14,10,24, </key>\r
<key name="still"> 14, </key>\r
-<key name="stor"> 1,14,13,17,19, </key>\r
+<key name="stor"> 3,0,14,13,17,18,19, </key>\r
<key name="str"> 14, </key>\r
<key name="strict"> 14, </key>\r
<key name="strong"> 14, </key>\r
-<key name="structur"> 1,14,9,10,13,21, </key>\r
-<key name="structural"> 9, </key>\r
-<key name="studi"> 3,5,6,8,9,10,13,16,17, </key>\r
-<key name="study"> 1,3,5,6,7,8,9,10,13,16,17,18,25,19,21,22, </key>\r
-<key name="study1"> 3, </key>\r
-<key name="styl"> 18, </key>\r
-<key name="sub"> 14,20,27, </key>\r
-<key name="submenu"> 3,4,18, </key>\r
-<key name="subset"> 18, </key>\r
+<key name="struck"> 25, </key>\r
+<key name="structur"> 3,14,10,2,13,21, </key>\r
+<key name="structural"> 10, </key>\r
+<key name="studi"> 5,6,7,9,10,2,13,16,17, </key>\r
+<key name="study"> 3,5,6,0,7,8,9,10,2,13,24,16,17,18,26,19,21,22, </key>\r
+<key name="study1"> 5, </key>\r
+<key name="styl"> 25,18, </key>\r
+<key name="sub"> 14,20, </key>\r
+<key name="submenu"> 5,16,18, </key>\r
+<key name="subset"> 25, </key>\r
+<key name="substitut"> 24, </key>\r
<key name="successful"> 14, </key>\r
-<key name="suit"> 10, </key>\r
+<key name="suit"> 2, </key>\r
<key name="summariz"> 14, </key>\r
+<key name="superposition"> 24, </key>\r
<key name="superv"> 15, </key>\r
-<key name="supervision"> 10,11,15,19, </key>\r
-<key name="supervisor"> 26, </key>\r
+<key name="supervision"> 2,15,19, </key>\r
+<key name="supervisor"> 11,18,19, </key>\r
<key name="supplementary"> 21,22, </key>\r
-<key name="support"> 14,9,19, </key>\r
+<key name="support"> 14,10,19, </key>\r
<key name="supported_installation_mod"> 14, </key>\r
<key name="suppos"> 14, </key>\r
<key name="sur"> 14, </key>\r
+<key name="surfac"> 23, </key>\r
<key name="sweep"> 24, </key>\r
<key name="swig"> 14, </key>\r
-<key name="switch"> 5,14,10, </key>\r
-<key name="system"> 1,2,14,9,12,20, </key>\r
-<key name="t"> 6,14,15,16,17,18,19,27, </key>\r
-<key name="tab"> 5,20,22, </key>\r
-<key name="tabl"> 14,18, </key>\r
+<key name="switch"> 6,14,2,24, </key>\r
+<key name="system"> 3,4,14,10,12,24,20, </key>\r
+<key name="t"> 7,14,24,15,16,17,18,19, </key>\r
+<key name="tab"> 6,20,22, </key>\r
+<key name="tabl"> 14,25, </key>\r
<key name="tag"> 14, </key>\r
-<key name="tailor"> 9, </key>\r
-<key name="tak"> 1,14, </key>\r
+<key name="tailor"> 10, </key>\r
+<key name="tak"> 3,14, </key>\r
<key name="taken"> 14,15, </key>\r
<key name="target"> 14, </key>\r
<key name="target_directory"> 14, </key>\r
<key name="target_platform"> 14, </key>\r
<key name="targetdir"> 14, </key>\r
+<key name="task"> 0, </key>\r
<key name="tcl"> 14, </key>\r
<key name="tclhom"> 14, </key>\r
<key name="tclsh8"> 14, </key>\r
-<key name="technologi"> 1, </key>\r
-<key name="technological"> 9, </key>\r
-<key name="technology"> 1, </key>\r
+<key name="technologi"> 3, </key>\r
+<key name="technological"> 10, </key>\r
+<key name="technology"> 3, </key>\r
<key name="temp"> 14, </key>\r
<key name="temp_directory"> 14, </key>\r
<key name="temp_fold"> 14, </key>\r
<key name="tempdir"> 14, </key>\r
<key name="temporary"> 14, </key>\r
<key name="temporarydiskspac"> 14, </key>\r
-<key name="term"> 9,12,20, </key>\r
+<key name="tensor"> 24, </key>\r
+<key name="term"> 10,12,20, </key>\r
<key name="terminal"> 14,15, </key>\r
-<key name="test"> 1,14,19, </key>\r
-<key name="text"> 14,12,26,20, </key>\r
-<key name="them"> 1,5,14,9,15,16,22,27, </key>\r
+<key name="test"> 3,14,19, </key>\r
+<key name="text"> 14,12,20, </key>\r
+<key name="textur"> 24, </key>\r
+<key name="them"> 3,6,14,10,23,15,16,25,22, </key>\r
<key name="therefor"> 14, </key>\r
<key name="third"> 11, </key>\r
<key name="thos"> 14,18,20, </key>\r
<key name="thre"> 14, </key>\r
-<key name="thu"> 1, </key>\r
-<key name="tim"> 1,5,7,14,9,24,15,25,19,22, </key>\r
-<key name="titl"> 14,23,24, </key>\r
+<key name="threshold"> 24, </key>\r
+<key name="thu"> 3,0, </key>\r
+<key name="tim"> 3,6,0,8,14,10,24,15,17,26,19,22, </key>\r
+<key name="titl"> 14,23,24,18, </key>\r
<key name="tk"> 14, </key>\r
<key name="tmp"> 14, </key>\r
<key name="tmp_disk_spac"> 14, </key>\r
<key name="togeth"> 14, </key>\r
<key name="toggl"> 23,24,21, </key>\r
-<key name="tool"> 1,14,10,11,16,19,22, </key>\r
-<key name="toolbar"> 1,3,4,6,10,13,16,17,27, </key>\r
-<key name="toolkit"> 10,27, </key>\r
-<key name="top"> 3,4,14,10,18, </key>\r
-<key name="topic"> 2,12,26,20, </key>\r
+<key name="toleranc"> 24, </key>\r
+<key name="tool"> 3,14,2,11,16,19,22, </key>\r
+<key name="toolbar"> 3,5,7,2,13,16,17, </key>\r
+<key name="toolkit"> 2, </key>\r
+<key name="top"> 5,14,2,24,16,18, </key>\r
+<key name="topic"> 4,12,20, </key>\r
<key name="topmost"> 14, </key>\r
<key name="total"> 14, </key>\r
-<key name="totality"> 1, </key>\r
+<key name="totality"> 3, </key>\r
+<key name="touch"> 0, </key>\r
<key name="tr"> 14, </key>\r
-<key name="train"> 9, </key>\r
-<key name="tre"> 3,14,18,19,21, </key>\r
+<key name="train"> 10, </key>\r
+<key name="translat"> 24, </key>\r
+<key name="translation"> 24, </key>\r
+<key name="transparency"> 24, </key>\r
+<key name="transparent"> 24, </key>\r
+<key name="tre"> 5,14,18,19,21, </key>\r
<key name="tri"> 14, </key>\r
-<key name="trihedron"> 18,27, </key>\r
+<key name="trihedron"> 18, </key>\r
<key name="trolltech"> 14, </key>\r
<key name="tru"> 14, </key>\r
-<key name="try"> 7,14,17,19, </key>\r
+<key name="try"> 8,14,17,19, </key>\r
<key name="try_exist"> 14, </key>\r
<key name="try_nativ"> 14, </key>\r
<key name="try_preinstal"> 14, </key>\r
-<key name="two"> 5,14,12,17,19, </key>\r
-<key name="typ"> 14,23,24,18,26,19, </key>\r
+<key name="twic"> 24, </key>\r
+<key name="two"> 6,14,12,24,17,19, </key>\r
+<key name="typ"> 0,14,23,24,25,18,19, </key>\r
<key name="typical"> 19, </key>\r
<key name="u"> 18, </key>\r
-<key name="ultimat"> 1, </key>\r
-<key name="undo"> 6,18, </key>\r
+<key name="ultimat"> 3, </key>\r
+<key name="uncheck"> 24,16, </key>\r
+<key name="underlin"> 25, </key>\r
+<key name="undo"> 7,18, </key>\r
<key name="undon"> 18, </key>\r
-<key name="unfortunate"> 14,27, </key>\r
-<key name="uniqu"> 14,27, </key>\r
-<key name="unix"> 2, </key>\r
+<key name="unfortunate"> 14, </key>\r
+<key name="uniqu"> 14, </key>\r
+<key name="unit"> 24, </key>\r
+<key name="unix"> 4, </key>\r
<key name="unload"> 13,17, </key>\r
-<key name="unmark"> 4, </key>\r
<key name="unnecessary"> 14, </key>\r
<key name="unselect"> 14, </key>\r
-<key name="up"> 14,9,12,13,16,17,18,21, </key>\r
-<key name="updat"> 23,16,17,19, </key>\r
-<key name="upload"> 4,10,16, </key>\r
-<key name="us"> 1,6,0,7,8,14,9,10,11,23,24,15,16,17,18,25,19,20,21,22,27, </key>\r
-<key name="usability"> 10, </key>\r
-<key name="usag"> 14, </key>\r
-<key name="usecas"> 10, </key>\r
-<key name="useful"> 27, </key>\r
-<key name="user"> 7,19,27, </key>\r
+<key name="unus"> 0, </key>\r
+<key name="up"> 14,10,12,13,16,17,25,21, </key>\r
+<key name="updat"> 23,24,16,17,19, </key>\r
+<key name="upload"> 2,16, </key>\r
+<key name="us"> 3,0,1,8,9,14,10,2,11,23,24,15,16,17,25,18,26,19,20,21,22, </key>\r
+<key name="usability"> 2, </key>\r
+<key name="usag"> 14,24, </key>\r
+<key name="user"> 8,19, </key>\r
<key name="usr"> 14, </key>\r
<key name="usual"> 14, </key>\r
-<key name="utiliti"> 2, </key>\r
+<key name="utiliti"> 4, </key>\r
<key name="v"> 14,18, </key>\r
<key name="valid"> 18, </key>\r
-<key name="validation"> 1, </key>\r
-<key name="valu"> 0,14,23,18,21, </key>\r
+<key name="validation"> 3, </key>\r
+<key name="valu"> 1,14,23,24,18,21, </key>\r
<key name="variabl"> 14,15, </key>\r
<key name="varibl"> 14, </key>\r
-<key name="variety"> 2,12, </key>\r
+<key name="variety"> 4,12, </key>\r
<key name="variou"> 14,11, </key>\r
<key name="ve"> 14,18, </key>\r
+<key name="vector"> 24, </key>\r
<key name="ver"> 14, </key>\r
<key name="ver_major"> 14, </key>\r
<key name="ver_minor"> 14, </key>\r
-<key name="verbal"> 27, </key>\r
-<key name="version"> 1,5,14,10,16,19, </key>\r
-<key name="vertical"> 5,23,24,18,27, </key>\r
-<key name="very"> 14,9,10,16, </key>\r
-<key name="via"> 27, </key>\r
-<key name="view"> 1,3,4,7,14,10,23,12,16,18,20,22,27, </key>\r
-<key name="viewer"> 3,5,10,11,16,18,27, </key>\r
-<key name="visibl"> 27, </key>\r
-<key name="visu"> 1,4,6,11, </key>\r
+<key name="version"> 6,14,2,16,19, </key>\r
+<key name="vertical"> 6,23,24,18, </key>\r
+<key name="very"> 14,10,2,24,16, </key>\r
+<key name="view"> 3,5,8,14,2,23,12,24,16,18,20,22, </key>\r
+<key name="viewer"> 5,6,2,11,16,17,18, </key>\r
<key name="visual"> 11, </key>\r
-<key name="visualiz"> 9,27, </key>\r
-<key name="visualization"> 8,9,10,11,16,27, </key>\r
-<key name="vtk"> 3,5,14,10,18,27, </key>\r
+<key name="visualisation"> 1,24, </key>\r
+<key name="visualiz"> 10,24, </key>\r
+<key name="visualization"> 9,10,2,11,16, </key>\r
+<key name="vtk"> 5,6,14,2,18, </key>\r
<key name="vtkhom"> 14, </key>\r
<key name="wait"> 14, </key>\r
-<key name="want"> 5,14,12, </key>\r
-<key name="warn"> 7,14, </key>\r
+<key name="want"> 6,14,12, </key>\r
+<key name="warn"> 8,14,24, </key>\r
<key name="way"> 14,11,19, </key>\r
-<key name="web"> 2, </key>\r
-<key name="welcom"> 2,9, </key>\r
-<key name="well"> 16, </key>\r
-<key name="what"> 1,14,9,12,25,21, </key>\r
-<key name="whenev"> 23, </key>\r
-<key name="wherev"> 5, </key>\r
+<key name="web"> 4, </key>\r
+<key name="welcom"> 4,10, </key>\r
+<key name="what"> 3,14,10,12,26,21, </key>\r
+<key name="whenev"> 23,18, </key>\r
+<key name="wherev"> 6, </key>\r
<key name="wheth"> 14, </key>\r
-<key name="whil"> 1, </key>\r
-<key name="whol"> 24,16,17,18,25, </key>\r
-<key name="wid"> 2,11,27, </key>\r
+<key name="whil"> 3, </key>\r
+<key name="whol"> 24,18,26, </key>\r
+<key name="whos"> 23, </key>\r
+<key name="wid"> 4,11,25, </key>\r
<key name="widget"> 11, </key>\r
-<key name="width"> 23, </key>\r
-<key name="will"> 2,3,4,7,14,23,13,24,15,16,17,18,25,19,21,22, </key>\r
-<key name="window"> 2,3,5,4,8,14,10,12,15,16,17,18,22, </key>\r
-<key name="wirefram"> 0,23, </key>\r
-<key name="wish"> 5,27, </key>\r
+<key name="width"> 23,24, </key>\r
+<key name="will"> 4,5,0,8,14,23,13,24,15,16,17,25,18,26,19,21,22, </key>\r
+<key name="window"> 4,5,6,9,14,2,12,24,15,16,17,25,18,22, </key>\r
+<key name="wirefram"> 1,23, </key>\r
+<key name="wish"> 6, </key>\r
<key name="wish8"> 14, </key>\r
-<key name="within"> 1,3,6,22, </key>\r
-<key name="without"> 1,14,15, </key>\r
+<key name="within"> 3,5,7,22, </key>\r
+<key name="without"> 3,0,14,24,15,26, </key>\r
<key name="wizard"> 14, </key>\r
-<key name="won"> 6,14,15, </key>\r
+<key name="won"> 7,14,15, </key>\r
<key name="word"> 20, </key>\r
-<key name="work"> 1,5,8,14,16,17,27, </key>\r
-<key name="would"> 4,14,17,19, </key>\r
-<key name="writ"> 9,17, </key>\r
-<key name="written"> 1,17, </key>\r
+<key name="work"> 3,6,0,9,14,11,24,16,17, </key>\r
+<key name="would"> 14,16,17,19, </key>\r
+<key name="writ"> 10,17, </key>\r
+<key name="written"> 3,17, </key>\r
<key name="wrong"> 14, </key>\r
-<key name="www"> 1, </key>\r
-<key name="x"> 15, </key>\r
+<key name="www"> 3, </key>\r
+<key name="x"> 23,24,15, </key>\r
<key name="xml"> 14,15,19, </key>\r
<key name="xterm"> 15, </key>\r
<key name="xxxxx"> 14, </key>\r
-<key name="y"> 14, </key>\r
-<key name="year"> 9, </key>\r
-<key name="yes"> 7,14, </key>\r
+<key name="y"> 14,23,24, </key>\r
+<key name="year"> 10, </key>\r
+<key name="yes"> 8,14, </key>\r
<key name="yet"> 14,18, </key>\r
-<key name="your"> 3,5,6,7,14,23,24,15,16,17,18,19,27, </key>\r
-<key name="yourselv"> 18, </key>\r
-<key name="zon"> 3,5, </key>\r
+<key name="your"> 5,6,0,7,8,14,23,24,15,17,18,19, </key>\r
+<key name="yourselv"> 25, </key>\r
+<key name="zon"> 5,6,24, </key>\r
+<key name="zoom"> 24,17, </key>\r
\r
</ftswdata> \r
<item name="Running SALOME" url="kernel/running_salome_pro.htm" />\r
</book>\r
<book name="GUI module" >\r
- <item name="Introduction to GUI" url="kernel/introduction_to_iapp.htm" />\r
+ <item name="Introduction to GUI" url="introduction_to_gui.htm" />\r
<item name="Getting started" url="kernel/getting_started2.htm" />\r
<item name="SALOME desktop" url="kernel/salome_pro_desktop.htm" />\r
- <item name="Viewers" url="viewers.htm" />\r
- <item name="Displaying/hiding toolbars" url="kernel/displaying_hiding_toolbars.htm" />\r
<book name="Study management" >\r
<item name="Creating a new study" url="kernel/creating_a_new_study.htm" />\r
<item name="Opening studies" url="kernel/opening_studies.htm" />\r
<item name="Saving and closing studies" url="kernel/saving_a_study.htm" />\r
<item name="Editing studies" url="kernel/editing_studies.htm" />\r
<item name="Displaying studies" url="kernel/displaying_studies.htm" />\r
- <item name="Getting and setting study properties" url="kernel/getting_properties_of_the_study.htm" />\r
+ <item name="Working with Python Scripts" url="dump_study.htm" />\r
+ <item name="Setting study properties" url="kernel/getting_properties_of_the_study.htm" />\r
</book>\r
<item name="Using Object Browser" url="kernel/using_object_browser.htm" />\r
<item name="Using Registry tool" url="kernel/using_registry.htm" />\r
<item name="Using Catalog Generator" url="kernel/using_catalog_generator.htm" />\r
<book name="Setting Preferences" >\r
<item name="Setting Preferences" url="setting_preferences.htm" />\r
+ <item name="Select Color and Font" url="select_color_and_font.htm" />\r
<item name="SALOME preferences" url="kernel/setting_preferences.htm" />\r
- <item name="GEOM preferences" url="geom_preferences.htm" />\r
- <item name="MESH preferences" url="mesh_preferences.htm" />\r
+ <item name="Geometry preferences" url="geom_preferences.htm" />\r
+ <item name="Mesh preferences" url="mesh_preferences.htm" />\r
<item name="Post-Pro Preferences" url="post-pro_preferences.htm" />\r
</book>\r
</book>\r
docs:
cp -fr $(srcdir)/KERNEL ./
- -find $(PWD) -name CVS -exec rm -rf {} \;
+ -find $(PWD) -name CVS -prune -exec rm -rf {} \;
clean:
rm -fr `ls | grep -v "Makefile"`
install:
mkdir -p $(docdir)/gui
cp -rf KERNEL $(docdir)/gui
- -find $(PWD) -name CVS -exec rm -rf {} \;
+ -find $(PWD) -name CVS -prune -exec rm -rf {} \;
uninstall:
rm -rf $(docdir)/gui/KERNEL
cp -fr $(srcdir)/SUIT ./INPUT; \
cd INPUT; \
sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
+ sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \
+ sed "s|version|`cut -d: -f2 $(root_srcdir)/bin/VERSION`|" ./doxyfile2 > ./doxyfile3; \
+ mv -f doxyfile3 doxyfile1; \
+ echo "DOXYGEN SUPPORT PYTHON - @DOXYGEN_WITH_PYTHON@"; \
+ if( test "x@DOXYGEN_WITH_PYTHON@" = "xyes"); then \
+ sed 's|python_extension_must_be_here|*.py|' ./doxyfile1 > ./doxyfile2; \
+ mv -f doxyfile2 doxyfile1; \
+ $(doxygen) -u ./doxyfile1; \
+ else \
+ sed 's|python_extension_must_be_here||' ./doxyfile1 > ./doxyfile2; \
+ mv -f doxyfile2 doxyfile1; \
+ fi; \
+ if( test "x@DOXYGEN_WITH_STL@" = "xyes"); then \
+ sed -e 's|BUILTIN_STL_SUPPORT = NO|BUILTIN_STL_SUPPORT = YES|' ./doxyfile1 > ./doxyfile2; \
+ mv -f doxyfile2 doxyfile1; \
+ fi; \
mv -f doxyfile1 doxyfile; \
+ echo "Running doxygen in directory:"`pwd`; \
$(doxygen) ./doxyfile; \
cd ../; \
cp -fr $(srcdir)/SUIT/sources/ SUIT ; \
-# Doxyfile 1.3.7
+# Doxyfile 1.4.6
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-PROJECT_NAME = "SALOME v.3.2.0a2"
-PROJECT_NUMBER = id#1.1
+PROJECT_NAME = "SALOME - GUI - v.version"
+PROJECT_NUMBER =
OUTPUT_DIRECTORY = ../
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
+REPEAT_BRIEF = NO
ABBREVIATE_BRIEF =
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
+ALWAYS_DETAILED_SEC = YES
+INLINE_INHERITED_MEMB = YES
+FULL_PATH_NAMES = YES
+STRIP_FROM_PATH = ../../../share/salome \
+ ../../../build/salome
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = NO
-DISTRIBUTE_GROUP_DOC = NO
+SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 5
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = YES
+BUILTIN_STL_SUPPORT = NO
+DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 25
SHOW_USED_FILES = NO
+SHOW_DIRECTORIES = NO
+FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = log.txt
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../../../share/salome/src \
- ../../../share/salome/idl
-FILE_PATTERNS = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx
+ ../../../share/salome/bin \
+ ../../../share/salome/idl \
+ ../../../build/salome/bin
+FILE_PATTERNS = *.idl *.hxx *.cxx *.h *.c *.hh *.cc python_extension_must_be_here
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXAMPLE_RECURSIVE = YES
IMAGE_PATH = sources/
INPUT_FILTER =
+FILTER_PATTERNS =
FILTER_SOURCE_FILES = YES
#---------------------------------------------------------------------------
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = YES
+USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 3
IGNORE_PREFIX =
#---------------------------------------------------------------------------
HTML_OUTPUT = SUIT
HTML_FILE_EXTENSION = .html
HTML_HEADER = sources/myheader.html
-HTML_FOOTER =
-HTML_STYLESHEET =
+HTML_FOOTER = sources/footer.html
+HTML_STYLESHEET = sources/doxygen.css
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
GENERATE_CHI = NO
BINARY_TOC = YES
TOC_EXPAND = YES
-DISABLE_INDEX = YES
+DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = YES
+GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
+GROUP_GRAPHS = NO
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = jpg
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1200
MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = NO
DOT_CLEANUP = YES
--- /dev/null
+H1 {
+ text-align: center;
+}
+
+CAPTION {
+ font-weight: bold
+}
+
+/* Link in the top navbar */
+A.qindex {}
+
+A.qindexRef {}
+
+/* Link to any cross-referenced Doxygen element */
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+
+A.elRef {
+ font-weight: bold
+}
+
+/* Link to any cross-referenced Doxygen element inside a code section
+ (ex: header)
+*/
+A.code {
+ text-decoration: none;
+ font-weight: normal;
+ color: #4444ee
+}
+
+A.codeRef {
+ font-weight: normal;
+ color: #4444ee
+}
+
+A:hover {
+ text-decoration: none;
+ background-color: lightblue
+}
+
+DL.el {
+ margin-left: -1cm
+}
+
+/* A code fragment (ex: header) */
+DIV.fragment {
+ width: 100%;
+ border: none;
+ background-color: #CCCCCC
+}
+
+/* In the alpha list (coumpound index), style of an alphabetical index letter */
+DIV.ah {
+ background-color: #CCCCCC;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+
+/* Method name (+ type) */
+TD.md {
+ background-color: lightblue;
+ font-weight: bold;
+}
+
+/* Method parameter (some of them) */
+TD.mdname1 {
+ background-color: lightblue;
+ font-weight: bold; color: #602020;
+}
+
+/* Method parameter (some of them) */
+TD.mdname {
+ background-color: lightblue;
+ font-weight: bold;
+ color: #602020;
+ width: 600px;
+}
+
+/* Separator between methods group (usually empty, seems not supported by IE) */
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: bold
+}
+
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: smaller
+}
+
+BODY {
+ background: url(sources/bg_salome.gif)
+}
+
+div.tabs {
+ text-align: justify;
+ font-weight: bold;
+ color: #FFFFFF;
+}
+
+DIV.div-footer {
+ margin-left: 1em;
+ margin-right: 1em;
+ margin-bottom: 0.2em;
+ text-align: right;
+ font-size: 9pt;
+}
+
+/* In File List, Coumpound List, etc, 1st column of the index */
+TD.indexkey {
+ background-color: #CCCCCC;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+
+/* In File List, Coumpound List, etc, 2nd column of the index */
+TD.indexvalue {
+ background-color: #CCCCCC;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+
+span.keyword { color: #008000 }
+span.keywordtype { color: #604020 }
+span.keywordflow { color: #e08000 }
+span.comment { color: #800000 }
+span.preprocessor { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral { color: #008080 }
--- /dev/null
+</DIV>
+<DIV class="div-footer">
+Generated on $datetime for $projectname by <A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> $doxygenversion</DIV>
+</BODY>
+</HTML>
</head>
<body>
-<center><table WIDTH="96%" >
-<tr>
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
-
-
-<td>
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
-</td>
-</tr>
-</table></center>
-
-
</body>
</html>
+++ /dev/null
-#
-# generate dependencies for idl file :
-#
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.
-
-@COMMENCE@
-
-IDL_FILES = SALOME_Session.idl
-
-PY_CLIENT_IDL = $(IDL_FILES)
-
-# we copy all idl file in $(top_builddir)/idl
-inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
-
-$(top_builddir)/idl/salome:
- mkdir -p $@
-
-$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
-# $(CP) $< $@
- cp -f $^ $(top_builddir)/idl/salome
-
-
-lib: pyidl
-
-PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
-
-pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
-
-$(PYTHON_BUILD_SITE):
- $(INSTALL) -d $@
-
-$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl
- $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
-
-
-# install python client (generated from idl file
-install: $(top_builddir)/idl/salome install-pyidl install-idl
-
-# create directory $(idldir) and copy idl files into it
-install-idl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
- $(INSTALL) -d $(idldir)
- cp -p -f $^ $(idldir)
-
-
-install-pyidl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
- $(INSTALL) -d $(PYTHON_SITE_INSTALL)
- @for file in $^ dummy; do \
- if [ $$file != "dummy" ]; then \
- $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \
- fi ; \
- done ;
-
-#@ CONCLUDE @
-
-cleandep:
- -$(RM) .dep*
-
-distclean:
- -$(RM) *.py
- -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
- -$(RM) Makefile
-
+++ /dev/null
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_Session.idl
-// Author : Paul RASCLE, EDF
-// $Header$
-
-#include "SALOME_Component.idl"
-
-/*!
- This package contains interfaces used for management of the session in %SALOME application.
-*/
-module SALOME
-{
-/*! \brief State of the session
-
- This enumeration contains values defining the state of the session
-
-*/
- enum SessionState {asleep, /*! Session is inactive */
- running /*! Session is running */
- } ;
-
-/*! \brief %Session State and Statistics
-
-
- This struct contains a field list with general information about the session
-*/
-
- struct StatSession
- {
-/*! \brief State of the session
-
- It can be:
- * -# asleep : no running study
- * -# running : one or more running studies
-*/
- SessionState state ;
-/*! Number of running studies
-*/
- short runningStudies ;
-/*! It is True if GUI is active in the session
-*/
- boolean activeGUI ;
- } ;
-/*! \brief Interface of the session
-
- The %session Server launches and stops GUI (Graphical User Interface).
- The %session can be active without GUI (It can contain one or more running studies)
-*/
-
- interface Session
- {
-/*!
- This exception is raised when trying to stop the %session with active GUI
-*/
- exception GUIActive {} ;
-/*!
- This exception is raised when trying to stop the %session with a number of running studies.
-*/
- exception RunningStudies {} ;
-
-/*!
- Launches GUI in the session
-*/
- void GetInterface();
-
-/*!
- Returns a standalone component
-*/
- Engines::Component GetComponent(in string theLibraryName);
-
-/*!
- Stops the %Session (It must be idle)
-*/
- void StopSession() raises(GUIActive, RunningStudies) ;
-
-/*!
- Gets Session State
-*/
- StatSession GetStatSession() ;
-/*!
- Determines whether the server has already been loaded or not.
-*/
- void ping();
-/*!
- Get Active study ID
-*/
- long GetActiveStudyId();
-/*!
- Restores a state of the study at theSavePoint
-*/
- boolean restoreVisualState(in long theSavePoint);
- } ;
-} ;
return new CAF_Application();
}
+/*!
+ Default constructor
+*/
CAF_Application::CAF_Application()
: STD_Application()
{
}
-CAF_Application::CAF_Application( const Handle(TDocStd_Application)& app )
+/*!
+ Constructor with OCAF application
+ \param app - OCAF application
+*/
+CAF_Application::CAF_Application( const Handle( TDocStd_Application )& app )
: STD_Application(),
myStdApp( app )
{
}
+/*!
+ Destructor
+*/
CAF_Application::~CAF_Application()
{
}
+/*!
+ \return application name
+*/
QString CAF_Application::applicationName() const
{
return QString( "CAFApplication" );
}
-Handle(TDocStd_Application) CAF_Application::stdApp() const
+/*!
+ \return OCAF application
+*/
+Handle( TDocStd_Application ) CAF_Application::stdApp() const
{
return myStdApp;
}
+/*!
+ \return file filters for open/save document
+*/
QString CAF_Application::getFileFilter() const
{
if ( stdApp().IsNull() )
return filters.join( ";;" );
}
+/*!
+ Creates actions of application
+*/
void CAF_Application::createActions()
{
STD_Application::createActions();
redo->setEnabled( cafStudy && cafStudy->canRedo() );
}
+/*!
+ SLOT: called by clicking on Help->About in main menu
+*/
void CAF_Application::onHelpAbout()
{
SUIT_MessageBox::info1( desktop(), tr( "About" ), tr( "ABOUT_INFO" ), "&OK" );
}
+/*!
+ Creates new study
+*/
SUIT_Study* CAF_Application::createNewStudy()
{
return new CAF_Study( this );
}
+/*!
+ Sets OCAF application
+*/
void CAF_Application::setStdApp( const Handle(TDocStd_Application)& app )
{
myStdApp = app;
#pragma warning ( disable: 4251 )
#endif
+/*!
+ \class CAF_Application
+ Defines application configuration and behaviour for application with
+ link to standard OCC OCAF data model. Allows to use OCC OCAF serives
+ (for example, undo/redo)
+*/
class CAF_EXPORT CAF_Application : public STD_Application
{
Q_OBJECT
#include <TDocStd_Document.hxx>
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
+/*!
+ Default constructor
+*/
CAF_Operation::CAF_Operation(SUIT_Application* theApp)
:SUIT_Operation(theApp)
{
}
+/*!
+ Destructor
+*/
CAF_Operation::~CAF_Operation()
{
}
+/*!
+ \return OCAF document
+*/
Handle(TDocStd_Document) CAF_Operation::stdDoc() const
{
Handle(TDocStd_Document) doc;
#include <Standard.hxx>
class CAF_Study;
+//! OCC OCAF Std document
class Handle(TDocStd_Document);
+/*!
+ \class CAF_Operation
+ Base operation for all operations used in CAF package
+ Operation has link to OCC OCAF std document
+*/
class CAF_EXPORT CAF_Operation : public SUIT_Operation
{
Q_OBJECT
#include <Standard_ErrorHandler.hxx>
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
+/*!
+ Constructor
+*/
CAF_Study::CAF_Study(SUIT_Application* theApp)
: SUIT_Study( theApp ),
myModifiedCnt( 0 )
{
}
+/*!
+ Constructor
+*/
CAF_Study::CAF_Study(SUIT_Application* theApp, Handle (TDocStd_Document)& aStdDoc)
: SUIT_Study( theApp ),
myStdDoc( aStdDoc ),
{
}
+/*!
+ Destructor
+*/
CAF_Study::~CAF_Study()
{
}
+/*!
+ \return OCAF document
+*/
Handle(TDocStd_Document) CAF_Study::stdDoc() const
{
return myStdDoc;
}
+/*!
+ Sets new OCAF document
+ \param aStdDoc - new OCAF document
+*/
void CAF_Study::setStdDoc( Handle(TDocStd_Document)& aStdDoc )
{
myStdDoc = aStdDoc;
}
+/*!
+ Custom document initialization
+*/
void CAF_Study::createDocument()
{
SUIT_Study::createDocument();
}
}
+/*!
+ Close document
+*/
void CAF_Study::closeDocument( bool permanent )
{
Handle(TDocStd_Application) app = stdApp();
SUIT_Study::closeDocument( permanent );
}
+/*!
+ Open document
+ \param fname - name of file
+*/
bool CAF_Study::openDocument( const QString& fname )
{
Handle(TDocStd_Application) app = stdApp();
return status && SUIT_Study::openDocument( fname );
}
+/*!
+ Save document with other name
+ \param fname - name of file
+*/
bool CAF_Study::saveDocumentAs( const QString& fname )
{
Handle(TDocStd_Application) app = stdApp();
return status;
}
+/*!
+ Open OCAF transaction
+*/
bool CAF_Study::openTransaction()
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
bool res = true;
return res;
}
+/*!
+ Abort OCAF transaction
+*/
bool CAF_Study::abortTransaction()
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
bool res = true;
- try {
+ try {
myStdDoc->AbortCommand();
update();
}
return res;
}
+/*!
+ Commit OCAF transaction
+*/
bool CAF_Study::commitTransaction( const QString& name )
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
bool res = true;
- try {
+ try {
myStdDoc->CommitCommand();
if ( canUndo() )
return res;
}
+/*!
+ \return true, if there is opened OCAF transaction
+*/
bool CAF_Study::hasTransaction() const
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
return myStdDoc->HasOpenCommand();
}
/*!
- Returns whether the document was saved in file. [ public ]
+ \return whether the document was saved in file. [ public ]
*/
bool CAF_Study::isSaved() const
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
return myStdDoc->IsSaved();
}
/*!
- Returns whether the document is modified. [ public ]
+ \return whether the document is modified. [ public ]
*/
bool CAF_Study::isModified() const
{
- if ( myStdDoc.IsNull() )
+ if ( myStdDoc.IsNull() )
return false;
// return myStdDoc->IsModified();
}
/*!
- Check if possible to perform 'undo' command. [ public ]
+ \return true if possible to perform 'undo' command. [ public ]
*/
bool CAF_Study::canUndo() const
{
}
/*!
- Check if possible to perform 'redo' command. [ public ]
+ \return true if possible to perform 'redo' command. [ public ]
*/
bool CAF_Study::canRedo() const
{
}
/*!
- Returns the list of names of 'undo' actions available. [ public ]
+ \return the list of names of 'undo' actions available. [ public ]
*/
QStringList CAF_Study::undoNames() const
{
}
/*!
- Returns the list of names of 'redo' actions available. [ public ]
+ \return the list of names of 'redo' actions available. [ public ]
*/
QStringList CAF_Study::redoNames() const
{
}
/*!
- Returns the standard OCAF application from owner application. [ protected ]
+ \return the standard OCAF application from owner application. [ protected ]
*/
Handle(TDocStd_Application) CAF_Study::stdApp() const
{
}
/*!
- Returns the application casted to type CAF_Application. [ protected ]
+ \return the application casted to type CAF_Application. [ protected ]
*/
CAF_Application* CAF_Study::cafApplication() const
{
#pragma warning ( disable: 4251 )
#endif
+/*!
+ \class CAF_Study
+ Represents study for using in CAF, contains reference
+ to OCAF std document and allows to use OCAF services.
+ Provides necessary functionality for OCC transactions management.
+*/
class CAF_EXPORT CAF_Study : public SUIT_Study
{
Q_OBJECT
return result;
}
+/*!
+ Converts Qt color to OCC color
+*/
Quantity_Color CAF_Tools::color( const QColor& c )
{
Quantity_Color aColor;
return aColor;
}
+/*!
+ Converts OCC color to Qt color
+*/
QColor CAF_Tools::color( const Quantity_Color& c )
{
return QColor ( int( c.Red() * 255 ),
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>
+/*!
+ \class CAF_Tools
+ Prodives set of auxiliary static methods
+*/
class CAF_EXPORT CAF_Tools : public SUIT_Tools
{
public:
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : caf
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
return module;
}
-/**@name Activate module group.*/
+/*! @name Activate module group. */
//@{
/*!Activate module with name \a modName.
*\param modName - module name.
}
if ( myInfoList.isEmpty() )
- SUIT_MessageBox::error1( 0, tr( "Error" ), tr( "Can not load modules configuration file " ), tr( "Ok" ) );
+ SUIT_MessageBox::warn1( 0, tr( "Warning" ), tr( "Modules list is empty" ), tr( "&OK" ) );
}
/*!Add common items for popup menu ( if they are exist )
/*!Create empty study.*/
void CAM_Application::createEmptyStudy()
{
- SUIT_Study* study = activeStudy();
-
+ /*SUIT_Study* study = */activeStudy();
STD_Application::createEmptyStudy();
}
#pragma warning( disable:4251 )
#endif
+/*!
+ \class CAM_Application
+ Defines application configuration and behaviour for application with modules.
+ Every module has own data model, necessary windows and viewers, etc.
+ Application provides all necessary functionality for module management
+ (loading of modules/activation/deactivation, etc)
+*/
class CAM_EXPORT CAM_Application : public STD_Application
{
Q_OBJECT
{
}
+/*!
+ Default implementation, does nothing.
+ Can be used for creation of root object.
+*/
void CAM_DataModel::initialize()
{
- //! Default implementation, does nothing.\n
- //! Can be used for creation of root object.
}
/*!Get root object.
class CAM_Study;
class SUIT_DataObject;
+/*!
+ \class CAM_DataModel
+ Base class for all data models used in CAM-based applications.
+ Represents data model of CAM module. Provides necessary interface (default implementation is empty)
+*/
class CAM_EXPORT CAM_DataModel : public QObject
{
Q_OBJECT
class CAM_Module;
class CAM_DataModel;
+/*!
+ \class CAM_DataObject
+ Provides only additional link to CAM_DataModel
+*/
class CAM_EXPORT CAM_DataObject : public SUIT_DataObject
{
public:
/*! Create tool.
* Insert QAction with id \a id from action map(myActionMap) to tool manager.
- *\param a - QAction
- *\param tBar - integer
*\param id - integer
+ *\param tBar - integer
*\param idx - integer
*\retval integer id of new action in tool manager.
*\retval Return -1 if something wrong.
/*! Create tool.
* Insert QAction with id \a id from action map(myActionMap) to tool manager.
- *\param a - QAction
- *\param tBar - QString&
*\param id - integer
+ *\param tBar - QString&
*\param idx - integer
*\retval integer id of new action in tool manager.
*\retval Return -1 if something wrong.
#pragma warning( disable:4251 )
#endif
+/*!
+ \class CAM_Study
+ Represents study for using in CAM, contains list of
+ data model references from all modules. Provides
+ necessary functionality for data models management.
+*/
class CAM_EXPORT CAM_Study : public SUIT_Study
{
Q_OBJECT
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : CAM
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgid "ERROR_ACTIVATE_MODULE_MSG"
msgstr "Failed to activate module %1"
-
-msgid "BUT_OK"
-msgstr "Ok"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef DDS_H
#define DDS_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "DDS_DicGroup.h"
#include "DDS_Dictionary.h"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef DDS_DICGROUP_H
#define DDS_DICGROUP_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "DDS_DicItem.h"
#include "DDS_Dictionary.h"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef DDS_DICITEM_H
#define DDS_DICITEM_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "DDS_Dictionary.h"
#include "DDS_KeyWords.h"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef DDS_DICTIONARY_H
#define DDS_DICTIONARY_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "DDS_KeyWords.h"
IMPLEMENT_STANDARD_HANDLE(DDS_KeyWords, MMgt_TShared)
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef DDS_KEYWORDS_H
#define DDS_KEYWORDS_H
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Alexander SOLOVYOV (OCN)
# Module : DDS
LIB = libEvent.la
LIB_SRC = SALOME_Event.cxx
-CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS)
LDFLAGS+=$(QT_MT_LIBS)
@CONCLUDE@
static pthread_t myThread;
#endif
+/*!
+ \return thread id
+*/
void SALOME_Event::GetSessionThread(){
#ifdef WIN32
myThread = ::GetCurrentThreadId();
#endif
}
+/*!
+ \return true if it is session thread
+*/
bool SALOME_Event::IsSessionThread(){
bool aResult = false;
#ifdef WIN32
}
-//===========================================================
/*!
- * SALOME_Event::SALOME_Event
- * Constructor
- */
-//===========================================================
+ Constructor
+*/
SALOME_Event::SALOME_Event(){
// if(MYDEBUG) MESSAGE( "SALOME_Event::SALOME_Event(): this = "<<this );
// Prepare the semaphore
*mySemaphore += 2;
}
-//===========================================================
/*!
- * SALOME_Event::~SALOME_Event
- * Destructor
- */
-//===========================================================
+ Destructor
+*/
SALOME_Event::~SALOME_Event(){
// if(MYDEBUG) MESSAGE( "SALOME_Event::~SALOME_Event(): this = "<<this );
if ( mySemaphore->available() < mySemaphore->total() )
delete mySemaphore;
}
-//===========================================================
/*!
- * SALOME_Event::process
- * Posts the event and optionally waits for its completion
- */
-//===========================================================
+ Posts the event and optionally waits for its completion
+*/
void SALOME_Event::process()
{
QThread::postEvent( qApp, new QCustomEvent( SALOME_EVENT, (void*)this ) );
// if(MYDEBUG) MESSAGE( "SALOME_Event::process(): this = "<<this<<" - COMPLETED" );
}
-//===========================================================
/*!
- * SALOME_Event::processed
- * Signals that this event has been processed
- */
-//===========================================================
+ Signals that this event has been processed
+*/
void SALOME_Event::processed()
{
// if(MYDEBUG) MESSAGE( "SALOME_Event::processed(): this = "<<this );
class QSemaphore;
-//===========================================================
/*!
- * Class: SALOME_Event
+ * \class SALOME_Event
* Description:
* This class encapsulates data and functionality required for
* posting component-specific events to perform arbitrary operations in main GUI thread.
* Caveats:
* There is no.
*/
-//===========================================================
#include <Event.h>
};
-// Template classes for member function
-//-------------------------------------
-template<class TObject, typename TRes>
-class EVENT_EXPORT TMemFunEvent: public SALOME_Event{
+/*!
+ \class TMemFunEvent
+ \brief Template class for member function
+*/
+template<class TObject, typename TRes> class EVENT_EXPORT TMemFunEvent: public SALOME_Event{
public:
typedef TRes TResult;
TResult myResult;
};
-template<class TObject>
-class EVENT_EXPORT TVoidMemFunEvent: public SALOME_Event{
+/*!
+ \class TVoidMemFunEvent
+ \brief Template class for member function
+*/
+template<class TObject> class EVENT_EXPORT TVoidMemFunEvent: public SALOME_Event{
public:
typedef void (TObject::* TAction)();
TVoidMemFunEvent(TObject* theObject, TAction theAction):
};
-// Template for member function with one argument
-//-----------------------------------------------
-template<class TObject, typename TRes,
- typename TArg, typename TStoreArg = TArg>
-class EVENT_EXPORT TMemFun1ArgEvent: public SALOME_Event{
+/*!
+ \class TMemFun1ArgEvent
+ \brief Template for member function with one argument
+*/
+template<class TObject, typename TRes, typename TArg, typename TStoreArg = TArg> class EVENT_EXPORT TMemFun1ArgEvent:
+public SALOME_Event{
public:
typedef TRes TResult;
TResult myResult;
};
-template<class TObject, typename TArg, typename TStoreArg = TArg>
-class EVENT_EXPORT TVoidMemFun1ArgEvent: public SALOME_Event{
+/*!
+ \class TVoidMemFun1ArgEvent
+ \brief Template for member function with one argument
+*/
+template<class TObject, typename TArg, typename TStoreArg = TArg> class EVENT_EXPORT TVoidMemFun1ArgEvent: public SALOME_Event{
public:
typedef void (TObject::* TAction)(TArg);
TVoidMemFun1ArgEvent(TObject* theObject, TAction theAction, TArg theArg):
};
-// Template for member function with one argument
-//-----------------------------------------------
-template<class TObject, typename TRes,
- typename TArg, typename TArg1,
- typename TStoreArg = TArg, typename TStoreArg1 = TArg1>
-class EVENT_EXPORT TMemFun2ArgEvent: public SALOME_Event{
+/*!
+ \class TMemFun2ArgEvent
+ \brief Template for member function with two arguments
+*/
+template<class TObject, typename TRes, typename TArg, typename TArg1, typename TStoreArg = TArg, typename TStoreArg1 = TArg1> class
+EVENT_EXPORT TMemFun2ArgEvent: public SALOME_Event{
public:
typedef TRes TResult;
TResult myResult;
};
-template<class TObject, typename TArg, typename TArg1,
- typename TStoreArg = TArg, typename TStoreArg1 = TArg1>
-class EVENT_EXPORT TVoidMemFun2ArgEvent: public SALOME_Event{
+/*!
+ \class TVoidMemFun2ArgEvent
+ \brief Template for member function with two arguments
+*/
+template<class TObject, typename TArg, typename TArg1, typename TStoreArg = TArg, typename TStoreArg1 = TArg1> class
+EVENT_EXPORT TVoidMemFun2ArgEvent: public SALOME_Event{
public:
typedef void (TObject::* TAction)(TArg,TArg1);
TVoidMemFun2ArgEvent(TObject* theObject, TAction theAction, TArg theArg, TArg1 theArg1):
};
-// Template function for processing events with result returing
+/*!
+ \fn ProcessEvent
+ \brief Template function for processing events with result returing
+*/
template<class TEvent> inline typename TEvent::TResult ProcessEvent(TEvent* theEvent){
typename TEvent::TResult aResult;
if(SALOME_Event::IsSessionThread()){
}
-// Template function for processing events without result
+/*!
+ \fn ProcessEvent
+ \brief Template function for processing events without result
+*/
inline void ProcessVoidEvent(SALOME_Event* theEvent){
if(SALOME_Event::IsSessionThread()){
theEvent->Execute();
// File: GLViewer_AspectLine.cxx
// Created: 26/05/2005 3:17:00 PM
-//================================================================
-// Class : GLViewer_AspectLine
-// Description : Substitution of Prs2d_AspectLine for OpenGL
-//================================================================
#include "GLViewer_AspectLine.h"
-//=======================================================================
-// Function: GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+ Default constructor
+*/
GLViewer_AspectLine::GLViewer_AspectLine()
{
myNColor = QColor( 255, 255, 255 );
myLineType = 0;
}
-//=======================================================================
-// Function: GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+ Constructor
+ \param type: 0 for normal line and 1 for strip line
+ \param width - width of line
+*/
GLViewer_AspectLine::GLViewer_AspectLine( int type, float width )
{
myNColor = QColor( 255, 255, 255 );
myLineType = 0;
}
-//=======================================================================
-// Function: ~GLViewer_AspectLine
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_AspectLine::~GLViewer_AspectLine()
{
}
-//=======================================================================
-// Function: setLineColors
-// Purpose :
-//=======================================================================
+/*!
+ Sets line color
+ \param nc - normal color
+ \param hc - hilighting color
+ \param sc - selection color
+*/
void GLViewer_AspectLine::setLineColors( QColor nc, QColor hc, QColor sc )
{
myNColor = nc;
mySColor = sc;
}
-//=======================================================================
-// Function: setLineType
-// Purpose :
-//=======================================================================
+/*!
+ Sets type of line
+ \param type: 0 for normal line and 1 for strip line
+*/
int GLViewer_AspectLine::setLineType( const int type )
{
if( type == 1 || type == 0 )
return 1;
}
-//=======================================================================
-// Function: setLineWidth
-// Purpose :
-//=======================================================================
+/*!
+ Sets width of line
+ \param width - new width of line
+*/
int GLViewer_AspectLine::setLineWidth( const float width )
{
if( width > 0 )
return 1;
}
-//=======================================================================
-// Function: getLineColors
-// Purpose :
-//=======================================================================
+/*!
+ \return colors of line
+ \param nc - variable for normal color
+ \param hc - variable for hilighting color
+ \param sc - variable for selection color
+*/
void GLViewer_AspectLine::getLineColors( QColor& nc, QColor& hc, QColor& sc ) const
{
nc = myNColor;
sc = mySColor;
}
-//=======================================================================
-// Function: getByteCopy
-// Purpose :
-//=======================================================================
+/*!
+ \return binary representation of line aspect
+*/
QByteArray GLViewer_AspectLine::getByteCopy() const
{
int anISize = sizeof( int );
return aResult;
}
-//=======================================================================
-// Function: fromByteCopy
-// Purpose :
-//=======================================================================
+/*!
+ Sets line aspect from binary representation
+*/
GLViewer_AspectLine* GLViewer_AspectLine::fromByteCopy( QByteArray theBytes )
{
#endif
/*!
- * Class GLViewer_AspectLine
- * Substitution of Prs2d_AspectLine for OpenGL
- */
+ \Class GLViewer_AspectLine
+ Substitution of Prs2d_AspectLine for OpenGL
+*/
class GLVIEWER_API GLViewer_AspectLine
{
#include <GL/glx.h>
#endif
-/***************************************************************************
-** Class: GLViewer_MarkerDrawer
-** Descr: Drawer for GLViewer_MarkerSet
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
-
GLfloat sin_table[SEGMENTS];
GLfloat cos_table[SEGMENTS];
+/*!
+ Default constructor
+*/
GLViewer_MarkerDrawer::GLViewer_MarkerDrawer()
: GLViewer_Drawer()
{
myObjectType = "GLViewer_MarkerSet";
}
+/*!
+ Destructor
+*/
GLViewer_MarkerDrawer::~GLViewer_MarkerDrawer()
{
}
+/*! Draws object in GLViewer
+ \param xScale - current scale along X-direction
+ \param yScale - current scale along Y-direction
+ \param onlyUpdate - = true if only update highlight-select information
+*/
void GLViewer_MarkerDrawer::create( float xScale, float yScale, bool onlyUpdate )
{
QValueList<int>::Iterator it;
}
}
+/*! Draws marker
+ \param theXCoord - X position
+ \param theYCoord - Y position
+ \param theRadius - radius
+ \param theColor - color
+ \param theAspectLine - line aspect
+*/
void GLViewer_MarkerDrawer::drawMarker( float& theXCoord, float& theYCoord,
float& theRadius, QColor& theColor, GLViewer_AspectLine* theAspectLine )
{
glEnd();
}
-/***************************************************************************
-** Class: GLViewer_PolylineDrawer
-** Descr: Drawer for GLViewer_Polyline
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
+/*!
+ Default constructor
+*/
GLViewer_PolylineDrawer::GLViewer_PolylineDrawer()
:GLViewer_Drawer()
{
myObjectType = "GLViewer_Polyline";
}
+/*!
+ Destructor
+*/
GLViewer_PolylineDrawer::~GLViewer_PolylineDrawer()
{
}
+/*! Draws object in GLViewer
+ \param xScale - current scale along X-direction
+ \param yScale - current scale along Y-direction
+ \param onlyUpdate - = true if only update highlight-select information
+*/
void GLViewer_PolylineDrawer::create( float xScale, float yScale, bool onlyUpdate )
{
QValueList<GLViewer_Object*>::Iterator aObjectIt = myObjects.begin();
}
}
-/***************************************************************************
-** Class: GLViewer_TextDrawer
-** Descr:
-** Module: GLViewer
-** Created: UI team, 27.02.04
-****************************************************************************/
-
+/*!
+ Default constructor
+*/
GLViewer_TextDrawer::GLViewer_TextDrawer()
: GLViewer_Drawer()
{
myObjectType = "GLViewer_TextObject";
}
+/*!
+ Destructor
+*/
GLViewer_TextDrawer::~GLViewer_TextDrawer()
{
}
+/*! Draws object in GLViewer
+ \param xScale - current scale along X-direction
+ \param yScale - current scale along Y-direction
+ \param onlyUpdate - = true if only update highlight-select information
+*/
void GLViewer_TextDrawer::create( float xScale, float yScale, bool onlyUpdate )
{
QValueList<GLViewer_Object*>::Iterator aObjectIt = myObjects.begin();
}
}
+/*!
+ Updates objects after updating font
+*/
void GLViewer_TextDrawer::updateObjects()
{
QValueList<GLViewer_Object*>::Iterator aObjectIt = myObjects.begin();
#pragma warning( disable:4251 )
#endif
-/*! Class GLViewer_MarkerDrawer
-* Drawer for GLViewer_MarkerSet
- */
+/*!
+ \class GLViewer_MarkerDrawer
+ Drawer for GLViewer_MarkerSet
+*/
class GLVIEWER_API GLViewer_MarkerDrawer : public GLViewer_Drawer
{
void drawMarker( float& x, float& y, float& radius, QColor& color, GLViewer_AspectLine* aspect );
};
-/*! Class GLViewer_PolylineDrawer
-* Drawer for GLViewer_Polyline
+/*!
+ \class GLViewer_PolylineDrawer
+ Drawer for GLViewer_Polyline
*/
class GLVIEWER_API GLViewer_PolylineDrawer : public GLViewer_Drawer
virtual void create( float, float, bool );
};
-/* Class GLViewer_TextDrawer
-* Drawer for GLViewer_Text
+/*!
+ \class GLViewer_TextDrawer
+ Drawer for GLViewer_Text
*/
class GLVIEWER_API GLViewer_TextDrawer: public GLViewer_Drawer
// Author : OPEN CASCADE
//
-/***************************************************************************
-** Class: GLViewer_BaseObjects
-** Descr: Internal OpenGL Objects
-** Module: GLViewer
-** Created: UI team, 02.09.02
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_BaseObjects.h"
#include "GLViewer_BaseDrawers.h"
//#include <cmath>
//using namespace std;
-/***************************************************************************
-** Class: GLViewer_MarkerSet
-** Descr: OpenGL MarkerSet
-** Module: GLViewer
-** Created: UI team, 03.09.02
-****************************************************************************/
-
+/*!
+ Constructor
+*/
GLViewer_MarkerSet::GLViewer_MarkerSet( int number, float size, const QString& toolTip ) :
GLViewer_Object(),
myNumber( 0 ),
setNumMarkers( number );
}
+/*!
+ Destructor
+*/
GLViewer_MarkerSet::~GLViewer_MarkerSet()
{
if ( myXCoord )
delete[] myYCoord;
}
+/*!
+ Adds coords to text buffer in HPGL format
+ \param buffer - text buffer
+ \param command - command to be added with coords
+ \param aViewerCS - viewer co-ordinates system
+ \param aPaperCS - paper co-ordinates system
+ \param x - x co-ordinate
+ \param y - y co-ordinate
+ \param NewLine - adds new line to buffer
+*/
void AddCoordsToHPGL( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS,
GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true )
{
buffer += ";\n";
}
+/*!
+ Adds coords to text buffer in PostScript format
+ \param buffer - text buffer
+ \param command - command to be added with coords
+ \param aViewerCS - viewer co-ordinates system
+ \param aPaperCS - paper co-ordinates system
+ \param x - x co-ordinate
+ \param y - y co-ordinate
+ \param NewLine - adds new line to buffer
+*/
void AddCoordsToPS( QString& buffer, QString command, GLViewer_CoordSystem* aViewerCS,
GLViewer_CoordSystem* aPaperCS, double x, double y, bool NewLine = true )
{
buffer += "\n";
}
+/*!
+ Adds line aspect description to text buffer in PostScript format
+ \param buffer - text buffer
+ \param anAspect - line aspect
+ \param aViewerCS - viewer co-ordinates system
+ \param aPaperCS - paper co-ordinates system
+*/
void AddLineAspectToPS( QString& buffer, GLViewer_AspectLine* anAspect,
GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS )
{
}
#ifdef WIN32
+/*!
+ Adds line aspect description EMF image
+ \param hDC - descriptor of EMF
+ \param anAspect - line aspect
+ \param aViewerCS - viewer co-ordinates system
+ \param aPaperCS - paper co-ordinates system
+*/
HPEN AddLineAspectToEMF( HDC hDC, GLViewer_AspectLine* anAspect,
GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPaperCS )
{
}
#endif
+/*!
+ Saves to file PostScript set of markers
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aPSCS - paper co-ordinates system
+*/
bool GLViewer_MarkerSet::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS )
{
int noPoints = 20;
return true;
}
+/*!
+ Saves to file HPGL set of markers
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aHPGLCS - paper co-ordinates system
+*/
bool GLViewer_MarkerSet::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS,
GLViewer_CoordSystem* aHPGLCS )
{
}
#ifdef WIN32
+/*!
+ Saves to EMF image set of markers
+ \param dc - EMF image descriptor
+ \param aViewerCS - viewer co-ordinates system
+ \param aEMFCS - paper co-ordinates system
+*/
bool GLViewer_MarkerSet::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS )
{
int noPoints = 20;
}
#endif
-
+/*!
+ Computes all necessary information about object for presentation in drawer
+*/
void GLViewer_MarkerSet::compute()
{
// cout << "GLViewer_MarkerSet::compute" << endl;
myRect->setBottom( ya - myYGap );
}
+/*!
+ Creates corresponding drawer
+*/
GLViewer_Drawer* GLViewer_MarkerSet::createDrawer()
{
// cout << "GLViewer_MarkerSet::createDrawer" << endl;
return myDrawer = new GLViewer_MarkerDrawer();
}
-
+/*!
+ Computes highlight presentation
+ \param x - x coord
+ \param y - y coord
+ \param tol - tolerance of detecting
+ \param isCircle - true if sensitive area of detection is round
+ \return true if highlight status is changed
+*/
GLboolean GLViewer_MarkerSet::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle )
{
if( !myIsVisible )
return update;
}
+/*!
+ Unhilights object
+*/
GLboolean GLViewer_MarkerSet::unhighlight()
{
if( !myHNumbers.isEmpty() )
return GL_FALSE;
}
+/*!
+ Selects marker set
+ /param x, y - co-ordinates of mouse
+ /param tol - tolerance
+ /param rect - rectangle (in case of rectangular selection)
+ /param isFull - if it is true, then object may selected only if it lays whole in selection zone
+ \param isCircle - true if sensitive area of detection is round
+ \param isShift - true if selection exec with append option
+*/
GLboolean GLViewer_MarkerSet::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull,
GLboolean isCircle, GLboolean isShift )
{
return myIsSel;
}
+/*!
+ Unselects marker set
+*/
GLboolean GLViewer_MarkerSet::unselect()
{
if( !mySelNumbers.isEmpty() )
return GL_FALSE;
}
+/*!
+ \return update object rectangle
+ Does not equal getRect() if object have a persistence to some viewer transformations
+*/
GLViewer_Rect* GLViewer_MarkerSet::getUpdateRect()
{
GLViewer_Rect* rect = new GLViewer_Rect();
return rect;
}
-
+/*!
+ Sets array of x coords of points
+ \param xCoord - array of co-ordinates
+ \param size - array size
+*/
void GLViewer_MarkerSet::setXCoord( GLfloat* xCoord, int size )
{
myXCoord = new GLfloat[ size ];
myXCoord[i] = xCoord[i];
}
+/*!
+ Sets array of y coords of points
+ \param yCoord - array of co-ordinates
+ \param size - array size
+*/
void GLViewer_MarkerSet::setYCoord( GLfloat* yCoord, int size )
{
myYCoord = new GLfloat[ size ];
myYCoord[i] = yCoord[i];
}
+/*!
+ Sets number of markers
+ \param number - new number of markers
+*/
void GLViewer_MarkerSet::setNumMarkers( GLint number )
{
if ( myNumber == number )
myXCoord = new GLfloat[ myNumber ];
myYCoord = new GLfloat[ myNumber ];
}
-/*
-void GLViewer_MarkerSet::onSelectionDone( bool append)
-{
- mySelectedIndexes.Clear();
- QValueList<int>::Iterator it;
- //for( it = myMarkers->mySelNumbers.begin(); it != myMarkers->mySelNumbers.end(); ++it )
- // mySelectedIndexes.Append( *it / 2 ); //!!!
- emit dvMarkersSelected( mySelectedIndexes );
-}
-void GLViewer_MarkerSet::onSelectionCancel()
-{
- mySelectedIndexes.Clear();
- emit dvMarkersSelected( mySelectedIndexes );
-}
+/*!
+ Export numbers of highlighted/selected lines
*/
void GLViewer_MarkerSet::exportNumbers( QValueList<int>& highlight,
QValueList<int>& unhighlight,
myUHNumbers = myHNumbers;
}
+/*!
+ Adds or remove selected number
+ \param index - selected index
+*/
bool GLViewer_MarkerSet::addOrRemoveSelected( int index )
{
if( index < 0 || index > myNumber )
return TRUE;
}
+/*!
+ Adds some selected numbers
+ \param seq - sequence of indices
+*/
void GLViewer_MarkerSet::addSelected( const TColStd_SequenceOfInteger& seq )
{
for ( int i = 1; i <= seq.Length(); i++ )
mySelNumbers.append( seq.Value( i ) - 1 );
}
+/*!
+ Sets some numbers as selected
+ \param seq - sequence of indices
+*/
void GLViewer_MarkerSet::setSelected( const TColStd_SequenceOfInteger& seq )
{
// for( QValueList<int>::Iterator it = mySelNumbers.begin(); it != mySelNumbers.end(); ++it )
mySelNumbers.append( seq.Value( i ) - 1 );
}
+/*! Moves object by recomputing
+ \param dx - moving along X coord
+ \param dy - moving along Y coord
+ \param fromGroup - is true if this method called from group
+*/
void GLViewer_MarkerSet::moveObject( float theX, float theY, bool fromGroup )
{
if( !fromGroup && myGroup)
compute();
}
+/*!
+ Codes marker set as byte copy
+ \return byte array
+*/
QByteArray GLViewer_MarkerSet::getByteCopy()
{
int i = 0;
return aResult;
}
+/*!
+ Initialize marker set by byte array
+ \param theArray - byte array
+*/
bool GLViewer_MarkerSet::initializeFromByteCopy( QByteArray theArray )
{
int i = 0;
return true;
}
-/***************************************************************************
-** Class: GLViewer_Polyline
-** Descr: OpenGL Polyline
-** Module: GLViewer
-** Created: UI team, 03.09.02
-****************************************************************************/
+/*!
+ \class GLViewer_Polyline
+ OpenGL Polyline
+*/
#define SECTIONS 100
#define DISTANTION 5
+/*!
+ Constructor
+ \param number - number of segments
+ \param size - size of polyline
+ \param toolTip - tool tip of polyline
+*/
GLViewer_Polyline::GLViewer_Polyline( int number, float size, const QString& toolTip ):
GLViewer_Object(),
myNumber( 0 ),
myToolTipText = toolTip;
}
+/*!
+ Destructor, destroys internal arrays of co-ordinates
+*/
GLViewer_Polyline::~GLViewer_Polyline()
{
if ( myXCoord )
delete[] myYCoord;
}
+/*!
+ Saves polyline to file PostScript
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aPSCS - paper co-ordinates system
+*/
bool GLViewer_Polyline::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS )
{
QString aBuffer = "newpath\n";
return true;
}
+/*!
+ Saves polyline to file HPGL
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aHPGLCS - paper co-ordinates system
+*/
bool GLViewer_Polyline::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS )
{
QString aBuffer = "";
}
#ifdef WIN32
+/*!
+ Saves polyline to EMF image
+ \param dc - EMF image descriptor
+ \param aViewerCS - viewer co-ordinates system
+ \param aEMFCS - paper co-ordinates system
+*/
bool GLViewer_Polyline::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS )
{
if( !aViewerCS || !aEMFCS )
}
#endif
+/*!
+ Computes all necessary information about object for presentation in drawer
+*/
void GLViewer_Polyline::compute()
{
// cout << "GLViewer_MarkerSet::compute" << endl;
myRect->setBottom( ya - yGap );
}
+/*!
+ \return update object rectangle
+ Does not equal getRect() if object have a persistence to some viewer transformations
+*/
GLViewer_Rect* GLViewer_Polyline::getUpdateRect()
{
GLViewer_Rect* rect = new GLViewer_Rect();
return rect;
}
+/*!
+ Creates corresponding drawer
+*/
GLViewer_Drawer* GLViewer_Polyline::createDrawer()
{
// cout << "GLViewer_MarkerSet::createDrawer" << endl;
return myDrawer = new GLViewer_PolylineDrawer();
}
+/*!
+ Computes highlight presentation
+ \param x - x coord
+ \param y - y coord
+ \param tol - tolerance of detecting
+ \param isCircle - true if sensitive area of detection is round
+ \return true if highlight status is changed
+*/
GLboolean GLViewer_Polyline::highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle )
{
if( !myIsVisible )
return update;
}
+/*!
+ Unhilights object
+*/
GLboolean GLViewer_Polyline::unhighlight()
{
// if( !myHNumbers.isEmpty() )
return GL_FALSE;
}
+/*!
+ Selects polyline
+ /param x, y - co-ordinates of mouse
+ /param tol - tolerance
+ /param rect - rectangle (in case of rectangular selection)
+ /param isFull - if it is true, then object may selected only if it lays whole in selection zone
+ \param isCircle - true if sensitive area of detection is round
+ \param isShift - true if selection exec with append option
+*/
GLboolean GLViewer_Polyline::select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull,
GLboolean isCircle, GLboolean isShift )
{
return myIsSel;
}
+/*!
+ Unselects polyline
+*/
GLboolean GLViewer_Polyline::unselect()
{
// if( !mySelNumbers.isEmpty() )
return GL_FALSE;
}
+/*!
+ Sets array of abscisses for points of polyline
+ \param xCoord - array of of abscisses
+ \param size - size of array
+*/
void GLViewer_Polyline::setXCoord( GLfloat* xCoord, int size )
{
myXCoord = new GLfloat[ size ];
myXCoord[i] = xCoord[i];
}
+/*!
+ Sets array of ordinates for points of polyline
+ \param xCoord - array of of ordinates
+ \param size - size of array
+*/
void GLViewer_Polyline::setYCoord( GLfloat* yCoord, int size )
{
myYCoord = new GLfloat[ size ];
myYCoord[i] = yCoord[i];
}
+/*!
+ Sets number of points
+ \param number - new number of points
+*/
void GLViewer_Polyline::setNumber( GLint number )
{
if ( myNumber == number )
myXCoord = new GLfloat[ myNumber ];
myYCoord = new GLfloat[ myNumber ];
}
-/*
-void GLViewer_Polyline::onSelectionDone( bool append)
-{
- mySelectedIndexes.Clear();
- QValueList<int>::Iterator it;
- //for( it = myMarkers->mySelNumbers.begin(); it != myMarkers->mySelNumbers.end(); ++it )
- // mySelectedIndexes.Append( *it / 2 ); //!!!
-}
-void GLViewer_Polyline::onSelectionCancel()
-{
- mySelectedIndexes.Clear();
-}
+/*!
+ Export numbers of highlighted/selected lines
*/
void GLViewer_Polyline::exportNumbers( QValueList<int>& highlight,
QValueList<int>& unhighlight,
unselect = myUSelNumbers;
}
+/*!
+ Moves object by recomputing
+ \param dx - moving along X coord
+ \param dy - moving along Y coord
+ \param fromGroup - is true if this method called from group
+*/
void GLViewer_Polyline::moveObject( float theX, float theY, bool fromGroup )
{
if( !fromGroup && myGroup)
compute();
}
+/*!
+ Codes polyline as byte copy
+ \return byte array
+*/
QByteArray GLViewer_Polyline::getByteCopy()
{
int i = 0;
}
+/*!
+ Initialize polyline by byte array
+ \param theArray - byte array
+*/
bool GLViewer_Polyline::initializeFromByteCopy( QByteArray theArray )
{
int i = 0;
return true;
}
-/***************************************************************************
-** Class: GLViewer_TextObject
-** Descr: Text as Object for OpenGL
-** Module: GLViewer
-** Created: UI team, 12.02.04
-****************************************************************************/
+
+/*!
+ Constructor
+ \param theStr - text string
+ \param xPos - x position
+ \param yPos - y position
+ \param color - color of text
+ \param toolTip - tooltip of text object
+*/
GLViewer_TextObject::GLViewer_TextObject( const QString& theStr, float xPos, float yPos,
const QColor& color, const QString& toolTip )
: GLViewer_Object()
myToolTipText = toolTip;
}
+
+/*!
+ Destructor
+*/
GLViewer_TextObject::~GLViewer_TextObject()
{
if ( myGLText )
delete myGLText;
}
+/*!
+ Saves text object to file PostScript
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aPSCS - paper co-ordinates system
+*/
bool GLViewer_TextObject::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS )
{
QString aText = myGLText->getText();
return true;
}
+/*!
+ Saves text object to file HPGL
+ \param hFile - file instance
+ \param aViewerCS - viewer co-ordinates system
+ \param aHPGLCS - paper co-ordinates system
+*/
bool GLViewer_TextObject::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS )
{
QString aText = myGLText->getText();
}
#ifdef WIN32
+/*!
+ Saves text object to EMF image
+ \param dc - EMF image descriptor
+ \param aViewerCS - viewer co-ordinates system
+ \param aEMFCS - paper co-ordinates system
+*/
bool GLViewer_TextObject::translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS )
{
QString aText = myGLText->getText();
}
#endif
+/*!
+ Creates corresponding drawer
+*/
GLViewer_Drawer* GLViewer_TextObject::createDrawer()
{
myDrawer = new GLViewer_TextDrawer();
return myDrawer;
}
+/*!
+ Computes all necessary information about object for presentation in drawer
+*/
void GLViewer_TextObject::compute()
{
float xPos, yPos;
myRect->setBottom( yPos );
}
+/*!
+ Installing already exist drawer with same type
+ \param theDrawer - new drawer
+*/
void GLViewer_TextObject::setDrawer( GLViewer_Drawer* theDrawer )
{
myDrawer = theDrawer;
//compute();
}
+/*!
+ \return update object rectangle
+ Does not equal getRect() if object have a persistence to some viewer transformations
+*/
GLViewer_Rect* GLViewer_TextObject::getUpdateRect()
{
GLViewer_Rect* rect = new GLViewer_Rect();
return rect;
}
+/*!
+ Computes highlight presentation
+ \param x - x coord
+ \param y - y coord
+ \param tol - tolerance of detecting
+ \param isCircle - true if sensitive area of detection is round
+ \return true if highlight status is changed
+*/
GLboolean GLViewer_TextObject::highlight( GLfloat theX, GLfloat theY, GLfloat theTol, GLboolean isCircle )
{
if( !myIsVisible )
return myIsHigh;
}
+/*!
+ Unhilights object
+*/
GLboolean GLViewer_TextObject::unhighlight()
{
if( myIsHigh )
return GL_FALSE;
}
+/*!
+ Selects text object
+ /param x, y - co-ordinates of mouse
+ /param tol - tolerance
+ /param rect - rectangle (in case of rectangular selection)
+ /param isFull - if it is true, then object may selected only if it lays whole in selection zone
+ \param isCircle - true if sensitive area of detection is round
+ \param isShift - true if selection exec with append option
+*/
GLboolean GLViewer_TextObject::select( GLfloat theX, GLfloat theY, GLfloat theTol, GLViewer_Rect rect,
GLboolean isFull, GLboolean isCircle, GLboolean isShift )
{
return myIsSel;
}
+/*!
+ Unselects text object
+*/
GLboolean GLViewer_TextObject::unselect()
{
if( myIsSel )
return GL_FALSE;
}
+/*!
+ Moves object by recomputing
+ \param dx - moving along X coord
+ \param dy - moving along Y coord
+ \param fromGroup - is true if this method called from group
+*/
void GLViewer_TextObject::moveObject( float theX, float theY, bool fromGroup )
{
if( !fromGroup && myGroup)
compute();
}
+/*!
+ Codes text object as byte copy
+ \return byte array
+*/
QByteArray GLViewer_TextObject::getByteCopy()
{
QByteArray aObject = GLViewer_Object::getByteCopy();
return aObject;
}
+/*!
+ Initialize text object by byte array
+ \param theArray - byte array
+*/
bool GLViewer_TextObject::initializeFromByteCopy( QByteArray theArray )
{
if( !GLViewer_Object::initializeFromByteCopy( theArray ) || myType != "GLViewer_TextObject" )
#endif
/*!
- * Class GLViewer_MarkerSet
- * OpenGL MarkerSet
- */
-
+ \class GLViewer_MarkerSet
+ OpenGL MarkerSet
+*/
class GLVIEWER_API GLViewer_MarkerSet : public GLViewer_Object
{
public:
};
/*!
- * Class GLViewer_Polyline
- * OpenGL Polyline
- */
-
+ \class GLViewer_Polyline
+ OpenGL Polyline
+*/
class GLVIEWER_API GLViewer_Polyline: public GLViewer_Object
{
public:
//! Checks highlight as whole object status
GLboolean isHighSelAll() const { return myHighSelAll; }
- //! Export numbers of heghlighted/selected lines
+ //! Export numbers of highlighted/selected lines
void exportNumbers( QValueList<int>& high, QValueList<int>& unhigh,
QValueList<int>& sel, QValueList<int>& unsel );
GLboolean myHighFlag;
};
-// Class: GLViewer_TextObject
-// Descr: Text as Object for OpenGL
-
+/*!
+ \class GLViewer_TextObject
+ Text as Object for OpenGL
+*/
class GLVIEWER_API GLViewer_TextObject : public GLViewer_Object
{
public:
// File: GLViewer_Compass.cxx
// Created: November, 2004
-//================================================================
-// Class : GLViewer_Compass
-// Description : Class implement representatiof of compass in one of corner in GLViewer
-//================================================================
-
#include "GLViewer_Compass.h"
#include "GLViewer_Drawer.h"
-//=======================================================================
-// Function: GLViewer_Compass
-// Purpose :
-//=======================================================================
+/*!
+ Constructor
+ \param color - a color of compass
+ \param size - a diameter of compass
+ \param pos - a position
+ \param WidthTop - width of wide part of arrow
+ \param WidthBottom - width of base part of arrow
+ \param HeightTop - height of arrow header
+ \param HeightBottom - height of arrow cut on bottom
+*/
GLViewer_Compass::GLViewer_Compass ( const QColor& color, const int size, const Position pos,
const int WidthTop, const int WidthBottom, const int HeightTop,
const int HeightBottom )
//myFont->generateTexture();
}
-//=======================================================================
-// Function: ~GLViewer_Compass
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_Compass::~GLViewer_Compass()
{
delete myFont;
}
-//=======================================================================
-// Function: setCompass
-// Purpose :
-//=======================================================================
+/*!
+ Sets parameters of compass
+ \param color - a color of compass
+ \param size - a diameter of compass
+ \param pos - a position
+*/
void GLViewer_Compass::setCompass( const QColor& color, const int size, const Position pos )
{
myCol = color;
myPos = pos;
}
-//=======================================================================
-// Function: setVisible
-// Purpose :
-//=======================================================================
+/*!
+ Sets visibility of compass
+ \param vis - new visibility state
+*/
void GLViewer_Compass::setVisible( const bool vis )
{
myIsVisible = vis;
}
-//=======================================================================
-// Function: setSize
-// Purpose :
-//=======================================================================
+/*!
+ Sets size of compass
+ \param size - new size
+*/
void GLViewer_Compass::setSize( const int size )
{
if( size > 0 )
mySize=size;
}
-//=======================================================================
-// Function: setArrowWidthTop
-// Purpose :
-//=======================================================================
+/*!
+ Sets arrow width top
+ \param WidthTop - new arrow width top
+*/
void GLViewer_Compass::setArrowWidthTop( const int WidthTop )
{
if( WidthTop < myArrowWidthBottom || WidthTop > mySize )
myArrowWidthTop=WidthTop;
}
-//=======================================================================
-// Function: setArrowWidthBottom
-// Purpose :
-//=======================================================================
+/*!
+ Sets arrow width bottom
+ \param WidthBot - new arrow width bottom
+*/
void GLViewer_Compass::setArrowWidthBottom( const int WidthBot )
{
if( WidthBot > myArrowWidthTop || WidthBot < 1 )
myArrowWidthBottom=WidthBot;
}
-//=======================================================================
-// Function: setArrowHeightTop
-// Purpose :
-//=======================================================================
+/*!
+ Sets arrow height top
+ \param HeightTop - new arrow height top
+*/
void GLViewer_Compass::setArrowHeightTop( const int HeightTop )
{
if( HeightTop > (2*mySize-myArrowHeightBottom ) || HeightTop < 1 )
myArrowHeightTop=HeightTop;
}
-//=======================================================================
-// Function: setArrowHeightBottom
-// Purpose :
-//=======================================================================
+/*!
+ Sets arrow height bottom
+ \param HeightBot - new arrow height bottom
+*/
void GLViewer_Compass::setArrowHeightBottom( const int HeightBot )
{
if( HeightBot > ( 2*mySize-myArrowHeightTop ) || HeightBot < 1)
myArrowHeightBottom=HeightBot;
}
-//=======================================================================
-// Function: getFont
-// Purpose :
-//=======================================================================
+/*!
+ \return font of compass
+*/
GLViewer_TexFont* GLViewer_Compass::getFont()
{
if(!isGenereted)
return myFont;
}
-//=======================================================================
-// Function: setFont
-// Purpose :
-//=======================================================================
+/*!
+ Sets font of compass
+ \param theFont - new font
+*/
void GLViewer_Compass::setFont( QFont theFont )
{
delete myFont;
#pragma warning( disable:4251 )
#endif
+class GLViewer_TexFont;
+
/*! Class GLViewer_Compass
* Class implement representatiof of compass in one of corner in GLViewer.
* Compass it's a some round visual pointer rotated with view window and
* located in fixed place (in one fixed corner)
*/
-
-class GLViewer_TexFont;
-
class GLVIEWER_API GLViewer_Compass
{
public:
// File: GLViewer_Context.cxx
// Created: November, 2004
-//================================================================
-// Class : GLViewer_AspectLine
-// Description : Class for manage of presentations in GLViewer
-//================================================================
+/*!
+ \class GLViewer_AspectLine
+ \brief Class for manage of presentations in GLViewer
+*/
#include "GLViewer_Context.h"
#define TOLERANCE 12
-//=======================================================================
-// Function: GLViewer_Context
-// Purpose :
-//=======================================================================
+/*!
+ Constructor
+*/
GLViewer_Context::GLViewer_Context( GLViewer_Viewer2d* v ) :
myGLViewer2d( v ),
myHighlightColor( Quantity_NOC_CYAN1 ),
mySelCurIndex = 0;
}
-//=======================================================================
-// Function: ~GLViewer_Context
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_Context::~GLViewer_Context()
{
myActiveObjects.clear();
mySelectedObjects.clear();
}
-//=======================================================================
-// Function: MoveTo
-// Purpose :
-//=======================================================================
+/*!
+ Hiilights objects under cursor
+ \param x - X coord of mouse cursor
+ \param y - Y coord of mouse cursor
+ \param byCircle - true if needs round sensitive area around mouse cursor, else rectangle
+ function search object rectangle which intersect with sensitive area and call object highlight method
+*/
int GLViewer_Context::MoveTo( int xi, int yi, bool byCircle )
{
GLfloat x = (GLfloat)xi;
return 0;
}
-//=======================================================================
-// Function: Select
-// Purpose :
-//=======================================================================
+/*! Selects already highlighting object by calling object method select
+ \param Append - true if new selection will be append to existing selection, false - another
+ \param byCircle - true if needs round selection area in complex object
+*/
int GLViewer_Context::Select( bool Append, bool byCircle )
{
ObjList::Iterator it, itEnd, oit, oitEnd;
return SS_NoChanged;
}
-//=======================================================================
-// Function: SelectByRect
-// Purpose :
-//=======================================================================
+/*! Selects objects on scene by rectangle
+ \param theRect - rectangle of selection
+ \param Append - true if new selection will be append to existing selection, false - another
+ function search object rectangle which intersect with theRect and call object select method
+*/
int GLViewer_Context::SelectByRect( const QRect& theRect, bool Append )
{
GLfloat aXScale;
return status;
}
-//=======================================================================
-// Function: SetHighlightColor
-// Purpose :
-//=======================================================================
+/*!
+ Sets color of hilighting
+ \param aCol - new color of highlighting
+*/
void GLViewer_Context::SetHighlightColor( Quantity_NameOfColor aCol )
{
myHighlightColor = aCol;
myGLViewer2d->updateColors( colH, colS);
}
-//=======================================================================
-// Function: SetSelectionColor
-// Purpose :
-//=======================================================================
+/*!
+ Sets color of selection
+ \param aCol - new color of selection
+*/
void GLViewer_Context::SetSelectionColor( Quantity_NameOfColor aCol )
{
mySelectionColor = aCol;
myGLViewer2d->updateColors( colH, colS);
}
-//=======================================================================
-// Function: NbSelected
-// Purpose :
-//=======================================================================
+/*!
+ \return number of selected objects
+*/
int GLViewer_Context::NbSelected()
{
return mySelectedObjects.count();
}
-//=======================================================================
-// Function: InitSelected
-// Purpose :
-//=======================================================================
+/*!
+ Inits iteration through selected objects
+*/
void GLViewer_Context::InitSelected()
{
mySelCurIndex = 0;
}
-//=======================================================================
-// Function: MoreSelected
-// Purpose :
-//=======================================================================
+/*!
+ Checks if iteration through selected objects may be continued
+*/
bool GLViewer_Context::MoreSelected()
{
return ( mySelCurIndex < NbSelected() );
}
-//=======================================================================
-// Function: NextSelected
-// Purpose :
-//=======================================================================
+/*!
+ Iterates to next selected object
+*/
bool GLViewer_Context::NextSelected()
{
if ( mySelCurIndex >= 0 && mySelCurIndex < NbSelected() )
return FALSE;
}
-//=======================================================================
-// Function: SelectedObject
-// Purpose :
-//=======================================================================
+/*!
+ \return current selected object (must be used only in cycle as "for( InitSelected(); MoreSelected(); NextSelected() ) {...}" )
+*/
GLViewer_Object* GLViewer_Context::SelectedObject()
{
return mySelectedObjects[ mySelCurIndex ];
}
-//=======================================================================
-// Function: isSelected
-// Purpose :
-//=======================================================================
+/*!
+ \return true if object is selected
+ \param theObj - object to be checked
+*/
bool GLViewer_Context::isSelected( GLViewer_Object* theObj )
{
return mySelectedObjects.contains( theObj );
}
-//=======================================================================
-// Function: insertObject
-// Purpose :
-//=======================================================================
+/*! Inserts new object in context
+ \param theObject - object to be inserted
+ \param display - true if needs display object immediatly after inserting, else false
+ \param isActive - true if needs inserting object in active list
+*/
int GLViewer_Context::insertObject( GLViewer_Object* object, bool display, bool isActive )
{
// cout << "GLViewer_Context::insertObject" << endl;
return myActiveObjects.count() + myInactiveObjects.count();
}
-//=======================================================================
-// Function: replaceObject
-// Purpose :
-//=======================================================================
+/*!
+ Replaces object in context
+ \param oldObject - object to be replaced
+ \param newObject - object for replacing
+*/
bool GLViewer_Context::replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject )
{
if( !oldObject || !newObject )
return false;
}
-//=======================================================================
-// Function: updateScales
-// Purpose :
-//=======================================================================
+/*!
+ Updates scales of all objects in context
+*/
void GLViewer_Context::updateScales( GLfloat scX, GLfloat scY )
{
if( scX <= 0 || scY <= 0 )
(*it)->setScale( scX, scY );
}
-//=======================================================================
-// Function: clearHighlighted
-// Purpose :
-//=======================================================================
+/*!
+ Clears hilighting of objects
+ \param updateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::clearHighlighted( bool updateViewer )
{
if( myHFlag && myLastPicked )
}
}
-//=======================================================================
-// Function: clearSelected
-// Purpose :
-//=======================================================================
+/*!
+ Clears selection of objects
+ \param updateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::clearSelected( bool updateViewer )
{
if( !mySFlag )
mySelectedObjects.clear();
}
-//=======================================================================
-// Function: setSelected
-// Purpose :
-//=======================================================================
+/*!
+ Selects object, other selected objects are left as selected
+ \param updateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::setSelected( GLViewer_Object* object, bool updateViewer )
{
if( !object )
myGLViewer2d->activateDrawer( object, TRUE, TRUE );
}
-//=======================================================================
-// Function: remSelected
-// Purpose :
-//=======================================================================
+/*!
+ Unselects object, other selected objects are left as selected
+ \param updateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::remSelected( GLViewer_Object* object, bool updateViewer )
{
if( !object || !mySelectedObjects.contains( object ) )
myGLViewer2d->activateDrawer( object, TRUE, TRUE );
}
-//=======================================================================
-// Function: eraseObject
-// Purpose :
-//=======================================================================
+/*!
+ Erases object in viewer
+ \param theUpdateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::eraseObject( GLViewer_Object* theObject, bool theUpdateViewer )
{
if( !theObject || !myActiveObjects.contains( theObject ) )
myGLViewer2d->updateAll();
}
-//=======================================================================
-// Function: deleteObject
-// Purpose :
-//=======================================================================
+/*!
+ Deletes object in
+ \param updateViewer - if it is true, viewer must be updated
+*/
void GLViewer_Context::deleteObject( GLViewer_Object* theObject, bool updateViewer )
{
if( !theObject ||
myGLViewer2d->updateAll();
}
-//=======================================================================
-// Function: setActive
-// Purpose :
-//=======================================================================
+/*!
+ Installs active status to object
+ \param theObject
+*/
bool GLViewer_Context::setActive( GLViewer_Object* theObject )
{
if( !theObject || !myInactiveObjects.contains( theObject ) )
return true;
}
-//=======================================================================
-// Function: setInactive
-// Purpose :
-//=======================================================================
+/*!
+ Installs inactive status to object
+ \param theObject
+*/
bool GLViewer_Context::setInactive( GLViewer_Object* theObject )
{
if( !theObject || !myActiveObjects.contains( theObject ) )
// Created: November, 2004
-/*! Class GLViewer_Context
- * Class for manage of presentations in GLViewer
- */
-
#ifndef GLVIEWER_CONTEXT_H
#define GLVIEWER_CONTEXT_H
#pragma warning( disable:4251 )
#endif
+/*! \class GLViewer_Context
+ * Class for manage of presentations in GLViewer
+ */
class GLVIEWER_API GLViewer_Context
{
public:
*function search object rectangle which intersect with sensitive area and call object highlight method
*/
int MoveTo( int x, int y, bool byCircle = FALSE );
- //! A function selecting already highlighting object by calling object method select
- /*!
+ /*! A function selecting already highlighting object by calling object method select
*\param Append - true if new selection will be append to existing selection, false - another
*\param byCircle - true if needs round selection area in complex object
*/
int Select( bool Append = FALSE, bool byCircle = FALSE );
- //! A function selecting objects on scene by rectangle
- /*!
+ /*! A function selecting objects on scene by rectangle
*\param theRect - rectangle of selection
*\param Append - true if new selection will be append to existing selection, false - another
*function search object rectangle which intersect with theRect and call object select method
int insertObject( GLViewer_Object* theObject, bool display = false, bool isActive = true );
//! Replacing objects in context
/*!
- * Function search activ and incative objects
+ * Function search active and incative objects
*/
bool replaceObject( GLViewer_Object* oldObject, GLViewer_Object* newObject );
//! A function updating scales of all objects in context
//! Returns list of context objects
/*!
- * Returns active objects if isActive = true, else inactive objects
+ * \return active objects if isActive = true, else inactive objects
*/
const ObjList& getObjects( bool isActive = true )
{ return isActive ? myActiveObjects : myInactiveObjects; }
// File: GLViewer_Context.cxx
// Created: November, 2004
-//================================================================
-// Class : GLViewer_CoordSystem
-// Description : Class implementing mathematical model of 2D coordinate system
-//================================================================
#include "GLViewer_CoordSystem.h"
#include <math.h>
-//=======================================================================
-// Function: GLViewer_CoordSystem
-// Purpose :
-//=======================================================================
+/*!
+ Constructor
+ \param aType - type of CS
+ \param X0 - X of origin in reference CS
+ \param Y0 - Y of origin in reference CS
+ \param XUnit - X unit in reference CS
+ \param YUnit - Y unit in reference CS
+ \param Rotation - rotation relative reference CS
+*/
GLViewer_CoordSystem::GLViewer_CoordSystem( CSType aType, double X0, double Y0,
double XUnit, double YUnit, double Rotation )
{
setRotation( Rotation );
}
-//=======================================================================
-// Function: getOrigin
-// Purpose :
-//=======================================================================
+/*!
+ \return origin in reference CS
+*/
void GLViewer_CoordSystem::getOrigin( double& x, double& y ) const
{
x = myX0;
y = myY0;
}
-//=======================================================================
-// Function: setOrigin
-// Purpose :
-//=======================================================================
+/*!
+ Sets origin in reference CS
+*/
void GLViewer_CoordSystem::setOrigin( double x, double y )
{
myX0 = x;
myY0 = y;
}
-//=======================================================================
-// Function: getUnits
-// Purpose :
-//=======================================================================
+/*!
+ \return units
+*/
void GLViewer_CoordSystem::getUnits( double& x, double& y ) const
{
x = myXUnit;
y = myYUnit;
}
-//=======================================================================
-// Function: setUnits
-// Purpose :
-//=======================================================================
+/*!
+ Sets units
+*/
void GLViewer_CoordSystem::setUnits( double x, double y )
{
if( x>0 )
else
myYUnit = 1.0;
}
-//=======================================================================
-// Function: getRotation
-// Purpose :
-//=======================================================================
+
+/*!
+ \return rotation
+*/
double GLViewer_CoordSystem::getRotation() const
{
return myRotation;
}
-//=======================================================================
-// Function: setRotation
-// Purpose :
-//=======================================================================
+/*!
+ Sets rotation
+*/
void GLViewer_CoordSystem::setRotation( double rotation )
{
myRotation = rotation;
}
-//=======================================================================
-// Function: getType
-// Purpose :
-//=======================================================================
+/*!
+ \return type
+*/
GLViewer_CoordSystem::CSType GLViewer_CoordSystem::getType() const
{
return myType;
}
-//=======================================================================
-// Function: setType
-// Purpose :
-//=======================================================================
+/*!
+ Sets type
+*/
void GLViewer_CoordSystem::setType( CSType type )
{
myType = type;
}
-//=======================================================================
-// Function: toReference
-// Purpose :
-//=======================================================================
+/*!
+ Recalculate co-ordinates to reference co-ordinates
+ \param x, y - co-ordinates
+*/
void GLViewer_CoordSystem::toReference( double& x, double& y )
{
if( myType==Cartesian )
}
}
-//=======================================================================
-// Function: fromReference
-// Purpose :
-//=======================================================================
+/*!
+ Recalculate co-ordinates from reference co-ordinates
+ \param x, y - co-ordinates
+*/
void GLViewer_CoordSystem::fromReference( double& x, double& y )
{
x = (x - myX0) / myXUnit;
}
}
-//=======================================================================
-// Function: transform
-// Purpose :
-//=======================================================================
+/*!
+ Recalculate co-ordinates to co-ordinates of other CS
+ \param aSystem - other CS
+ \param x, y - co-ordinates
+*/
void GLViewer_CoordSystem::transform( GLViewer_CoordSystem& aSystem, double& x, double& y )
{
toReference( x, y );
aSystem.fromReference( x, y );
}
-//=======================================================================
-// Function: getStretching
-// Purpose :
-//=======================================================================
+/*!
+ \return stretching of CS along X and Y axis
+*/
void GLViewer_CoordSystem::getStretching( GLViewer_CoordSystem& aSystem, double& theX, double& theY )
{
theX = myXUnit / aSystem.myXUnit;
#pragma warning( disable:4251 )
#endif
+/*!
+ \class GLViewer_CoordSystem
+ \brief Class implementing mathematical model of 2D coordinate system
+*/
class GLVIEWER_API GLViewer_CoordSystem
{
public:
GLfloat modelMatrix[16];
-//================================================================
-// Class : GLViewer_TexFont
-// Description :
-//================================================================
+
//! code of first font symbol
static int FirstSymbolNumber = 32;
//! code of last font symbol
QMap<GLViewer_TexFindId,GLViewer_TexIdStored> GLViewer_TexFont::TexFontBase;
QMap<GLViewer_TexFindId,GLuint> GLViewer_TexFont::BitmapFontCache;
-//=======================================================================
-// Function: clearTextBases
-// Purpose :
-//=======================================================================
+/*!
+ Clears all generated fonts
+*/
void GLViewer_TexFont::clearTextBases()
{
//cout << "Clear font map" << endl;
BitmapFontCache.clear();
}
-//======================================================================
-// Function: GLViewer_TexFont
-// Purpose :
-//=======================================================================
+/*!
+ Default constructor
+*/
GLViewer_TexFont::GLViewer_TexFont()
: myMaxRowWidth( 0 ), myFontHeight( 0 )
{
init();
}
-//======================================================================
-// Function: GLViewer_TexFont
-// Purpose :
-//=======================================================================
+/*!
+ Constructor
+ \param theFont - a base font
+ \param theSeparator - separator between letters
+ \param theIsResizeable - specifies whether text drawn by this object can be scaled along with the scene
+ \param theMinMagFilter - min/mag filter, affects text sharpness
+*/
GLViewer_TexFont::GLViewer_TexFont( QFont* theFont, int theSeparator, bool theIsResizeable, GLuint theMinMagFilter )
: myMaxRowWidth( 0 ), myFontHeight( 0 )
{
init();
}
-//======================================================================
-// Function: ~GLViewer_TexFont
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_TexFont::~GLViewer_TexFont()
{
delete[] myWidths;
delete[] myPositions;
}
-//======================================================================
-// Function: init
-// Purpose :
-//=======================================================================
+/*!
+ Initializes font parameters
+*/
void GLViewer_TexFont::init()
{
myNbSymbols = LastSymbolNumber - FirstSymbolNumber + 1;
myTexFontHeight = 0;
}
-//======================================================================
-// Function: generateTexture
-// Purpose :
-//=======================================================================
+/*!
+ Generating font texture
+*/
bool GLViewer_TexFont::generateTexture()
{
GLViewer_TexFindId aFindFont;
aFindFont.myIsItal = myQFont.italic();
aFindFont.myIsUndl = myQFont.underline();
aFindFont.myPointSize = myQFont.pointSize();
- aFindFont.myViewPortId = (int)QGLContext::currentContext();
+ aFindFont.myViewPortId = size_t(QGLContext::currentContext());
if( TexFontBase.contains( aFindFont ) )
{
return true;
}
-//======================================================================
-// Function: drawString
-// Purpose :
-//=======================================================================
+/*!
+ Drawing string in viewer
+ \param theStr - string to be drawn
+ \param theX - X position
+ \param theY - Y position
+ \param theScale - scale coefficient
+*/
void GLViewer_TexFont::drawString( QString theStr, GLdouble theX , GLdouble theY, GLfloat theScale )
{
// Adding some pixels to have a gap between rows
glPopAttrib();
}
-//======================================================================
-// Function: getStringWidth
-// Purpose :
-//=======================================================================
+/*!
+ \return width of string in pixels
+*/
int GLViewer_TexFont::getStringWidth( QString theStr )
{
int aWidth = 0;
return aWidth;
}
-//======================================================================
-// Function: getStringHeight
-// Purpose :
-//=======================================================================
+/*!
+ \return height of string in pixels
+*/
int GLViewer_TexFont::getStringHeight()
{
QFontMetrics aFM( myQFont );
return aFM.height();
}
-//! function for generation list base for bitmap fonts
+/*!
+ Generates list base for bitmap fonts
+*/
static GLuint displayListBase( QFont* theFont )
{
if ( !theFont )
return aList;
}
- aFindFont.myViewPortId = (int)aCont;
+ aFindFont.myViewPortId = size_t(aCont);
if ( GLViewer_TexFont::BitmapFontCache.contains( aFindFont ) )
aList = GLViewer_TexFont::BitmapFontCache[aFindFont];
QMap<GLViewer_TexFindId, GLuint>::iterator it = GLViewer_TexFont::BitmapFontCache.begin();
for ( ; it != GLViewer_TexFont::BitmapFontCache.end(); ++it )
{
- if ( it.key().myViewPortId == (int)aCont && it.data() > listBase )
+ if ( it.key().myViewPortId == size_t(aCont) && it.data() > listBase )
listBase = it.data();
}
listBase += 256;
return aList;
}
-/***************************************************************************
-** Class: GLViewer_Drawer
-** Descr: Drawer for GLViewer_Object
-** Module: GLViewer
-** Created: UI team, 01.10.01
-****************************************************************************/
-//======================================================================
-// Function: GLViewer_Drawer
-// Purpose :
-//=======================================================================
+/*!
+ Default constructor
+*/
GLViewer_Drawer::GLViewer_Drawer()
: myFont( "Helvetica", 10, QFont::Bold )
{
myTextScale = 0.125;
}
-//======================================================================
-// Function: ~GLViewer_Drawer
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_Drawer::~GLViewer_Drawer()
{
myObjects.clear();
glDeleteLists( myTextList, 1 );
}
-//======================================================================
-// Function: destroyAllTextures
-// Purpose :
-//=======================================================================
+/*!
+ Clears all generated textures
+*/
void GLViewer_Drawer::destroyAllTextures()
{
QMap<GLViewer_TexFindId,GLViewer_TexIdStored>::Iterator anIt= GLViewer_TexFont::TexFontBase.begin();
glDeleteTextures( 1, &(anIt.data().myTexFontId) );
}
-//=======================================================================
-// Function: setAntialiasing
-// Purpose : The function enables and disables antialiasing in Open GL (for points, lines and polygons).
-//=======================================================================
+/*!
+ Enables and disables antialiasing in Open GL (for points, lines and polygons).
+ \param on - if it is true, antialiasing is enabled
+*/
void GLViewer_Drawer::setAntialiasing(const bool on)
{
if (on)
}
}
-//======================================================================
-// Function: loadTexture
-// Purpose :
-//=======================================================================
+/*! Loads texture from file
+ \param fileName - the name of texture file
+ \param x_size - the horizontal size of picture ( less or equal texture horizontal size )
+ \param y_size - the vertical size of picture ( less or equal texture vertical size )
+ \param t_size - the size of texture ( texture vertical size equals texture horizontal size )
+*/
GLuint GLViewer_Drawer::loadTexture( const QString& fileName,
GLint* x_size,
GLint* y_size,
return texture;
}
-//======================================================================
-// Function: drawTexture
-// Purpose :
-//=======================================================================
+/*! Draw square texture
+ \param texture - the texture ID
+ \param size - the size of square texture
+ \param x - x coord
+ \param y - y coord
+*/
void GLViewer_Drawer::drawTexture( GLuint texture, GLint size, GLfloat x, GLfloat y )
{
/*float xScale = myXScale;
drawTexture( texture, size, size, x, y );
}
-//======================================================================
-// Function: drawTexture
-// Purpose :
-//=======================================================================
+/*! Draw texture
+ \param texture - the texture ID
+ \param x_size - the horizontal size of texture
+ \param y_size - the vertical size of texture
+ \param x - x coord
+ \param y - y coord
+*/
void GLViewer_Drawer::drawTexture( GLuint texture, GLint x_size, GLint y_size, GLfloat x, GLfloat y )
{
/*float xScale = myXScale;
drawTexturePart( texture, 1.0, 1.0, x_size, y_size, x, y );
}
-//======================================================================
-// Function: drawTexture
-// Purpose :
-//=======================================================================
+/*! Draw texture part
+ \param texture - the texture ID
+ \param x_ratio - the horizontal ratio of texture part
+ \param y_ratio - the vertical ratio of texture part
+ \param x_size - the horizontal size of texture
+ \param y_size - the vertical size of texture
+ \param x - x coord
+ \param y - y coord
+ \param scale - common scale factor ( if = 0, use drawer scales )
+*/
void GLViewer_Drawer::drawTexturePart( GLuint texture,
GLfloat x_ratio,
GLfloat y_ratio,
glDisable( GL_TEXTURE_2D );
}
-//======================================================================
-// Function: drawText
-// Purpose :
-//=======================================================================
+/*!
+ Draw text
+ \param text - text to be drawn
+ \param xPos - x position
+ \param yPos - y position
+ \param color - color of text
+ \param theFont - font of text
+ \param theSeparator - letter separator
+ \param theFormat - text format (by default DTF_BITMAP)
+*/
void GLViewer_Drawer::drawText( const QString& text, GLfloat xPos, GLfloat yPos,
const QColor& color, QFont* theFont, int theSeparator, DisplayTextFormat theFormat )
{
}
}
-//======================================================================
-// Function: drawText
-// Purpose :
-//=======================================================================
+/*!
+ Draws object-text
+*/
void GLViewer_Drawer::drawText( GLViewer_Object* theObject )
{
if( !theObject )
drawText( aText->getText(), aPosX, aPosY, aText->getColor(), &aTmpVarFont, aText->getSeparator(), aText->getDisplayTextFormat() );
}
-//======================================================================
-// Function: drawGLText
-// Purpose :
-//=======================================================================
+/*! Draw text
+ \param text - the text string
+ \param x - x coord
+ \param y - y coord
+ \param hPosition - horizontal alignment
+ \param vPosition - vertical alignment
+ \param color - text color
+ \param smallFont - font format
+*/
void GLViewer_Drawer::drawGLText( QString text, float x, float y,
int hPosition, int vPosition, QColor color, bool smallFont )
{
QFont aFont( myFont );
if( smallFont )
- aFont.setPointSize( aFont.pointSize() * 0.8 );
+ aFont.setPointSize( int(aFont.pointSize() * 0.8) );
GLfloat scale = textScale() > 0. ? textScale() : 1.;
drawText( text, x, y, color, &aFont, 2, myTextFormat );
}
-//======================================================================
-// Function: textRect
-// Purpose :
-//=======================================================================
+/*!
+ \return a rectangle of text (without viewer scale)
+*/
GLViewer_Rect GLViewer_Drawer::textRect( const QString& text ) const
{
GLfloat scale = textScale() > 0. ? textScale() : 1.;
return GLViewer_Rect( 0, width, height, 0 );
}
-//======================================================================
-// Function: drawRectangle
-// Purpose :
-//=======================================================================
+/*!
+ Draws rectangle
+ \param rect - instance of primitive
+ \param color - color of primitive
+*/
void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, QColor color )
{
if( !rect )
glEnd();
}
-//======================================================================
-// Function: translateToHPGL
-// Purpose :
-//=======================================================================
+/*!
+ Saves object to file with format of HPGL
+ \param hFile - file
+ \param aViewerCS - viewer co-ordinate system
+ \param aHPGLCS - paper co-ordinate system
+*/
bool GLViewer_Drawer::translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS )
{
bool result = true;
return result;
}
-//======================================================================
-// Function: translateToPS
-// Purpose :
-//=======================================================================
+/*!
+ Saves object to file with format of PostScript
+ \param hFile - file
+ \param aViewerCS - viewer co-ordinate system
+ \param aPSCS - paper co-ordinate system
+*/
bool GLViewer_Drawer::translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS )
{
bool result = true;
}
#ifdef WIN32
-//======================================================================
-// Function: translateToEMF
-// Purpose :
-//=======================================================================
+/*!
+ Saves object to file with format of EMF
+ \param hFile - file
+ \param aViewerCS - viewer co-ordinate system
+ \param aEMFCS - paper co-ordinate system
+*/
bool GLViewer_Drawer::translateToEMF( HDC hDC, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS )
{
bool result = true;
}
#endif
-//======================================================================
-// Function: drawRectangle
-// Purpose :
-//=======================================================================
+/*!
+ Draws rectangle
+ \param rect - instance of primitive
+ \param lineWidth - width of line
+ \param gap - gap of rectangle
+ \param color - color of primitive
+ \param filled - if it is true, then rectangle will be drawn filled with color "fillingColor"
+ \param fillingColor - color of filling
+*/
void GLViewer_Drawer::drawRectangle( GLViewer_Rect* rect, GLfloat lineWidth, GLfloat gap,
QColor color, bool filled, QColor fillingColor )
{
glEnd();
}
-//======================================================================
-// Function: drawContour
-// Purpose :
-//=======================================================================
+/*!
+ Draws contour
+ \param pntList - list of points
+ \param color - color of contour
+ \param lineWidth - width of line
+*/
void GLViewer_Drawer::drawContour( const GLViewer_PntList& pntList, QColor color, GLfloat lineWidth )
{
glColor3f( ( GLfloat )color.red() / 255,
glEnd();
}
-//======================================================================
-// Function: drawContour
-// Purpose :
-//=======================================================================
+/*!
+ Draws rectangular contour
+ \param rect - instance of rectangle
+ \param color - color of primitive
+ \param lineWidth - width of line
+ \param pattern - pattern of line
+ \param isStripe - enables line stipple
+*/
void GLViewer_Drawer::drawContour( GLViewer_Rect* rect, QColor color, GLfloat lineWidth,
GLushort pattern, bool isStripe )
{
glDisable( GL_LINE_STIPPLE );
}
-//======================================================================
-// Function: drawPolygon
-// Purpose :
-//=======================================================================
+/*!
+ Draws polygon
+ \param pntList - list of points
+ \param color - color of polygon
+*/
void GLViewer_Drawer::drawPolygon( const GLViewer_PntList& pntList, QColor color )
{
glColor3f( ( GLfloat )color.red() / 255,
glEnd();
}
-//======================================================================
-// Function: drawPolygon
-// Purpose :
-//=======================================================================
+/*!
+ Draws rectangle
+ \param rect - instance of rectangle
+ \param color - color of polygon
+ \param pattern - pattern of line
+ \param isStripe - enables line stipple
+*/
void GLViewer_Drawer::drawPolygon( GLViewer_Rect* rect, QColor color,
GLushort pattern, bool isStripe )
{
glDisable( GL_LINE_STIPPLE );
}
-//======================================================================
-// Function: drawVertex
-// Purpose :
-//=======================================================================
GLubyte rasterVertex[5] = { 0x70, 0xf8, 0xf8, 0xf8, 0x70 };
+
+/*!
+ Draws vertex
+ \param x - x position
+ \param y - y position
+ \param color - color of vertex
+*/
void GLViewer_Drawer::drawVertex( GLfloat x, GLfloat y, QColor color )
{
glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 );
glBitmap( 5, 5, 2, 2, 0, 0, rasterVertex );
}
-//======================================================================
-// Function: drawCross
-// Purpose :
-//=======================================================================
GLubyte rasterCross[7] = { 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82 };
+
+/*!
+ Draws cross
+ \param x - x position
+ \param y - y position
+ \param color - color of cross
+*/
void GLViewer_Drawer::drawCross( GLfloat x, GLfloat y, QColor color )
{
glColor3f( ( GLfloat )color.red() / 255, ( GLfloat )color.green() / 255, ( GLfloat )color.blue() / 255 );
glBitmap( 7, 7, 3, 3, 0, 0, rasterCross );
}
-//======================================================================
-// Function: drawArrow
-// Purpose :
-//=======================================================================
+/*!
+ Draws arrow
+ \param red, green, blue - components of color
+ \param lineWidth - width of line
+ \param staff -
+ \param length - length of arrow
+ \param width - width of arrow
+ \param x - x position
+ \param y - y position
+ \param angle - angle of arrow
+ \param filled - drawn as filled
+*/
void GLViewer_Drawer::drawArrow( const GLfloat red, const GLfloat green, const GLfloat blue,
GLfloat lineWidth,
GLfloat staff, GLfloat length, GLfloat width,
}
};
-/***************************************************************************
-** Class: GLViewer_TexFont
-** Descr: Font for GLViewer_Drawer
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
+/*!
+ \class GLViewer_TexFont
+ Font for GLViewer_Drawer, Drawing bitmap and texture fonts in GLViewer
+*/
-/*!
- * Class GLViewer_TexFont
- * Drawing bitmap and texture fonts in GLViewer
- */
class GLVIEWER_API GLViewer_TexFont
{
public:
int myMaxRowWidth;
};
-/***************************************************************************
-** Class: GLViewer_Drawer
-** Descr: Drawer for GLObject
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
/*!
- * Class GLViewer_Drawer
- * Drawer for GLViewer_Objects.
- * Drawer creates only one times per one type of object
- */
+ \class GLViewer_Drawer
+ Drawer for GLViewer_Objects.
+ Drawer creates only one times per one type of object
+*/
class GLVIEWER_API GLViewer_Drawer
{
public:
// Author : OPEN CASCADE
//
-/***************************************************************************
-** Class: GLViewer_Geom
-** Descr:
-** Module: GLViewer
-** Created: UI team, 16.11.04
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include <GLViewer_Geom.h>
#define FAR_POINT 1e10 // Value used as a "very distant" co-ordinate
#define TOLERANCE 1e-3
-//================================================================
-// Function : GLViewer_Segment
-// Purpose : constructs a real segment bounded by two points
-//================================================================
+/*!
+ constructs a real segment bounded by two points
+*/
GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt1,
const GLViewer_Pnt& thePnt2 )
: myPnt1( thePnt1 ),
myC = myPnt1.x() * myPnt2.y() - myPnt2.x() * myPnt1.y();
}
-//================================================================
-// Function : GLViewer_Segment
-// Purpose : constructs a ray starting at <thePnt> and directed
-// along positive X axis direction (or Y axis if vertical )
-//================================================================
+/*!
+ constructs a ray starting at <thePnt> and directed along positive X axis direction (or Y axis if vertical )
+*/
GLViewer_Segment::GLViewer_Segment( const GLViewer_Pnt& thePnt,
const GLfloat theA,
const GLfloat theB,
myPnt2 = GLViewer_Pnt( FAR_POINT, - myA / myB * FAR_POINT - myC / myB );
}
-//================================================================
-// Function : GLViewer_Segment
-// Purpose : destructor, does nothing
-//================================================================
+/*!
+ destructor, does nothing
+*/
GLViewer_Segment::~GLViewer_Segment()
{
}
-//================================================================
-// Function : HasIntersection
-// Purpose : detects intersection with segment <theOther>
-//================================================================
+/*!
+ detects intersection with segment <theOther>
+*/
bool GLViewer_Segment::HasIntersection( const GLViewer_Segment& theOther ) const
{
bool aRes = false;
return aRes;
}
-//================================================================
-// Function : GLViewer_Poly
-// Purpose : constructs a closed polygon from the given ordered list of points
-//================================================================
+/*!
+ constructs a closed polygon from the given ordered list of points
+*/
GLViewer_Poly::GLViewer_Poly( const GLViewer_PntList* thePoints )
: myPoints( (GLViewer_PntList*)thePoints )
{
}
-//================================================================
-// Function : ~GLViewer_Poly
-// Purpose : destructor, <myPoints> mustn't be deleted here!
-//================================================================
+/*!
+ destructor, <myPoints> mustn't be deleted here!
+*/
GLViewer_Poly::~GLViewer_Poly()
{
}
-//================================================================
-// Function : IsIn
-// Purpose : returns true if <thePnt> lies within this polygon
-//================================================================
+/*!
+ \return true if <thePnt> lies within this polygon
+*/
bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt ) const
{
if ( !myPoints )
return ( aNbInter % 2 == 1 );
}
+/*!
+ \return true if <thePnt> lies within this polygon
+*/
/*
-//================================================================
-// Function : IsIn
-// Purpose : returns true if <thePnt> lies within this polygon
-//================================================================
bool GLViewer_Poly::IsIn( const GLViewer_Pnt& thePnt, const float tolerance ) const
{
if ( !myPoints )
return res;
}
*/
-//================================================================
-// Function : IsCovers
-// Purpose : returns true if <thePoly> covers this polygon
-//================================================================
+/*!
+ \return true if <thePoly> covers this polygon
+*/
bool GLViewer_Poly::IsCovers( const GLViewer_Poly& thePoly ) const
{
if ( !myPoints || !thePoly.Count() )
return true;
}
-//================================================================
-// Function : IsCovers
-// Purpose : returns true if <theRect> covers this polygon
-//================================================================
+/*!
+ \return true if <theRect> covers this polygon
+*/
bool GLViewer_Poly::IsCovers( const GLViewer_Rect& theRect ) const
{
if ( !myPoints ) //needs check for <theRect>
return IsCovers( GLViewer_Poly( &aList ) );
}
-//================================================================
-// Function : HasIntersection
-// Purpose : looks for any
-//================================================================
+/*!
+ \return true if polygon has intersection with segment or ray
+ \param theSegment - segment to check intersection
+*/
bool GLViewer_Poly::HasIntersection( const GLViewer_Segment& theSegment ) const
{
if ( !myPoints )
#include <Precision.hxx>
#include <qglobal.h>
+/*!
+ Default constructor
+*/
GLViewer_Grid::GLViewer_Grid() :
myGridList( 0 ), myGridHeight( (GLfloat)0.0 ), myGridWidth( (GLfloat)0.0 ),
myWinW( (GLfloat)0.0 ), myWinH( (GLfloat)0.0 ), myXSize( (GLfloat)0.0 ), myYSize( (GLfloat)0.0 ),
myAxisColor[2] = 0.75;
}
+/*!
+ Constructor
+ \param width and \param height - width and height of grid
+ \param winW and \param winH - width and height of window
+ \param xSize and \param ySize - steps along x and y direction
+ \param xPan and \param yPan - offsets along x and y direction
+ \param xScale and \param yScal - scale factors along x and y direction
+*/
GLViewer_Grid::GLViewer_Grid( GLfloat width, GLfloat height,
GLfloat winW, GLfloat winH,
GLfloat xSize, GLfloat ySize,
myAxisColor[2] = 0.75;
}
+/*!
+ Destructor
+*/
GLViewer_Grid::~GLViewer_Grid()
{
}
+/*!
+ Performs OpenGL drawing
+*/
void GLViewer_Grid::draw()
{
if ( myGridList == 0 || myIsUpdate )
glCallList( myGridList );
}
+/*!
+ Changes color of grid
+ \param r, g, b - components of color
+*/
void GLViewer_Grid::setGridColor( GLfloat r, GLfloat g, GLfloat b )
{
if( myGridColor[0] == r && myGridColor[1] == g && myGridColor[2] == b )
myIsUpdate = GL_TRUE;
}
+/*!
+ Changes color of axis
+ \param r, g, b - components of color
+*/
void GLViewer_Grid::setAxisColor( GLfloat r, GLfloat g, GLfloat b )
{
if( myAxisColor[0] == r && myAxisColor[1] == g && myAxisColor[2] == b )
myIsUpdate = GL_TRUE;
}
+/*!
+ Changes grid width
+ \param w - new grid width
+*/
void GLViewer_Grid::setGridWidth( float w )
{
if( myGridWidth == w )
myIsUpdate = GL_TRUE;
}
+/*!
+ Sets Radius of center point( begin coords )
+ \param r - new radius
+*/
void GLViewer_Grid::setCenterRadius( int r )
{
if( myCenterRadius == r )
myIsUpdate = GL_TRUE;
}
+/*!
+ Sets grid size along X and Y axis
+ \param xSize - size along X axis
+ \param ySize - size along Y axis
+*/
void GLViewer_Grid::setSize( float xSize, float ySize )
{
if( myXSize == xSize && myYSize == ySize )
myIsUpdate = GL_TRUE;
}
+/*!
+ Sets panning of grid
+ \param xPan - panning along X axis
+ \param yPan - panning along Y axis
+*/
void GLViewer_Grid::setPan( float xPan, float yPan )
{
if( myXPan == xPan && myYPan == yPan )
myIsUpdate = GL_TRUE;
}
+/*!
+ Sets zoom
+ \param zoom - new coefficient of zooming
+*/
bool GLViewer_Grid::setZoom( float zoom )
{
if( zoom == 1.0 )
return true;
}
+/*!
+ Sets parameters of grid by zoom coefficient and window size
+ \param WinW - window width
+ \param WinH - window height
+ \param zoom - zoom coefficient
+*/
void GLViewer_Grid::setResize( float WinW, float WinH, float zoom )
{
if( myWinW == WinW && myWinH == WinH && zoom == 1.0 )
myIsUpdate = GL_TRUE;
}
+/*!
+ \return grid size along x and y axis
+ \param xSize - for size along x axis
+ \param ySize - for size along y axis
+*/
void GLViewer_Grid::getSize( float& xSize, float& ySize ) const
{
xSize = myXSize;
ySize = myYSize;
}
+/*!
+ \return panning along x and y axis
+ \param xPan - for panning along x axis
+ \param yPan - for panning along y axis
+*/
void GLViewer_Grid::getPan( float& xPan, float& yPan ) const
{
xPan = myXPan;
yPan = myYPan;
}
+/*!
+ \return scaling along x and y axis
+ \param xScale - for scaling along x axis
+ \param yScale - for scaling along y axis
+*/
void GLViewer_Grid::getScale( float& xScale, float& yScale ) const
{
xScale = myXScale;
yScale = myYScale;
}
+/*!
+ Initialize grid display list
+*/
bool GLViewer_Grid::initList()
{
myIsUpdate = GL_FALSE;
#include "GLViewer_Group.h"
#include "GLViewer_Object.h"
-/***************************************************************************
-** Class: GLViewer_Group
-** Descr: Group of GLViewer_Objects
-** Module: GLViewer
-** Created: UI team, 25.03.05
-****************************************************************************/
-
-//--------------------------------------------------------------------------
-//Function: GLViewer_Group()
-//Description: constructor
-//--------------------------------------------------------------------------
+/*!
+ constructor
+*/
GLViewer_Group::GLViewer_Group()
{
mySelObjNum = 0;
}
-//--------------------------------------------------------------------------
-//Function: GLViewer_Group()
-//Description: destructor
-//--------------------------------------------------------------------------
+/*!
+ destructor
+*/
GLViewer_Group::~GLViewer_Group()
{
}
-//--------------------------------------------------------------------------
-//Function: isEmpty
-//Description: detection of empty group
-//--------------------------------------------------------------------------
+/*!
+ detection of empty group
+*/
bool GLViewer_Group::isEmpty()
{
return myList.empty();
}
-//--------------------------------------------------------------------------
-//Function: count
-//Description: number of elements
-//--------------------------------------------------------------------------
+/*!
+ \return number of elements
+*/
int GLViewer_Group::count()
{
return myList.size();
}
-//--------------------------------------------------------------------------
-//Function: contains
-//Description: return the position of object, else -1
-//--------------------------------------------------------------------------
+/*!
+ \return the position of object if group contains it, else -1
+*/
int GLViewer_Group::contains( GLViewer_Object* theObject )
{
if( !theObject )
return -1;
}
-//--------------------------------------------------------------------------
-//Function: addObject
-//Description: adding object to group
-//--------------------------------------------------------------------------
+/*!
+ adding object to group
+*/
int GLViewer_Group::addObject( GLViewer_Object* theObject )
{
if( theObject && contains( theObject ) == -1 )
return count();
}
-//--------------------------------------------------------------------------
-//Function: removeObject
-//Description: removing object from group
-//--------------------------------------------------------------------------
+/*!
+ removing object from group
+*/
int GLViewer_Group::removeObject( GLViewer_Object* theObject )
{
if( theObject )
return count();
}
-//--------------------------------------------------------------------------
-//Function: dragingObjects
-//Description:
-//--------------------------------------------------------------------------
+/*!
+ Dragging operation
+ \param Once is true, if this operation calls only one time for all object
+ \param x, y - dragging position
+*/
void GLViewer_Group::dragingObjects( float x, float y, bool once )
{
if( !once )
(*it)->moveObject( x, y, true );
}
-//--------------------------------------------------------------------------
-//Function: updateZoom
-//Description:
-//--------------------------------------------------------------------------
+/*!
+ Updates zoom of object
+ \param sender - object to be updated
+ \param zoom - zoom coefficient
+*/
void GLViewer_Group::updateZoom( GLViewer_Object* sender, float zoom )
{
OGIterator it = myList.begin();
// Author : OPEN CASCADE
//
-/***************************************************************************
-** Class: GLViewer_MimeSource
-** Descr: Needs for a work with QClipboard
-** Module: GLViewer
-** Created: UI team, 22.03.04
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_MimeSource.h"
#include "GLViewer_BaseObjects.h"
//#include <cmath>
//using namespace std;
+/*!
+ Destructor
+*/
GLViewer_MimeSource::~GLViewer_MimeSource()
{
}
+/*!
+ Translate objects to byte array
+ \param theObjects - list of objects
+*/
bool GLViewer_MimeSource::setObjects( QValueList<GLViewer_Object*> theObjects )
{
if( !theObjects.empty() )
return false;
}
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-//If you want to use new class, following two method must be redefined
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+/*!
+ Creates object by it's representation (byte array)
+ \param theArray - byte array
+ \param theType - type of object
+*/
GLViewer_Object* GLViewer_MimeSource::getObject( QByteArray theArray, QString theType )
{
if( !theArray.isEmpty() )
return NULL;
}
+/*!
+ Creates list of objects by its representation (byte array)
+ \param theArray - byte array
+ \param theType - type of object
+*/
QValueList<GLViewer_Object*> GLViewer_MimeSource::getObjects( QByteArray theArray, QString theType )
{
if( !theArray.isEmpty() )
return QValueList<GLViewer_Object*>();
}
+/*!
+ \return format by index
+ \param theIndex - index
+*/
const char* GLViewer_MimeSource::format( int theIndex ) const
{
switch( theIndex )
}
+/*!
+ \return internal byte array
+*/
QByteArray GLViewer_MimeSource::encodedData( const char* theObjectType ) const
{
if( theObjectType == "GLViewer_Objects" )
class GLViewer_Object;
-/*! Class GLViewer_MimeSource
-* Needs for a work with QClipboard
+/*!
+ \class GLViewer_MimeSource
+ Needs for a work with QClipboard
*/
-
class GLVIEWER_API GLViewer_MimeSource: public QMimeSource
{
public:
// Author : OPEN CASCADE
//
-/***************************************************************************
-** Class: GLViewer_Object
-** Descr: OpenGL Object
-** Module: GLViewer
-** Created: UI team, 03.09.02
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Object.h"
#include "GLViewer_Drawer.h"
//#include <cmath>
//using namespace std;
+/*!
+ Default constructor
+*/
GLViewer_Object::GLViewer_Object()
{
myXScale = 1.0;
myGroup = NULL;
}
+/*!
+ Destructor
+*/
GLViewer_Object::~GLViewer_Object()
{
if( myRect )
delete myAspectLine;
}
+/*!
+ \return priority of object
+*/
int GLViewer_Object::getPriority() const
{
return myDrawer ? myDrawer->getPriority() : 0;
}
+/*!
+ \return true if object is inside rectangle
+ \param theRect - rectangle
+*/
GLboolean GLViewer_Object::isInside( GLViewer_Rect theRect )
{
return theRect.toQRect().contains( myRect->toQRect() );
}
+/*!
+ Sets zoom factor
+ \param zoom - zoom factor
+*/
GLboolean GLViewer_Object::setZoom( GLfloat zoom, bool, bool )
{
if( myZoom == zoom )
return GL_TRUE;
}
+/*!
+ Performs zoom change by step
+ \param zoomIn - to increase to decrease zoom
+*/
GLboolean GLViewer_Object::updateZoom( bool zoomIn )
{
float newZoom;
return setZoom( newZoom, true );
}
+/*!
+ Codes object as byte copy
+ \return byte array
+*/
QByteArray GLViewer_Object::getByteCopy()
{
int i = 0;
return aResult;
}
+/*!
+ Initialize object by byte array
+ \param theArray - byte array
+*/
bool GLViewer_Object::initializeFromByteCopy( QByteArray theArray )
{
int i = 0;
return true;
}
+/*!
+ Sets object's group
+ \param theGroup - group
+*/
void GLViewer_Object::setGroup( GLViewer_Group* theGroup )
{
if ( myGroup == theGroup )
myGroup->addObject( this );
}
+/*!
+ \return object's group
+*/
GLViewer_Group* GLViewer_Object::getGroup() const
{
return myGroup;
#pragma warning( disable:4251 )
#endif
-/*!
- * Class GLViewer_Object
- * Base Object for GLViewer
- */
class GLViewer_Drawer;
class GLViewer_AspectLine;
class GLViewer_Group;
class GLViewer_Text;
class GLViewer_Owner;
+/*!
+ * Class GLViewer_Object
+ * Base Object for all GLViewer objects
+ */
class GLVIEWER_API GLViewer_Object
{
public:
// File: GLViewer_Selector.cxx
// Created: November, 2004
-/****************************************************************************
-** Class: GLViewer_Selector
-** Descr: Base class for object selection in QAD-based application
-** Module: GLViewer
-** Created: UI team, 22.09.00
-*****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Selector.h"
// File: GLViewer_Selector.h
// Created: November, 2004
-/****************************************************************************
-** Class: GLViewer_Selector
-** Descr: Base class for object selection in QAD-based application
-** Module: GLViewer
-** Created: UI team, 22.09.00
-*****************************************************************************/
#ifndef GLVIEWER_SELECTOR_H
#define GLVIEWER_SELECTOR_H
class GLViewer_Viewer;
-/*! Class GLViewer_Selector
-* Based select manager for GLViewer
+/*!
+ \Class GLViewer_Selector
+ Base class for object selection in SUIT-based application
*/
-
class GLVIEWER_API GLViewer_Selector : public QObject
{
Q_OBJECT
// File: GLViewer_Selector2d.cxx
// Created: November, 2004
-/****************************************************************************
-** Class: GLViewer_Selector2d
-** Descr: OpenGL Selector 2D
-** Module: GLViewer
-** Created: UI team, 20.09.02
-*****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Selector2d.h"
#include "GLViewer_Viewer2d.h"
#include "GLViewer_Context.h"
#include "GLViewer_ViewPort2d.h"
+/*!
+ Constructor
+*/
GLViewer_Selector2d::GLViewer_Selector2d( GLViewer_Viewer2d* v2d, GLViewer_Context* glc ) :
GLViewer_Selector( v2d ),
myGLContext( glc )
// myGLContext->SetSelectionColor( Quantity_NOC_RED );
}
+/*!
+ Destructor
+*/
GLViewer_Selector2d::~GLViewer_Selector2d()
{
}
+/*!
+ Changes hilight color of context
+ \param color - new hilight color
+*/
void GLViewer_Selector2d::setHilightColor( Quantity_NameOfColor color )
{
myGLContext->SetHighlightColor( color );
}
+/*!
+ Changes selection color of context
+ \param color - new selection color
+*/
void GLViewer_Selector2d::setSelectColor( Quantity_NameOfColor color )
{
myGLContext->SetSelectionColor( color );
}
+/*!
+ Detects object at point
+ \param x, y - point co-ordinates
+*/
void GLViewer_Selector2d::detect( int x, int y )
{
//cout << "GLViewer_Selector2d : detect ( " << x << " , " << y << " )" << endl;
myGLContext->MoveTo( x, y );
}
+/*!
+ Undetects all objects
+*/
void GLViewer_Selector2d::undetectAll()
{
if ( myLocked || !myGLContext || !myViewer || !myViewer->getActiveView() ||
myGLContext->clearHighlighted( true );
}
+/*!
+ Selects previously hilighted objects
+ \param append - append objects to selection
+*/
void GLViewer_Selector2d::select( bool append )
{
//cout << "GLViewer_Selector2d : select ( " << (int)append << " )" << endl;
checkSelection( selBefore, append, status );
}
+/*!
+ Selects objects in rectangle
+ \param selRect - selection rectangle
+ \param append - append objects to selection
+*/
void GLViewer_Selector2d::select( const QRect& selRect, bool append )
{
GLViewer_Viewer::SelectionMode selMode = myViewer->getSelectionMode();
checkSelection( selBefore, append, aStatus );
}
+/*!
+ Unselects all objects
+*/
void GLViewer_Selector2d::unselectAll()
{
if ( myLocked || !myViewer )
if ( hadSelection ) emit selSelectionCancel();
}
-/* Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel'
- Should be called by after non-interactive selection. */
+/*!
+ Checks selection state and emits 'selSelectionDone' or 'selSelectionCancel'
+ Should be called by after non-interactive selection.
+*/
void GLViewer_Selector2d::checkSelection( int selBefore, bool append, int aStatus )
{
int selAfter = numSelected();
}
}
+/*!
+ \return number of selected objects
+*/
int GLViewer_Selector2d::numSelected() const
{
return myGLContext->NbSelected();
// File: GLViewer_Selector2d.h
// Created: November, 2004
-/****************************************************************************
-** Class: GLViewer_Selector2d
-** Descr: OpenGL Selector 2D
-** Module: GLViewer
-** Created: UI team, 20.09.02
-*****************************************************************************/
#ifndef GLVIEWER_SELECTOR2D_H
#define GLVIEWER_SELECTOR2D_H
class GLViewer_Viewer2d;
class GLViewer_Context;
-/*! Class GLViewer_Selector2d
-* 2D select manager for GLViewer
+/*!
+ \class GLViewer_Selector2d
+ 2D select manager for GLViewer
*/
class GLVIEWER_API GLViewer_Selector2d : public GLViewer_Selector
{
// Author : OPEN CASCADE
//
-/***************************************************************************
-** Class: GLViewer_Text
-** Descr: Substitution of Prs3d_Text for OpenGL
-** Module: GLViewer
-** Created: UI team, 10.07.03
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Text.h"
+/*!
+ Constructor
+*/
GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color )
{
myText = text;
myDTF = DTF_BITMAP;
}
+/*!
+ Constructor
+*/
GLViewer_Text::GLViewer_Text( const QString& text, float xPos, float yPos, const QColor& color, QFont theFont, int theSeparator )
{
myText = text;
myDTF = DTF_BITMAP;
}
+/*!
+ Destructor
+*/
GLViewer_Text::~GLViewer_Text()
{
}
+/*!
+ \return width of text
+*/
int GLViewer_Text::getWidth()
{
int aResult = 0;
return aResult;
}
+/*!
+ \return height of text
+*/
int GLViewer_Text::getHeight()
{
QFontMetrics aFM( myQFont );
return aFM.height();
}
+/*!
+ Codes object as byte copy
+ \return byte array
+*/
QByteArray GLViewer_Text::getByteCopy() const
{
int i;
return aResult;
}
+/*!
+ Initialize text from binary representation
+ \param theBuf - byte array
+*/
GLViewer_Text* GLViewer_Text::fromByteCopy( QByteArray theBuf )
{
int i = 0;
#pragma warning( disable:4251 )
#endif
-/* Class GLViewer_Text
-* Substitution of Prs3d_Text for OpenGL */
-
+/*!
+ \class GLViewer_Text
+ Substitution of Prs3d_Text for OpenGL
+*/
class GLVIEWER_API GLViewer_Text
{
public:
#include <qapplication.h>
#include <qtooltip.h>
-/***************************************************************************
-** Class: GLViewer_ToolTip
-** Descr: ToolTip of GLViewer_Objects
-** Module: GLViewer
-** Created: UI team, 25.03.05
-****************************************************************************/
-
-//--------------------------------------------------------------------------
-//Function: GLViewer_ToolTip()
-//Description: constructor
-//--------------------------------------------------------------------------
+/*!
+ constructor
+*/
GLViewer_ObjectTip::GLViewer_ObjectTip( GLViewer_ViewPort2d* theParent )
:QObject(),
myText(),
connect( mypTimer, SIGNAL( timeout() ), this, SLOT( showTip() ) );
}
-//--------------------------------------------------------------------------
-//Function: GLViewer_ToolTip()
-//Description: destructor
-//--------------------------------------------------------------------------
+/*!
+ destructor
+*/
GLViewer_ObjectTip::~GLViewer_ObjectTip()
{
// delete mypRect;
}
-//--------------------------------------------------------------------------
-//Function: GLViewer_ToolTip()
-//Description: destructor
-//--------------------------------------------------------------------------
+/*!
+ It is called when there is a possibility that a tool tip should be shown
+ \param p - position of tooltip
+*/
bool GLViewer_ObjectTip::maybeTip( const QPoint &p )
{
*/
}
+/*!
+ Custom event filter
+*/
bool GLViewer_ObjectTip::eventFilter( QObject* theObj, QEvent* e )
{
hideTipAndSleep();
return false;
}
-
+/*!
+ Hides tooltip and stops timer
+*/
void GLViewer_ObjectTip::hideTipAndSleep()
{
//if( mypPoint )
mypTimer->stop();
}
+/*!
+ Shows tooltip
+*/
void GLViewer_ObjectTip::showTip()
{
if( maybeTip( myPoint ) )
}
}
+/*!
+ Restarts timer
+*/
void GLViewer_ObjectTip::wakeup( int theTime )
{
if( mypTimer->isActive() )
class GLViewer_ViewPort2d;
class QLabel;
-/***************************************************************************
-** Class: GLViewer_ObjectTip
-** Descr: ToolTip of GLViewer_Objects
-** Module: GLViewer
-** Created: UI team, 28.03.05
-****************************************************************************/
+/*!
+ \class GLViewer_ObjectTip
+ ToolTip of GLViewer_Objects
+*/
class GLVIEWER_API GLViewer_ObjectTip: public QObject//QToolTip//QtxToolTip
{
Q_OBJECT
#include <iostream.h>
-/****************************************************************************
-** Class: GLViewer_LineList
-** Descr: Tools for distinct line
-** Module: GLViewer
-** Created: UI team, 27.10.05
-*****************************************************************************/
+/*!
+ Constructor
+ \param size - size of internal array
+*/
GLViewer_LineList::GLViewer_LineList( int size )
{
myRealSize = 2*size;
memset( myArray, 0, myRealSize*sizeof(double) );
}
+/*!
+ Destructor
+*/
GLViewer_LineList::~GLViewer_LineList()
{
delete myArray;
}
+/*!
+ Adds new line segment to list
+ \param coord1, coord2 - co-ordinates of points
+*/
bool GLViewer_LineList::addSegment( double coord1, double coord2 )
{
if( coord1 > coord2 )
return true;
}
+/*!
+ Gets info about segment
+ \param theIndex - index of segment
+ \param coord1, coord2 - co-ordinates of points
+*/
bool GLViewer_LineList::readSegment( int theIndex, double& coord1, double& coord2 )
{
if( theIndex > mySegmentNumber || !myArray)
return true;
}
+/*!
+ \return true if line list covers point
+ \param thePoint - point co-ordinate
+*/
int GLViewer_LineList::contains( double thePoint ) const
{
if( !myArray || mySegmentNumber == 0 )
}
+/*!
+ Removes segment
+ \param theIndex - segment index
+*/
bool GLViewer_LineList::removeSegment( int theIndex )
{
if( theIndex > mySegmentNumber || !myArray)
return true;
}
+/*!
+ Removes segment from line list
+ \param coord1, coord2 - co-ordinates of points
+*/
bool GLViewer_LineList::removeSegment( double coord1, double coord2 )
{
if( coord1 > coord2 )
return true;
}
+/*!
+ Clears line list
+*/
void GLViewer_LineList::clear()
{
if( myArray )
memset( myArray, 0, myRealSize*sizeof(double) );
}
+/*!
+ Prints debug info about line list
+*/
void GLViewer_LineList::print()
{
cout << "MainCoord: " << myMainCoord <<" SIZE: " << myRealSize << " ENum: " << mySegmentNumber << " :::";
cout << endl;
}
+/*!
+ Draws line list with help of OpenGL
+ \param theDim - dimension
+*/
void GLViewer_LineList::show( FieldDim theDim )
{
if( !myArray )
}
}
-/****************************************************************************
-** Class: GLViewer_LineField
-** Descr: Tools for solving
-** Module: GLViewer
-** Created: UI team, 27.10.05
-*****************************************************************************/
+
+/*!
+ Constructor
+*/
GLViewer_LineField::GLViewer_LineField()
{
myCurArrayIndex = 0;
myXLineArray = NULL;
myYLineArray = NULL;
}
+
+/*!
+ Constructor
+*/
GLViewer_LineField::GLViewer_LineField( const int theMAXSize, const int theXN, const int theYN )
{
myCurArrayIndex = 0;
}
}
+/*!
+ Destructor
+*/
GLViewer_LineField::~GLViewer_LineField()
{
if( myXLineArray )
delete myGraphArray2;
}
+/*!
+ Adds line
+*/
void GLViewer_LineField::addLine( FieldDim theDim, GLViewer_LineList* )
{
//not implemented
}
+/*!
+ Adds line
+ \param theDim - dimension
+ \param theMC - main co-ordinate
+ \param theBegin - start co-ordinate
+ \param theEnd - end co-ordinate
+*/
void GLViewer_LineField:: addLine( FieldDim theDim, double theMC, double theBegin, double theEnd )
{
GLViewer_LineList* aLL = new GLViewer_LineList( 1 );
addLine( theDim, aLL );
}
-
+/*!
+ Adds line
+ \param theDim - dimension
+ \param theLL - main co-ordinate
+ \param thePosition - index in list
+*/
int GLViewer_LineField::insertLine( FieldDim theDim, GLViewer_LineList* theLL, int thePosition )
{
if( !myXLineArray || !myYLineArray )
return -1;
}
+/*!
+ Adds line
+ \param theDim - dimension
+ \param theMainCoord - main co-ordinate
+ \param theBegin - start co-ordinate
+ \param theEnd - end co-ordinate
+ \param thePosition - index in list
+*/
int GLViewer_LineField::insertLine( FieldDim theDim, double theMainCoord, double theBegin, double theEnd, int thePosition )
{
GLViewer_LineList* aLL = new GLViewer_LineList( 1 );
return insertLine( theDim, aLL, thePosition );
}
-
+/*!
+ \return other dimension
+*/
FieldDim GLViewer_LineField::invertDim( FieldDim theFD )
{
if( theFD == FD_X )
return FD_X;
}
+/*!
+ \return line list
+ \param theIndex - index in list
+ \param tehFD - dimension
+*/
GLViewer_LineList* GLViewer_LineField::getLine( int theIndex, FieldDim theFD )
{
if( !myXLineArray || !myYLineArray )
return NULL;
}
+/*!
+ Sets borders of field
+ \param X1, X2 - minimal and maximal abscisses
+ \param Y1, Y2 - minimal and maximal ordinates
+*/
void GLViewer_LineField::setBorders( double X1, double X2, double Y1, double Y2 )
{
if( !myXLineArray || !myYLineArray )
}
}
+/*!
+ Adds rectangle
+ \param top, right - a corner of rectangle
+ \param bottom, left - other corner of rectangle
+*/
void GLViewer_LineField::addRectangle( double top, double right, double bottom, double left )
{
if( !myXLineArray || !myYLineArray )
}
}
+/*!
+ Prints debug info about line field
+*/
void GLViewer_LineField::print()
{
cout << "My X matrix Number: " << myXSize << endl;
myYLineArray[j]->print();
}
+/*!
+ Draws field with help of OpenGL
+*/
void GLViewer_LineField::show()
{
for( int i = 0; i < myXSize; i++ )
cout << "Show function" << endl;
}
+/*!
+ \return size
+ \param theDim - dimension
+*/
int GLViewer_LineField::getDimSize( FieldDim theDim )
{
if( theDim == FD_X )
return -1;
}
+/*!
+ \return array of intersected indexes
+ \param theDim - dimension
+ \param theIndex - index
+ \param theLL - line with that intersection is checked
+ \param theSize - to return value of array size
+*/
int* GLViewer_LineField::intersectIndexes( FieldDim theDim, int theIndex, const GLViewer_LineList* theLL, int& theSize )
{
theSize = 0;
return anArray;
}
-
+/*!
+ Sets start/end search point
+ \param thePoint - type of point (start: FP_Start; end: FP_End )
+ \param theX, theY - point co-ordinates
+*/
bool GLViewer_LineField::setPoint( FieldPoint thePoint, double theX, double theY )
{
if( !myXLineArray || !myYLineArray )
return false;
}
+/*!
+ \return number of segments
+*/
int GLViewer_LineField::segmentNumber()
{
if( !(myXLineArray || myYLineArray) )
return aNumber;
}
+/*!
+ Removes all multiple segments
+*/
void GLViewer_LineField::optimize()
{
if( !myXLineArray || !myYLineArray )
}
}
+/*!
+ Some prepare actions
+ Needs call setPoint before
+*/
void GLViewer_LineField::initialize()
{
if( !myXLineArray || !myYLineArray )
}
}
+/*!
+ One iteration of algorithm
+*/
void GLViewer_LineField::iteration()
{
int aParam = myCurCount;
delete[] aNodes;
}
+/*!
+ Checks for complete status
+*/
GLViewer_LineField::IterationStatus GLViewer_LineField::checkComplete()
{
if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 )
return IS_NOT_SOLVED;
}
+/*!
+ Finds LineList by counts and returns indexes
+*/
int* GLViewer_LineField::findByCount( int& theParam )
{
if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 )
return anArray;
}
+/*!
+ Finds LineList by segment and dimension
+*/
int GLViewer_LineField::findBySegment( FieldDim theDim, int theLineIndex, int theSegment, bool inCurArray )
{
if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 || getDimSize( theDim ) <= theLineIndex )
return -1;
}
+/*!
+ Main method, performs algorithm execution
+*/
GLViewer_LineField::EndStatus GLViewer_LineField::startAlgorithm()
{
if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 )
return ES_SOLVED;
}
+/*!
+ \return solution and size of solution
+*/
double* GLViewer_LineField::solution( int& theSize )
{
if( !myXLineArray || !myYLineArray || !myGraphArray1 || !myGraphArray2 )
return anArray;
}
+/*!
+ \return current solution array
+*/
GraphNode* GLViewer_LineField::getCurArray()
{
if( !myGraphArray1 || !myGraphArray2 )
return myGraphArray2;
}
+/*!
+ \return other solution array
+*/
GraphNode* GLViewer_LineField::getSecArray()
{
if( !myGraphArray1 || !myGraphArray2 )
return myGraphArray1;
}
+/*!
+ \return maximum segment number
+*/
int GLViewer_LineField::maxSegmentNum()
{
if( !myXLineArray || !myYLineArray )
return max_num;
}
+/*!
+ \return list of LileList by dimension
+ \param theDim - dimension
+*/
GLViewer_LineList** GLViewer_LineField::getLLArray( FieldDim theDim )
{
if( theDim == FD_X )
class GLViewer_LineField;
-/****************************************************************************
-** Class: GLViewer_Tools
-** Descr: Tools for Viewer
-** Module: GLViewer
-** Created: UI team, 27.10.05
-*****************************************************************************/
+/*!
+ \class GLViewer_Tools
+ Tools for Viewer
+*/
class GLVIEWER_API GLViewer_Tools
{
public:
};
/*!
- Class GLViewer_LineList
+ \class GLViewer_LineList
Tools for distinct line
This class implmented interface for segment operations:
add, cut, remove and etc.
int mySolveIndex;
};
-/*! Class GLViewer_LineField
-* Tools for solving algorithm of finding shortest path on rare grid with minimum of
-* line turns number
+/*!
+ \class GLViewer_LineField
+ Tools for solving algorithm of finding shortest path on rare grid with minimum of
+ line turns number
*/
class GLViewer_LineField
{
//! Checks for complete status
IterationStatus checkComplete();
- //! Finds LileList by counts and returns indexes
+ //! Finds LineList by counts and returns indexes
int* findByCount( int& theParam );
- //! Finds LileList by segment and dimension
+ //! Finds LineList by segment and dimension
int findBySegment( FieldDim, int coord1, int coord2, bool inCurArray = true );
//! Returns current solution array
// File: GLViewer_ViewFrame.cxx
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_ViewFrame
-** Descr: Frame window for viewport in QAD-based application
-** Module: QAD
-** Created: UI team, 05.09.00
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_ViewFrame.h"
#include "GLViewer_Viewer.h"
{
}
-//================================================================
-// Function : createActions
-// Purpose :
-//================================================================
+/*!
+ Creates actions of GL view frame
+*/
void GLViewer_ViewFrame::createActions()
{
if (!myActionsMap.isEmpty()) return;
myActionsMap[ ResetId ] = aAction;
}
-//================================================================
-// Function : createToolBar
-// Purpose :
-//================================================================
+/*!
+ Creates toolbar of GL view frame
+*/
void GLViewer_ViewFrame::createToolBar()
{
myActionsMap[DumpId]->addTo(myToolBar);
{
QWidget* p = parentWidget();
if ( p && p->inherits( "QWorkspaceChild" ) )
- p = p->parentWidget(); /* QWorkspaceChild: internal impl class in QWorkspace */
+ p = p->parentWidget();
if ( !p )
return QMainWindow::sizeHint();
return QSize( 9 * p->width() / 10 , 9 * p->height() / 10 );
//#include <windows.h>
+/*!
+ SLOT: called on dump view operation is activated, stores scene to raster file
+*/
void GLViewer_ViewFrame::onViewDump()
{
GLViewer_Widget* aWidget = ((GLViewer_ViewPort2d*)myVP)->getGLWidget();
}
}
+/*!
+ Start panning
+*/
void GLViewer_ViewFrame::onViewPan()
{
myViewer->activateTransform( GLViewer_Viewer::Pan );
}
+/*!
+ Start zooming
+*/
void GLViewer_ViewFrame::onViewZoom()
{
myViewer->activateTransform( GLViewer_Viewer::Zoom );
}
+/*!
+ Start fit all
+*/
void GLViewer_ViewFrame::onViewFitAll()
{
myViewer->activateTransform( GLViewer_Viewer::FitAll );
}
+/*!
+ Start fit area
+*/
void GLViewer_ViewFrame::onViewFitArea()
{
myViewer->activateTransform( GLViewer_Viewer::FitRect );
}
+/*!
+ Start fit selected
+*/
void GLViewer_ViewFrame::onViewFitSelect()
{
myViewer->activateTransform( GLViewer_Viewer::FitSelect );
}
+/*!
+ Start global panning
+*/
void GLViewer_ViewFrame::onViewGlobalPan()
{
myViewer->activateTransform( GLViewer_Viewer::PanGlobal );
}
+/*!
+ Start rotating
+*/
void GLViewer_ViewFrame::onViewRotate()
{
//myViewer->activateTransform( GLViewer_Viewer::Rotate );
}
+/*!
+ Start reset default view aspects
+*/
void GLViewer_ViewFrame::onViewReset()
{
myViewer->activateTransform( GLViewer_Viewer::Reset );
}
-
-//================================================================
-// Function : mouseEvent
-// Purpose : dispatches mouse events
-//================================================================
+
+/*!
+ Dispatches mouse events
+*/
void GLViewer_ViewFrame::mouseEvent( QMouseEvent* e )
{
switch ( e->type() )
}
}
-//================================================================
-// Function : keyEvent
-// Purpose : dispatches key events
-//================================================================
+/*!
+ Dispatches key events
+*/
void GLViewer_ViewFrame::keyEvent( QKeyEvent* e )
{
switch ( e->type() )
}
}
-//================================================================
-// Function : wheelEvent
-// Purpose : dispatches wheel events
-//================================================================
+/*!
+ Dispatches wheel events
+*/
void GLViewer_ViewFrame::wheelEvent( QWheelEvent* e )
{
switch ( e->type() )
}
}
-/*! The method returns the visual parameters of this view as a formated string
- */
+/*!
+ \return the visual parameters of this view as a formated string
+*/
QString GLViewer_ViewFrame::getVisualParameters()
{
QString retStr;
return retStr;
}
-/* The method restors visual parameters of this view from a formated string
- */
+/*!
+ The method restores visual parameters of this view from a formated string
+*/
void GLViewer_ViewFrame::setVisualParameters( const QString& parameters )
{
QStringList paramsLst = QStringList::split( '*', parameters, true );
// File: GLViewer_ViewFrame.h
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_ViewFrame
-** Descr: Frame window for viewport in QAD-based application
-** Module: QAD
-** Created: UI team, 05.09.00
-****************************************************************************/
#ifndef GLVIEWER_VIEWFRAME_H
#define GLVIEWER_VIEWFRAME_H
#pragma warning( disable:4251 )
#endif
-/*! Class GLViewer_ViewFrame
-* Frame window for viewport in GLViewer
+/*!
+ \class GLViewer_ViewFrame
+ Frame window for viewport in QAD-based application
*/
class GLVIEWER_API GLViewer_ViewFrame: public SUIT_ViewWindow
int GLViewer_ViewManager::myMaxId = 0;
-//***************************************************************
+/*!Constructor.*/
GLViewer_ViewManager::GLViewer_ViewManager( SUIT_Study* theStudy, SUIT_Desktop* theDesktop )
: SUIT_ViewManager( theStudy, theDesktop )
{
setViewModel( new GLViewer_Viewer2d( "GLViewer" ) );
}
-//***************************************************************
+/*!Destructor.*/
GLViewer_ViewManager::~GLViewer_ViewManager()
{
}
-//***************************************************************
+/*!Sets view name for view window \a theView.*/
void GLViewer_ViewManager::setViewName(SUIT_ViewWindow* theView)
{
int aPos = myViews.find(theView);
theView->setCaption( QString( "GL scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1));
}
-//***************************************************************
+/*!Context menu popup for \a popup.*/
void GLViewer_ViewManager::contextMenuPopup( QPopupMenu* popup )
{
SUIT_ViewManager::contextMenuPopup( popup );
// File: GLViewer_ViewPort.cxx
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_ViewPort
-** Descr: Visualisation canvas of QAD-based application
-** Module: QAD
-** Created: UI team, 05.09.00
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#if !(defined WNT) && !(defined QT_CLEAN_NAMESPACE)
#include <Xw_Window.hxx>
#include <Graphic3d_GraphicDevice.hxx>
+/*!
+ \struct CMapEntry
+ Map of indexed colors
+ For internal purposes
+*/
struct CMapEntry
{
CMapEntry();
XStandardColormap scmap;
};
+/*!
+ Constructor
+*/
CMapEntry::CMapEntry()
{
cmap = 0;
scmap.colormap = 0;
}
+/*!
+ Destructor
+*/
CMapEntry::~CMapEntry()
{
if ( alloc )
setBackgroundColor( selColor );
}
+/*!
+ Custom context menu event handler
+*/
void GLViewer_ViewPort::contextMenuEvent( QContextMenuEvent* e )
{
//if ( e->reason() != QContextMenuEvent::Mouse )
// File: GLViewer_ViewPort.h
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_ViewPort
-** Descr: Visualisation canvas of GLViewer
-** Created: UI team, 05.09.04
-****************************************************************************/
#ifndef GLVIEWER_VIEWPORT_H
#define GLVIEWER_VIEWPORT_H
BS_Dragging = 0x0004
};
-/*!
- * Class GLViewer_ViewPort
- * Visualisation canvas of GLViewer
- */
+/*!
+ \class GLViewer_ViewPort
+ Visualisation canvas of GLViewer
+*/
class GLVIEWER_API GLViewer_ViewPort: public QWidget
{
Q_OBJECT
theY = aTempY;
}
+/*!
+ Constructor
+*/
GLViewer_ViewPort2d::GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* theViewFrame ) :
GLViewer_ViewPort( parent ),
myMargin( MARGIN ), myWidth( WIDTH ), myHeight( HEIGHT ),
// myGLWidget->installEventFilter( myObjectTip );
}
+/*!
+ Destructor
+*/
GLViewer_ViewPort2d::~GLViewer_ViewPort2d()
{
if( myCompass )
delete myGLWidget;
}
+/*!
+ SLOT: initializes drag process
+*/
void GLViewer_ViewPort2d::onStartDragObject( )
{
if( myIsDragProcess == noDrag )
}
}
+/*!
+ SLOT: cuts object to clipboard
+*/
void GLViewer_ViewPort2d::onCutObject()
{
/*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject();
}
}
+/*!
+ SLOT: copies object to clipboard
+*/
void GLViewer_ViewPort2d::onCopyObject()
{
/*GLViewer_Object* aMovingObject = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext()->getCurrentObject();
}
}
+/*!
+ SLOT: pastes object from clipboard
+*/
void GLViewer_ViewPort2d::onPasteObject()
{
/*QClipboard *aClipboard = QApplication::clipboard();
*/
}
+/*!
+ SLOT: called when object is being dragged
+*/
void GLViewer_ViewPort2d::onDragObject( QMouseEvent* e )
{
//cout << "---GLViewer_ViewPort2d::onDragObject()---" << endl;
}
}
+/*!
+ Custom mouse double click event handler
+*/
void GLViewer_ViewPort2d::mouseDoubleClickEvent( QMouseEvent * e )
{
//redefined to block mouse release after mouse double click
GLViewer_ViewPort::mouseDoubleClickEvent( e );
}
+/*!
+ Creates or deletes compass
+ \param on - if it is true, then to create
+*/
void GLViewer_ViewPort2d::turnCompass( GLboolean on )
{
if( on )
delete myCompass;
}
+/*!
+ Creates or deletes grid
+ \param on - if it is true, then to create
+*/
void GLViewer_ViewPort2d::turnGrid( GLboolean on )
{
if( on )
delete myGrid;
}
+/*!
+ Changes grid color
+ \param gridColor - new grid color
+ \param axisColor - new axis color
+*/
void GLViewer_ViewPort2d::setGridColor( const QColor gridColor, const QColor axisColor )
{
if( myGrid )
}
}
+/*!
+ Changes background color
+ \param color - new background color
+*/
void GLViewer_ViewPort2d::setBackgroundColor( const QColor& color )
{
GLViewer_ViewPort::setBackgroundColor( color );
myGLWidget->repaint();
}
+/*!
+ \return background color
+*/
QColor GLViewer_ViewPort2d::backgroundColor() const
{
return GLViewer_ViewPort::backgroundColor();
}
+/*!
+ Resize view
+*/
void GLViewer_ViewPort2d::initResize( int x, int y )
{
float xa, xb, ya, yb;
myGLWidget->setScale( myXScale, myYScale, 1.0 );
}
+/*!
+ Custom paint event handler
+*/
void GLViewer_ViewPort2d::paintEvent( QPaintEvent* e )
{
//cout << "GLViewer_ViewPort2d::paintEvent" << endl;
GLViewer_ViewPort::paintEvent( e );
}
+/*!
+ Custom resize event handler
+*/
void GLViewer_ViewPort2d::resizeEvent( QResizeEvent* e )
{
//cout << "GLViewer_ViewPort2d::resizeEvent" << endl;
GLViewer_ViewPort::resizeEvent( e );
}
+/*!
+ Resets view to start state
+*/
void GLViewer_ViewPort2d::reset()
{
//cout << "GLViewer_ViewPort2d::reset" << endl;
myGLWidget->updateGL();
}
+/*!
+ Sets offset to view
+ \param dx - X offset
+ \param dy - Y offset
+*/
void GLViewer_ViewPort2d::pan( int dx, int dy )
{
//cout << "GLViewer_ViewPort2d::pan " << dx << " " << dy << endl;
myGLWidget->updateGL();
}
+/*!
+ Sets view center in global coords
+ \param x, y - global co-ordinates of center
+*/
void GLViewer_ViewPort2d::setCenter( int x, int y )
{
//cout << "GLViewer_ViewPort2d::setCenter" << endl;
myGLWidget->updateGL();
}
+/*!
+ Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 )
+*/
void GLViewer_ViewPort2d::zoom( int x0, int y0, int x, int y )
{
//cout << "GLViewer_ViewPort2d::zoom" << endl;
}
}
+/*!
+ Transforms view by rectangle
+ \param rect - rectangle
+*/
void GLViewer_ViewPort2d::fitRect( const QRect& rect )
{
float x0, x1, y0, y1;
myGLWidget->updateGL();
}
+/*!
+ Transforms view by selection
+*/
void GLViewer_ViewPort2d::fitSelect()
{
GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer();
}
}
+/*!
+ Transform view by view borders
+ \param keepScale - if it is true, zoom does not change
+*/
void GLViewer_ViewPort2d::fitAll( bool keepScale, bool withZ )
{
//cout << "GLViewer_ViewPort2d::fitAll" << endl;
emit vpUpdateValues();
}
+/*!
+ Begins rotation
+ \param x, y - start point
+*/
void GLViewer_ViewPort2d::startRotation( int x, int y )
{
myGLWidget->setRotationStart( x, y, 1.0 );
}
+/*!
+ Performs rotation
+ \param intX, intY - current point
+*/
void GLViewer_ViewPort2d::rotate( int intX, int intY )
{
GLint val[4];
myGLWidget->updateGL();
}
+/*!
+ Finishes rotation
+*/
void GLViewer_ViewPort2d::endRotation()
{
float ra, rx, ry, rz;
myGLWidget->setRotationAngle( ra );
}
+/*!
+ Draws compass
+*/
void GLViewer_ViewPort2d::drawCompass()
{
if( !myCompass->getVisible() )
glCallList( aTextList );
}
+/*!
+ \return blocking status for current started operations
+*/
BlockStatus GLViewer_ViewPort2d::currentBlock()
{
if( myIsDragProcess == inDrag && myCurDragPosX != NULL && myCurDragPosY != NULL)
return BS_NoBlock;
}
+/*!
+ Initializes rectangle selection
+ \param x, y - start point
+*/
void GLViewer_ViewPort2d::startSelectByRect( int x, int y )
{
if( !mypFirstPoint && !mypLastPoint )
mypLastPoint = new QPoint( x, y );
}
}
+
+/*!
+ Draws rectangle selection
+ \param x, y - current point
+*/
void GLViewer_ViewPort2d::drawSelectByRect( int x, int y )
{
if( mypFirstPoint && mypLastPoint )
}
}
+
+/*!
+ Finishes rectangle selection
+*/
void GLViewer_ViewPort2d::finishSelectByRect()
{
if( mypFirstPoint && mypLastPoint )
}
}
+/*!
+ \return rectangle selection
+*/
QRect GLViewer_ViewPort2d::selectionRect()
{
QRect aRect;
return aRect;
}
+/*!
+*/
bool GLViewer_ViewPort2d::startPulling( GLViewer_Pnt point )
{
GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer();
return false;
}
+/*!
+*/
void GLViewer_ViewPort2d::drawPulling( GLViewer_Pnt point )
{
GLViewer_Viewer2d* aViewer = (GLViewer_Viewer2d*)getViewFrame()->getViewer();
myPullingObject->pull( point, aLockedObject );
}
+/*!
+*/
void GLViewer_ViewPort2d::finishPulling()
{
myIsPulling = false;
setCursor( *getDefaultCursor() );
}
+/*!
+ Convert rectangle in window co-ordinates to GL co-ordinates
+ \return converted rectangle
+*/
GLViewer_Rect GLViewer_ViewPort2d::win2GLV( const QRect& theRect ) const
{
GLViewer_Rect aRect;
return aRect;
}
+/*!
+ Convert rectangle in GL co-ordinates to window co-ordinates
+ \return converted rectangle
+*/
QRect GLViewer_ViewPort2d::GLV2win( const GLViewer_Rect& theRect ) const
{
QRect aRect;
return aRect;
}
+/*!
+ SLOT: called when tooltip should be shown
+*/
void GLViewer_ViewPort2d::onMaybeTip( QPoint thePoint, QString& theText, QFont& theFont, QRect& theTextReg, QRect& theRegion )
{
GLViewer_Context* aContext = ((GLViewer_Viewer2d*)getViewFrame()->getViewer())->getGLContext();
virtual void setCenter( int x, int y );
//! Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 )
virtual void zoom( int x0, int y0, int x1, int y1 );
- //! Transforms view by certangle
+ //! Transforms view by rectangle
virtual void fitRect( const QRect& );
//! Transforms view by selection
virtual void fitSelect();
// File: GLViewer_Viewer.cxx
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_Viewer
-** Descr: Viewer for QAD-based application
-** Module: QAD
-** Created: UI team, 05.09.00
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Viewer.h"
#include "GLViewer_Selector.h"
delete mySelector;
}
-//================================================================
-// Function : setViewManager
-// Purpose :
-//================================================================
+/*!
+ Sets new view manager
+ \param theViewManager - new view manager
+*/
void GLViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
{
SUIT_ViewModel::setViewManager(theViewManager);
}
}
-//================================================================
-// Function : contextMenuPopup
-// Purpose :
-//================================================================
+/*!
+ Builds popup for GL viewer
+*/
void GLViewer_Viewer::contextMenuPopup( QPopupMenu* thePopup )
{
if( thePopup->count() > 0 )
startOperations( e );
}
-/****************************************************************
-** Class: GLViewer_ViewTransformer
-** Level: Public
-*****************************************************************/
int GLViewer_ViewTransformer::panBtn = Qt::MidButton;
int GLViewer_ViewTransformer::zoomBtn = Qt::LeftButton;
int GLViewer_ViewTransformer::fitRectBtn = Qt::LeftButton;
}
-/****************************************************************
-** Class: GLViewer_ViewSketcher
-** Level: Public
-*****************************************************************/
int GLViewer_ViewSketcher::sketchBtn = LeftButton;
/*!
#endif
/*!
- * Class GLViewer_Object
- * Base Viewer for GLViewer
- */
+ \class GLViewer_Object
+ Base Viewer for GLViewer
+*/
class GLVIEWER_API GLViewer_Viewer: public SUIT_ViewModel
{
Q_OBJECT
GLViewer_ViewTransformer* myTransformer; /* transform manipulator */
};
-/****************************************************************
-** Class: GLViewer_ViewTransformer
-**
-*****************************************************************/
class GLVIEWER_API GLViewer_ViewTransformer : public QObject
{
public:
int myMajorBtn;
};
-/****************************************************************
-** Class: GLViewer_ViewSketcher
-**
-*****************************************************************/
class GLVIEWER_API GLViewer_ViewSketcher : public QObject
{
public:
// File: GLViewer_Viewer2d.cxx
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_Viewer2d
-** Descr: OpenGL Viewer 2D
-** Module: GLViewer
-** Created: UI team, 04.09.02
-****************************************************************************/
-
//#include <GLViewerAfx.h>
#include "GLViewer_Viewer2d.h"
#include "GLViewer_Object.h"
#include <qpointarray.h>
#include <qcolordialog.h>
+/*!
+ Constructor
+ \param title - viewer title
+*/
GLViewer_Viewer2d::GLViewer_Viewer2d( const QString& title) :
GLViewer_Viewer( title )
{
myDrawers.clear();
}
+/*!
+ Destructor
+*/
GLViewer_Viewer2d::~GLViewer_Viewer2d()
{
//myGLSketcher = 0;
GLViewer_TexFont::clearTextBases();
}
+/*!Create new instance of view window on desktop \a theDesktop.
+ *\retval SUIT_ViewWindow* - created view window pointer.
+ */
SUIT_ViewWindow* GLViewer_Viewer2d::createView( SUIT_Desktop* theDesktop )
{
return new GLViewer_ViewFrame( theDesktop, this );
}
+/*!
+ Adds item for change background color
+ \param thePopup - menu
+*/
void GLViewer_Viewer2d::addPopupItems( QPopupMenu* thePopup )
{
// CTH8434. "Change background color" menu item is available if there are no selected objects
}
}
+/*!
+ Changes background color
+*/
void GLViewer_Viewer2d::onChangeBgColor()
{
if( !getActiveView() )
}
}
+/*!
+ Updates colors for all drawers (does not work)
+*/
void GLViewer_Viewer2d::updateColors( QColor colorH, QColor colorS )
{
// cout << "GLViewer_Viewer2d::updateColors" << endl;
activateAllDrawers( TRUE );
}
+/*!
+ Updates rect of global scene by adding new rectangle
+ \param theRect - rectangle
+*/
void GLViewer_Viewer2d::updateBorders( GLViewer_Rect* theRect )
{
QPtrVector<SUIT_ViewWindow> views = getViewManager()->getViews();
}
}
+/*!
+ Recomputes global scene rect
+*/
void GLViewer_Viewer2d::updateBorders()
{
QPtrVector<SUIT_ViewWindow> views = getViewManager()->getViews();
}
}
+/*!
+ Redraws all active objects by updating all drawers in all views
+*/
void GLViewer_Viewer2d::updateAll()
{
if ( !getActiveView() )
( ( GLViewer_ViewPort2d* )( ( GLViewer_ViewFrame* )views[i] )->getViewPort() )->getGLWidget()->updateGL();
}
+/*!
+ \param onlyUpdate is passed to method activateAllDrawers drawers
+*/
void GLViewer_Viewer2d::updateDrawers( GLboolean update, GLfloat scX, GLfloat scY )
{
// cout << "GLViewer_Viewer2d::updateDrawers" << endl;
activateAllDrawers( update );
}
+/*!
+ Activates drawers for objects from list \param theObjects only
+*/
void GLViewer_Viewer2d::activateDrawers( QValueList<GLViewer_Object*>& theObjects, bool onlyUpdate, GLboolean swap )
{
//cout << "GLViewer_Viewer2d::activateDrawers " << (int)onlyUpdate << " " << (int)swap << endl;
( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent();
}
+/*!
+ Activates drawer for \param theObject
+*/
void GLViewer_Viewer2d::activateDrawer( GLViewer_Object* theObject, bool onlyUpdate, GLboolean swap )
{
ObjList aList;
activateDrawers( aList, onlyUpdate, swap );
}
+/*!
+ \param onlyUpdate is passed to drawers
+*/
void GLViewer_Viewer2d::activateAllDrawers( bool onlyUpdate, GLboolean swap )
{
if ( !getActiveView() )
activateDrawers( anActiveObjs, onlyUpdate, swap );
}
+/*!
+ Creates set of marker
+ \param theMarkersNum - number of markers
+ \param theMarkersRad - radius of markers
+*/
void GLViewer_Viewer2d::onCreateGLMarkers( int theMarkersNum, int theMarkersRad )
{
if ( !getActiveView() )
delete[] anYCoord;
}
+/*!
+ Creates GL polyline
+ \param theAnglesNum - number of angles
+ \param theRadius - radius
+ \param thePolylineNumber - number
+*/
void GLViewer_Viewer2d::onCreateGLPolyline( int theAnglesNum, int theRadius, int thePolylineNumber )
{
if ( !getActiveView() )
delete[] anYCoord;
}
+/*!
+ Creates text
+ \param theStr - text string
+ \param theTextNumber - number
+*/
void GLViewer_Viewer2d::onCreateGLText( QString theStr, int theTextNumber )
{
if ( !getActiveView() )
activateAllDrawers( false );
}
+/*!
+ Translates point from global CS to curreent viewer CS
+ \param x, y - co-ordinates to be translated
+*/
void GLViewer_Viewer2d::transPoint( GLfloat& x, GLfloat& y )
{
if ( !getActiveView() )
y -= yPan;
}
+/*!
+ \return object rect in window CS
+ \param theObject - object
+*/
QRect* GLViewer_Viewer2d::getWinObjectRect( GLViewer_Object* theObject )
{
if ( !getActiveView() )
return newRect;
}
+/*!
+ Translates rect in window CS to rect in global CS
+ \param theRect - rectangle to be translated
+ \return transformed rect
+*/
GLViewer_Rect GLViewer_Viewer2d::getGLVRect( const QRect& theRect ) const
{
if ( !getActiveView() )
return vp->win2GLV( theRect );
}
+/*!
+ Translates rect in global CS to rect in window CS
+ \param theRect - rectangle to be translated
+ \return transformed rect
+*/
QRect GLViewer_Viewer2d::getQRect( const GLViewer_Rect& theRect ) const
{
if ( !getActiveView() )
return vp->GLV2win( theRect );
}
+/*!
+ \return new selector
+*/
GLViewer_Selector* GLViewer_Viewer2d::createSelector()
{
return new GLViewer_Selector2d( this, getGLContext() );
}
+/*!
+ \return new Transformer
+ \param type - type of new transformer
+*/
GLViewer_ViewTransformer* GLViewer_Viewer2d::createTransformer( int type )
{
return new GLViewer_View2dTransformer( this, type );
}
-/*
-GLViewer_Sketcher* GLViewer_Viewer2d::createGLSketcher( int type )
-{
- return new GLViewer_Sketcher( this, type );
-}
-void GLViewer_Viewer2d::activateGLSketching( int type )
-{
- GLViewer_ViewPort2d* vp = 0;
- if ( !getActiveView() || !( vp = ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() ) )
- return;
-
- // Finish current sketching
- if ( type == None )
- {
- if ( myGLSketcher->getType() != None )
- {
- myGLSketcher->setType( None );
- finishSketching();
- }
- }
- // Activate new sketching
- else
- {
- activateGLSketching( None ); // concurrency not supported
- myGLSketcher->setType( type );
- startSketching();
- }
-}
-
-void GLViewer_Viewer2d::startSketching()
-{
- GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort();
- avp->setCursor( *avp->getSketchCursor() );
- //avp->enablePopup( false );
- myGLSketcher->startSketching();
-}
-
-void GLViewer_Viewer2d::finishSketching()
-{
- GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort();
- avp->setCursor( *avp->getDefaultCursor() );
- //avp->enablePopup( true );
- myGLSketcher->finishSketching();
-}
-
-bool GLViewer_Viewer2d::isSketchingActive()
-{
- return myGLSketcher->getType() != None;
-}
-
-int GLViewer_Viewer2d::getSketchingType()
-{
- return myGLSketcher->getType();
-}
-
-void GLViewer_Viewer2d::onSketchDelObject()
-{
- GLViewer_ViewPort2d* avp = (GLViewer_ViewPort2d*)getActiveView()->getViewPort();
- avp->setCursor( *avp->getDefaultCursor() );
- myGLSketcher->finishSketching( true );
-}
-
-void GLViewer_Viewer2d::onSketchUndoLast()
-{
-
-}
-
-void GLViewer_Viewer2d::onSketchFinish()
-{
- finishSketching();
-}
+/*!
+ Custom mouse event handler
*/
void GLViewer_Viewer2d::onMouseEvent( SUIT_ViewWindow*, QMouseEvent* e )
{
GLViewer_Viewer::onMouseEvent( 0, e );
}
+/*!
+ Rotation transformation
+*/
bool GLViewer_Viewer2d::testRotation( QMouseEvent* e )
{
if ( ( e->button() == GLViewer_View2dTransformer::rotateButton() ) &&
return false;
}
-
+/*!
+ Inserts text lines as header for file
+ \param aType - file type
+ \param hFile - file instance
+*/
void GLViewer_Viewer2d::insertHeader( VectorFileType aType, QFile& hFile )
{
if( aType == POST_SCRIPT )
}
}
+/*!
+ Inserts text lines as ending for file
+ \param aType - file type
+ \param hFile - file instance
+*/
void GLViewer_Viewer2d::insertEnding( VectorFileType aType, QFile& hFile )
{
if( aType == POST_SCRIPT )
#endif
}
+/*!
+ Translates current view content to vector file
+ \param aType - type of file
+ \param FileName - name of file,
+ \param aPType - paper size type
+ \param mmLeft, mmRight, mmTop, mmBottom - margins
+*/
bool GLViewer_Viewer2d::translateTo( VectorFileType aType, QString FileName, PaperType aPType,
double mmLeft, double mmRight, double mmTop, double mmBottom )
{
return true;
}
-
+/*!
+ Repaints view
+ \param theView - view to be repainted. If it is NULL then all views will be repainted
+*/
void GLViewer_Viewer2d::repaintView( GLViewer_ViewFrame* theView, bool makeCurrent )
{
GLViewer_ViewFrame* aCurView;
// ( ( GLViewer_ViewPort2d* )getActiveView()->getViewPort() )->getGLWidget()->makeCurrent();
}
+/*!
+ Starts some operation on mouse event
+*/
void GLViewer_Viewer2d::startOperations( QMouseEvent* e )
{
GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort();
vp->startSelectByRect( e->x(), e->y() );
}
+/*!
+ Updates started operation on mouse event
+*/
bool GLViewer_Viewer2d::updateOperations( QMouseEvent* e )
{
GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort();
return false;
}
+/*!
+ Completes started operation on mouse event
+*/
void GLViewer_Viewer2d::finishOperations( QMouseEvent* e )
{
GLViewer_ViewPort2d* vp = ( GLViewer_ViewPort2d* )((GLViewer_ViewFrame*)getActiveView())->getViewPort();
}
}
+/*!
+ Starts some operation on mouse wheel event
+*/
void GLViewer_Viewer2d::startOperations( QWheelEvent* e )
{
bool zoomIn = e->delta() > 0;
}
-/****************************************************************
-** Class: GLViewer_View2dTransformer
-**
-*****************************************************************/
-
int GLViewer_View2dTransformer::rotateBtn = RightButton;
+/*!
+ Constructor
+*/
GLViewer_View2dTransformer::GLViewer_View2dTransformer( GLViewer_Viewer* viewer, int typ )
: GLViewer_ViewTransformer( viewer, typ )
{
initTransform( true );
}
+/*!
+ Destructor
+*/
GLViewer_View2dTransformer::~GLViewer_View2dTransformer()
{
if ( type() == GLViewer_Viewer::Rotate )
// File: GLViewer_Viewer2d.h
// Created: November, 2004
-/***************************************************************************
-** Class: GLViewer_Viewer2d
-** Descr: OpenGL Viewer 2D
-** Module: GLViewer
-** Created: UI team, 04.09.04
-****************************************************************************/
#ifndef GLVIEWER_VIEWER2D_H
#define GLVIEWER_VIEWER2D_H
#pragma warning( disable:4251 )
#endif
-/*!
- * Class GLViewer_Object
- * 2D viewer for GLViewer
- */
+/*!
+ \class GLViewer_Viewer2d
+ OpenGL Viewer 2D
+*/
+
class GLVIEWER_API GLViewer_Viewer2d : public GLViewer_Viewer
{
Q_OBJECT
//GLViewer_Sketcher* myGLSketcher;
};
-/****************************************************************
-** Class: GLViewer_View2dTransformer
-**
-*****************************************************************/
class GLVIEWER_API GLViewer_View2dTransformer : public GLViewer_ViewTransformer
{
public:
// File: GLViewer_Widget.cxx
// Created: November, 2004
-//================================================================
-// Class : GLViewer_Widget
-// Description : OpenGL QWidget for GLViewer
-//================================================================
-
#include "GLViewer_Widget.h"
#include "GLViewer_ViewPort2d.h"
#include "GLViewer_Viewer2d.h"
#include <qsize.h>
#include <qtooltip.h>
-//=======================================================================
-// Function: GLViewer_Widget
-// Purpose :
-//=======================================================================
+/*!
+ A constructor
+ Parameters using for QOGLWidget as is
+*/
GLViewer_Widget::GLViewer_Widget( QWidget* parent, const char* name ):
QGLWidget( parent, 0/*, WRepaintNoErase | WResizeNoErase*/ )
{
setMouseTracking( true );
}
-//=======================================================================
-// Function: GLViewer_Widget
-// Purpose :
-//=======================================================================
+/*!
+ Destructor
+*/
GLViewer_Widget::~GLViewer_Widget()
{
}
-//=======================================================================
-// Function: ~GLViewer_Widget
-// Purpose :
-//=======================================================================
+/*!
+ \return offset parameters of Window in OpenGL global scene
+*/
void GLViewer_Widget::getPan( GLfloat& xPan, GLfloat& yPan, GLfloat& zPan )
{
xPan = myXPan;
zPan = myZPan;
}
-//=======================================================================
-// Function: setPan
-// Purpose :
-//=======================================================================
+/*!
+ A function for installing the offset parameters of Window in OpenGL global scene
+*/
void GLViewer_Widget::setPan( GLfloat xPan, GLfloat yPan, GLfloat zPan )
{
myXPan = xPan;
myZPan = zPan;
}
-//=======================================================================
-// Function: getScale
-// Purpose :
-//=======================================================================
+/*!
+ \return scales on OpenGL scene along 3 directions in 2d scene zScale = 1.0
+*/
void GLViewer_Widget::getScale( GLfloat& xScale, GLfloat& yScale, GLfloat& zScale )
{
xScale = myXScale;
zScale = myZScale;
}
-//=======================================================================
-// Function: setScale
-// Purpose :
-//=======================================================================
+/*!
+ A function for installing the scales of OpenGL scene
+*/
void GLViewer_Widget::setScale( GLfloat xScale, GLfloat yScale, GLfloat zScale )
{
if ( xScale > 0 && yScale > 0 && zScale > 0 )
}
}
-//=======================================================================
-// Function: getRotationStart
-// Purpose :
-//=======================================================================
+/*!
+ \return start point of curren rotation of Window in OpenGL global scene
+*/
void GLViewer_Widget::getRotationStart( GLfloat& rotationStartX,
GLfloat& rotationStartY,
GLfloat& rotationStartZ )
rotationStartZ = myRotationStartZ;
}
-//=======================================================================
-// Function: setRotationStart
-// Purpose :
-//=======================================================================
+/*!
+ A function for installing the rotation angle of Window in OpenGL global scene in degree (Only in 2D)
+*/
void GLViewer_Widget::setRotationStart( GLfloat rotationStartX,
GLfloat rotationStartY,
GLfloat rotationStartZ )
myRotationStartZ = rotationStartZ;
}
-//=======================================================================
-// Function: getRotation
-// Purpose :
-//=======================================================================
+/*!
+ \return parameters of rotation
+ \param rotationAngle - angle
+ \param rotationCenterX - center x
+ \param rotationCenterY - center y
+ \param rotationCenterZ - center z
+*/
void GLViewer_Widget::getRotation( GLfloat& rotationAngle,
GLfloat& rotationCenterX,
GLfloat& rotationCenterY,
rotationCenterZ = myRotationCenterZ;
}
-//=======================================================================
-// Function: setRotation
-// Purpose :
-//=======================================================================
+/*!
+ Sets parameters of rotation
+ \param rotationAngle - angle
+ \param rotationCenterX - center x
+ \param rotationCenterY - center y
+ \param rotationCenterZ - center z
+*/
void GLViewer_Widget::setRotation( GLfloat rotationAngle,
GLfloat rotationCenterX,
GLfloat rotationCenterY,
myRotationCenterZ = rotationCenterZ;
}
-//=======================================================================
-// Function: setBackground
-// Purpose :
-//=======================================================================
+
+/*!
+ Sets image as background
+ \param filename - name of file
+*/
void GLViewer_Widget::setBackground( QString filename )
{
}
}
-//=======================================================================
-// Function: addToolTip
-// Purpose :
-//=======================================================================
+/*!
+ Adds tooltip
+ \param theString - tooltip text
+ \param theRect - tooltip rectangle
+*/
void GLViewer_Widget::addToolTip( QString theString, QRect theRect )
{
myToolTipRect = theRect;
QToolTip::add( this, myToolTipRect, theString );
}
-//=======================================================================
-// Function: removeToolTip
-// Purpose :
-//=======================================================================
+/*!
+ Removes tooltip
+*/
void GLViewer_Widget::removeToolTip()
{
QToolTip::remove( this, myToolTipRect );
}
-//=======================================================================
-// Function: initializeGL
-// Purpose :
-//=======================================================================
+/*!
+ Initialization (redefined virtual from QGLWidget)
+*/
void GLViewer_Widget::initializeGL()
{
setAutoBufferSwap( true );
isLoadBackground = false;
}
-//=======================================================================
-// Function: paintGL
-// Purpose :
-//=======================================================================
+/*!
+ Paints content
+*/
void GLViewer_Widget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
v->repaintView( getViewPort()->getViewFrame() );
}
-//=======================================================================
-// Function: resizeGL
-// Purpose :
-//=======================================================================
+/*!
+ Resets OpenGl parameters after resize
+ \param w - new width
+ \param h - new height
+*/
void GLViewer_Widget::resizeGL( int w, int h )
{
glLoadIdentity();
}
-//=======================================================================
-// Function: exportRepaint
-// Purpose :
-//=======================================================================
+/*!
+ Provides repaint in export mode
+*/
void GLViewer_Widget::exportRepaint()
{
isExportMode = true;
isExportMode = false;
}
-//=======================================================================
-// Function: paintEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom paint event handler
+*/
void GLViewer_Widget::paintEvent( QPaintEvent* e )
{
QApplication::sendEvent( myViewPort, e );
}
-//=======================================================================
-// Function: mouseMoveEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom mouse move event handler
+*/
void GLViewer_Widget::mouseMoveEvent( QMouseEvent* e )
{
QApplication::sendEvent( myViewPort, e );
}
-//=======================================================================
-// Function: mousePressEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom mouse press event handler
+*/
void GLViewer_Widget::mousePressEvent( QMouseEvent* e )
{
QApplication::sendEvent( myViewPort, e );
}
-//=======================================================================
-// Function: mouseReleaseEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom mouse release event handler
+*/
void GLViewer_Widget::mouseReleaseEvent( QMouseEvent* e )
{
QApplication::sendEvent( myViewPort, e );
}
-//=======================================================================
-// Function: enterEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom enter event handler
+*/
void GLViewer_Widget::enterEvent( QEvent* e )
{
updateGL();
}
-//=======================================================================
-// Function: leaveEvent
-// Purpose :
-//=======================================================================
+/*!
+ Custom leave event handler
+*/
void GLViewer_Widget::leaveEvent( QEvent* e )
{
updateGL();
}
-//=======================================================================
-//! Function: hex
-//! Purpose : Returns the hex code of digit < 16
-//=======================================================================
+/*!
+ \return the hex code of digit < 16
+ \param c - digit
+*/
inline char hex( uchar c )
{
if( c<=9 )
return ' ';
}
-//=======================================================================
-//! Function: AddImagePart
-//! Purpose : Translates path of image to PS format
-/*! Image inside rectangle from w1 to w2 and from h2 to h1*/
-//=======================================================================
+/*!
+ Translates part of image inside rectangle from w1 to w2 and from h2 to h1 to PS format
+ \param hFile - PostScript file
+ \param image - image to be tarnslated
+ \param w1 - x start position
+ \param w2 - x end position
+ \param h1 - y start position
+ \param h2 - y end position
+ \param aViewerCS - viewer co-ordinate system
+ \param aPSCS - paper co-ordinate system
+ \param a
+ \param b
+ \param c
+ \param d
+ \param dw
+ \param dh
+*/
void AddImagePart( QFile& hFile, QImage& image, int w1, int w2, int h1, int h2,
GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS,
double a, double b, double c, double d, double dw, double dh )
}
}
-//=======================================================================
-// Function: getBackgroundRectInViewerCS
-// Purpose :
-//=======================================================================
+/*!
+ \return background rectangle in viewer CS
+*/
void GLViewer_Widget::getBackgroundRectInViewerCS( double& left, double& top, double& right, double& bottom )
{
left = -myIW/2; right = myIW/2;
top = myIH/2; bottom = -myIH/2;
}
-//=======================================================================
-// Function: translateBackgroundToPS
-// Purpose :
-//=======================================================================
+/*!
+ Translates background to PostScript
+ \param hFile - PostScript file
+ \param aViewerCS - viewer co-ordinate system
+ \param aPSCS - paper co-ordinate system
+*/
void GLViewer_Widget::translateBackgroundToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS )
{
QImage buf;
}
}
-//=======================================================================
-//! Function: DecodeScanLine
-//! Purpose : Translate image line with one color depth to line wiht other depth
-//=======================================================================
+/*!
+ Translates image line with one color depth to line with other depth
+*/
void DecodeScanLine( int width, uchar* dest, int dest_depth, uchar* source, int source_depth )
{
#ifndef WIN32
}
}
-//=======================================================================
-// Function: translateBackgroundToEMF
-// Purpose :
-//=======================================================================
#ifdef WIN32
+/*!
+ Translates background to EMF
+ \param dc - descriptor of EMF
+ \param aViewerCS - viewer co-ordinate system
+ \param aPSCS - paper co-ordinate system
+*/
void GLViewer_Widget::translateBackgroundToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS )
{
QImage buf;
// File: GLViewer_Widget.h
// Created: November, 2004
-/*! Class GLViewer_Widget
- * Class for visualization OpenGL scene (widget) for GLViewer
- */
#ifndef GLVIEWER_WIDGET_H
#define GLVIEWER_WIDGET_H
class GLViewer_ViewPort2d;
class GLViewer_CoordSystem;
+/*!
+ \class GLViewer_Widget
+ Widget for visualization of OpenGL scene
+*/
class GLVIEWER_API GLViewer_Widget : public QGLWidget
{
Q_OBJECT
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : caf
LDFLAGS+=$(QT_MT_LIBS) $(CAS_KERNEL)
-LIBS+= -L${GUI_ROOT_DIR}/lib/salome -lsuit -L/usr/X11R6/lib -lGLU
+LIBS+= -lsuit -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lGLU
@CONCLUDE@
msgid "ERROR"
msgstr "Error"
-msgid "BUT_OK"
-msgstr "Ok"
-
msgid "CHANGE_BGCOLOR"
msgstr "Change background..."
#include <QtxDialog.h>
-/*!
- Descr: LightApp help about dialog
-*/
-
class QLabel;
+/*!
+ \class LightApp_AboutDlg
+ LightApp help about dialog
+*/
class LIGHTAPP_EXPORT LightApp_AboutDlg : public QtxDialog
{
Q_OBJECT
#include <VTKViewer_ViewModel.h>
#endif
-#ifndef DISABLE_SUPERVGRAPHVIEWER
- #include <SUPERVGraph_ViewModel.h>
- #include <SUPERVGraph_ViewFrame.h>
- #include <SUPERVGraph_ViewManager.h>
-#endif
+//#ifndef DISABLE_SUPERVGRAPHVIEWER
+// #include <SUPERVGraph_ViewModel.h>
+// #include <SUPERVGraph_ViewFrame.h>
+// #include <SUPERVGraph_ViewManager.h>
+//#endif
#include <QtxWorkstack.h>
#include <qcombobox.h>
#include <qinputdialog.h>
#include <qmessagebox.h>
+#include <qfontdatabase.h>
#define FIRST_HELP_ID 1000000
int LightApp_Application::lastStudyId = 0;
+/*!
+ \return last global id of study
+*/
int LightApp_Application::studyId()
{
return LightApp_Application::lastStudyId;
return new LightApp_Application();
}
+/*! \var global preferences of LightApp */
LightApp_Preferences* LightApp_Application::_prefs_ = 0;
-/*
- Class : LightApp_Application
- Description : Application containing LightApp module
+/*!
+ \class LightApp_Application
+ Application containing LightApp module
*/
/*!Constructor.*/
#endif
connect( mySelMgr, SIGNAL( selectionChanged() ), this, SLOT( onSelection() ) );
+
+ // Set existing font for the python console in resources
+ if( !aResMgr->hasValue( "PyConsole", "font" ) )
+ return;
+
+ QFont f = aResMgr->fontValue( "PyConsole", "font" );
+ QFontDatabase fdb;
+ QStringList famdb = fdb.families();
+
+ if ( famdb.contains(f.family()) || !aResMgr->hasValue( "PyConsole", "additional_families" ) )
+ return;
+
+ QStringList anAddFamilies = QStringList::split( ";", aResMgr->stringValue( "PyConsole", "additional_families" ) );
+ QString aFamily;
+ for ( QStringList::Iterator it = anAddFamilies.begin(); it != anAddFamilies.end(); ++it )
+ {
+ aFamily = *it;
+ if ( famdb.contains(aFamily) )
+ {
+ f.setFamily( aFamily );
+ aResMgr->setValue( "PyConsole", "font", f );
+ break;
+ }
+ }
}
/*!Destructor.
return true;
}
+/*!
+ Opens other study into active Study. If Study is empty - creates it.
+ \param theName - name of study
+*/
bool LightApp_Application::useStudy(const QString& theName)
{
createEmptyStudy();
for ( it = modList.begin(); it != modList.end(); ++it )
{
if ( !isLibExists( *it ) )
+ {
+ qDebug( QString( "Library '%1' cannot be found" ).arg( *it ) );
continue;
+ }
QString iconName;
if ( iconMap.contains( *it ) )
createViewManager( type );
}
-//=======================================================================
-// name : onNewDoc
-/*! Purpose : SLOT. Create new document*/
-//=======================================================================
+/*!
+ SLOT: Creates new document
+*/
void LightApp_Application::onNewDoc()
{
SUIT_Study* study = activeStudy();
}
}
-//=======================================================================
-// name : onOpenDoc
-/*! Purpose : SLOT. Open new document*/
-//=======================================================================
+/*!
+ SLOT: Opens new document
+*/
void LightApp_Application::onOpenDoc()
{
SUIT_Study* study = activeStudy();
}
#include "SUIT_MessageBox.h"
-/*! Purpose : SLOT. Open new document with \a aName.*/
+
+/*!
+ SLOT: Opens new document.
+ \param aName - name of file
+*/
bool LightApp_Application::onOpenDoc( const QString& aName )
{
bool isAlreadyOpen = false;
return res;
}
-//=======================================================================
-// name : onHelpAbout
-/*! Purpose : SLOT. Display "About" message box*/
-//=======================================================================
+/*!
+ SLOT: Displays "About" message box
+*/
void LightApp_Application::onHelpAbout()
{
LightApp_AboutDlg* dlg = new LightApp_AboutDlg( applicationName(), applicationVersion(), desktop() );
delete dlg;
}
-/*!SLOT. Load document with \a aName.*/
+/*!
+ SLOT: Loads document
+ \param aName - name of document
+*/
bool LightApp_Application::onLoadDoc( const QString& aName )
{
bool res = CAM_Application::onLoadDoc( aName );
return res;
}
-/*!Private SLOT. Selection.*/
+/*!
+ Private SLOT: Called on selection is changed
+ Dispatchs active module that selection is changed
+*/
void LightApp_Application::onSelection()
{
onSelectionChanged();
((LightApp_Module*)activeModule())->selectionChanged();
}
-/*!Set active study.
- *\param study - SUIT_Study.
- */
+/*!
+ Sets active study.
+ \param study - SUIT_Study.
+*/
void LightApp_Application::setActiveStudy( SUIT_Study* study )
{
CAM_Application::setActiveStudy( study );
activateWindows();
}
-//=======================================================================
-// name : updateCommandsStatus
-/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/
-//=======================================================================
+/*!
+ Enables/Disables menu items and toolbar buttons. Rebuild menu
+*/
void LightApp_Application::updateCommandsStatus()
{
CAM_Application::updateCommandsStatus();
#endif
}
-// Helps to execute command
+/*!
+ \class RunBrowser
+ Runs system command in separate thread
+*/
class RunBrowser: public QThread {
public:
- RunBrowser(QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL):
+ RunBrowser( LightApp_Application* app, QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL):
myApp(theApp), myParams(theParams),
#ifdef WIN32
myHelpFile("file://" + theHelpFile + theContext),
#else
myHelpFile("file:" + theHelpFile + theContext),
#endif
- myStatus(0) {};
+ myStatus(0),
+ myLApp( app )
+{
+};
virtual void run()
{
myStatus = system(aCommand);
if(myStatus != 0)
{
- QCustomEvent* ce2000 = new QCustomEvent (2000);
- postEvent (qApp, ce2000);
+ QCustomEvent* ce2000 = new QCustomEvent( 2000 );
+ QString* msg = new QString( QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile) );
+ ce2000->setData( msg );
+ postEvent( myLApp, ce2000 );
}
}
- if( myStatus != 0)
- {
- qApp->lock();
- SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
- QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").arg(myApp).arg(myHelpFile),
- QObject::tr("BUT_OK"));
- qApp->unlock();
- }
}
private:
QString myParams;
QString myHelpFile;
int myStatus;
-
+ LightApp_Application* myLApp;
};
-//=======================================================================
-// name : onHelpContentsModule
-/*! Purpose : SLOT. Display help contents for choosen module*/
-//=======================================================================
+/*!
+ SLOT: Displays help contents for choosen module
+*/
void LightApp_Application::onHelpContentsModule()
{
const QAction* obj = (QAction*) sender();
QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
if (!anApp.isEmpty()) {
- RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
+ RunBrowser* rs = new RunBrowser( this, anApp, aParams, helpFile );
+ rs->start();
+ }
+ else {
+ if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"),
+ tr("DEFINE_EXTERNAL_BROWSER"),
+ tr("BUT_OK"),tr("BUT_CANCEL"),0,1,0 )==0 )
+ onPreferences();
+ }
+}
+
+/*!
+ SLOT: Displays help contents for choosen dialog
+*/
+void LightApp_Application::onHelpContextModule(const QString& theComponentName, const QString& theFileName)
+{
+ QCString dir = getenv( theComponentName + "_ROOT_DIR");
+ QString homeDir = Qtx::addSlash(Qtx::addSlash(dir)+Qtx::addSlash("doc")+Qtx::addSlash("salome")+Qtx::addSlash("gui")+Qtx::addSlash(theComponentName));
+
+ QString helpFile = QFileInfo( homeDir + theFileName ).absFilePath();
+ SUIT_ResourceMgr* resMgr = resourceMgr();
+ QString anApp = resMgr->stringValue("ExternalBrowser", "application");
+ QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
+
+ if (!anApp.isEmpty()) {
+ RunBrowser* rs = new RunBrowser( this, anApp, aParams, helpFile );
rs->start();
}
else {
- SUIT_MessageBox::warn1(desktop(), tr("WRN_WARNING"),
+ if( SUIT_MessageBox::warn2(desktop(), tr("WRN_WARNING"),
tr("DEFINE_EXTERNAL_BROWSER"),
- tr("BUT_OK"));
+ tr("BUT_OK"), tr("BUT_CANCEL"),0,1,0)==0 )
+ onPreferences();
}
}
-/*!Sets enable or disable some actions on selection changed.*/
+/*!
+ Sets enable or disable some actions on selection changed.
+*/
void LightApp_Application::onSelectionChanged()
{
}
-/*!Return window.
- *\param flag - key for window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
+/*!
+ \return window by key
+ \param flag - key for window
+ \param studyId - study id
+ Flag used how identificator of window in windows list.
+*/
QWidget* LightApp_Application::window( const int flag, const int studyId ) const
{
QWidget* wid = 0;
return wid;
}
-/*!Adds window to application.
- *\param wid - QWidget
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
+/*!
+ Adds window to application.
+ \param wid - QWidget
+ \param flag - key for window
+ \param studyId - study id
+ Flag used how identificator of window in windows list.
+*/
void LightApp_Application::addWindow( QWidget* wid, const int flag, const int studyId )
{
if ( !wid )
LightApp_WidgetContainer* newWC = new LightApp_WidgetContainer( flag, desktop() );
connect( newWC, SIGNAL( destroyed ( QObject* ) ), this, SLOT( onWCDestroyed( QObject* ) ) );
+ // asv: connecting a slot for storing visibility flag of a window
+ connect( newWC, SIGNAL( visibilityChanged ( bool ) ), SLOT( onVisibilityChanged( bool ) ) );
myWindows.insert( flag, newWC );
if ( winMap.contains( flag ) )
desktop()->moveDockWindow( myWindows[flag], (Dock)winMap[flag] );
if( resourceMgr()->hasValue( "PyConsole", "font" ) )
f = resourceMgr()->fontValue( "PyConsole", "font" );
else
- {
- f = ( ( PythonConsole* )wid )->font();
- resourceMgr()->setValue( "PyConsole", "font", f );
- }
+ {
+ f = ( ( PythonConsole* )wid )->font();
+ resourceMgr()->setValue( "PyConsole", "font", f );
+ }
}
else
#endif
setWindowShown( flag, !myWindows[flag]->isEmpty() );
}
-/*!Remove window from application.
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
+/*!
+ Removes window from application.
+ \param flag - key for window
+ \param studyId - study id
+ Flag used how identificator of window in windows list.
+*/
void LightApp_Application::removeWindow( const int flag, const int studyId )
{
if ( !myWindows.contains( flag ) )
setWindowShown( flag, !myWindows[flag]->isEmpty() );
}
-/*!Gets window.
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
+/*!
+ Gets window.
+ \param flag - key for window
+ \param studyId - study id
+ Flag used how identificator of window in windows list.
+*/
QWidget* LightApp_Application::getWindow( const int flag, const int studyId )
{
QWidget* wid = window( flag, studyId );
return wid;
}
-/*!Check is window visible?(with identificator \a type)*/
+/*!
+ \return is window visible
+ \param type - flag of window
+*/
bool LightApp_Application::isWindowVisible( const int type ) const
{
bool res = false;
return res;
}
-/*!Sets window show or hide.
- *\param type - window identificator.
- *\param on - true/false (window show/hide)
- */
+/*!
+ Sets window show or hide.
+ \param type - window identificator.
+ \param on - true/false (window show/hide)
+*/
void LightApp_Application::setWindowShown( const int type, const bool on )
{
if ( !desktop() || !myWindows.contains( type ) )
QDockWindow* dw = myWindows[type];
desktop()->setAppropriate( dw, on );
- on ? dw->show() : dw->hide();
+ if( on )
+ dw->show();
+ else if( dw->isShown() )
+ {
+ dw->hide();
+ myWindowsVisible[ type ] = true;
+ }
}
-/*!Gets "ObjectBrowser".*/
+/*!
+ \return Object Browser
+*/
OB_Browser* LightApp_Application::objectBrowser()
{
OB_Browser* ob = 0;
return ob;
}
-/*!Gets "LogWindow".*/
+/*!
+ \return Log Window
+*/
LogWindow* LightApp_Application::logWindow()
{
LogWindow* lw = 0;
}
#ifndef DISABLE_PYCONSOLE
-/*!Get "PythonConsole"*/
+/*!
+ \return Python Console
+*/
PythonConsole* LightApp_Application::pythonConsole()
{
PythonConsole* console = 0;
}
#endif
-/*!Update obect browser*/
+/*!
+ Updates object browser and maybe data models
+ \param updateModels - if it is true, then data models are updated
+*/
void LightApp_Application::updateObjectBrowser( const bool updateModels )
{
// update existing data models
if ( updateModels )
{
+ const bool isAutoUpdate = objectBrowser() ? objectBrowser()->isAutoUpdate() : true;
+ if( objectBrowser() )
+ objectBrowser()->setAutoUpdate( false );
+
LightApp_Study* study = dynamic_cast<LightApp_Study*>(activeStudy());
if ( study ) {
CAM_Study::ModelList dm_list;
((LightApp_DataModel*)camDM)->update();
}
}
+
+ if( objectBrowser() )
+ objectBrowser()->setAutoUpdate( isAutoUpdate );
}
if ( objectBrowser() )
{
}
}
-/*!Gets preferences.*/
+/*!
+ \return preferences
+*/
LightApp_Preferences* LightApp_Application::preferences() const
{
return preferences( false );
}
-/*!Gets view manager*/
+/*!
+ \return first view manager of some type
+ \param vmType - type of view manager
+ \param create - is it necessary to create view manager in case, when there is no manager of such type
+*/
SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, const bool create )
{
SUIT_ViewManager* aVM = viewManager( vmType );
return aVM;
}
-/*!Create view manager.*/
+/*!
+ Creates view manager of some type
+ \param vmType - type of view manager
+*/
SUIT_ViewManager* LightApp_Application::createViewManager( const QString& vmType )
{
SUIT_ResourceMgr* resMgr = resourceMgr();
}
}
#endif
-#ifndef DISABLE_SUPERVGRAPHVIEWER
- if( vmType == SUPERVGraph_Viewer::Type() )
- {
- viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop() );
- SUPERVGraph_Viewer* vm = new SUPERVGraph_Viewer();
- SUPERVGraph_ViewFrame* view = dynamic_cast<SUPERVGraph_ViewFrame*>( vm->getViewManager()->getActiveView() );
- if( view )
- view->setBackgroundColor( resMgr->colorValue( "SUPERVGraph", "Background", view->backgroundColor() ) );
- }
-#endif
+ //#ifndef DISABLE_SUPERVGRAPHVIEWER
+ // if( vmType == SUPERVGraph_Viewer::Type() )
+ // {
+ // viewMgr = new SUPERVGraph_ViewManager( activeStudy(), desktop(), new SUPERVGraph_Viewer() );
+ // }
+ //#endif
#ifndef DISABLE_OCCVIEWER
if( vmType == OCCViewer_Viewer::Type() )
{
if ( viewWin && desktop() )
viewWin->resize( (int)( desktop()->width() * 0.6 ), (int)( desktop()->height() * 0.6 ) );
- connect( viewMgr, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
- this, SLOT( onCloseView( SUIT_ViewManager* ) ) );
-
return viewMgr;
}
-//=======================================================================
-// name : onCloseView
-/*! Purpose : SLOT. Remove view manager from application*/
-//=======================================================================
+/*!
+ SLOT: Removes view manager from application
+*/
void LightApp_Application::onCloseView( SUIT_ViewManager* theVM )
{
removeViewManager( theVM );
}
-/*!Protected SLOT. On study created.*/
+/*!
+ Protected SLOT: On study created.
+ \param theStudy - just created study
+*/
void LightApp_Application::onStudyCreated( SUIT_Study* theStudy )
{
SUIT_DataObject* aRoot = 0;
activateWindows();
}
-/*!Protected SLOT. On study opened.*/
+/*!
+ Protected SLOT: On study opened.
+ \param theStudy - just opened study
+*/
void LightApp_Application::onStudyOpened( SUIT_Study* theStudy )
{
SUIT_DataObject* aRoot = 0;
return "(*.hdf)";
}
-/*! Gets file name*/
+/*!
+ Shows file dialog and return user selected file name
+*/
QString LightApp_Application::getFileName( bool open, const QString& initial, const QString& filters,
const QString& caption, QWidget* parent )
{
updateCommandsStatus();
}
-//=======================================================================
-// name : createNewStudy
-/*! Purpose : Create new study*/
-//=======================================================================
+/*!
+ Creates new study
+*/
SUIT_Study* LightApp_Application::createNewStudy()
{
LightApp_Application::lastStudyId++;
return aStudy;
}
-/*!Create window.*/
+/*!
+ Creates window by flag.
+ \param flag - identificator of window type
+*/
QWidget* LightApp_Application::createWindow( const int flag )
{
QWidget* wid = 0;
return wid;
}
-/*!Default windows(Object Browser, Python Console).
- * Adds to map \a aMap.
+/*!
+ \return default windows( Object Browser, Python Console )
+ Adds to map \a aMap.
*/
void LightApp_Application::defaultWindows( QMap<int, int>& aMap ) const
{
// aMap.insert( WT_LogWindow, Qt::DockBottom );
}
-/*!Default view manager.*/
+/*!Default view managers*/
void LightApp_Application::defaultViewManagers( QStringList& ) const
{
/*!Do nothing.*/
}
-/*!Gets preferences.
- * Create preferences, if \a crt = true.
- */
+/*!
+ \return preferences.
+ Create preferences, if \a crt = true.
+*/
LightApp_Preferences* LightApp_Application::preferences( const bool crt ) const
{
if ( myPrefs )
return myPrefs;
}
-/*!Add new module to application.*/
+/*!
+ Adds new module to application
+*/
void LightApp_Application::moduleAdded( CAM_Module* mod )
{
CAM_Application::moduleAdded( mod );
}
}
-/*!Create preferences.*/
+/*!
+ Create preferences
+*/
void LightApp_Application::createPreferences( LightApp_Preferences* pref )
{
if ( !pref )
pref->addPreference( tr( "PREF_MULTI_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "multi_file" );
pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "ascii_file" );
- int undoPref = pref->addPreference( tr( "PREF_UNDO_LEVEL" ), studyGroup, LightApp_Preferences::IntSpin, "Study", "undo_level" );
- pref->setItemProperty( undoPref, "min", 1 );
- pref->setItemProperty( undoPref, "max", 100 );
pref->addPreference( tr( "PREF_STORE_POS" ), studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" );
int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab );
LightApp_Preferences::Color, "OCCViewer", "background" );
pref->setItemProperty( occTS, "min", 1 );
- pref->setItemProperty( occTS, "max", 150 );
+ pref->setItemProperty( occTS, "max", 1000 );
int isoU = pref->addPreference( tr( "PREF_ISOS_U" ), occGroup,
LightApp_Preferences::IntSpin, "OCCViewer", "iso_number_u" );
"ObjectBrowser", "auto_size" );
}
-/*!Changed preferences */
+/*!
+ Changes appearance of application according to changed preferences
+ \param sec - section
+ \param param - name of changed parameter
+*/
void LightApp_Application::preferencesChanged( const QString& sec, const QString& param )
{
SUIT_ResourceMgr* resMgr = resourceMgr();
autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true );
ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual );
ob->listView()->setColumnWidthMode( 0, autoSizeFirst ? QListView::Maximum : QListView::Manual );
+ if( autoSize )
+ for( int i=1; i<ob->listView()->columns(); i++ )
+ if( ob->listView()->columnWidth( i )>0 )
+ ob->listView()->adjustColumn( i );
updateObjectBrowser( false );
}
}
#endif
}
-/*!Save preferences */
+/*!
+ Saves preferences
+*/
void LightApp_Application::savePreferences()
{
saveWindowsGeometry();
}
}
-/*!Update desktop title.*/
+/*!
+ Updates desktop title
+*/
void LightApp_Application::updateDesktopTitle() {
QString aTitle = applicationName();
QString aVer = applicationVersion();
desktop()->setCaption( aTitle );
}
-/*!Update windows after close document.*/
+/*!
+ Updates windows after close document
+*/
void LightApp_Application::afterCloseDoc()
{
updateWindows();
CAM_Application::afterCloseDoc();
}
-/*!Update module action.*/
+/*!
+ Updates actions of active module
+*/
void LightApp_Application::updateModuleActions()
{
QString modName;
myActions[modName]->setOn( true );
}
-/*!Gets current windows.
- *\param winMap - output current windows map.
- */
+/*!
+ Gets current windows.
+ \param winMap - output current windows map.
+*/
void LightApp_Application::currentWindows( QMap<int, int>& winMap ) const
{
winMap.clear();
defaultWindows( winMap );
}
-/*!Gets current view managers.
- *\param lst - output current view managers list.
- */
+/*!
+ Gets current view managers.
+ \param lst - output current view managers list.
+*/
void LightApp_Application::currentViewManagers( QStringList& lst ) const
{
lst.clear();
defaultViewManagers( lst );
}
-/*!Update windows.*/
+/*!
+ Updates windows
+*/
void LightApp_Application::updateWindows()
{
QMap<int, int> winMap;
// setWindowShown should be done even if no study is active (open). in this case all open windows
// will be hidden, which is neccessary in this case.
- for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr )
+ for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr ) {
+
+ if ( myWindowsVisible.contains( itr.key() ) &&
+ !myWindowsVisible[ itr.key() ] )
+ continue;
+
setWindowShown( itr.key(), !itr.data()->isEmpty() && winMap.contains( itr.key() ) );
+ }
}
-/*!Update view managers.*/
+/*!
+ Updates view managers
+*/
void LightApp_Application::updateViewManagers()
{
QStringList lst;
getViewManager( *it, true );
}
-/*!Load windows geometry.*/
+/*!
+ Loads windows geometry
+*/
void LightApp_Application::loadWindowsGeometry()
{
bool store = resourceMgr()->booleanValue( "Study", "store_positions", true );
dockMgr->restoreGeometry();
}
-/*!Save windows geometry.*/
+/*!
+ Saves windows geometry
+*/
void LightApp_Application::saveWindowsGeometry()
{
bool store = resourceMgr()->booleanValue( "Study", "store_positions", true );
dockMgr->saveGeometry( resourceMgr(), section, false );
}
-/*!Activate windows.*/
+/*!
+ Activates windows
+*/
void LightApp_Application::activateWindows()
{
if ( activeStudy() )
}
}
-/*!Adds icon names for modules.*/
+/*!
+ Adds icon names for modules
+*/
void LightApp_Application::moduleIconNames( QMap<QString, QString>& iconMap ) const
{
iconMap.clear();
}
}
-/*!Insert items in popup, which necessary for current application*/
+/*!
+ Inserts items in popup, which necessary for current application
+*/
void LightApp_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopup, QString& title )
{
CAM_Application::contextMenuPopup( type, thePopup, title );
thePopup->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) );
}
-/*!Create empty study.*/
+/*!
+ Create empty study
+*/
void LightApp_Application::createEmptyStudy()
{
CAM_Application::createEmptyStudy();
objectBrowser()->updateTree();
}
-/*!Activate module \a mod.*/
+/*!
+ Activates module
+ \param mod - module to be activated
+*/
bool LightApp_Application::activateModule( CAM_Module* mod )
{
bool res = CAM_Application::activateModule( mod );
return res;
}
-/*!return keyborad accelerators manager object */
+/*!
+ \return keyborad accelerators manager object
+*/
SUIT_Accel* LightApp_Application::accel() const
{
return myAccel;
}
-/*! remove dead widget container from map */
+/*!
+ Removes dead widget container from map
+*/
void LightApp_Application::onWCDestroyed( QObject* ob )
{
// remove destroyed widget container from windows map
}
}
-/*! redefined to remove view manager from memory */
+/*!
+ Connects just added view manager
+*/
+void LightApp_Application::addViewManager( SUIT_ViewManager* vm )
+{
+ connect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
+ this, SLOT( onCloseView( SUIT_ViewManager* ) ) );
+ STD_Application::addViewManager( vm );
+}
+
+/*!
+ Remove view manager from memory
+*/
void LightApp_Application::removeViewManager( SUIT_ViewManager* vm )
{
disconnect( vm, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
delete vm;
}
-/*! rename active window of desktop */
+/*!
+ Renames active window of desktop
+*/
void LightApp_Application::onRenameWindow()
{
if( !desktop() )
w->setCaption( name );
}
+/*!
+ \return if the library of module exists
+ \param moduleTitle - title of module
+*/
bool LightApp_Application::isLibExists( const QString& moduleTitle ) const
{
if( moduleTitle.isEmpty() )
return false;
}
-/*! default name for an active study */
+/*!
+ \return default name for an active study
+*/
void LightApp_Application::setDefaultStudyName( const QString& theName )
{
QStringList anInfoList;
updateDesktopTitle();
}
}
+
+/*! slot, called on show/hide of a dock window */
+void LightApp_Application::onVisibilityChanged( bool visible )
+{
+ const QObject* win = sender();
+
+ for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr )
+ if ( itr.data() == win )
+ {
+ myWindowsVisible[ itr.key() ] = visible;
+ return;
+ }
+}
+
+/*!
+ Custom event handler
+*/
+bool LightApp_Application::event( QEvent* e )
+{
+ if( e && e->type()==2000 )
+ {
+ QCustomEvent* ce = ( QCustomEvent* )e;
+ QString* d = ( QString* )ce->data();
+ if( SUIT_MessageBox::warn2(0, tr("WRN_WARNING"),
+ d ? *d : "",
+ tr("BUT_OK"), tr("BUT_CANCEL"), 0, 1, 0 )==0 )
+ onPreferences();
+ if( d )
+ delete d;
+ return true;
+ }
+ return CAM_Application::event( e );
+}
void updateActions();
SUIT_ViewManager* getViewManager( const QString&, const bool );
+ virtual void addViewManager( SUIT_ViewManager* );
virtual void removeViewManager( SUIT_ViewManager* );
QWidget* getWindow( const int, const int = -1 );
QWidget* window( const int, const int = -1 ) const;
static int studyId();
+ virtual bool event( QEvent* );
+
signals:
void studyOpened();
void studySaved();
public slots:
virtual void onHelpContentsModule();
+ virtual void onHelpContextModule( const QString&, const QString& );
virtual void onNewDoc();
virtual void onOpenDoc();
virtual void onHelpAbout();
void onMRUActivated( QString );
void onPreferenceChanged( QString&, QString&, QString& );
void onRenameWindow();
+ void onVisibilityChanged( bool );
protected:
void updateWindows();
protected:
typedef QMap<QString, QAction*> ActionMap;
typedef QMap<int, LightApp_WidgetContainer*> WindowMap;
+ typedef QMap<int, bool> WindowVisibilityMap;
protected:
LightApp_Preferences* myPrefs;
LightApp_SelectionMgr* mySelMgr;
ActionMap myActions;
WindowMap myWindows;
+ WindowVisibilityMap myWindowsVisible;
SUIT_Accel* myAccel;
#include "LightApp_DataModel.h"
#include "LightApp_Study.h"
#include "LightApp_RootObject.h"
+#include "LightApp_DataObject.h"
#include "LightApp_Module.h"
#include "LightApp_Application.h"
-#include <CAM_DataObject.h>
+#include <OB_Browser.h>
#include <SUIT_Application.h>
#include <SUIT_ResourceMgr.h>
#include <SUIT_Session.h>
#include <SUIT_DataObject.h>
-//=======================================================================
-// name : LightApp_DataModel::LightApp_DataModel
-/*!Purpose : Constructor*/
-//=======================================================================
+/*!
+ Constructor
+*/
LightApp_DataModel::LightApp_DataModel( CAM_Module* theModule )
: CAM_DataModel( theModule )
{
}
-//=======================================================================
-// name : LightApp_DataModel::~LightApp_DataModel
-/*! Purpose : Destructor*/
-//=======================================================================
+/*!
+ Destructor
+*/
LightApp_DataModel::~LightApp_DataModel()
{
}
-//================================================================
-// Function : open
-/*! Purpose : Emit opened()*/
-//================================================================
+/*!
+ Emit opened()
+*/
bool LightApp_DataModel::open( const QString&, CAM_Study* study, QStringList )
{
emit opened(); //TODO: is it really needed? to be removed maybe...
return true;
}
-//================================================================
-// Function : save
-/*! Purpose : Emit saved()*/
-//================================================================
+/*!
+ Emit saved()
+*/
bool LightApp_DataModel::save( QStringList& )
{
emit saved();
return true;
}
-//================================================================
-// Function : saveAs
-/*! Purpose : Emit saved()*/
-//================================================================
+/*!
+ Emit saved()
+*/
bool LightApp_DataModel::saveAs( const QString&, CAM_Study*, QStringList& )
{
emit saved();
return true;
}
-//================================================================
-// Function : close
-/*! Purpose : Emit closed()*/
-//================================================================
+/*!
+ Emit closed()
+*/
bool LightApp_DataModel::close()
{
emit closed();
return true;
}
-//================================================================
-// Function : update
-/*! Purpose : Update application (empty virtual function).*/
-//================================================================
-void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study )
+/*!
+ Build whole data model tree
+*/
+void LightApp_DataModel::build()
{
}
-//================================================================
-// Function : getModule
-/*! Purpose : gets module*/
-//================================================================
+/*!
+ Updates data model presentation in some widgets (for example, in object browser
+*/
+void LightApp_DataModel::updateWidgets()
+{
+ LightApp_Application* app = dynamic_cast<LightApp_Application*>( module()->application() );
+ if( app )
+ app->objectBrowser()->updateTree( 0, false );
+}
+
+/*!
+ Default behaviour of data model update for light modules
+*/
+void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* )
+{
+ LightApp_ModuleObject* modelRoot = dynamic_cast<LightApp_ModuleObject*>( root() );
+ DataObjectList ch;
+ if( modelRoot )
+ {
+ ch = modelRoot->children();
+ for ( DataObjectListIterator it( ch ); it.current(); ++it )
+ it.current()->setParent( 0 );
+ }
+ build();
+ updateWidgets();
+ for( DataObjectListIterator it( ch ); it.current(); ++it )
+ delete it.current();
+}
+/*!
+ \return corresponding module
+*/
LightApp_Module* LightApp_DataModel::getModule() const
{
return dynamic_cast<LightApp_Module*>( module() );
}
-//================================================================
-// Function : getStudy
-/*! Purpose : gets study */
-//================================================================
+/*!
+ \return corresponding study
+*/
LightApp_Study* LightApp_DataModel::getStudy() const
{
LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>( root()->root() );
return aRoot->study();
}
-//================================================================
-// Function : isModified
-/*! Purpose : default implementation, always returns false so as not to mask study's isModified()*/
-//================================================================
+/*!
+ default implementation, always returns false so as not to mask study's isModified()
+*/
bool LightApp_DataModel::isModified() const
{
return false;
}
-//================================================================
-// Function : isSaved
-/*! Purpose : default implementation, always returns true so as not to mask study's isSaved()*/
-//================================================================
+/*!
+ default implementation, always returns true so as not to mask study's isSaved()
+*/
bool LightApp_DataModel::isSaved() const
{
return true;
protected:
LightApp_Study* getStudy() const;
-
+ virtual void build();
+ virtual void updateWidgets();
};
#endif
return myEntry == that->myEntry;
}
-/*
- Class: LightApp_DataObject
- Level: Public
-*/
/*!Constructor. Initialize by \a parent*/
LightApp_DataObject::LightApp_DataObject( SUIT_DataObject* parent )
: CAM_DataObject( parent ), myCompObject( 0 ), myCompDataType( "" )
return myCompDataType;
}
-/*
- Class: LightApp_ModuleObject
- Level: Public
-*/
+
/*!Constructor.Initialize by \a parent.*/
LightApp_ModuleObject::LightApp_ModuleObject( SUIT_DataObject* parent )
#include <qlineedit.h>
#include <qlabel.h>
-/*
- Class : LightApp_Dialog
- Description : Base class for all dialogs
+/*!
+ Constructor
*/
-
-//=======================================================================
-// name : LightApp_Dialog
-// Purpose : Constructor
-//=======================================================================
LightApp_Dialog::LightApp_Dialog( QWidget* parent, const char* name, bool modal,
bool allowResize, const int f, WFlags wf )
: QtxDialog( parent, name, modal, allowResize, f, wf ),
setObjectPixmap( "LightApp", tr( "ICON_SELECT" ) );
}
-//=======================================================================
-// name : ~LightApp_Dialog
-// Purpose : Destructor
-//=======================================================================
+/*!
+ Destructor
+*/
LightApp_Dialog::~LightApp_Dialog()
{
}
-//=======================================================================
-// name : show
-// Purpose :
-//=======================================================================
+/*!
+ Show dialog
+*/
void LightApp_Dialog::show()
{
QtxDialog::show();
}
-//=======================================================================
-// name : isExclusive
-// Purpose :
-//=======================================================================
+/*!
+ \return isExclusive status of selection buttons
+*/
bool LightApp_Dialog::isExclusive() const
{
return myIsExclusive;
}
-//=======================================================================
-// name : updateButtons
-// Purpose :
-//=======================================================================
+/*!
+ Updates "on" state of buttons according to special button
+ \param _id - id of special button (if it is -1, then first selected button will be treated as special)
+*/
void LightApp_Dialog::updateButtons( const int _id )
{
if( !myIsExclusive )
}
}
-//=======================================================================
-// name : setExclusive
-// Purpose :
-//=======================================================================
+/*!
+ Sets isExclusive status of selection buttons
+ \param ex - new value of isExclusive status
+*/
void LightApp_Dialog::setExclusive( const bool ex )
{
myIsExclusive = ex;
updateButtons();
}
-//=======================================================================
-// name : showObject
-// Purpose :
-//=======================================================================
+/*!
+ Shows object selection widget
+ \param id - identificator of object selection widget
+*/
void LightApp_Dialog::showObject( const int id )
{
setObjectShown( id, true );
}
-//=======================================================================
-// name : hideObject
-// Purpose :
-//=======================================================================
+/*!
+ Hides object selection widget
+ \param id - identificator of object selection widget
+*/
void LightApp_Dialog::hideObject( const int id )
{
setObjectShown( id, false );
}
-//=======================================================================
-// name : setObjectShown
-// Purpose :
-//=======================================================================
+/*!
+ Shows/hides object selection widget
+ \param id - identificator of object selection widget
+ \param shown - if it is true, widget will be shown
+*/
void LightApp_Dialog::setObjectShown( const int id, const bool shown )
{
if( myObjects.contains( id ) && isObjectShown( id )!=shown )
}
}
-//=======================================================================
-// name : isObjectShown
-// Purpose :
-//=======================================================================
+/*!
+ \return isShown state of object selection widget
+ \param id - identificator of object selection widget
+*/
bool LightApp_Dialog::isObjectShown( const int id ) const
{
return myObjects.contains( id ) && myObjects[ id ].myEdit->isShown();
}
-//=======================================================================
-// name : setObjectEnabled
-// Purpose :
-//=======================================================================
+/*!
+ Change enable state of object selection widget
+ \param id - identificator of object selection widget
+ \param en - new value of enable state
+*/
void LightApp_Dialog::setObjectEnabled( const int id, const bool en )
{
if( myObjects.contains( id ) && isObjectEnabled( id )!=en )
}
}
-//=======================================================================
-// name : isObjectEnabled
-// Purpose :
-//=======================================================================
+/*!
+ \return enable state of object selection widget
+ \param id - identificator of object selection widget
+*/
bool LightApp_Dialog::isObjectEnabled( const int id ) const
{
return myObjects.contains( id ) && myObjects[ id ].myEdit->isEnabled();
}
-//=======================================================================
-// name : selectObject
-// Purpose :
-//=======================================================================
+/*!
+ Passes to all active widgets name, type and id of selected object
+ \param name - name of selected object
+ \param type - type of selected object
+ \param id - id of selected object
+ \param update - is need to update selection description string
+*/
void LightApp_Dialog::selectObject( const QString& name, const int type, const QString& id, const bool update )
{
QStringList names; names.append( name );
selectObject( names, types, ids, update );
}
-//=======================================================================
-// name : selectObject
-// Purpose :
-//=======================================================================
+/*!
+ Passes to all active widgets names, types and ids of selected objects
+ \param _names - names of selected objects
+ \param _types - types of selected objects
+ \param _ids - ids of selected objects
+ \param update - is need to update selection description string
+*/
void LightApp_Dialog::selectObject( const QStringList& _names,
const TypesList& _types,
const QStringList& _ids,
selectObject( anIt.key(), _names, _types, _ids, update );
}
-//=======================================================================
-// name : hasSelection
-// Purpose :
-//=======================================================================
+/*!
+ \return true if widget has selection
+ \param id - identificator of object selection widget
+*/
bool LightApp_Dialog::hasSelection( const int id ) const
{
return myObjects.contains( id ) && !myObjects[ id ].myIds.isEmpty();
}
-//=======================================================================
-// name : clearSelection
-// Purpose :
-//=======================================================================
+/*!
+ Clears selection of widget
+ \param id - identificator of object selection widget
+*/
void LightApp_Dialog::clearSelection( const int id )
{
if( id==-1 )
}
}
-//=======================================================================
-// name : objectWg
-// Purpose :
-//=======================================================================
+/*!
+ \return object selection widget
+ \param theId - identificator of object selection widget
+ \param theWgId may be "Label", "Btn" or "Control"
+*/
QWidget* LightApp_Dialog::objectWg( const int theId, const int theWgId ) const
{
QWidget* aResWg = 0;
return aResWg;
}
-//=======================================================================
-// name : objectText
-// Purpose :
-//=======================================================================
+/*!
+ \return object selection widget text
+ \param theId - identificator of object selection widget
+*/
QString LightApp_Dialog::objectText( const int theId ) const
{
return myObjects.contains( theId ) ? myObjects[ theId ].myEdit->text() : "";
}
-//=======================================================================
-// name : setObjectText
-// Purpose :
-//=======================================================================
+/*!
+ Sets object selection widget text
+ \param theId - identificator of object selection widget
+ \param theText - new text
+*/
void LightApp_Dialog::setObjectText( const int theId, const QString& theText )
{
if ( myObjects.contains( theId ) )
myObjects[ theId ].myEdit->setText( theText );
}
-//=======================================================================
-// name : selectedObject
-// Purpose :
-//=======================================================================
+/*!
+ \return objects selected by widget
+ \param id - identificator of object selection widget
+ \param list - list to be filled by selected objects
+*/
void LightApp_Dialog::selectedObject( const int id, QStringList& list ) const
{
if( myObjects.contains( id ) )
list = myObjects[ id ].myIds;
}
-//=======================================================================
-// name : selectedObject
-// Purpose :
-//=======================================================================
+/*!
+ \return selected object id
+ \param id - identificator of object selection widget
+*/
QString LightApp_Dialog::selectedObject( const int id ) const
{
if ( myObjects.contains( id ) && myObjects[ id ].myIds.count() > 0 )
return "";
}
-//=======================================================================
-// name : objectSelection
-// Purpose :
-//=======================================================================
+/*!
+ \return all selected objects
+ \param objs - map: widget id -> string id to be filled with selected objects
+*/
void LightApp_Dialog::objectSelection( SelectedObjects& objs ) const
{
//objs.clear();
}
}
-//=======================================================================
-// name : createObject
-// Purpose :
-//=======================================================================
+/*!
+ Creates object selection widget
+ \return id
+ \label - label text
+ \parent - parent object
+ \id - proposed id for widget (if it is less than 0, the free id will be used)
+*/
int LightApp_Dialog::createObject( const QString& label, QWidget* parent, const int id )
{
int nid = id;
return nid;
}
-//=======================================================================
-// name : renameObject
-// Purpose :
-//=======================================================================
+/*!
+ Changes label of object selection widget
+ \param id - identificator of object selection widget
+ \param label - new text of label
+*/
void LightApp_Dialog::renameObject( const int id, const QString& label )
{
if( myObjects.contains( id ) )
myObjects[ id ].myLabel->setText( label );
}
-//=======================================================================
-// name : setObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Sets possible types for widget
+ \param id - identificator of object selection widget
+ \param type1,... - type
+*/
void LightApp_Dialog::setObjectType( const int id, const int type1, ... )
{
TypesList types;
setObjectType( id, types );
}
-//=======================================================================
-// name : setObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Sets possible types for widget
+ \param id - identificator of object selection widget
+ \param list - list of possible types
+*/
void LightApp_Dialog::setObjectType( const int id, const TypesList& list )
{
if( !myObjects.contains( id ) )
updateObject( id );
}
-//=======================================================================
-// name : addObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Adds new possible types to object selection widget
+ \param id - identificator of object selection widget
+ \param type1, ... - new types
+*/
void LightApp_Dialog::addObjectType( const int id, const int type1, const int, ... )
{
TypesList types; objectTypes( id, types );
setObjectType( id, types );
}
-//=======================================================================
-// name : addObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Adds new possible types to object selection widget
+ \param id - identificator of object selection widget
+ \param list - new types
+*/
void LightApp_Dialog::addObjectType( const int id, const TypesList& list )
{
TypesList types = list; objectTypes( id, types );
setObjectType( id, types );
}
-//=======================================================================
-// name : addObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Adds new possible type to object selection widget
+ \param id - identificator of object selection widget
+ \param type - new type
+*/
void LightApp_Dialog::addObjectType( const int id, const int type )
{
TypesList types; objectTypes( id, types );
setObjectType( id, types );
}
-//=======================================================================
-// name : removeObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Clears list of possibles types for object selection widget
+ \param id - identificator of object selection widget
+*/
void LightApp_Dialog::removeObjectType( const int id )
{
TypesList types;
setObjectType( id, types );
}
-//=======================================================================
-// name : removeObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Removes types from list of possibles for object selection widget
+ \param id - identificator of object selection widget
+ \param list - list of types to be removed
+*/
void LightApp_Dialog::removeObjectType( const int id, const TypesList& list )
{
if( !myObjects.contains( id ) )
updateObject( id );
}
-//=======================================================================
-// name : removeObjectType
-// Purpose :
-//=======================================================================
+/*!
+ Removes type from list of possibles for object selection widget
+ \param id - identificator of object selection widget
+ \param type - type to be removed
+*/
void LightApp_Dialog::removeObjectType( const int id, const int type )
{
TypesList list; list.append( type );
removeObjectType( id, list );
}
-//=======================================================================
-// name : hasObjectType
-// Purpose :
-//=======================================================================
+/*!
+ \return true if widget has such type
+ \param id - identificator of object selection widget
+ \param type - type to be checked
+*/
bool LightApp_Dialog::hasObjectType( const int id, const int type ) const
{
if( myObjects.contains( id ) )
return false;
}
-//=======================================================================
-// name : objectTypes
-// Purpose :
-//=======================================================================
+/*!
+ Returns list of possible types for widget
+ \param id - identificator of object selection widget
+ \param list - list to be filled with possible types
+*/
void LightApp_Dialog::objectTypes( const int id, TypesList& list ) const
{
if( myObjects.contains( id ) )
}
}
-//=======================================================================
-// name : onToggled
-// Purpose :
-//=======================================================================
+/*!
+ SLOT: called if selection button is clicked
+*/
void LightApp_Dialog::onToggled( bool on )
{
QButton* but = ( QButton* )sender();
emit objectDeactivated( id );
}
-//=======================================================================
-// name : updateObject
-// Purpose :
-//=======================================================================
+/*!
+ Updates selection description of widget
+ \param id - identificator of object selection widget
+ \param emit_signal - if it is true, the signal "selection changed" is emitted
+*/
void LightApp_Dialog::updateObject( const int id, bool emit_signal )
{
if( hasSelection( id ) )
}
}
-//=======================================================================
-// name : filterTypes
-// Purpose :
-//=======================================================================
+/*!
+ Finds in list possible types
+ \param id - identificator of object selection widget
+ \param names - list of selected objects names
+ \param types - list of selected objects types
+ \param ids - list of selected objects ids
+*/
void LightApp_Dialog::filterTypes( const int id, QStringList& names, TypesList& types, QStringList& ids ) const
{
if( !myObjects.contains( id ) )
ids = new_ids;
}
-//=======================================================================
-// name : resMgr
-// Purpose :
-//=======================================================================
+/*!
+ \return global resource manager
+*/
SUIT_ResourceMgr* LightApp_Dialog::resMgr() const
{
return SUIT_Session::session()->resourceMgr();
}
-//=======================================================================
-// name : setObjectPixmap
-// Purpose :
-//=======================================================================
+/*!
+ Sets pixmap for all object selection button
+ \param p - image
+*/
void LightApp_Dialog::setObjectPixmap( const QPixmap& p )
{
myPixmap = p;
( ( QToolButton* )anIt.data().myBtn )->setIconSet( p );
}
-//=======================================================================
-// name : setObjectPixmap
-// Purpose :
-//=======================================================================
+/*!
+ Sets pixmap all for object selection button
+ \param section - name of section of resource manager
+ \param file - name of file
+*/
void LightApp_Dialog::setObjectPixmap( const QString& section, const QString& file )
{
SUIT_ResourceMgr* mgr = resMgr();
setObjectPixmap( mgr->loadPixmap( section, file ) );
}
-//=======================================================================
-// name : multipleSelection
-// Purpose :
-//=======================================================================
+/*!
+ \return true, if it is enable multiple selection
+ \param id - identificator of object selection widget
+*/
bool LightApp_Dialog::multipleSelection( const int id ) const
{
return nameIndication( id )!=OneName;
}
-//=======================================================================
-// name : nameIndication
-// Purpose :
-//=======================================================================
+/*!
+ \return type of name indication
+ \param id - identificator of object selection widget
+*/
LightApp_Dialog::NameIndication LightApp_Dialog::nameIndication( const int id ) const
{
if( myObjects.contains( id ) )
return OneNameOrCount;
}
-//=======================================================================
-// name : setNameIndication
-// Purpose :
-//=======================================================================
+/*!
+ Sets type of name indication
+ \param id - identificator of object selection widget
+ \param ni - new type of name indication
+*/
void LightApp_Dialog::setNameIndication( const int id, const NameIndication ni )
{
if( id==-1 )
}
}
-//=======================================================================
-// name : selectionDescription
-// Purpose :
-//=======================================================================
+/*!
+ \return string representation of selection by selection data
+ \param names - list of selected objects names
+ \param types - list of selected objects types
+ \param ni - type of name indication
+*/
QString LightApp_Dialog::selectionDescription( const QStringList& names, const TypesList& types, const NameIndication ni ) const
{
if( names.count()!=types.count() )
return QString::null;
}
-//=======================================================================
-// name : countOfTypes
-// Purpose :
-//=======================================================================
+/*!
+ \return string representation of count of types
+ \param types - list of types
+*/
QString LightApp_Dialog::countOfTypes( const TypesList& types ) const
{
QMap<int, int> typesCount;
return typeCount.join( ", " );
}
-//=======================================================================
-// name : typeName
-// Purpose :
-//=======================================================================
+/*!
+ \return reference to type name
+ \param type - integer id of type
+*/
QString& LightApp_Dialog::typeName( const int type )
{
return myTypeNames[ type ];
}
-//=======================================================================
-// name : typeName
-// Purpose :
-//=======================================================================
+/*!
+ \return const reference to type name
+ \param type - integer id of type
+*/
const QString& LightApp_Dialog::typeName( const int type ) const
{
return myTypeNames[ type ];
}
-//=======================================================================
-// name : activateObject
-// Purpose :
-//=======================================================================
+/*!
+ Activates object selection widget
+ \param id - identificator of object selection widget
+*/
void LightApp_Dialog::activateObject( const int theId )
{
if ( myObjects.contains( theId ) && !myObjects[ theId ].myBtn->isOn() )
myObjects[ theId ].myBtn->toggle();
}
-//=======================================================================
-// name : deactivateAll
-// Purpose :
-//=======================================================================
+/*!
+ Deactivates all object selection widgets
+*/
void LightApp_Dialog::deactivateAll()
{
ObjectMap::iterator anIt = myObjects.begin(),
}
}
-//=======================================================================
-// name : selectObject
-// Purpose :
-//=======================================================================
+/*!
+ Passes to widget name, type and id of selected object
+ \param id - identificator of object selection widget
+ \param name - name of selected object
+ \param type - type of selected object
+ \param selid - id of selected object
+ \param update - is need to update selection description string
+*/
void LightApp_Dialog::selectObject( const int id, const QString& name, const int type, const QString& selid, const bool update )
{
QStringList names; names.append( name );
selectObject( id, names, types, ids, update );
}
-//=======================================================================
-// name : selectObject
-// Purpose :
-//=======================================================================
+/*!
+ Passes to widget names, types and ids of selected objects
+ \param id - identificator of object selection widget
+ \param _names - names of selected object
+ \param _types - types of selected object
+ \param _ids - ids of selected object
+ \param update - is need to update selection description string
+*/
void LightApp_Dialog::selectObject( const int id, const QStringList& _names, const TypesList& _types,
const QStringList& _ids, const bool update )
{
emit selectionChanged( id );
}
-//=======================================================================
-// name : setReadOnly
-// Purpose :
-//=======================================================================
+/*!
+ Sets read only state of object selection line edit
+ \param id - identificator of object selection widget
+ \param ro - new read only state
+*/
void LightApp_Dialog::setReadOnly( const int id, const bool ro )
{
if( myObjects.contains( id ) )
myObjects[ id ].myEdit->setReadOnly( nameIndication( id )==ListOfNames || nameIndication( id )==OneName ? ro : true );
}
-//=======================================================================
-// name : isReadOnly
-// Purpose :
-//=======================================================================
+/*!
+ \return read only state of object selection line edit
+ \param id - identificator of object selection widget
+*/
bool LightApp_Dialog::isReadOnly( const int id ) const
{
if( myObjects.contains( id ) )
else
return true;
}
-
-//=======================================================================
-// name : onTextChanged
-// Purpose :
-//=======================================================================
+
+/*!
+ SLOT: called if text of object selection line edit is changed
+*/
void LightApp_Dialog::onTextChanged( const QString& text )
{
if( myIsBusy )
class SUIT_ResourceMgr;
-/*
- Class : LightApp_Dialog
- Description : Base class for all LightApp dialogs
+/*!
+ \class LightApp_Dialog
+ Base class for all LightApp dialogs.
+ Provides standard widget for object selection: line edit, button;
+ it is necessary to call corresponding methods on selection change.
+ Standard dialog provides filtering, selection string representation,
+ possibility to indicate necessary selection by text with list of ids.
*/
class LIGHTAPP_EXPORT LightApp_Dialog : public QtxDialog
{
#include "SALOME_InteractiveObject.hxx"
#endif
+/*!
+ Default constructor
+*/
LightApp_Displayer::LightApp_Displayer()
{
}
+/*!
+ Destructor
+*/
LightApp_Displayer::~LightApp_Displayer()
{
}
+/*!
+ Displays object in view
+ \param entry - object entry
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void LightApp_Displayer::Display( const QString& entry, const bool updateViewer, SALOME_View* theViewFrame )
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
}
}
+/*!
+ Redisplays object in view
+ \param entry - object entry
+ \param updateViewer - is it necessary to update viewer
+*/
void LightApp_Displayer::Redisplay( const QString& entry, const bool updateViewer )
{
// Remove the object permanently (<forced> == true)
}
}
+/*!
+ Erases object in view
+ \param entry - object entry
+ \param forced - deletes object from viewer (otherwise it will be erased, but cached)
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void LightApp_Displayer::Erase( const QString& entry, const bool forced,
const bool updateViewer, SALOME_View* theViewFrame )
{
}
}
+/*!
+ Erases all objects in view
+ \param forced - deletes objects from viewer
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void LightApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
}
}
+/*!
+ \return true if object is displayed in viewer
+ \param entry - object entry
+ \param theViewFrame - view
+*/
bool LightApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
return res;
}
+/*!
+ Updates active view
+*/
void LightApp_Displayer::UpdateViewer() const
{
SALOME_View* vf = GetActiveView();
vf->Repaint();
}
+/*!
+ \return presentation of object, built with help of CreatePrs method
+ \param entry - object entry
+ \param theViewFrame - view
+ \sa CreatePrs()
+*/
SALOME_Prs* LightApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame )
{
SALOME_Prs* prs = 0;
return prs;
}
+/*!
+ \return active view
+*/
SALOME_View* LightApp_Displayer::GetActiveView()
{
SUIT_Session* session = SUIT_Session::session();
return 0;
}
-bool LightApp_Displayer::canBeDisplayed( const QString&, const QString& ) const
+/*!
+ \return true, if object can be displayed in this type of viewer
+ \param entry - object entry
+ \param viewer_type - type of viewer
+*/
+bool LightApp_Displayer::canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const
{
return true;
}
+/*!
+ \return true, if object can be displayed in any type of viewer
+ \param entry - object entry
+*/
bool LightApp_Displayer::canBeDisplayed( const QString& entry ) const
{
QString viewerType;
return !viewerType.isNull() && canBeDisplayed( entry, viewerType );
}
+/*!
+ \return displayer, corresponding to module
+ \param mod_name - name of module
+ \param load - is module has to be forced loaded
+*/
LightApp_Displayer* LightApp_Displayer::FindDisplayer( const QString& mod_name, const bool load )
{
SUIT_Session* session = SUIT_Session::session();
class QString;
+/*!
+ \class LightApp_Displayer
+ Uniform mechanism of display/erase of objects in different views.
+ Objects are specified by string entry
+*/
class LightApp_Displayer : public SALOME_Displayer
{
public:
using namespace std;
-//================================================================
-// Function : SaveDatasInFile
-/*! Purpose : save in file 'theFileName' datas from this driver*/
-//================================================================
+/*!
+ Save in file 'theFileName' datas from this driver
+*/
bool LightApp_Driver::SaveDatasInFile( const char* theFileName, bool isMultiFile )
{
int aNbModules = 0;
return true;
}
-//=======================================================================
-// name : ReaDatasFromFile
-/*! Purpose : filling current driver from file 'theFileName'*/
-//=======================================================================
+/*!
+ Filling current driver from file 'theFileName'
+*/
bool LightApp_Driver::ReadDatasFromFile( const char* theFileName, bool isMultiFile )
{
#ifdef WNT
return true;
}
-//================================================================
-// Function : GetTmpDir
-/*! Purpose : returns temp directory for path 'theURL'*/
-//================================================================
+/*!
+ \return temp directory for path 'theURL'
+*/
std::string LightApp_Driver::GetTmpDir (const char* theURL, const bool isMultiFile)
{
std::string anURLDir = GetDirFromPath(theURL);
return aTmpDir;
}
-//================================================================
-// Function : GetListOfFiles
-/*! Purpose : returns list of files for module with name 'theModuleName'*/
-//================================================================
+/*!
+ \return list of files for module with name 'theModuleName'
+*/
LightApp_Driver::ListOfFiles LightApp_Driver::GetListOfFiles( const char* theModuleName )
{
ListOfFiles aListOfFiles;
return aListOfFiles;
}
-//================================================================
-// Function : SetListOfFiles
-/*! Purpose : sets list of files for module with name 'theModuleName'*/
-//================================================================
+/*!
+ Sets list of files for module with name 'theModuleName'
+*/
void LightApp_Driver::SetListOfFiles( const char* theModuleName, const ListOfFiles theListOfFiles )
{
std::string aName (theModuleName);
myMap[aName] = theListOfFiles;
}
-//============================================================================
-// function : PutFilesToStream
-/*! Purpose : converts files which was created from module <theModuleName> into a byte sequence unsigned char*/
-//============================================================================
+/*!
+ Converts files which was created from module <theModuleName> into a byte sequence unsigned char
+*/
void LightApp_Driver::PutFilesToStream( const std::string& theModuleName, unsigned char*& theBuffer,
long& theBufferSize, bool theNamesOnly )
{
theBufferSize = aBufferSize;
}
-//============================================================================
-// function : PutStreamToFile
-/*! Purpose : converts a byte sequence <theBuffer> to files and return list of them*/
-//============================================================================
+/*!
+ Converts a byte sequence <theBuffer> to files and return list of them
+*/
LightApp_Driver::ListOfFiles LightApp_Driver::PutStreamToFiles( const unsigned char* theBuffer,
const long theBufferSize, bool theNamesOnly )
{
return aFiles;
}
-//============================================================================
-// function : RemoveFiles
-/*! Purpose : Remove files. First item in <theFiles> is a directory with slash at the end.
- Other items are names of files. If <IsDirDeleted> is true,
- then the directory is also deleted.
+/*!
+ Remove files. First item in <theFiles> is a directory with slash at the end.
+ Other items are names of files. If <IsDirDeleted> is true,
+ then the directory is also deleted.
*/
-//============================================================================
void LightApp_Driver::RemoveFiles( const ListOfFiles& theFiles, const bool IsDirDeleted)
{
int i, aLength = theFiles.size() - 1;
}
}
-//============================================================================
-// function : RemoveTemporaryFiles
-/*! Purpose : removes files which was created from module theModuleName if
- <IsDirDeleted> is true tmp directory is also deleted if it is empty*/
-//============================================================================
+/*!
+ Removes files which was created from module theModuleName if
+ <IsDirDeleted> is true tmp directory is also deleted if it is empty
+*/
void LightApp_Driver::RemoveTemporaryFiles( const char* theModuleName, const bool IsDirDeleted )
{
std::string aModuleName(theModuleName);
}
-//============================================================================
-// function : ClearDriverContents
-/*! Purpose : clear map of list files*/
-//============================================================================
+/*!
+ Clears map of list files
+*/
void LightApp_Driver::ClearDriverContents()
{
std::map<std::string, ListOfFiles>::iterator it;
SetIsTemporary( false );
}
-//============================================================================
-// function : GetTempDir
-/*! Purpose : return a temp directory to store created files like "/tmp/sub_dir/" */
-//============================================================================
+/*!
+ \return a temp directory to store created files like "/tmp/sub_dir/"
+*/
std::string LightApp_Driver::GetTmpDir()
{
if ( myTmpDir.length() != 0 )
return aTmpDir.ToCString();
}
-//============================================================================
-// function : GetDirFromPath
-/*! Purpose : returns the dir by the path*/
-//============================================================================
+/*!
+ \return the dir by the path
+*/
std::string LightApp_Driver::GetDirFromPath( const std::string& thePath ) {
if(thePath == "")
return "";
}
+/*!
+ Constructor
+ \param entry - entry of object
+*/
LightApp_GLOwner::LightApp_GLOwner( const char* entry )
: GLViewer_Owner()
{
setEntry( entry );
}
+/*!
+ Destructor
+*/
LightApp_GLOwner::~LightApp_GLOwner()
{
}
+/*!
+ \return entry
+*/
const char* LightApp_GLOwner::entry() const
{
return myEntry.c_str();
}
+/*!
+ Sets new entry
+ \param entry - entry of object
+*/
void LightApp_GLOwner::setEntry( const char* entry )
{
myEntry = entry;
#include <string>
#include <GLViewer_Object.h>
+/*!
+ \class LightApp_GLSelector
+ Custom selector to get/set selection from GL viewer
+*/
class LIGHTAPP_EXPORT LightApp_GLSelector : public SUIT_Selector
{
Q_OBJECT
using namespace std;
-//================================================================
-// Function : SaveDatasInFile
-/*! Purpose : save in file 'theFileName' datas from this driver*/
-//================================================================
+/*!
+ Saves in file 'theFileName' datas from this driver
+*/
bool LightApp_HDFDriver::SaveDatasInFile( const char* theFileName, bool isMultiFile )
{
bool isASCII = false;
return !isError;
}
-//=======================================================================
-// Function : ReadDatasFromFile
-/*! Purpose : filling current driver from file 'theFileName'*/
-//=======================================================================
+/*!
+ Filling current driver from file 'theFileName'
+*/
bool LightApp_HDFDriver::ReadDatasFromFile( const char* theFileName, bool isMultiFile )
{
bool isASCII = false;
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef LIGHTAPP_HDFDRIVER_H
#define LIGHTAPP_HDFDRIVER_H
void LightApp_Module::updateObjBrowser( bool theIsUpdateDataModel,
SUIT_DataObject* theDataObject )
{
+ bool upd = getApp()->objectBrowser()->isAutoUpdate();
+ getApp()->objectBrowser()->setAutoUpdate( false );
+
SUIT_DataObject* aDataObject = theDataObject;
if( theIsUpdateDataModel ){
if( CAM_DataModel* aDataModel = dataModel() ){
}
}
}
- getApp()->objectBrowser()->updateTree( aDataObject );
+ getApp()->objectBrowser()->setAutoUpdate( upd );
+ getApp()->objectBrowser()->updateTree( 0, false /*aDataObject*/ );
}
/*!NOT IMPLEMENTED*/
}
}
+/*!
+ Must be redefined in order to use standard displayer mechanism
+ \return displayer of module
+*/
LightApp_Displayer* LightApp_Module::displayer()
{
return 0;
}
+/*!
+ SLOT: called on activating of standard operations show/hide
+*/
void LightApp_Module::onShowHide()
{
if( !sender()->inherits( "QAction" ) || !popupMgr() )
startOperation( id );
}
+/*!
+ virtual SLOT: called on view manager adding
+*/
void LightApp_Module::onViewManagerAdded( SUIT_ViewManager* )
{
}
+/*!
+ virtual SLOT: called on view manager removing
+*/
void LightApp_Module::onViewManagerRemoved( SUIT_ViewManager* )
{
}
class QString;
class QVariant;
-/*
- Class : LightApp_Module
- Description : Base class for all light modules
+/*!
+ \class LightApp_Module
+ Base class for all light modules
*/
class LIGHTAPP_EXPORT LightApp_Module : public CAM_Module
class QLabel;
class QPushButton;
+/*!
+ \class LightApp_ModuleDlg
+ Dialog allows to choose action on module activation when there is no document.
+ It is possible to create new document, to open existing or to cancel module activation
+*/
class LIGHTAPP_EXPORT LightApp_ModuleDlg : public QDialog
{
Q_OBJECT
return myLineEdit->text();
}
+/*!
+ Accepts if name isn't empty
+*/
void LightApp_NameDlg::accept()
{
if ( name().stripWhiteSpace().isEmpty() )
class QLineEdit;
class QPushButton;
-//=================================================================================
-// class : LightApp_NameDlg
-/*! purpose : Common <Rename> dialog box class*/
-//=================================================================================
+/*!
+ \class LightApp_NameDlg
+ Common <Rename> dialog box class
+*/
class LIGHTAPP_EXPORT LightApp_NameDlg : public QDialog
{
Q_OBJECT
class LightApp_SelectionMgr;
+/*!
+ \class LightApp_OBFilter
+ Custom Object Browser filter, that checks correctness of object by all filters set in selection manager
+*/
class LIGHTAPP_EXPORT LightApp_OBFilter: public OB_Filter
{
public:
}
myBrowser->setSelected( objList );
+ mySelectedList.clear();
}
/*!On selection changed.*/
class OB_Browser;
class LightApp_DataObject;
+/*!
+ \class LightApp_OBSelector
+ Custom selector to get/set selection from object browser
+*/
class LIGHTAPP_EXPORT LightApp_OBSelector : public SUIT_Selector
{
Q_OBJECT
class Handle_AIS_InteractiveObject;
+/*!
+ \class LightApp_OCCSelector
+ Custom selector to get/set selection from OCC viewer
+*/
class LIGHTAPP_EXPORT LightApp_OCCSelector : public SUIT_Selector
{
Q_OBJECT
setDialogActive( false );
}
-//=======================================================================
-// name : abortOperation
-// Purpose : Hide dialog box (if it is exists)
-//=======================================================================
/*!
* \brief Performs actions needed for aborting operation
*
class LightApp_Dialog;
class SUIT_Desktop;
-/*
- Class : LightApp_Operation
- Description : Base class for all operations
-*/
-
/*!
- * \brief Base class for all operations
- *
- * Base class for all operations (see SUIT_Operation for more description)
+ \class LightApp_Operation
+ \brief Base class for all operations
+ Base class for all operations (see SUIT_Operation for more description)
*/
class LIGHTAPP_EXPORT LightApp_Operation : public SUIT_Operation
{
return id;
}
-/*
+/*!
Checks: is preferences has module with name \a mod.
*/
bool LightApp_Preferences::hasModule( const QString& mod ) const
class QtxResourceMgr;
+/*!
+ \class LightApp_Preferences
+ Custom preference container. Assign each preference category with module.
+ Emits signal on preference changing
+*/
class LIGHTAPP_EXPORT LightApp_Preferences : public QtxListResourceEdit
{
Q_OBJECT
// Author: Sergey TELKOV
#include "LightApp_PreferencesDlg.h"
-
#include "LightApp_Preferences.h"
#include "QtxResourceMgr.h"
#include <qlayout.h>
#include <qmessagebox.h>
#include <qvbox.h>
+#include <qfiledialog.h>
/*!
Constructor.
*/
LightApp_PreferencesDlg::LightApp_PreferencesDlg( LightApp_Preferences* prefs, QWidget* parent )
-: QtxDialog( parent, 0, true, false, OK | Close | Apply ),
+: QtxDialog( parent, 0, true, true, OK | Close | Apply ),
myPrefs( prefs ), mySaved ( false )
{
setCaption( tr( "CAPTION" ) );
QButton* defBtn = userButton( insertButton( tr( "DEFAULT_BTN_TEXT" ) ) );
if ( defBtn )
connect( defBtn, SIGNAL( clicked() ), this, SLOT( onDefault() ) );
+ QButton* impBtn = userButton( insertButton( tr( "IMPORT_BTN_TEXT" ) ) );
+ if( impBtn )
+ connect( impBtn, SIGNAL( clicked() ), this, SLOT( onImportPref() ) );
}
/*!
}
}
}
+
+/*! Import preferences from some file */
+void LightApp_PreferencesDlg::onImportPref()
+{
+ QtxResourceMgr* mgr = myPrefs->resourceMgr();
+ if( !mgr )
+ return;
+
+ QFileDialog dlg( ".", "*", this, "", tr( "IMPORT_PREFERENCES" ) );
+ dlg.setShowHiddenFiles( true );
+ dlg.exec();
+ QString fname = dlg.selectedFile();
+ if( fname.isEmpty() )
+ return;
+
+ if( mgr->import( fname ) )
+ {
+ myPrefs->retrieve();
+ myPrefs->toBackup();
+ }
+}
class LightApp_Preferences;
+/*!
+ \class LightApp_PreferencesDlg
+ Dialog for preferences edition
+*/
class LIGHTAPP_EXPORT LightApp_PreferencesDlg : public QtxDialog
{
Q_OBJECT
void onHelp();
void onApply();
void onDefault();
+ void onImportPref();
private:
LightApp_Preferences* myPrefs;
LightApp_DataOwner* sowner = dynamic_cast<LightApp_DataOwner*>( (*anIt ).get() );
if( sowner )
{
- if( entries.contains( sowner->entry() ) )
+ entry = myStudy->referencedToEntry( sowner->entry() );
+ if( entries.contains( entry ) )
continue;
- entry = myStudy->referencedToEntry( sowner->entry() );
entries.insert( entry, 0 );
myEntries.insert( num, entry );
- myIsReferences.insert( num, sowner->entry() == entry );
+ myIsReferences.insert( num, sowner->entry() != entry );
processOwner( sowner );
num++;
}
class LightApp_Study;
class SUIT_ViewWindow;
-
+/*!
+ \class LightApp_Selection
+ Custom selection class, allowing to build popup with rules on the base
+ of owners selected in all selectors (popup client has more priority).
+ It is able to return values of standard object properties
+ (isVisible,isComponent,canBeDisplayed,isReference, etc)
+*/
class LIGHTAPP_EXPORT LightApp_Selection : public QtxPopupMgr::Selection
{
public:
class LightApp_Application;
+/*!
+ Custom selection manager, allowing to work with object selection
+ (additionally to data owners) and to access to sub-selection of objects
+*/
class LIGHTAPP_EXPORT LightApp_SelectionMgr : public SUIT_SelectionMgr
{
Q_OBJECT
#include <SALOME_ListIteratorOfListIO.hxx>
#endif
+/*!
+ Constructor
+*/
LightApp_ShowHideOp::LightApp_ShowHideOp( ActionType type )
: LightApp_Operation(),
myActionType( type )
{
}
+/*!
+ Destructor
+*/
LightApp_ShowHideOp::~LightApp_ShowHideOp()
{
}
+/*!
+ Makes show/hide operation
+*/
void LightApp_ShowHideOp::startOperation()
{
LightApp_Application* app = dynamic_cast<LightApp_Application*>( application() );
#include "LightApp_Operation.h"
class LightApp_Displayer;
+
+/*!
+ \class LightApp_ShowHideOp
+ Standard operation allowing to show/hide selected objects
+ corresponding to any module with help of module displayer
+*/
class LIGHTAPP_EXPORT LightApp_ShowHideOp : public LightApp_Operation
{
Q_OBJECT
emit created( this );
}
-//=======================================================================
-// name : openDocument
-/*! Purpose : Open document*/
-//=======================================================================
+/*!
+ Opens document
+*/
bool LightApp_Study::openDocument( const QString& theFileName )
{
myDriver->ClearDriverContents();
return res;
}
-//=======================================================================
-// name : loadDocument
-/*! Purpose : Load document */
-//=======================================================================
+/*!
+ Loads document
+*/
bool LightApp_Study::loadDocument( const QString& theStudyName )
{
myDriver->ClearDriverContents();
return res;
}
-//=======================================================================
-// name : saveDocumentAs
-/*! Purpose : Save document */
-//=======================================================================
+/*!
+ Saves document
+*/
bool LightApp_Study::saveDocumentAs( const QString& theFileName )
{
SUIT_ResourceMgr* resMgr = application()->resourceMgr();
return res;
}
-//=======================================================================
-// name : saveDocument
-/*! Purpose : Save document */
-//=======================================================================
+/*!
+ Saves document
+*/
bool LightApp_Study::saveDocument()
{
ModelList list; dataModels( list );
return res;
}
-//================================================================
-// Function : closeDocument
-/*! Purpose : Close document */
-//================================================================
+/*!
+ Closes document
+*/
void LightApp_Study::closeDocument(bool permanently)
{
// Inform everybody that this study is going to close when it's most safe to,
myDriver->ClearDriverContents();
}
-//================================================================
-// Function : referencedToEntry
-/*! Purpose : Return current entry*/
-//================================================================
+/*!
+ \return real entry by entry of reference
+ \param entry - entry of reference object
+*/
QString LightApp_Study::referencedToEntry( const QString& entry ) const
{
return entry;
}
-//================================================================
-// Function : children
-/*! Purpose : Return entries of children of object*/
-//================================================================
+/*!
+ \return entries of object children
+*/
void LightApp_Study::children( const QString&, QStringList& ) const
{
}
-//================================================================
-// Function : isComponent
-/*! Purpose : Return true if entry corresponds to component*/
-//================================================================
+/*!
+ \return true if entry corresponds to component
+*/
bool LightApp_Study::isComponent( const QString& entry ) const
{
if( !root() )
return false;
}
-//================================================================
-// Function : componentDataType
-/*! Purpose : Return component data type from entry*/
-//================================================================
+/*!
+ \return component data type for entry
+*/
QString LightApp_Study::componentDataType( const QString& entry ) const
{
LightApp_DataObject* aCurObj;
return "";
}
-//================================================================
-// Function : isModified
-// Purpose :
-//================================================================
+/*!
+ \return true if study is modified
+*/
bool LightApp_Study::isModified() const
{
bool isAnyChanged = CAM_Study::isModified();
return isAnyChanged;
}
-//================================================================
-// Function : isSaved
-/*! Purpose : Check: data model is saved?*/
-//================================================================
+/*!
+ \return true if data model is saved
+*/
bool LightApp_Study::isSaved() const
{
return CAM_Study::isSaved();
}
-//=======================================================================
-// name : addComponent
-/*! Purpose : Create SComponent for module, necessary for SalomeApp study */
-//=======================================================================
+/*!
+ Creates SComponent for module, necessary for SalomeApp study
+*/
void LightApp_Study::addComponent(const CAM_DataModel* dm)
{
}
-//=======================================================================
-// name : saveModuleData
-/*! Purpose : save list file for module 'theModuleName' */
-//=======================================================================
+/*!
+ Saves list file for module 'theModuleName'
+*/
void LightApp_Study::saveModuleData(QString theModuleName, QStringList theListOfFiles)
{
int aNb = theListOfFiles.count();
myDriver->SetListOfFiles(theModuleName, aListOfFiles);
}
-//=======================================================================
-// name : openModuleData
-/*! Purpose : gets list of file for module 'theModuleNam' */
-//=======================================================================
+/*!
+ Gets list of file for module 'theModuleNam'
+*/
void LightApp_Study::openModuleData(QString theModuleName, QStringList& theListOfFiles)
{
std::vector<std::string> aListOfFiles = myDriver->GetListOfFiles(theModuleName);
theListOfFiles.append(aListOfFiles[i+1].c_str());
}
-//=======================================================================
-// name : saveStudyData
-/*! Purpose : save data from study */
-//=======================================================================
+/*!
+ Saves data from study
+*/
bool LightApp_Study::saveStudyData( const QString& theFileName )
{
ModelList list; dataModels( list );
return aRes;
}
-//=======================================================================
-// name : openStudyData
-/*! Purpose : open data for study */
-//=======================================================================
+/*!
+ Opens data for study
+*/
bool LightApp_Study::openStudyData( const QString& theFileName )
{
SUIT_ResourceMgr* resMgr = application()->resourceMgr();
return aRes;
}
-//================================================================
-// Function : openDataModel
-/*! Purpose : Open data model */
-//================================================================
+/*!
+ Opens data model
+*/
bool LightApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm )
{
if (!dm)
return false;
}
-//================================================================
-// Function : GetTmpDir
-/*! Purpose : to be used by modules*/
-//================================================================
+/*!
+ \return temporary directory for saving files of modules
+*/
std::string LightApp_Study::GetTmpDir (const char* theURL,
const bool isMultiFile)
{
return myDriver->GetTmpDir(theURL, isMultiFile);
}
-//================================================================
-// Function : GetListOfFiles
-/*! Purpose : to be used by modules*/
-//================================================================
+/*!
+ \return list of files necessary for module
+ \param theModuleName - name of module
+*/
std::vector<std::string> LightApp_Study::GetListOfFiles(const char* theModuleName) const
{
std::vector<std::string> aListOfFiles;
return aListOfFiles;
}
-//================================================================
-// Function : SetListOfFiles
-/*! Purpose : to be used by modules*/
-//================================================================
+/*!
+ Sets list of files necessary for module
+ \param theModuleName - name of module
+ \param theListOfFiles - list of files
+*/
void LightApp_Study::SetListOfFiles (const char* theModuleName, const std::vector<std::string> theListOfFiles)
{
myDriver->SetListOfFiles(theModuleName, theListOfFiles);
}
-//================================================================
-// Function : RemoveTemporaryFiles
-/*! Purpose : to be used by modules*/
-//================================================================
+/*!
+ Removes temporary files
+*/
void LightApp_Study::RemoveTemporaryFiles (const char* theModuleName, const bool isMultiFile) const
{
if (isMultiFile)
myDriver->RemoveTemporaryFiles(theModuleName, isDirDeleted);
}
-//================================================================
-// Function : components
-/*! Purpose : to be used by modules*/
-//================================================================
+/*!
+ Fills list with components names
+ \param comp - list to be filled
+*/
void LightApp_Study::components( QStringList& comp ) const
{
DataObjectList children = root()->children();
class SUIT_Application;
class CAM_DataModel;
+/*!
+ Custom study, using for open/close of documents HDF format.
+ Data of each module can be saved to different files, those
+ after that are combined into one HDF file
+*/
class LIGHTAPP_EXPORT LightApp_Study : public CAM_Study
{
Q_OBJECT
//
// See http://www.salome-platform.org/
//
-/**
-* LIGHT LightApp
-*
-* Copyright (C) 2005 CEA/DEN, EDF R&D
-*
-*
-*
-* File : LightApp_SwitchOp.h
-* Author : Sergey LITONIN
-* Module : LIGHT
-*/
#include "LightApp_SwitchOp.h"
#include "LightApp_Module.h"
//
// See http://www.salome-platform.org/
//
-/**
-* LIGHT LightApp
-*
-* Copyright (C) 2005 CEA/DEN, EDF R&D
-*
-*
-*
-* File : LightApp_SwitchOp.h
-* Author : Sergey LITONIN
-* Module : LIGHT
-*/
-
-
#ifndef LightApp_SwitchOp_H
#define LightApp_SwitchOp_H
#ifndef LightApp_UpdateFlags_H
#define LightApp_UpdateFlags_H
-/*
- Enum : UpdateFlags
- Description : Enumeration for update flags. First byte is reserved for LightApp_Module.
- Modules derived from this model must use other 3 bytes to define their
- own update flags
+/*!
+ \enum UpdateFlags
+ Enumeration for update flags. First byte is reserved for LightApp_Module.
+ Modules derived from this model must use other 3 bytes to define their
+ own update flags
*/
typedef enum
#ifndef DISABLE_VTKVIEWER
#include "SVTK_ViewModelBase.h"
+ #include "SVTK_ViewManager.h"
#include "SVTK_Selector.h"
#include "SVTK_ViewWindow.h"
#include "SVTK_Functor.h"
*/
LightApp_SVTKDataOwner
::LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
- const TColStd_IndexedMapOfInteger& theIds,
- Selection_Mode theMode,
- SALOME_Actor* theActor):
+ SUIT_Desktop* theDesktop ):
LightApp_DataOwner( theIO ),
- mySelectionMode(theMode),
- myActor(theActor)
-{
- myIds = theIds; // workaround - there is no constructor copy for the container
-}
+ myDesktop( theDesktop )
+{}
#endif
/*!
{
}
+/*!
+ \return active SVTK view window
+*/
+SVTK_ViewWindow*
+LightApp_SVTKDataOwner
+::GetActiveViewWindow() const
+{
+ if(SUIT_ViewWindow* aViewWindow = myDesktop->activeWindow())
+ return dynamic_cast<SVTK_ViewWindow*>(aViewWindow);
+
+ return NULL;
+}
+
+/*!
+ Gets dataowners ids list.
+*/
+const TColStd_IndexedMapOfInteger&
+LightApp_SVTKDataOwner
+::GetIds() const
+{
+ if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){
+ if(SVTK_Selector* aSelector = aViewWindow->GetSelector()){
+ aSelector->GetIndex(IO(),myIds);
+ }
+ }
+
+ return myIds;
+}
+
+/*!
+ Gets selection mode.
+*/
+Selection_Mode
+LightApp_SVTKDataOwner
+::GetMode() const
+{
+ if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){
+ if(SVTK_Selector* aSelector = aViewWindow->GetSelector()){
+ return aSelector->SelectionMode();
+ }
+ }
+
+ return -1;
+}
+
/*!
Gets actor pointer.
*/
LightApp_SVTKDataOwner
::GetActor() const
{
- return myActor.GetPointer();
+ if(SVTK_ViewWindow* aViewWindow = GetActiveViewWindow()){
+ using namespace SVTK;
+ return Find<SALOME_Actor>(aViewWindow->getRenderer()->GetActors(),TIsSameIObject<SALOME_Actor>(IO()));
+ }
+
+ return NULL;
}
#endif
::getSelection( SUIT_DataOwnerPtrList& aList ) const
{
if(myViewer){
- if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){
- if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(aViewMgr->getActiveView())){
- if(SVTK_Selector* aSelector = aView->GetSelector()){
- Selection_Mode aMode = aSelector->SelectionMode();
- const SALOME_ListIO& aListIO = aSelector->StoredIObjects();
- SALOME_ListIteratorOfListIO anIter(aListIO);
- for(; anIter.More(); anIter.Next()){
- Handle(SALOME_InteractiveObject) anIO = anIter.Value();
- if(anIO->hasEntry()){
- TColStd_IndexedMapOfInteger anIds;
- aSelector->GetIndex(anIO,anIds);
- SALOME_Actor* anActor = aSelector->GetActor(anIO);
- if( !anActor ){
- using namespace SVTK;
- anActor = Find<SALOME_Actor>(aView->getRenderer()->GetActors(),TIsSameIObject<SALOME_Actor>(anIO));
- }
- aList.append(new LightApp_SVTKDataOwner(anIO,anIds,aMode,anActor));
+ if(SUIT_ViewManager* aViewManager = myViewer->getViewManager()){
+ if(SVTK_ViewManager* aViewMgr = dynamic_cast<SVTK_ViewManager*>(aViewManager)){
+ if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(aViewMgr->getActiveView())){
+ if(SVTK_Selector* aSelector = aView->GetSelector()){
+ const SALOME_ListIO& aListIO = aSelector->StoredIObjects();
+ SALOME_ListIteratorOfListIO anIter(aListIO);
+ for(; anIter.More(); anIter.Next()){
+ Handle(SALOME_InteractiveObject) anIO = anIter.Value();
+ if(anIO->hasEntry())
+ aList.append(new LightApp_SVTKDataOwner(anIO,aViewMgr->getDesktop()));
}
}
}
aSelector->SetSelectionMode(anOwner->GetMode());
Handle(SALOME_InteractiveObject) anIO = anOwner->IO();
- if( anOwner->GetActor() )
- aSelector->AddIObject( anOwner->GetActor() );
- else
- aSelector->AddIObject(anIO);
+ aSelector->AddIObject(anIO);
anAppendList.Append(anIO);
aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false);
#include "LightApp.h"
#include "LightApp_DataOwner.h"
+class SUIT_Desktop;
+
#ifndef DISABLE_VTKVIEWER
#include <vtkSmartPointer.h>
#include <TColStd_IndexedMapOfInteger.hxx>
#include "SALOME_InteractiveObject.hxx"
#endif
class SALOME_Actor;
+ class SVTK_ViewWindow;
class SVTK_ViewModelBase;
#endif
#ifndef DISABLE_VTKVIEWER
#ifndef DISABLE_SALOMEOBJECT
LightApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
- const TColStd_IndexedMapOfInteger& theIds,
- Selection_Mode theMode = ActorSelection,
- SALOME_Actor* theActor = NULL);
+ SUIT_Desktop* theDesktop );
#endif
virtual ~LightApp_SVTKDataOwner();
/*!Gets dataowners ids list.*/
- const TColStd_IndexedMapOfInteger& GetIds() const
- {
- return myIds;
- }
+ const TColStd_IndexedMapOfInteger& GetIds() const;
/*!Gets selection mode.*/
- Selection_Mode GetMode() const
- {
- return mySelectionMode;
- }
+ Selection_Mode GetMode() const;
+ /*!Finds corresponding actor in the active viewer.*/
SALOME_Actor* GetActor() const;
protected:
- TColStd_IndexedMapOfInteger myIds;
- Selection_Mode mySelectionMode;
- vtkSmartPointer<SALOME_Actor> myActor;
+ mutable TColStd_IndexedMapOfInteger myIds;
+
+ SVTK_ViewWindow* GetActiveViewWindow() const;
+ SUIT_Desktop* myDesktop;
+
#else
LightApp_SVTKDataOwner( const QString& );
#endif
/*!
- Provide vtk selection of data owners.
+ \class LightApp_VTKSelector
+ Custom selector to get/set selection from object browser
*/
class LIGHTAPP_EXPORT LightApp_VTKSelector : public SUIT_Selector
{
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : OCC team (OCN)
# Module : LightApp
LightApp.xml
CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(OCC_INCLUDES) \
- $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
+ $(HDF5_INCLUDES) $(KERNEL_CXXFLAGS)
ifneq ($(DISABLE_VTKVIEWER),yes)
CPPFLAGS+= $(VTK_INCLUDES)
endif
LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lLogWindow $(CAS_KERNEL) -lSalomePrs \
- $(HDF5_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeHDFPersist
+ $(HDF5_LIBS) $(KERNEL_LDFLAGS) -lSalomeHDFPersist
ifneq ($(DISABLE_SALOMEOBJECT),yes)
LIBS+= -lSalomeObject
<document>
- <section name="desktop" >
- <parameter name="state" value="normal"/>
- <parameter name="pos_x" value="center"/>
- <parameter name="pos_y" value="center"/>
- <parameter name="width" value="800"/>
- <parameter name="height" value="600"/>
- </section>
<section name="launch">
+ <!-- SALOME launching parameters -->
<parameter name="gui" value="yes"/>
<parameter name="splash" value="yes"/>
<parameter name="file" value="no"/>
<parameter name="modules" value="LIGHT"/>
</section>
<section name="language">
+ <!-- Language settings (resource manager)-->
<parameter name="language" value="en"/>
<parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
</section>
+ <section name="splash" >
+ <!-- Splash screen settings -->
+ <parameter name="image" value="${SUITRoot}/resources/icon_about.png" />
+ <parameter name="info" value="%A : %V" />
+ <parameter name="text_colors" value="#F0CC6D|#7F7138" />
+ </section>
<section name="resources">
+ <!-- Resource directories (resource manager)-->
<parameter name="SUIT" value="${SUITRoot}/resources"/>
<parameter name="STD" value="${SUITRoot}/resources"/>
<parameter name="Plot2d" value="${SUITRoot}/resources"/>
<parameter name="CAM" value="${SUITRoot}/resources"/>
<parameter name="LightApp" value="${SUITRoot}/resources"/>
<parameter name="SVTK" value="${SUITRoot}/resources"/>
- <parameter name="LIGHT" value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
<parameter name="ToolsGUI" value="${SUITRoot}/resources"/>
+ <parameter name="LIGHT" value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
+ </section>
+ <section name="desktop" >
+ <!-- Default GUI desktop state, position, size -->
+ <parameter name="state" value="normal"/>
+ <parameter name="pos_x" value="center"/>
+ <parameter name="pos_y" value="center"/>
+ <parameter name="width" value="800"/>
+ <parameter name="height" value="600"/>
</section>
<section name="LIGHT">
+ <!-- LIGHT module settings -->
<parameter name="name" value="Light"/>
<parameter name="icon" value="LIGHT.png"/>
</section>
-
-<!-- values below this line are just an example, they are not used -->
- <section name="application">
+ <section name="PyConsole">
+ <!-- Python console preferences -->
+ <parameter name="font" value="Helvetic,12" />
+ <parameter name="additional_families" value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida"/>
+ </section>
+ <section name="FileDlg">
+ <!-- "Open/Save File" dialog box preferences-->
<parameter name="QuickDirList" value=""/>
- <!-- Here go other common user preferences -->
</section>
<section name="Study">
- <parameter value="true" name="store_positions" />
+ <!-- General study settings -->
+ <parameter name="store_positions" value="true" />
</section>
<section name="OCCViewer" >
- <parameter value="35, 136, 145" name="background" />
- <parameter value="1" name="iso_number_u" />
- <parameter value="1" name="iso_number_v" />
- <parameter value="100" name="trihedron_size" />
+ <!-- OCC viewer preferences -->
+ <parameter name="background" value="35, 136, 145" />
+ <parameter name="iso_number_u" value="1" />
+ <parameter name="iso_number_v" value="1" />
+ <parameter name="trihedron_size" value="100" />
</section>
<section name="VTKViewer" >
- <parameter value="0, 0, 0" name="background" />
- <parameter value="100" name="trihedron_size" />
+ <!-- OCC viewer preferences -->
+ <parameter name="background" value="0, 0, 0"/>
+ <parameter name="trihedron_size" value="100" />
</section>
<section name="Plot2d" >
- <parameter value="255, 255, 255" name="Background" />
- <parameter value="1" name="CurveType" />
- <parameter value="0" name="HorScaleMode" />
- <parameter value="1" name="LegendPos" />
- <parameter value="9" name="MarkerSize" />
- <parameter value="true" name="ShowLegend" />
- <parameter value="0" name="VerScaleMode" />
+ <!-- Plot2d viewer preferences -->
+ <parameter name="Background" value="255, 255, 255" />
+ <parameter name="CurveType" value="1" />
+ <parameter name="HorScaleMode" value="0" />
+ <parameter name="LegendPos" value="1" />
+ <parameter name="MarkerSize" value="9" />
+ <parameter name="ShowLegend" value="true" />
+ <parameter name="VerScaleMode" value="0" />
</section>
<section name="SUPERVGraph" >
- <parameter value="144, 208, 211" name="Background" />
- <parameter value="63, 213, 255" name="Title" />
- </section>
- <!-- Here go optional sections for other modules -->
- <section name="resources">
- <parameter name="salome" value="${KERNEL_ROOT_DIR}/share/salome/res"/>
- <!-- Here go resource directories for other modules -->
+ <!-- Supervision viewer preferences -->
+ <parameter name="Background" value="144, 208, 211" />
+ <parameter name="Title" value="63, 213, 255" />
</section>
</document>
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgstr "Module activation cancelled"
msgid "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"
-msgstr "External browser \"%1\" can not show help page \"%2\""
+msgstr "External browser \"%1\" can not show help page \"%2\". Do you want to change it in preferences?"
msgid "LightApp_Application::DEFINE_EXTERNAL_BROWSER"
-msgstr "Define external browser in preferences"
+msgstr "External browser is not found. Do you want to define it in preferences?"
msgid "LightApp_Application::DATA_MODELS"
msgstr "Data models"
msgid "LightApp_Application::PREF_ASCII_FILE"
msgstr "ASCII save"
-msgid "LightApp_Application::PREF_UNDO_LEVEL"
-msgstr "Undo level"
-
msgid "LightApp_Application::PREF_STORE_POS"
msgstr "Store positions of windows"
msgstr "Warning"
msgid "LightApp_PreferencesDlg::DEFAULT_QUESTION"
-msgstr "Do you want to retrieve default preferences?"
+msgstr "Do you want to retrieve default preferences?"
+
+msgid "LightApp_PreferencesDlg::IMPORT_PREFERENCES"
+msgstr "Import preferences"
+
+msgid "LightApp_PreferencesDlg::IMPORT_BTN_TEXT"
+msgstr "Import"
//=======================================================================================
msgid "LightApp_NameDlg::NAME_LBL"
msgstr "Name: "
+
#define DEFAULT_SEPARATOR "***"
-//****************************************************************
+/*!
+ Converts rich text to plain text
+*/
static QString plainText( const QString& richText )
{
QString aText = richText;
return aText;
}
-//****************************************************************
-
+/*!
+ Default constructor
+*/
LogWindow::LogWindow( QWidget* parent )
: QFrame( parent ),
SUIT_PopupClient()
createActions();
}
+/*!
+ Destructor
+*/
LogWindow::~LogWindow()
{
}
+/*!
+ Custom event handler
+*/
bool LogWindow::eventFilter( QObject* o, QEvent* e )
{
if ( o == myView->viewport() && e->type() == QEvent::ContextMenu )
return QFrame::eventFilter( o, e );
}
+/*!
+ Sets banner (title of message log)
+ \param banner - new title
+*/
void LogWindow::setBanner( const QString& banner )
{
myBanner = banner;
clear( false );
}
+/*!
+ Set separator (line printing between messages)
+ \param separator - new separator
+*/
void LogWindow::setSeparator( const QString& separator )
{
mySeparator = separator;
clear( false );
}
+/*!
+ Puts message to log window
+ \param message - text of message
+ \addSeparator - if it is true, then separator is added to tail of message log
+*/
void LogWindow::putMessage( const QString& message, bool addSeparator )
{
myView->append( message );
myView->scrollToBottom();
}
+/*!
+ Clears message log
+ \param clearHistory - if it is true, then also history is cleared
+*/
void LogWindow::clear( bool clearHistory )
{
myView->clear();
myBannerSize = 0;
}
+/*!
+ Saves log to file
+ \param fileName - name of file
+*/
bool LogWindow::saveLog( const QString& fileName )
{
QFile file( fileName );
return true;
}
+/*!
+ Creates actions
+*/
void LogWindow::createActions()
{
QAction* a = new QAction( "", tr( "&Copy" ), 0, this );
myActions.insert( SaveToFileId, a );
}
+/*!
+ Redefined virtual method for popup filling
+*/
void LogWindow::contextMenuPopup( QPopupMenu* popup )
{
myActions[ CopyId ]->addTo( popup );
updateActions();
}
+/*!
+ Updates enable status of actions
+*/
void LogWindow::updateActions()
{
int paraFrom, paraTo, indexFrom, indexTo;
myActions[ SaveToFileId ]->setEnabled( myHistory.count() > 0 );
}
+/*!
+ SLOT: called if user click "Save" in popup
+*/
void LogWindow::onSaveToFile()
{
SUIT_Application* app = SUIT_Session::session()->activeApplication();
SUIT_MessageBox::error1( this, tr( "Error" ), tr( "Can't save file" ), tr( "OK" ) );
}
+/*!
+ SLOT: called if user click "Select all" in popup
+*/
void LogWindow::onSelectAll()
{
if ( myView )
myView->selectAll();
}
+/*!
+ SLOT: called if user click "Clear" in popup
+*/
void LogWindow::onClear()
{
clear( false );
}
+/*!
+ SLOT: called if user click "Copy" in popup
+*/
void LogWindow::onCopy()
{
if ( myView )
class QAction;
class QTextBrowser;
+/*!
+ \class LogWindow
+ Widget, showing logs message. Allows to show, to clear, to copy messages and to save then to file
+*/
class LOGWINDOW_EXPORT LogWindow : public QFrame, public SUIT_PopupClient
{
Q_OBJECT
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : LogWindow
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(AIS_InteractiveObject)
+ Smart pointer (handle) to AIS_InteractiveObject
+*/
class Handle(AIS_InteractiveObject);
class SALOME_AISObject;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISObject);
+/*!
+ \class Handle(SALOME_AISObject)
+ Smart pointer (handle) to SALOME_AISObject
+*/
class Handle(SALOME_AISObject) : public Handle(AIS_InteractiveObject) {
public:
inline void* operator new(size_t,void* anAddress)
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(AIS_Shape)
+ Smart pointer (handle) to AIS_Shape
+*/
class Handle(AIS_Shape);
class SALOME_AISShape;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_AISShape);
+/*!
+ \class Handle(SALOME_AISShape)
+ Smart pointer (handle) to SALOME_AISShape
+*/
class Handle(SALOME_AISShape) : public Handle(AIS_Shape) {
public:
inline void* operator new(size_t,void* anAddress)
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(MMgt_TShared)
+ Smart pointer (handle) to MMgt_TShared
+*/
class Handle(MMgt_TShared);
class SALOME_Filter;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_Filter);
+/*!
+ \class Handle(SALOME_Filter)
+ Smart pointer (handle) to SALOME_Filter
+*/
class Handle(SALOME_Filter) : public Handle(MMgt_TShared) {
public:
inline void* operator new(size_t,void* anAddress)
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(MMgt_TShared)
+ Smart pointer (handle) to MMgt_TShared
+*/
class Handle(MMgt_TShared);
class SALOME_InteractiveObject;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_InteractiveObject);
+/*!
+ \class Handle(SALOME_InteractiveObject)
+ Smart pointer (handle) to SALOME_InteractiveObject
+*/
class Handle(SALOME_InteractiveObject) : public Handle(MMgt_TShared) {
public:
void* operator new(size_t,void* anAddress)
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(TCollection_MapNode)
+ Smart pointer (handle) to TCollection_MapNode
+*/
class Handle(TCollection_MapNode);
class SALOME_ListNodeOfListIO;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_ListNodeOfListIO);
+/*!
+ \class Handle(SALOME_ListNodeOfListIO)
+ Smart pointer (handle) to SALOME_ListNodeOfListIO
+*/
class Handle(SALOME_ListNodeOfListIO) : public Handle(TCollection_MapNode) {
public:
void* operator new(size_t,void* anAddress)
class Standard_Transient;
class Handle_Standard_Type;
+/*!
+ \class Handle(SALOME_Filter)
+ Smart pointer (handle) to SALOME_Filter
+*/
class Handle(SALOME_Filter);
class SALOME_TypeFilter;
Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOME_TypeFilter);
+/*!
+ \class Handle(SALOME_TypeFilter)
+ Smart pointer (handle) to SALOME_TypeFilter
+*/
class Handle(SALOME_TypeFilter) : public Handle(SALOME_Filter) {
public:
inline void* operator new(size_t,void* anAddress)
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# source path
top_srcdir=@top_srcdir@
top_builddir=../..
//using namespace std;
#include "SALOME_AISShape.ixx"
-SALOME_AISShape::SALOME_AISShape(const TopoDS_Shape& shape): AIS_Shape(shape) {
+/*!
+ Constructor
+ \param shape - TopoDS shape
+*/
+SALOME_AISShape::SALOME_AISShape(const TopoDS_Shape& shape)
+: AIS_Shape(shape)
+{
}
#include "SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger.hxx"
#endif
using namespace std;
+
+/*!
+ Destructor
+*/
SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {}
+/*!
+ \return OCC Handle Type
+*/
Standard_EXPORT Handle_Standard_Type& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger_Type_()
{
}
-// DownCast method
-// allow safe downcasting
-//
+/*!
+ DownCast method: allows safe downcasting
+*/
const Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) _anOtherObject;
return _anOtherObject ;
}
+
+/*!
+ \return OCC Handle dynamic Type
+*/
const Handle(Standard_Type)& SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::DynamicType() const
{
return STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) ;
}
+
+/*!
+ \return true if other type is the same
+ \param AType - type to be checked
+*/
Standard_Boolean SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::IsKind(const Handle(Standard_Type)& AType) const
{
return (STANDARD_TYPE(SALOME_DataMapNodeOfDataMapOfIOMapOfInteger) == AType || TCollection_MapNode::IsKind(AType));
}
+/*!
+ Destructor
+*/
Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger::~Handle_SALOME_DataMapNodeOfDataMapOfIOMapOfInteger() {}
#define TheKey Handle_SALOME_InteractiveObject
#define TheKey_hxx "SALOME_InteractiveObject.hxx"
#include "SALOME_InteractiveObject.ixx"
+/*!
+ Default constructor
+*/
SALOME_InteractiveObject::SALOME_InteractiveObject()
{
myEntry = "";
myReference = "";
}
+/*!
+ Constructor
+ \param anEntry - entry of object
+ \param aComponentDataType - component data type name
+ \param aName - name of object
+*/
SALOME_InteractiveObject::SALOME_InteractiveObject(const char* anEntry,
const char* aComponentDataType,
const char* aName):
myReference("")
{}
+/*!
+ Sets entry
+ \param anEntry - new entry of object
+*/
void SALOME_InteractiveObject::setEntry(const char* anEntry){
myEntry = anEntry;
}
+/*!
+ \return entry
+*/
const char* SALOME_InteractiveObject::getEntry(){
return myEntry.c_str();
}
+/*!
+ Sets component data type
+ \param aComponentDataType - component data type name
+*/
void SALOME_InteractiveObject::setComponentDataType(const char* aComponentDataType){
myComponentDataType = aComponentDataType;
}
+/*!
+ \return component data type
+*/
const char* SALOME_InteractiveObject::getComponentDataType(){
return myComponentDataType.c_str();
}
+/*!
+ Sets name
+ \param aName - new name of object
+*/
void SALOME_InteractiveObject::setName(const char* aName){
myName = aName;
}
+/*!
+ \return name
+*/
const char* SALOME_InteractiveObject::getName(){
return myName.c_str();
}
+/*!
+ \return true if entry isn't empty
+*/
Standard_Boolean SALOME_InteractiveObject::hasEntry(){
return myEntry != "";
}
+/*!
+ \return true if objects have same entries
+ \param anIO - other object
+*/
Standard_Boolean SALOME_InteractiveObject::isSame(const Handle(SALOME_InteractiveObject)& anIO ){
if ( anIO->hasEntry() && this->hasEntry() ) {
if ( myEntry == anIO->getEntry() )
return Standard_False;
}
+/*!
+ \return true if component data types are same
+ \param ComponentDataType - component data type to be checked
+*/
Standard_Boolean SALOME_InteractiveObject::isComponentType(const char* ComponentDataType){
if ( myComponentDataType == ComponentDataType )
return Standard_True;
return Standard_False;
}
+/*!
+ \return true if object has reference
+*/
Standard_Boolean SALOME_InteractiveObject::hasReference()
{
return myReference != "";
}
+/*!
+ \return reference
+*/
const char* SALOME_InteractiveObject::getReference()
{
return myReference.c_str();
}
+/*!
+ Sets reference
+ \param aReference - new reference
+*/
void SALOME_InteractiveObject::setReference(const char* aReference)
{
myReference = aReference;
#include <Standard_Macro.hxx>
#endif
+/*!
+ \class SALOME_ListIO
+ List of SALOME interactive objects
+*/
class SALOME_ListIO {
public:
class SALOME_ListIO;
class SALOME_ListIteratorOfListIO;
-
+/*!
+ \class SALOME_ListNodeOfListIO
+ Auxiliary class, represents list node for SALOME_ListIO
+*/
class SALOME_ListNodeOfListIO : public TCollection_MapNode {
public:
#include "SALOME_ListIteratorOfListIO.hxx"
#endif
using namespace std;
+
+/*!
+ Destructor
+*/
SALOME_ListNodeOfListIO::~SALOME_ListNodeOfListIO() {}
-
+/*!
+ \return OCC Handle Type
+*/
Standard_EXPORT Handle_Standard_Type& SALOME_ListNodeOfListIO_Type_()
{
}
-// DownCast method
-// allow safe downcasting
-//
+/*!
+ DownCast method, allows safe downcasting
+*/
const Handle(SALOME_ListNodeOfListIO) Handle(SALOME_ListNodeOfListIO)::DownCast(const Handle(Standard_Transient)& AnObject)
{
Handle(SALOME_ListNodeOfListIO) _anOtherObject;
return _anOtherObject ;
}
+
+/*!
+ \return OCC Handle dynamic Type
+*/
const Handle(Standard_Type)& SALOME_ListNodeOfListIO::DynamicType() const
{
return STANDARD_TYPE(SALOME_ListNodeOfListIO) ;
}
+
+/*!
+ \return true if other type is the same
+ \param AType - type to be checked
+*/
Standard_Boolean SALOME_ListNodeOfListIO::IsKind(const Handle(Standard_Type)& AType) const
{
return (STANDARD_TYPE(SALOME_ListNodeOfListIO) == AType || TCollection_MapNode::IsKind(AType));
}
+/*!
+ Destructor
+*/
Handle_SALOME_ListNodeOfListIO::~Handle_SALOME_ListNodeOfListIO() {}
#define Item Handle_SALOME_InteractiveObject
#define Item_hxx "SALOME_InteractiveObject.hxx"
#include "SALOME_InteractiveObject.hxx"
using namespace std;
+/*!
+ Constructor
+ \param TheKind - type of filter
+*/
SALOME_TypeFilter::SALOME_TypeFilter(const Standard_CString TheKind):
myKind(TheKind){}
+/*!
+ \return true if object passes filter
+ \param anObj - object to be checked
+*/
Standard_Boolean SALOME_TypeFilter::IsOk(const Handle(SALOME_InteractiveObject)& anObj) const
{
return anObj->isComponentType( myKind );
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : OCCViewer
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "OCCViewer_ClippingDlg.h"
#include <QtxDblSpinBox.h>
+#include <QtxAction.h>
#include "SUIT_Session.h"
#include "SUIT_ViewWindow.h"
#include "OCCViewer_ViewWindow.h"
#include "OCCViewer_ViewPort3d.h"
-//#include "utilities.h"
-
#include <V3d_View.hxx>
-#include <V3d.hxx>
-#include <V3d_Plane.hxx>
+//#include <V3d.hxx>
#include <Geom_Plane.hxx>
#include <Prs3d_Presentation.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <qcombobox.h>
#include <qcheckbox.h>
-//=================================================================================
-// class : OCCViewer_ClippingDlg()
-// purpose :
-//=================================================================================
+/*!
+ Constructor
+ \param view - view window
+ \param parent - parent widget
+ \param name - dialog name
+ \param modal - is this dialog modal
+ \param fl - flags
+*/
OCCViewer_ClippingDlg::OCCViewer_ClippingDlg( OCCViewer_ViewWindow* view, QWidget* parent, const char* name, bool modal, WFlags fl )
- : QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ), myView( view )
+: QDialog( parent, "OCCViewer_ClippingDlg", modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+ myView( view )
{
setCaption( tr( "Clipping" ) );
myBusy = false;
}
-//=================================================================================
-// function : ~ OCCViewer_ClippingDlg()
-// purpose : Destroys the object and frees any allocated resources
-//=================================================================================
+/*!
+ Destructor
+ Destroys the object and frees any allocated resources
+*/
OCCViewer_ClippingDlg::~ OCCViewer_ClippingDlg()
{
// no need to delete child widgets, Qt does it all for us
}
-//=================================================================================
-// function : closeEvent
-// purpose :
-//=================================================================================
+/*!
+ Custom handling of close event: erases preview
+*/
void OCCViewer_ClippingDlg::closeEvent( QCloseEvent* e )
{
erasePreview();
+
+ // Set the clipping plane back
+ Handle(V3d_View) aView3d = myView->getViewPort()->getView();
+ if ( !aView3d.IsNull() && !myClippingPlane.IsNull() )
+ aView3d->SetPlaneOn( myClippingPlane );
+
+ if (!myView->isCuttingPlane())
+ myAction->setOn( false );
+
QDialog::closeEvent( e );
}
-//=================================================================================
-// function : showEvent
-// purpose :
-//=================================================================================
+/*!
+ Custom handling of show event: displays preview
+*/
void OCCViewer_ClippingDlg::showEvent( QShowEvent* e )
{
+ ReserveClippingPlane();
+
QDialog::showEvent( e );
onPreview( PreviewChB->isChecked() );
}
-//=================================================================================
-// function : hideEvent
-// purpose :
-//=================================================================================
+/*!
+ Custom handling of hide event: erases preview
+*/
void OCCViewer_ClippingDlg::hideEvent( QHideEvent* e )
{
erasePreview();
}
-//=================================================================================
-// function : ClickOnClose()
-// purpose :
-//=================================================================================
+/*!
+ SLOT on close button click: erases preview and rejects dialog
+*/
void OCCViewer_ClippingDlg::ClickOnClose()
{
erasePreview();
+
+ // Set the clipping plane back
+ Handle(V3d_View) aView3d = myView->getViewPort()->getView();
+ if ( !aView3d.IsNull() && !myClippingPlane.IsNull() )
+ aView3d->SetPlaneOn( myClippingPlane );
+
+ if (!myView->isCuttingPlane())
+ myAction->setOn( false );
+
reject();
}
-//=================================================================================
-// function : ClickOnApply()
-// purpose :
-//=================================================================================
+/*!
+ SLOT on apply button click: sets cutting plane
+*/
void OCCViewer_ClippingDlg::ClickOnApply()
{
qApp->processEvents();
SpinBox_Dx->value(), SpinBox_Dy->value(), SpinBox_Dz->value() );
QApplication::restoreOverrideCursor();
-
+
erasePreview();
+
+ ReserveClippingPlane();
}
-
-//=================================================================================
-// function : onReset()
-// purpose :
-//=================================================================================
+/*!
+ SLOT on reset button click: sets default values
+*/
void OCCViewer_ClippingDlg::onReset()
{
myBusy = true;
}
}
-
-//=================================================================================
-// function : onInvert()
-// purpose :
-//=================================================================================
+/*!
+ SLOT on invert button click: inverts normal of cutting plane
+*/
void OCCViewer_ClippingDlg::onInvert()
{
double Dx = SpinBox_Dx->value();
}
}
-
-//=================================================================================
-// function : onModeChanged()
-// purpose :
-//=================================================================================
+/*!
+ SLOT: called on mode changed
+*/
void OCCViewer_ClippingDlg::onModeChanged( int mode )
{
bool isUserMode = (mode==0);
}
-//================================================================
-// Function : displayPreview
-// Purpose :
-//================================================================
+/*!
+ Displays preview of clipping plane
+*/
void OCCViewer_ClippingDlg::displayPreview()
{
if ( myBusy || !isValid() )
myPreviewPlane = new AIS_Plane( new Geom_Plane( aBasePnt, aNormal ) );
myPreviewPlane->SetSize( aSize, aSize );
+ // Deactivate clipping planes
+ myView->getViewPort()->getView()->SetPlaneOff();
+
ic->Display( myPreviewPlane, 1, -1, false );
ic->SetWidth( myPreviewPlane, 10, false );
ic->SetMaterial( myPreviewPlane, Graphic3d_NOM_PLASTIC, false );
}
-//================================================================
-// Function : erasePreview
-// Purpose :
-//================================================================
+/*!
+ Erases preview of clipping plane
+*/
void OCCViewer_ClippingDlg::erasePreview ()
{
OCCViewer_Viewer* anOCCViewer = (OCCViewer_Viewer*)myView->getViewManager()->getViewModel();
}
-//================================================================
-// Function : onValueChanged
-// Purpose :
-//================================================================
+/*!
+ SLOT: called on value changes (co-ordinates of point or normal)
+*/
void OCCViewer_ClippingDlg::onValueChanged()
{
if ( PreviewChB->isChecked() )
}
-//================================================================
-// Function : onPreview
-// Purpose :
-//================================================================
+/*!
+ SLOT: called on preview check box toggled
+*/
void OCCViewer_ClippingDlg::onPreview( bool on )
{
erasePreview();
displayPreview();
}
-//================================================================
-// Function : onPreview
-// Purpose :
-//================================================================
+/*!
+ \return true if plane parameters are valid
+*/
bool OCCViewer_ClippingDlg::isValid()
{
return ( SpinBox_Dx->value()!=0 || SpinBox_Dy->value()!=0 || SpinBox_Dz->value()!=0 );
}
+
+/*!
+ Remember the current clipping plane
+*/
+void OCCViewer_ClippingDlg::ReserveClippingPlane()
+{
+ Handle(V3d_View) aView3d = myView->getViewPort()->getView();
+ if ( !aView3d.IsNull() )
+ {
+ aView3d->InitActivePlanes();
+ if ( aView3d->MoreActivePlanes() )
+ myClippingPlane = aView3d->ActivePlane();
+ }
+}
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef OCCVIEWER_CLIPPINGDLG_H
#define OCCVIEWER_CLIPPINGDLG_H
#include <qdialog.h>
#include <AIS_Plane.hxx>
+#include <V3d_Plane.hxx>
class QGroupBox;
class QLabel;
class QComboBox;
class QCheckBox;
class QtxDblSpinBox;
+class QtxAction;
class OCCViewer_ViewWindow;
-//=================================================================================
-// class : OCCViewer_ClippingDlg
-// purpose :
-//=================================================================================
+/*!
+ \class OCCViewer_ClippingDlg
+ \brief Dialog allowing to assign parameters of clipping plane
+*/
class OCCViewer_ClippingDlg : public QDialog
{
Q_OBJECT
public:
OCCViewer_ClippingDlg(OCCViewer_ViewWindow* , QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
~OCCViewer_ClippingDlg();
+
+ void SetAction( QtxAction* theAction ) { myAction = theAction; }
private :
virtual void hideEvent ( QHideEvent * );
void displayPreview();
void erasePreview();
+ void ReserveClippingPlane();
bool isValid();
OCCViewer_ViewWindow* myView;
Handle(AIS_Plane) myPreviewPlane;
+ Handle(V3d_Plane) myClippingPlane;
bool myBusy;
+
+ QtxAction* myAction;
private slots:
void ClickOnApply();
#include <qpainter.h>
#include <qimage.h>
+/*!
+ Constructor
+*/
OCCViewer_CreateRestoreViewDlg::OCCViewer_CreateRestoreViewDlg( QWidget* aWin, OCCViewer_Viewer* curModel )
: QDialog( aWin )
{
connect( theClearAll, SIGNAL( clicked() ), this, SLOT( clearList() ) );
}
+/*!
+ Destructor
+*/
OCCViewer_CreateRestoreViewDlg::~OCCViewer_CreateRestoreViewDlg()
{
}
+/*!
+ Changes image in accordance with item
+ \param curItem - item contains info about view parameters
+*/
void OCCViewer_CreateRestoreViewDlg::changeImage( QListBoxItem* curItem )
{
if( curItem && myListBox->isEditEnabled() )
}
}
+/*!
+ \return current view parameters (corresponding to current item)
+*/
viewAspect OCCViewer_CreateRestoreViewDlg::currentItem() const
{
return myCurrentItem;
}
+/*!
+ Deletes selected items from list view
+*/
void OCCViewer_CreateRestoreViewDlg::deleteSelectedItems()
{
if( myListBox->count() && myListBox->isEditEnabled() )
}
}
+/*!
+ Clears list of view aspects
+*/
void OCCViewer_CreateRestoreViewDlg::clearList()
{
myListBox->clear();
myParametersMap.clear();
}
+/*!
+ \return const reference to all view aspects
+*/
const viewAspectList& OCCViewer_CreateRestoreViewDlg::parameters() const
{
return myParametersMap;
}
+/*!
+ Renames key of view aspect map in accordance with item name
+ \param anItem - item
+*/
void OCCViewer_CreateRestoreViewDlg::editItemText( QListBoxItem* anItem )
{
int index = anItem->listBox()->index( anItem );
myParametersMap[ index ].name = anItem->text().latin1();
}
+/*!
+ Custom event filter
+*/
bool OCCViewer_CreateRestoreViewDlg::eventFilter( QObject* anObj, QEvent* anEv )
{
if( anEv->type() == QEvent::KeyPress )
return QWidget::eventFilter( anObj, anEv );
}
+/*!
+ SLOT: called on OK click, emits dlgOk() and closes dialog
+*/
void OCCViewer_CreateRestoreViewDlg::OKpressed()
{
emit dlgOk();
//
// See http://www.salome-platform.org/
//
-/***********************************************************************
-
- FONCTION :
- ----------
- Classe OCCViewer_VService :
-
- HISTORIQUE DES MODIFICATIONS :
- --------------------------------
- 00-09-92 : GG ; Creation.
- 25-02-98 : FMN ; PERF.27: Optimisation de la création d'une vue à partir d'une vue existante
-
- REMARQUES :
- -----------
-
-************************************************************************/
-
-/*----------------------------------------------------------------------*/
-/*
- * Includes
- */
-//just to load the OpenGl shared library
-//#include <OpenGl_GraphicDriver.hxx>
#include "OCCViewer_VService.h"
#include <V3d_Viewer.hxx>
int OCCViewer_ViewManager::myMaxId = 0;
-//***************************************************************/
+/*!
+ Constructor
+*/
OCCViewer_ViewManager::OCCViewer_ViewManager( SUIT_Study* study, SUIT_Desktop* theDesktop, bool DisplayTrihedron )
: SUIT_ViewManager( study, theDesktop )
{
setViewModel( new OCCViewer_Viewer( DisplayTrihedron ) );
}
-//***************************************************************/
+/*!
+ Destructor
+*/
OCCViewer_ViewManager::~OCCViewer_ViewManager()
{
}
-//***************************************************************/
+/*!
+ Sets view name
+ \param theView - view to assign name
+*/
void OCCViewer_ViewManager::setViewName(SUIT_ViewWindow* theView)
{
int aPos = myViews.find(theView);
theView->setCaption( tr( "OCC_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) );
}
-//***************************************************************/
+/*!
+ Fills popup menu with custom actions
+ \param popup - popup menu to be filled with
+*/
void OCCViewer_ViewManager::contextMenuPopup( QPopupMenu* popup )
{
SUIT_ViewManager::contextMenuPopup( popup );
#include <Prs3d_DatumAspect.hxx>
#include <Prs3d_LineAspect.hxx>
+/*!
+ Constructor
+ \param DisplayTrihedron - is trihedron displayed
+*/
OCCViewer_Viewer::OCCViewer_Viewer( bool DisplayTrihedron )
: SUIT_ViewModel(),
myBgColor( Qt::black )
myMultiSelectionEnabled = true;
}
-
+/*!
+ Destructor
+*/
OCCViewer_Viewer::~OCCViewer_Viewer()
{
}
+/*!
+ \return background color of viewer
+*/
QColor OCCViewer_Viewer::backgroundColor() const
{
return myBgColor;
}
+/*!
+ Sets background color
+ \param c - new background color
+*/
void OCCViewer_Viewer::setBackgroundColor( const QColor& c )
{
if ( c.isValid() )
myBgColor = c;
}
+/*!
+ Start initialization of view window
+ \param view - view window to be initialized
+*/
void OCCViewer_Viewer::initView( OCCViewer_ViewWindow* view )
{
if ( view ) {
}
}
-
+/*!
+ Creates new view window
+ \param theDesktop - main window of application
+*/
SUIT_ViewWindow* OCCViewer_Viewer::createView( SUIT_Desktop* theDesktop )
{
OCCViewer_ViewWindow* view = new OCCViewer_ViewWindow(theDesktop, this);
return view;
}
-//*********************************************************************
+/*!
+ Sets new view manager
+ \param theViewManager - new view manager
+*/
void OCCViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
{
SUIT_ViewModel::setViewManager(theViewManager);
}
}
-
-//*********************************************************************
+/*!
+ SLOT: called on mouse button press, stores current mouse position as start point for transformations
+*/
void OCCViewer_Viewer::onMousePress(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent)
{
myStartPnt.setX(theEvent->x()); myStartPnt.setY(theEvent->y());
}
-
-//*********************************************************************
+/*!
+ SLOT: called on mouse move, processes transformation or hilighting
+*/
void OCCViewer_Viewer::onMouseMove(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent)
{
if (!mySelectionEnabled) return;
}
-//*********************************************************************
+/*!
+ SLOT: called on mouse button release, finishes transformation or selection
+*/
void OCCViewer_Viewer::onMouseRelease(SUIT_ViewWindow* theWindow, QMouseEvent* theEvent)
{
if (!mySelectionEnabled) return;
}
-//*********************************************************************
+/*!
+ Sets selection enabled status
+ \param isEnabled - new status
+*/
void OCCViewer_Viewer::enableSelection(bool isEnabled)
{
mySelectionEnabled = isEnabled;
}
}
-//*********************************************************************
+/*!
+ Sets multiselection enabled status
+ \param isEnabled - new status
+*/
void OCCViewer_Viewer::enableMultiselection(bool isEnable)
{
myMultiSelectionEnabled = isEnable;
}
}
-//*********************************************************************
+/*!
+ Builds popup for occ viewer
+*/
void OCCViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup)
{
thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) );
thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
}
+/*!
+ SLOT: called on dump view operation is activated, stores scene to raster file
+*/
void OCCViewer_Viewer::onDumpView()
{
OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
aView->onDumpView();
}
-//*********************************************************************
+/*!
+ SLOT: called if background color is to be changed changed, passes new color to view port
+*/
void OCCViewer_Viewer::onChangeBgColor()
{
OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
aViewPort3d->setBackgroundColor(selColor);
}
-//*********************************************************************
+/*!
+ SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window
+*/
void OCCViewer_Viewer::onShowToolbar() {
OCCViewer_ViewWindow* aView = (OCCViewer_ViewWindow*)(myViewManager->getActiveView());
if ( aView )
aView->getToolBar()->show();
}
-//*********************************************************************
+/*!
+ Updates OCC 3D viewer
+*/
void OCCViewer_Viewer::update()
{
if (!myV3dViewer.IsNull())
myV3dViewer->Update();
}
-//*********************************************************************
+/*!
+ \return objects selected in 3D viewer
+ \param theList - list to be filled with selected objects
+*/
void OCCViewer_Viewer::getSelectedObjects(AIS_ListOfInteractive& theList)
{
theList.Clear();
theList.Append(myAISContext->SelectedInteractive());
}
-//*********************************************************************
+/*!
+ Selects objects in 3D viewer. Other selected objects are left as selected
+ \param theList - list objects to be selected
+*/
void OCCViewer_Viewer::setObjectsSelected(const AIS_ListOfInteractive& theList)
{
AIS_ListIteratorOfListOfInteractive aIt;
myAISContext->UpdateCurrentViewer();
}
-//*********************************************************************
+/*!
+ Auxiliary method to emit signal selectionChanged()
+*/
void OCCViewer_Viewer::performSelectionChanged()
{
emit selectionChanged();
}
-//****************************************************************
-
+/*!
+ SLOT, clears view aspects
+*/
void OCCViewer_Viewer::onClearViewAspects()
{
clearViewAspects();
}
-//****************************************************************
-
+/*!
+ Clears view aspects
+*/
void OCCViewer_Viewer::clearViewAspects()
{
myViewAspects.clear();
}
-//****************************************************************
-
+/*!
+ \return const reference to list of view aspects
+*/
const viewAspectList& OCCViewer_Viewer::getViewAspects()
{
return myViewAspects;
}
-//****************************************************************
-
+/*!
+ Appends new view aspect
+ \param aParams - new view aspects
+*/
void OCCViewer_Viewer::appendViewAspect( const viewAspect& aParams )
{
myViewAspects.append( aParams );
}
-//****************************************************************
-
+/*!
+ Replaces old view aspects by new ones
+ \param aViewList - list of new view aspects
+*/
void OCCViewer_Viewer::updateViewAspects( const viewAspectList& aViewList )
{
myViewAspects = aViewList;
}
+/*!
+ Hilights/unhilights object in viewer
+ \param obj - object to be updated
+ \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted
+ \param update - update current viewer
+*/
bool OCCViewer_Viewer::highlight( const Handle(AIS_InteractiveObject)& obj,
bool hilight, bool update )
{
return false;
}
+/*!
+ Unhilights all objects in viewer
+ \param updateviewer - update current viewer
+*/
bool OCCViewer_Viewer::unHighlightAll( bool updateviewer )
{
if ( myAISContext->HasOpenedContext() )
return false;
}
+/*!
+ \return true if object is in viewer or in collector
+ \param obj - object to be checked
+ \param onlyInViewer - search object only in viewer (so object must be displayed)
+*/
bool OCCViewer_Viewer::isInViewer( const Handle(AIS_InteractiveObject)& obj,
bool onlyInViewer )
{
return false;
}
+/*!
+ \return true if object is displayed in viewer
+ \param obj - object to be checked
+*/
bool OCCViewer_Viewer::isVisible( const Handle(AIS_InteractiveObject)& obj )
{
return myAISContext->IsDisplayed( obj );
}
+/*!
+ Sets color of object
+ \param obj - object to be updated
+ \param color - new color
+ \param update - update current viewer
+*/
void OCCViewer_Viewer::setColor( const Handle(AIS_InteractiveObject)& obj,
const QColor& color,
bool update )
myV3dViewer->Update();
}
+/*!
+ Changes display mode of object
+ \param obj - object to be processed
+ \param mode - new display mode
+ \param update - update current viewer
+*/
void OCCViewer_Viewer::switchRepresentation( const Handle(AIS_InteractiveObject)& obj,
int mode, bool update )
{
myV3dViewer->Update();
}
+/*!
+ Changes transparency of object
+ \param obj - object to be processed
+ \param trans - new transparency
+ \param update - update current viewer
+*/
void OCCViewer_Viewer::setTransparency( const Handle(AIS_InteractiveObject)& obj,
float trans, bool update )
{
myV3dViewer->Update();
}
-//****************************************************************
+/*!
+ Changes visibility of trihedron to opposite
+*/
void OCCViewer_Viewer::toggleTrihedron()
{
setTrihedronShown( !isTrihedronVisible() );
}
+/*!
+ \return true if trihedron is visible
+*/
bool OCCViewer_Viewer::isTrihedronVisible() const
{
return !myTrihedron.IsNull() && !myAISContext.IsNull() && myAISContext->IsDisplayed( myTrihedron );
}
+/*!
+ Sets visibility state of trihedron
+ \param on - new state
+*/
+
void OCCViewer_Viewer::setTrihedronShown( const bool on )
{
if ( myTrihedron.IsNull() )
myAISContext->Erase( myTrihedron );
}
+/*!
+ \return trihedron size
+*/
int OCCViewer_Viewer::trihedronSize() const
{
int sz = 0;
return sz;
}
+/*!
+ Changes trihedron size
+ \param sz - new size
+*/
void OCCViewer_Viewer::setTrihedronSize( const int sz )
{
if ( !myTrihedron.IsNull() )
myTrihedron->SetSize( sz );
}
+/*!
+ Set number of isolines
+ \param u - u-isolines (first parametric co-ordinate)
+ \param v - v-isolines (second parametric co-ordinate)
+*/
void OCCViewer_Viewer::setIsos( const int u, const int v )
{
Handle(AIS_InteractiveContext) ic = getAISContext();
ic->SetIsoNumber( v, AIS_TOI_IsoV );
}
+/*!
+ \return number of isolines
+ \param u - to return u-isolines (first parametric co-ordinate)
+ \param v - to return v-isolines (second parametric co-ordinate)
+*/
void OCCViewer_Viewer::isos( int& u, int& v ) const
{
Handle(AIS_InteractiveContext) ic = getAISContext();
//
// See http://www.salome-platform.org/
//
-/***************************************************************************
-** Class: OCCViewer_ViewPort
-** Descr: Visualisation canvas of SUIT-based application
-** Module: SUIT
-** Created: UI team, 05.09.00
-****************************************************************************/
+
#if !defined WNT
#define QT_CLEAN_NAMESPACE /* avoid definition of INT32 and INT8 */
#endif
XStandardColormap scmap;
};
+/*!
+ Constructor
+*/
CMapEntry::CMapEntry()
{
cmap = 0;
scmap.colormap = 0;
}
+/*!
+ Destructor
+*/
CMapEntry::~CMapEntry()
{
if ( alloc )
class OCCViewer_ViewSketcher;
class OCCViewer_ViewTransformer;
+/*!
+ \class OCCViewer_ViewPort
+ Visualisation canvas of SUIT-based application
+*/
class OCCVIEWER_EXPORT OCCViewer_ViewPort : public QWidget
{
Q_OBJECT
//
// See http://www.salome-platform.org/
//
-/***************************************************************************
-** Class: OCCViewer_ViewPort3D
-** Descr: Visualisation canvas with CasCade 3D view
-** Module: OCCViewer
-** Created: UI team, 05.09.00
-****************************************************************************/
#include "OCCViewer_ViewPort3d.h"
}
}
+/*!
+ Set animation mode
+ \param theDegenerated - degenerated mode
+*/
void OCCViewer_ViewPort3d::setAnimationMode(bool theDegenerated)
{
if ( !activeView().IsNull() )
if ( !myDegenerated )
activeView()->SetDegenerateModeOff();
activeView()->ZFitAll(1.);
+ activeView()->SetZSize(0.);
+ activeView()->Update();
}
}
Standard_Real margin = 0.01;
activeView()->FitAll( margin, withZ, upd );
+ activeView()->SetZSize(0.);
}
/*!
// See http://www.salome-platform.org/
//
// OCCViewer_ViewWindow.cxx: implementation of the OCCViewer_ViewWindow class.
-//
-//////////////////////////////////////////////////////////////////////
+
#include "OCCViewer_ViewWindow.h"
#include "OCCViewer_ViewModel.h"
"................................"};
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
+/*!
+ Constructor
+ \param theDesktop - main window of application
+ \param theModel - OCC 3D viewer
+*/
OCCViewer_ViewWindow::OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel)
: SUIT_ViewWindow(theDesktop)
{
myClippingDlg = 0;
}
-//****************************************************************
+/*!
+ Initialization of view window
+*/
void OCCViewer_ViewWindow::initLayout()
{
myViewPort = new OCCViewer_ViewPort3d( this, myModel->getViewer3d(), V3d_ORTHOGRAPHIC );
createToolBar();
}
-//****************************************************************
+/*!
+ \return type of operation by states of mouse and keyboard buttons
+ \param theEvent - mouse event
+*/
OCCViewer_ViewWindow::OperationType OCCViewer_ViewWindow::getButtonState(QMouseEvent* theEvent)
{
OperationType aOp = NOTHING;
return aOp;
}
-//****************************************************************
+/*!
+ Custom event handler
+*/
bool OCCViewer_ViewWindow::eventFilter(QObject* watched, QEvent* e)
{
if ( watched == myViewPort ) {
return SUIT_ViewWindow::eventFilter(watched, e);
}
+/*!
+ Updates state of enable draw mode state
+*/
void OCCViewer_ViewWindow::updateEnabledDrawMode()
{
if ( myModel )
myEnableDrawMode = myModel->isSelectionEnabled() && myModel->isMultiSelectionEnabled();
}
-//****************************************************************
+/*!
+ Handler of mouse press event
+*/
void OCCViewer_ViewWindow::vpMousePressEvent(QMouseEvent* theEvent)
{
myStartX = theEvent->x();
}
-//****************************************************************
+/*!
+ Starts zoom operation, sets corresponding cursor
+*/
void OCCViewer_ViewWindow::activateZoom()
{
if ( !transformRequested() && !myCursorIsHand )
}
-//****************************************************************
/*!
- Activates 'panning' transformation
+ Starts panning operation, sets corresponding cursor
*/
void OCCViewer_ViewWindow::activatePanning()
{
}
}
-//****************************************************************
/*!
- Activates 'rotation' transformation
+ Starts rotation operation, sets corresponding cursor
*/
void OCCViewer_ViewWindow::activateRotation()
{
}
}
-//****************************************************************
+/*!
+ Starts global panning operation, sets corresponding cursor
+*/
void OCCViewer_ViewWindow::activateGlobalPanning()
{
Handle(V3d_View) aView3d = myViewPort->getView();
}
}
-//****************************************************************
/*!
- Activates 'fit' transformation
+ Starts fit operation, sets corresponding cursor
*/
void OCCViewer_ViewWindow::activateWindowFit()
{
}
}
-//****************************************************************
/*!
- Sets the active operation 'op'
+ Stores which viewer operation is requesting
*/
void OCCViewer_ViewWindow::setTransformRequested ( OperationType op )
{
}
-//****************************************************************/
+/*!
+ Handler of mouse move event
+*/
void OCCViewer_ViewWindow::vpMouseMoveEvent(QMouseEvent* theEvent)
{
myCurrX = theEvent->x();
}
}
-//****************************************************************/
+/*!
+ Handler of mouse release event
+*/
void OCCViewer_ViewWindow::vpMouseReleaseEvent(QMouseEvent* theEvent)
{
switch ( myOperation ) {
}
}
-//****************************************************************
/*!
- Sets the viewport to its initial state
- ( no transformations in process etc. )
+ Sets the viewport to its initial state
+ ( no transformations in process etc. )
*/
void OCCViewer_ViewWindow::resetState()
{
}
-//****************************************************************/
+/*!
+ Draws rectangle by starting and current points
+*/
void OCCViewer_ViewWindow::drawRect()
{
QPainter aPainter(myViewPort);
myRect = aRect;
}
-//****************************************************************/
+/*!
+ Creates actions of OCC view window
+*/
void OCCViewer_ViewWindow::createActions()
{
if (!myActionsMap.isEmpty()) return;
connect(aAction, SIGNAL(activated()), this, SLOT(onCloneView()));
myActionsMap[ CloneId ] = aAction;
- aAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ),
+ myClippingAction = new QtxAction(tr("MNU_CLIPPING"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CLIPPING" ) ),
tr( "MNU_CLIPPING" ), 0, this);
- aAction->setStatusTip(tr("DSC_CLIPPING"));
- aAction->setToggleAction( true );
- connect(aAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool )));
- myActionsMap[ ClippingId ] = aAction;
+ myClippingAction->setStatusTip(tr("DSC_CLIPPING"));
+ myClippingAction->setToggleAction( true );
+ connect(myClippingAction, SIGNAL(toggled( bool )), this, SLOT(onClipping( bool )));
+ myActionsMap[ ClippingId ] = myClippingAction;
aAction = new QtxAction(tr("MNU_SHOOT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_SHOOT_VIEW" ) ),
tr( "MNU_SHOOT_VIEW" ), 0, this);
}
}
-//****************************************************************
+/*!
+ Creates toolbar of OCC view window
+*/
void OCCViewer_ViewWindow::createToolBar()
{
myActionsMap[DumpId]->addTo(myToolBar);
myActionsMap[ClippingId]->addTo(myToolBar);
}
-//****************************************************************
+/*!
+ Processes operation fit all
+*/
void OCCViewer_ViewWindow::onViewFitAll()
{
myViewPort->fitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "front view"
+*/
void OCCViewer_ViewWindow::onFrontView()
{
emit vpTransformationStarted ( FRONTVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "back view"
+*/
void OCCViewer_ViewWindow::onBackView()
{
emit vpTransformationStarted ( BACKVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "top view"
+*/
void OCCViewer_ViewWindow::onTopView()
{
emit vpTransformationStarted ( TOPVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "bottom view"
+*/
void OCCViewer_ViewWindow::onBottomView()
{
emit vpTransformationStarted ( BOTTOMVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "left view"
+*/
void OCCViewer_ViewWindow::onLeftView()
{
emit vpTransformationStarted ( LEFTVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "right view"
+*/
void OCCViewer_ViewWindow::onRightView()
{
emit vpTransformationStarted ( RIGHTVIEW );
onViewFitAll();
}
-//****************************************************************
+/*!
+ Processes transformation "reset view": sets default orientation of viewport camera
+*/
void OCCViewer_ViewWindow::onResetView()
{
emit vpTransformationStarted( RESETVIEW );
myViewPort->getView()->Update();
}
-//****************************************************************
+/*!
+ Processes transformation "fit all"
+*/
void OCCViewer_ViewWindow::onFitAll()
{
emit vpTransformationStarted( FITALLVIEW );
myViewPort->fitAll();
}
-//****************************************************************
+/*!
+ Creates one more window with same content
+*/
void OCCViewer_ViewWindow::onCloneView()
{
SUIT_ViewWindow* vw = myManager->createViewWindow();
vw->show();
}
-//****************************************************************
+/*!
+ SLOT: called if clipping operation is activated, enables/disables of clipping plane
+*/
void OCCViewer_ViewWindow::onClipping( bool on )
{
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
if ( on )
{
if ( !myClippingDlg )
- myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop );
+ {
+ myClippingDlg = new OCCViewer_ClippingDlg( this, myDesktop );
+ myClippingDlg->SetAction( myClippingAction );
+ }
if ( !myClippingDlg->isShown() )
myClippingDlg->show();
}
}
-//****************************************************************
+/*!
+ Stores view parameters
+*/
void OCCViewer_ViewWindow::onMemorizeView()
{
myModel->appendViewAspect( getViewParams() );
}
-//****************************************************************
+/*!
+ Restores view parameters
+*/
void OCCViewer_ViewWindow::onRestoreView()
{
OCCViewer_CreateRestoreViewDlg* aDlg = new OCCViewer_CreateRestoreViewDlg( centralWidget(), myModel );
performRestoring( aDlg->currentItem() );
}
-//****************************************************************
-
+/*!
+ Restores view parameters from structure viewAspect
+*/
void OCCViewer_ViewWindow::performRestoring( const viewAspect& anItem )
{
Handle(V3d_View) aView3d = myViewPort->getView();
myRestoreFlag = 0;
}
+/*!
+ Sets restore flag
+*/
void OCCViewer_ViewWindow::setRestoreFlag()
{
myRestoreFlag = 1;
}
-//****************************************************************
+/*!
+ SLOT: called when action "show/hide" trihedron is activated
+*/
void OCCViewer_ViewWindow::onTrihedronShow()
{
myModel->toggleTrihedron();
}
-//****************************************************************
+/*!
+ \return QImage, containing all scene rendering in window
+*/
QImage OCCViewer_ViewWindow::dumpView()
{
QPixmap px = QPixmap::grabWindow( myViewPort->winId() );
return px.convertToImage();
}
-
+
+/*!
+ Sets parameters of cutting plane
+ \param on - is cutting plane enabled
+ \param x - x-position of plane point
+ \param y - y-position of plane point
+ \param z - z-position of plane point
+ \param dx - x-coordinate of plane normal
+ \param dy - y-coordinate of plane normal
+ \param dz - z-coordinate of plane normal
+*/
void OCCViewer_ViewWindow::setCuttingPlane( bool on, const double x, const double y, const double z,
const double dx, const double dy, const double dz )
{
+ Handle(V3d_View) view = myViewPort->getView();
+ if ( view.IsNull() )
+ return;
+
if ( on ) {
Handle(V3d_Viewer) viewer = myViewPort->getViewer();
- Handle(V3d_View) view = myViewPort->getView();
// try to use already existing plane or create a new one
Handle(V3d_Plane) clipPlane;
pln.Coefficients( a, b, c, d );
clipPlane->SetPlane( a, b, c, d );
- Handle(V3d_View) v = myViewPort->getView();
- v->SetPlaneOn( clipPlane );
- v->Update();
- v->Redraw();
+ view->SetPlaneOn( clipPlane );
}
- else {
- Handle(V3d_View) view = myViewPort->getView();
+ else
+ view->SetPlaneOff();
+
+ view->Update();
+ view->Redraw();
+}
- // try to use already existing plane
- Handle(V3d_Plane) clipPlane;
- view->InitActivePlanes();
- if ( view->MoreActivePlanes() )
- clipPlane = view->ActivePlane();
-
- Handle(V3d_View) v = myViewPort->getView();
- if ( !clipPlane.IsNull() )
- v->SetPlaneOff( clipPlane );
- else
- v->SetPlaneOff();
-
- v->Update();
- v->Redraw();
- }
-
- Handle(V3d_View) v = myViewPort->getView();
- v->Update();
- v->Redraw();
+/*!
+ \return true if there is at least one cutting plane
+*/
+bool OCCViewer_ViewWindow::isCuttingPlane()
+{
+ Handle(V3d_View) view = myViewPort->getView();
+ view->InitActivePlanes();
+ return (view->MoreActivePlanes());
}
-/*! The method returns the visual parameters of this view as a viewAspect object
- */
+/*!
+ The method returns the visual parameters of this view as a viewAspect object
+*/
viewAspect OCCViewer_ViewWindow::getViewParams() const
{
double centerX, centerY, projX, projY, projZ, twist;
}
-/*! The method returns the visual parameters of this view as a formated string
- */
+/*!
+ The method returns the visual parameters of this view as a formated string
+*/
QString OCCViewer_ViewWindow::getVisualParameters()
{
viewAspect params = getViewParams();
return retStr;
}
-/* The method restors visual parameters of this view from a formated string
- */
+/*!
+ The method restors visual parameters of this view from a formated string
+*/
void OCCViewer_ViewWindow::setVisualParameters( const QString& parameters )
{
QStringList paramsLst = QStringList::split( '*', parameters, true );
void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0,
const double dx = 0, const double dy = 0, const double dz = 1);
+ bool isCuttingPlane();
+
virtual QString getVisualParameters();
virtual void setVisualParameters( const QString& parameters );
private:
OCCViewer_ClippingDlg* myClippingDlg;
+ QtxAction* myClippingAction;
};
msgid "ERROR"
msgstr "Error"
-msgid "BUT_OK"
-msgstr "Ok"
-
-
msgid "OCCViewer_Viewer::MEN_DUMP_VIEW"
msgstr "Dump view..."
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : ObjectBrowser
#include <time.h>
/*!
- Class: OB_Browser::ToolTip
- Descr: Tool tip for OB_Browser.
+ \class OB_Browser::ToolTip
+ Tool tip for OB_Browser.
*/
class OB_Browser::ToolTip : public QToolTip
OB_Browser* myBrowser;
};
+/*!
+ Constructor
+*/
OB_Browser::ToolTip::ToolTip( OB_Browser* b, QWidget* p )
: QToolTip( p ),
myBrowser( b )
{
}
+/*!
+ Destructor
+*/
OB_Browser::ToolTip::~ToolTip()
{
}
+/*!
+ It is called when there is a possibility that a tool tip
+ should be shown and must decide whether there is a tool tip for the point
+ in the widget that this QToolTip object relates to.
+ \param pos - point co-ordinates
+*/
void OB_Browser::ToolTip::maybeTip( const QPoint& pos )
{
if ( !parentWidget() || !myBrowser || !myBrowser->isShowToolTips() )
typedef SUIT_DataObject* ObjPtr;
typedef OB_ListItem* ItemPtr;
+
/*!
- Class: OB_BrowserSync
- Descr: Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items
+ \class OB_BrowserSync
+ Auxiliary class for synchronizing tree of SUIT_DataObjects and list view items
*/
-
class OB_BrowserSync
{
public:
};
+/*!
+ Constructor
+*/
OB_BrowserSync::OB_BrowserSync( OB_Browser* ob )
: myBrowser( ob )
{
}
+/*!
+ \return true if item must be updated
+ \param item - item to be checked
+*/
bool OB_BrowserSync::needUpdate( const ItemPtr& item ) const
{
bool update = false;
SUIT_DataObject* obj = item->dataObject();
if ( obj ) {
// 1. check text
- update = ( item->text( 0 ) != obj->name() );
+ update = ( item->text( 0 ) != obj->name() ) || myBrowser->needToUpdateTexts( item );
+
if ( !update ) {
// 2. check pixmap (compare serialNumber()-s)
QPixmap objPix = obj->icon();
return update;
}
+/*!
+ Updates item
+ \param p - item
+*/
void OB_BrowserSync::updateItem( const ItemPtr& p ) const
{
if ( p && needUpdate( p ) ) {
// printf( "--- needUpdate for %s = true ---\n", p->text( 0 ).latin1() );
+ myBrowser->updateText( p );
p->update();
}
}
+/*!
+ Creates item by SUIT object
+ \param src - corresponding SUIT object
+ \param parent - parent for item
+ \param after - previous sibling for item
+ \param prepend - item must be added to start of children list
+*/
ItemPtr OB_BrowserSync::createItem( const ObjPtr& src,
const ItemPtr& parent, const ItemPtr& after,
const bool prepend ) const
return i;
}
+/*!
+ Deletes object with all children
+ \param i - item
+*/
void OB_BrowserSync::deleteItemWithChildren( const ItemPtr& i ) const
{
if( myBrowser && myBrowser->myItems.contains( i->dataObject() ) )
}
}
+/*!
+ \return true if objects correspond each other at all
+ \param p - suit object
+ \param q - object browser item
+*/
bool OB_BrowserSync::isEqual( const ObjPtr& p, const ItemPtr& q ) const
{
- return ( !p && !q ) || ( p && q && q->dataObject()==p );
+ bool isRoot = p==myBrowser->getRootObject() && !q,
+ isEq = p && q && q->dataObject()==p;
+ return isRoot || ( !p && !q ) || isEq;
}
+/*!
+ \return null suit object
+*/
ObjPtr OB_BrowserSync::nullSrc() const
{
return 0;
}
+/*!
+ \return null item
+*/
ItemPtr OB_BrowserSync::nullTrg() const
{
return 0;
}
+/*!
+ Fills list with children of SUIT object
+ \param p - SUIT object
+ \param ch - list to be filled
+*/
void OB_BrowserSync::children( const ObjPtr& p, QValueList<ObjPtr>& ch ) const
{
DataObjectList l;
}
}
+/*!
+ Fills list with children of item
+ \param p - item
+ \param ch - list to be filled
+*/
void OB_BrowserSync::children( const ItemPtr& p, QValueList<ItemPtr>& ch ) const
{
- for( QListViewItem* item = p->firstChild(); item; item = item->nextSibling() )
+ for( QListViewItem* item = p ? p->firstChild() : myBrowser->listView()->firstChild(); item; item = item->nextSibling() )
{
ItemPtr p = dynamic_cast<ItemPtr>( item );
if( p )
}
}
+/*!
+ \return parent of item
+ \param p - item
+*/
ItemPtr OB_BrowserSync::parent( const ItemPtr& p ) const
{
return p ? dynamic_cast<ItemPtr>( p->parent() ) : 0;
/*!
- Class: OB_Browser
- Descr: Hierarchical tree object browser.
+ Constructor
*/
-
OB_Browser::OB_Browser( QWidget* parent, SUIT_DataObject* root )
: QFrame( parent ),
setModified();
}
+/*!
+ Destructor
+*/
OB_Browser::~OB_Browser()
{
myItems.clear();
delete myTooltip;
}
+/*!
+ \return true if root is decorated by +
+*/
bool OB_Browser::rootIsDecorated() const
{
return myRootDecorated;
}
+/*!
+ Sets state "root is recorated"
+ \param decor - new value of state
+*/
void OB_Browser::setRootIsDecorated( const bool decor )
{
if ( decor == rootIsDecorated() )
updateTree( 0, false );
}
+/*!
+ \return number of levels to be auto opened on update tree
+*/
int OB_Browser::autoOpenLevel() const
{
return myAutoOpenLevel;
}
+/*!
+ Changes number of levels to be auto opened on update tree
+ \param level - new number of levels
+*/
void OB_Browser::setAutoOpenLevel( const int level )
{
if ( myAutoOpenLevel == level )
autoOpenBranches();
}
+/*!
+ \return state "are tooltips shown"
+*/
bool OB_Browser::isShowToolTips()
{
return myShowToolTips;
}
+/*!
+ Sets new value of state "are tooltips shown"
+ \param theDisplay - new value
+*/
void OB_Browser::setShowToolTips( const bool theDisplay )
{
myShowToolTips = theDisplay;
}
+/*!
+ \return true if object browser automatically updates tree after SUIT object removing
+*/
bool OB_Browser::isAutoUpdate() const
{
return myAutoUpdate;
}
+/*!
+ Sets new value of "auto update": whether object browser automatically updates tree after SUIT object removing
+*/
void OB_Browser::setAutoUpdate( const bool on )
{
myAutoUpdate = on;
}
+/*!
+ \return true if object browser must delete old tree on setRootObject(), replaceTree()
+ \sa setRootObject(), replaceTree()
+*/
bool OB_Browser::isAutoDeleteObjects() const
{
return myAutoDelObjs;
}
+/*!
+ Sets whether object browser must delete old tree on setRootObject(), replaceTree()
+ \sa setRootObject(), replaceTree()
+*/
void OB_Browser::setAutoDeleteObjects( const bool on )
{
myAutoDelObjs = on;
}
+/*!
+ \return root SUIT object of browser
+*/
SUIT_DataObject* OB_Browser::getRootObject() const
{
return myRoot;
}
+/*!
+ Sets new root SUIT object of browser
+ \param theRoot - new root object
+*/
void OB_Browser::setRootObject( SUIT_DataObject* theRoot )
{
DataObjectKey curKey;
emit selectionChanged();
}
+/*!
+ \return number of selected items
+*/
int OB_Browser::numberOfSelected() const
{
int count = 0;
return count;
}
+/*!
+ \return list of selected objects
+*/
DataObjectList OB_Browser::getSelected() const
{
DataObjectList lst;
return lst;
}
+/*!
+ Fills list with selected objects
+*/
void OB_Browser::getSelected( DataObjectList& theObjList ) const
{
theObjList.clear();
}
}
+/*!
+ Sets selected object
+ \param theObject - new selected object
+ \param append - if it is true, then other selected objects are left as selected,
+ otherwise only 'theObject' will be selected
+*/
void OB_Browser::setSelected( const SUIT_DataObject* theObject, const bool append )
{
DataObjectList lst;
setSelected( lst, append );
}
+/*!
+ Sets selected objects
+ \param theObjLst - new selected objects
+ \param append - if it is true, then other selected objects are left as selected,
+ otherwise only 'theObjLst' will be selected
+*/
void OB_Browser::setSelected( const DataObjectList& theObjLst, const bool append )
{
QListView* lv = listView();
}
}
+/*!
+ \return true if item corresponding to object is opened
+ \param theObject - object to be checked
+*/
bool OB_Browser::isOpen( SUIT_DataObject* theObject ) const
{
bool res = false;
return res;
}
+/*!
+ Sets opened state of item
+ \param theObject - object corresponding to item
+ \param theOpen - new opened state
+*/
void OB_Browser::setOpen( SUIT_DataObject* theObject, const bool theOpen )
{
if ( listView() )
listView()->setOpen( listViewItem( theObject ), theOpen );
}
+/*!
+ \return SUIT object correspondint to item at position 'pos'
+ \param pos - position
+*/
SUIT_DataObject* OB_Browser::dataObjectAt( const QPoint& pos ) const
{
SUIT_DataObject* obj = 0;
return obj;
}
+/*!
+ \return filter of list view
+*/
OB_Filter* OB_Browser::filter() const
{
return myView->filter();
}
+/*!
+ Changes filter of list view
+ \param f - new filter
+*/
void OB_Browser::setFilter( OB_Filter* f )
{
myView->setFilter( f );
}
+/*!
+ Adds new column to list view
+ \param label - title of column
+ \param id - id of column
+ \param width - width of column
+*/
int OB_Browser::addColumn( const QString& label, const int id, const int width )
{
return addColumn( QIconSet(), label, id, width );
}
+/*!
+ Adds new column to list view
+ \param icon - icon of column
+ \param label - title of column
+ \param id - id of column
+ \param width - width of column
+*/
int OB_Browser::addColumn( const QIconSet& icon, const QString& label, const int id, const int width )
{
QListView* lv = listView();
return theId;
}
+/*!
+ Removes column
+ \param id - id of column
+*/
void OB_Browser::removeColumn( const int id )
{
QListView* lv = listView();
updateText();
}
+/*!
+ Sets title of first column (name column)
+ \param label - new title
+*/
void OB_Browser::setNameTitle( const QString& label )
{
setNameTitle( QIconSet(), label );
}
+/*!
+ Sets title and icon of first column (name column)
+ \param icon - new icon
+ \param label - new title
+*/
void OB_Browser::setNameTitle( const QIconSet& icon, const QString& label )
{
QListView* lv = listView();
lv->setColumnText( 0, icon, label );
}
+/*!
+ Sets title of column
+ \param id - column id
+ \param label - new column title
+*/
void OB_Browser::setColumnTitle( const int id, const QString& label )
{
setColumnTitle( id, QIconSet(), label );
}
+/*!
+ Sets title and icon of column
+ \param id - column id
+ \param icon - new column icon
+ \param label - new column title
+*/
void OB_Browser::setColumnTitle( const int id, const QIconSet& icon, const QString& label )
{
QListView* lv = listView();
lv->setColumnText( myColumnIds[id], icon, label );
}
+/*!
+ \return title of first column (name column)
+*/
QString OB_Browser::nameTitle() const
{
return myView->columnText( 0 );
}
+/*!
+ \return title of first column (name column)
+ \param id - column id
+*/
QString OB_Browser::columnTitle( const int id ) const
{
QString txt;
return txt;
}
+/*!
+ \return true if column is visible
+ \param id - column id
+*/
bool OB_Browser::isColumnVisible( const int id ) const
{
return myColumnIds.contains( id ) && myView->isShown( myColumnIds[id] );
}
+/*!
+ Sets visibility of column
+ \param id - column id
+ \param on - new visibility state
+*/
void OB_Browser::setColumnShown( const int id, const bool on )
{
if ( !myColumnIds.contains( id ) )
return;
myView->setShown( myColumnIds[id], on );
+ if( !on )
+ myView->setColumnWidthMode( myColumnIds[id], QListView::Manual );
}
+/*!
+ Sets global width mode
+ \param mode - new width mode
+*/
void OB_Browser::setWidthMode( QListView::WidthMode mode )
{
for ( int i = 0, n = myView->columns(); i < n; i++ )
- myView->setColumnWidthMode( i, mode );
+ if( mode!=QListView::Maximum || myView->columnWidth( i )>0 )
+ myView->setColumnWidthMode( i, mode );
}
+/*!
+ \return list of columns ids
+*/
QValueList<int> OB_Browser::columns() const
{
QValueList<int> lst;
return lst;
}
+/*!
+ \return true if it is possible to show/hide column by popup
+ \param id - column id
+*/
bool OB_Browser::appropriateColumn( const int id ) const
{
bool res = false;
return res;
}
+/*!
+ Sets "appropriate state": is it possible to show/hide column by popup
+ \param id - column id
+ \param on - new state
+*/
void OB_Browser::setAppropriateColumn( const int id, const bool on )
{
if ( !myColumnIds.contains( id ) )
myView->setAppropriate( myColumnIds[id], on );
}
+/*!
+ Updates tree
+ \param obj - start object
+ \param autoOpen - to open automatically branches of autoOpenLevel()
+ \sa autoOpenLevel()
+*/
void OB_Browser::updateTree( SUIT_DataObject* obj, const bool autoOpen )
{
// QTime t1 = QTime::currentTime();
// qDebug( QString( "update tree time = %1 msecs" ).arg( t1.msecsTo( t2 ) ) );
}
+/*!
+ Replaces part of tree starting at object 'src' by tree starting at object 'trg'
+*/
void OB_Browser::replaceTree( SUIT_DataObject* src, SUIT_DataObject* trg )
{
if ( !src || !trg || src == trg || src->root() != getRootObject() )
emit selectionChanged();
}
+/*!
+ Updates view
+ \param startObj - start object
+*/
void OB_Browser::updateView( SUIT_DataObject* startObj )
{
QListView* lv = listView();
if ( !startObj || startObj->root() != getRootObject() )
return;
+ //qDebug( "updateView:" );
+ //startObj->dump();
+
if ( startObj == myRoot )
{
- DataObjectList ch;
- myRoot->children( ch );
-
- ItemMap exist;
- QListViewItem* st = lv->firstChild();
- for( ; st; st = st->nextSibling() )
- {
- OB_ListItem* ob_item = dynamic_cast<OB_ListItem*>( st );
- exist.insert( ob_item->dataObject(), ob_item );
- }
-
- SUIT_DataObject* local_root = ch.first();
- for( ; local_root; local_root = ch.next() )
- {
- OB_BrowserSync sync( this );
- OB_ListItem* local_item = dynamic_cast<OB_ListItem*>( listViewItem( local_root ) );
- synchronize<ObjPtr,ItemPtr,OB_BrowserSync>( local_root, local_item, sync );
- exist[local_root] = 0;
- }
-
- ItemMap::const_iterator anIt = exist.begin(), aLast = exist.end();
- for( ; anIt!=aLast; anIt++ )
- {
- if( anIt.data() ) // exist[local_root]==1 -> this local root was NOT in data model, should be removed
- {
- removeReferences( anIt.data() );
- OB_ListItem* item = dynamic_cast<OB_ListItem*>( anIt.data() );
- if( item && myItems.contains( item->dataObject() ) )
- delete anIt.data();
- }
- }
+ OB_BrowserSync sync( this );
+ synchronize<ObjPtr,ItemPtr,OB_BrowserSync>( myRoot, 0, sync );
}
else
{
}
}
+/*!
+ Creates new list item
+ \return new item
+ \param o - corresponding SUIT object
+ \param parent - parent item
+ \param after - item after that new item must be added
+ \param prepend - new item must be added as first
+*/
QListViewItem* OB_Browser::createItem( const SUIT_DataObject* o, QListViewItem* parent,
QListViewItem* after, const bool prepend )
{
return item;
}
+/*!
+ Adjusts width by root item
+*/
void OB_Browser::adjustWidth()
{
if ( !listView() )
adjustWidth( listView()->firstChild() );
}
+/*!
+ Adjusts width by item
+ \param item
+*/
void OB_Browser::adjustWidth( QListViewItem* item )
{
while ( item )
}
}
+/*!
+ \return SUIT object corresponding to item
+ \param item
+*/
SUIT_DataObject* OB_Browser::dataObject( const QListViewItem* item ) const
{
SUIT_DataObject* obj = 0;
return obj;
}
+/*!
+ \return item corresponding to SUIT object
+ \param obj - SUIT object
+*/
QListViewItem* OB_Browser::listViewItem( const SUIT_DataObject* obj ) const
{
QListViewItem* item = 0;
return item;
}
+/*!
+ \return list view of object browser
+*/
QListView* OB_Browser::listView() const
{
return myView;
}
+/*!
+ \remove all items referencing current (through data objects)
+*/
void OB_Browser::removeReferences( QListViewItem* item )
{
if ( !item )
}
}
+/*!
+ Connects all children to SLOT onDestroyed
+*/
void OB_Browser::createConnections( SUIT_DataObject* obj )
{
if ( !obj )
it.current()->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
}
+/*!
+ Disconnects all children from SLOT onDestroyed
+*/
void OB_Browser::removeConnections( SUIT_DataObject* obj )
{
if ( !obj )
it.current()->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
}
+/*!
+ Stores states (opened, selected) of current tree items
+ \return current item
+ \param selObjs, selKeys - maps of selected objects
+ \param openObjs, openKeys - maps of opened objects
+ \param curKey - map of current objects
+*/
SUIT_DataObject* OB_Browser::storeState( DataObjectMap& selObjs, DataObjectMap& openObjs,
DataObjectKeyMap& selKeys, DataObjectKeyMap& openKeys,
DataObjectKey& curKey ) const
return curObj;
}
+/*!
+ Restores states (opened, selected) of current tree items
+ \param selObjs, selKeys - maps of selected objects
+ \param openObjs, openKeys - maps of opened objects
+ \param curKey - map of current objects
+*/
void OB_Browser::restoreState( const DataObjectMap& selObjs, const DataObjectMap& openObjs,
const SUIT_DataObject* curObj, const DataObjectKeyMap& selKeys,
const DataObjectKeyMap& openKeys, const DataObjectKey& curKey )
lv->blockSignals( block );
}
+/*!
+ Creates object key by tree item
+*/
OB_Browser::DataObjectKey OB_Browser::objectKey( QListViewItem* i ) const
{
return objectKey( dataObject( i ) );
}
+/*!
+ Creates object key by SUIT object
+*/
OB_Browser::DataObjectKey OB_Browser::objectKey( SUIT_DataObject* obj ) const
{
if ( !obj )
return DataObjectKey( obj->key() );
}
+/*!
+ Custom key press event handler, updates tree by F5
+*/
void OB_Browser::keyPressEvent( QKeyEvent* e )
{
if ( e->key() == Qt::Key_F5 )
QFrame::keyPressEvent( e );
}
+/*!
+ SLOT: called if action "Expand all" is activated
+*/
void OB_Browser::onExpand()
{
DataObjectList selected;
expand( listViewItem( itr.current() ) );
}
+/*!
+ SLOT: called if action "Show/hide column" is activated by popup
+*/
void OB_Browser::onColumnVisible( int id )
{
setColumnShown( id, !isColumnVisible( id ) );
}
+/*!
+ SLOT: called if SUIT object is destroyed
+*/
void OB_Browser::onDestroyed( SUIT_DataObject* obj )
{
removeObject( obj );
}
+/*!
+ SLOT: called on finish of drag-n-drop operation
+ \param items - dragged items
+ \param item - destination (item on that they were dropped)
+ \param action - QDropEvent::Action
+*/
void OB_Browser::onDropped( QPtrList<QListViewItem> items, QListViewItem* item, int action )
{
SUIT_DataObject* obj = dataObject( item );
emit dropped( lst, obj, action );
}
+/*!
+ Updates texts of items
+*/
void OB_Browser::updateText()
{
if ( myColumnIds.isEmpty() )
}
}
+/*!
+ \return true if item must be updated
+ \param item - item to be checked
+*/
+bool OB_Browser::needToUpdateTexts( QListViewItem* item ) const
+{
+ SUIT_DataObject* obj = dataObject( item );
+ if ( !obj )
+ return false;
+
+ for( QMap<int, int>::const_iterator it = myColumnIds.begin(); it != myColumnIds.end(); ++it )
+ if( item->text( it.data() ) != obj->text( it.key() ) )
+ return true;
+ return false;
+}
+
+/*!
+ Updates texts of item
+ \param item - item to be updated
+*/
void OB_Browser::updateText( QListViewItem* item )
{
SUIT_DataObject* obj = dataObject( item );
item->setText( it.data(), obj->text( it.key() ) );
}
+/*!
+ Custom event filter
+*/
bool OB_Browser::eventFilter( QObject* o, QEvent* e )
{
if ( o == myView && e->type() == QEvent::ContextMenu )
return QFrame::eventFilter( o, e );
}
+/*!
+ Adds custom actions to popup
+ \param menu - popup menu
+*/
void OB_Browser::contextMenuPopup( QPopupMenu* menu )
{
/* QValueList<int> cols;
}
}
+/*!
+ Expands item with all it's children
+*/
void OB_Browser::expand( QListViewItem* item )
{
if ( !item )
expand( child );
}
+/*!
+ \return true if item or one of it's children isn't opened
+*/
bool OB_Browser::hasClosed( QListViewItem* item ) const
{
if ( !item )
return has;
}
+/*!
+ Removes SUIT object
+ \param obj - SUIT object to be removed
+ \param autoUpd - auto tree updating
+*/
void OB_Browser::removeObject( SUIT_DataObject* obj, const bool autoUpd )
{
if ( !obj )
delete item;
}
+/*!
+ Opens branches from 1 to autoOpenLevel()
+ \sa autoOpenLevel()
+*/
void OB_Browser::autoOpenBranches()
{
int level = autoOpenLevel();
}
}
+/*!
+ Opens branch
+ \param item
+ \param level
+*/
void OB_Browser::openBranch( QListViewItem* item, const int level )
{
if ( level < 1 )
}
}
+/*!
+ SLOT: called on double click on item, emits signal
+*/
void OB_Browser::onDoubleClicked( QListViewItem* item )
{
if ( item )
emit doubleClicked( dataObject( item ) );
}
+/*!
+ Stores time of last modification
+*/
void OB_Browser::setModified()
{
myModifiedTime = clock();
class OB_ListView;
class OB_ListItem;
+/*!
+ \class OB_Browser
+ Represents object browser. Allows to get/set selection,
+ to drag-n-drop of objects, to determine item by SUIT object and
+ vice versa
+*/
class OB_EXPORT OB_Browser : public QFrame, public SUIT_PopupClient
{
Q_OBJECT
void removeObject( SUIT_DataObject*, const bool = true );
void updateText( QListViewItem* );
+ bool needToUpdateTexts( QListViewItem* ) const;
DataObjectKey objectKey( QListViewItem* ) const;
DataObjectKey objectKey( SUIT_DataObject* ) const;
//
#include "OB_Filter.h"
+/*!
+ Default constructor
+*/
OB_Filter::OB_Filter()
{
}
+/*!
+ Destructor
+*/
OB_Filter::~OB_Filter()
{
}
class SUIT_DataObject;
+/*!
+ \class OB_Filter
+ Base class for ObjectBrowser filter.
+ Filters selected objects by some condition.
+*/
class OB_EXPORT OB_Filter
{
public:
using namespace std;
/*!
- Class: ListItem
- Descr: base template class
+ Constructor
*/
-
template<class T>
ListItemF<T>::ListItemF( T* theT, SUIT_DataObject* obj ) :
myT( theT ),
{
}
+/*!
+ Paints item
+*/
template<class T>
void ListItemF<T>::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align )
{
//myT.paintCell( p, colorGrp, c, itemW, align );
}
+/*!
+ Paints focused item
+*/
template<class T>
void ListItemF<T>::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r )
{
//myT.paintFocus( p, cg, rect );
}
+/*!
+ Set selection of item
+ \param s - selected state
+*/
template<class T>
void ListItemF<T>::setSel( bool s )
{
//myT.setSelected( s );
}
+/*!
+ Updates name and pixmap of item
+*/
template<class T>
void ListItemF<T>::update()
{
}
/*!
- Class: OB_ListItem
- Descr: List view item for OB_Browser.
+ Constructor
*/
-
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent )
: ListItemF<QListViewItem>( this, obj ),
QListViewItem(parent)
update();
}
+/*!
+ Constructor
+*/
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent )
: ListItemF<QListViewItem>( this, obj ),
QListViewItem(parent)
update();
}
+/*!
+ Constructor
+*/
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after )
: ListItemF<QListViewItem>( this, obj),
QListViewItem(parent, after )
update();
}
+/*!
+ Constructor
+*/
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after )
: ListItemF<QListViewItem>( this,obj),
QListViewItem(parent, after )
update();
}
+/*!
+ Destructor
+*/
OB_ListItem::~OB_ListItem()
{
}
+/*!
+ Sets selection state of item
+ \param s - new state
+*/
void OB_ListItem::setSelected( bool s )
{
setSel( s );
QListViewItem::setSelected( s );
}
+/*!
+ Paints focus
+ \param p - painter
+ \param cg - color group
+ \param r - focus rectangle
+*/
void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r )
{
QColorGroup col_group( cg );
QListViewItem::paintFocus( p, col_group, R );
}
+/*!
+ Paints item
+ \param p - painter
+ \param cg - color group
+ \param c - not used
+ \param w - width of item
+ \param align - alignment
+*/
void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align )
{
QColorGroup col_group( cg );
if ( listView() && !listView()->allColumnsShowFocus() )
W = width( p->fontMetrics(), listView(), c );
- QListViewItem::paintCell( p, col_group, c, W, align );
+ QListViewItem::paintCell( p, col_group, c, min( W, w ), align );
}
+/*!
+ \return custom RTTI info
+*/
int OB_ListItem::RTTI()
{
return 1000;
}
+/*!
+ \return custom RTTI info
+*/
int OB_ListItem::rtti() const
{
return RTTI();
}
+/*!
+ Sets item text
+ \param column - column index
+ \param text - new text
+*/
void OB_ListItem::setText( int column, const QString& text )
{
QListViewItem::setText( column, text );
}
/*!
- Class: OB_CheckListItem
- Descr: Check list view item for OB_Browser.
+ Constructor
*/
-
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, Type type )
: ListItemF<QCheckListItem>( this, obj),
QCheckListItem( parent, "", type )
update();
}
+/*!
+ Constructor
+*/
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, Type type )
: ListItemF<QCheckListItem>( this, obj),
QCheckListItem( parent, "", type )
update();
}
+/*!
+ Constructor
+*/
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, Type type )
: ListItemF<QCheckListItem>( this, obj),
#if defined(QT_VERSION) && QT_VERSION >= 0x030101
update();
}
+/*!
+ Constructor
+*/
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, Type type )
: ListItemF<QCheckListItem>( this, obj),
#if defined(QT_VERSION) && QT_VERSION >= 0x030101
update();
}
+/*!
+ Destructor
+*/
OB_CheckListItem::~OB_CheckListItem()
{
}
+/*!
+ Sets selection state of item
+ \param s - new state
+*/
void OB_CheckListItem::setSelected( bool s )
{
setSel( s );
QCheckListItem::setSelected( s );
}
+/*!
+ Paints focus
+ \param p - painter
+ \param cg - color group
+ \param r - focus rectangle
+*/
void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r )
{
QColorGroup col_group( cg );
QCheckListItem::paintFocus( p, col_group, R );
}
+/*!
+ Paints item
+ \param p - painter
+ \param cg - color group
+ \param c - not used
+ \param w - width of item
+ \param align - alignment
+*/
void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align )
{
QColorGroup col_group( cg );
if ( listView() && !listView()->allColumnsShowFocus() )
W = width( p->fontMetrics(), listView(), c );
- QCheckListItem::paintCell( p, col_group, c, W, align );
+ QCheckListItem::paintCell( p, col_group, c, min( W, w ), align );
}
+/*!
+ \return custom RTTI info
+*/
int OB_CheckListItem::RTTI()
{
return OB_ListItem::RTTI() + 1;
}
+/*!
+ \return custom RTTI info
+*/
int OB_CheckListItem::rtti() const
{
return RTTI();
}
+/*!
+ SLOT: called if checked state is changed, changes corresponding state of SUIT object
+*/
void OB_CheckListItem::stateChange( bool on )
{
QCheckListItem::stateChange( on );
class SUIT_DataObject;
-/*
- base template class for ListViewItems and CheckListItems
+/*!
+ \class ListItemF
+ Base template class for ListViewItems and CheckListItems
*/
-
template<class T> class ListItemF
{
public:
T* myT;
};
-/*
- ListViewItem class
+/*!
+ \class OB_ListItem
+ Provides custom list item for Object Browser tree
*/
-
class OB_EXPORT OB_ListItem : public ListItemF<QListViewItem>, public QListViewItem
{
public:
static int RTTI();
};
-/*
- CheckListItem class
+/*!
+ \class OB_CheckListItem
+ Provides custom list item with check box
*/
-
class OB_EXPORT OB_CheckListItem : public ListItemF<QCheckListItem>, public QCheckListItem
{
public:
#include <qdragobject.h>
+/*!
+ Constructor
+*/
OB_ListView::OB_ListView( QWidget* parent, const char* name, WFlags f )
: QtxListView( parent, name, f ),
myFilter( 0 )
{
}
+/*!
+ Constructor
+*/
OB_ListView::OB_ListView( const int state, QWidget* parent, const char* name, WFlags f )
: QtxListView( state, parent, name, f ),
myFilter( 0 )
{
}
+/*!
+ Destructor
+*/
OB_ListView::~OB_ListView()
{
delete myFilter;
}
+/*!
+ \return filter
+*/
OB_Filter* OB_ListView::filter() const
{
return myFilter;
}
+/*!
+ Changes filter
+ \param f - new filter
+*/
void OB_ListView::setFilter( OB_Filter* f )
{
if ( myFilter == f )
myFilter = f;
}
+/*!
+ \return true if item passes filter
+*/
bool OB_ListView::isOk( QListViewItem* item ) const
{
bool ok = true;
return ok;
}
+/*!
+ Creates new drag object
+*/
QDragObject* OB_ListView::dragObject()
{
myItems.clear();
return new QTextDrag( "", this );
}
+/*!
+ Custom drag enter event filter
+*/
void OB_ListView::dragEnterEvent( QDragEnterEvent* e )
{
e->accept();
}
+/*!
+ Custom drag move event filter
+*/
void OB_ListView::dragMoveEvent( QDragMoveEvent* e )
{
QListViewItem* item = dropItem( e );
e->accept( false );
}
+/*!
+ Custom drop event filter
+*/
void OB_ListView::dropEvent( QDropEvent* e )
{
QListViewItem* item = dropItem( e );
myItems.clear();
}
+/*!
+ Custom key press event filter
+*/
void OB_ListView::keyPressEvent( QKeyEvent* ke )
{
if ( ( ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Minus ) && ke->state() & ControlButton )
QtxListView::keyPressEvent( ke );
}
+/*!
+ Finds item, in that dragged objects are dropped by QDropEvent
+ \return tree item
+*/
QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const
{
QListViewItem* item = 0;
return item;
}
+/*!
+ \return SUIT object by tree item
+ \param item - tree item
+*/
SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const
{
if ( !item )
return obj;
}
+/*!
+ \return true if it is possible to drop into item
+ \param item - tree item to be checked
+*/
bool OB_ListView::isDropAccepted( QListViewItem* item ) const
{
bool res = true;
return res;
}
+/*!
+ \return true if it is possible to drop one item into other
+ \param drag - dragged item
+ \param drop - destination item
+*/
bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) const
{
SUIT_DataObject* dragObj = dataObject( drag );
return dropObj->isDropAccepted( dragObj );
}
+/*!
+ Sets column width
+ \param col - column index
+ \param width - column width
+*/
void OB_ListView::setColumnWidth( int col, int width )
{
int max = columnMaxWidth( col );
QListView::setColumnWidth( col, width );
}
+/*!
+ \return column max width
+ \param col - column index
+*/
int OB_ListView::columnMaxWidth( const int col ) const
{
int res = -1;
return res;
}
+/*!
+ Changes column max width
+ \param col - column index
+ \param w - column max width
+*/
void OB_ListView::setColumnMaxWidth( const int col, const int w )
{
myMaxColWidth.insert( col, w );
}
+/*!
+ \return column max ratio
+ \param col - column index
+*/
double OB_ListView::columnMaxRatio( const int col ) const
{
double res = 0.0;
return res;
}
+/*!
+ Changes column max ratio
+ \param col - column index
+ \param w - column max ratio
+*/
void OB_ListView::setColumnMaxRatio( const int col, const double r )
{
myMaxColRatio.insert( col, r );
class QListViewItem;
class SUIT_DataObject;
+/*!
+ \class OB_ListView
+ Special list view for ObjectBrowser.
+ Allows drag-n-drop, filtering of selected objects, column management.
+*/
class OB_EXPORT OB_ListView : public QtxListView
{
Q_OBJECT
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : Plot2d
return *this;
}
+/*!
+ \return title of table
+*/
QString Plot2d_Curve::getTableTitle() const
{
return QString();
#include <qwt_plot.h>
#include "Plot2d_Prs.h"
-//==========================================================
/*!
- * Plot2d_Prs::Plot2d_Prs
- * Default constructor
- */
-//==========================================================
+ Default constructor
+*/
Plot2d_Prs::Plot2d_Prs( bool theDelete )
: mySecondY( false)
{
setAutoDel(theDelete);
}
-//==========================================================
/*!
- * Plot2d_Prs::Plot2d_Prs
- * Standard constructor
- */
-//==========================================================
+ Standard constructor
+*/
Plot2d_Prs::Plot2d_Prs( const Plot2d_Curve* obj, bool theDelete )
: mySecondY( false)
{
AddObject( obj );
}
-//==========================================================
/*!
- * Plot2d_Prs::~Plot2d_Prs
- * Destructor
- */
-//==========================================================
+ Destructor
+*/
Plot2d_Prs::~Plot2d_Prs()
{
}
-//==========================================================
/*!
- * Plot2d_Prs::GetObjects
- * Get curves list
- */
-//==========================================================
+ Get curves list
+*/
curveList Plot2d_Prs::getCurves() const
{
return myCurves;
}
-//==========================================================
/*!
- * Plot2d_Prs::AddObject
- * Add curbe
- */
-//==========================================================
+ Add curve
+*/
void Plot2d_Prs::AddObject( const Plot2d_Curve* obj )
{
myCurves.append((Plot2d_Curve*)obj);
mySecondY = true;
}
-//==========================================================
/*!
- * Plot2d_Prs::IsNull
- * Return 0 if list of the curves is empty
- * [ Reimplemented from SALOME_Prs ]
- */
-//==========================================================
+ \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ]
+*/
bool Plot2d_Prs::IsNull() const
{
return myCurves.isEmpty();
}
-//==========================================================
/*!
- * Plot2d_Prs::IsSecondY
- * Return 1 if in the list of curves exist at least one curve
- * with axis Qwt::yRight
- * [ Reimplemented from SALOME_Prs ]
- */
-//==========================================================
+ \return 1 if in the list of curves exist at least one curve with axis Qwt::yRight [ Reimplemented from SALOME_Prs ]
+*/
bool Plot2d_Prs::isSecondY() const
{
return mySecondY;
}
-//==========================================================
/*!
- * Plot2d_Prs::IsNull
- * Return 0 if list of the curves is empty
- * [ Reimplemented from SALOME_Prs ]
- */
-//==========================================================
+ \return 0 if list of the curves is empty [ Reimplemented from SALOME_Prs ]
+*/
void Plot2d_Prs::setAutoDel(bool theDel)
{
myCurves.setAutoDelete(theDel);
#include <qdialog.h>
-//=================================================================================
-// class : Plot2d_SetupCurveDlg
-// purpose : Dialog box for setup Plot2d curve
-//=================================================================================
+/*!
+ \class Plot2d_SetupCurveDlg
+ Dialog box for setup Plot2d curve
+*/
class QPushButton;
class QComboBox;
"................................"};
-//=================================================================================
-// Plot2d_ViewFrame implementation
-//=================================================================================
-
/*!
Constructor
*/
emit vpCurveChanged();
}
+/*!
+ Sets curve title
+ \param curveKey - curve id
+ \param title - new title
+*/
void Plot2d_ViewFrame::setCurveTitle( int curveKey, const QString& title )
{
if(myPlot) myPlot->setCurveTitle(curveKey, title);
return allPositive;
}
-//=================================================================================
-// Plot2d_Plot2d implementation
-//=================================================================================
/*!
Constructor
*/
*/
}
+/*!
+ \return the default layout behavior of the widget
+*/
QSizePolicy Plot2d_Plot2d::sizePolicy() const
{
return QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
}
+/*!
+ \return the recommended size for the widget
+*/
QSize Plot2d_Plot2d::sizeHint() const
{
return QwtPlot::minimumSizeHint();
return false;
}
-// TEMPORARY SOLUTION!!! TO BE IMPLEMENTED!!!
+/*!
+ Creates presentation of object
+ Default implementation is empty
+*/
Plot2d_Prs* Plot2d_ViewFrame::CreatePrs( const char* /*entry*/ )
{
return 0;
}
+/*!
+ Copies preferences from other viewframe
+ \param vf - other view frame
+*/
void Plot2d_ViewFrame::copyPreferences( Plot2d_ViewFrame* vf )
{
if( !vf )
setTitle( true, aTables.join("; "), MainTitle, true );
}
+/*!
+ Outputs content of viewframe to file
+ \param file - file name
+ \param format - file format
+*/
bool Plot2d_ViewFrame::print( const QString& file, const QString& format ) const
{
#ifdef WIN32
#endif
}
+/*!
+ \return string with all visual parameters
+*/
QString Plot2d_ViewFrame::getVisualParameters()
{
double xmin, xmax, ymin, ymax, y2min, y2max;
return retStr;
}
+/*!
+ Restores all visual parameters from string
+*/
void Plot2d_ViewFrame::setVisualParameters( const QString& parameters )
{
QStringList paramsLst = QStringList::split( '*', parameters, true );
int Plot2d_ViewManager::myMaxId = 0;
+/*!
+ Constructor
+*/
Plot2d_ViewManager::Plot2d_ViewManager( SUIT_Study* study, SUIT_Desktop* desk )
: SUIT_ViewManager( study, desk )
{
setViewModel( v );
}
+/*!
+ Destructor
+*/
Plot2d_ViewManager::~Plot2d_ViewManager()
{
}
+/*!
+ \return corresponding viewer
+*/
Plot2d_Viewer* Plot2d_ViewManager::getPlot2dModel() const
{
return (Plot2d_Viewer*)myViewModel;
}
+/*!
+ Sets default name of view
+ \param the View - view to be renamed
+*/
void Plot2d_ViewManager::setViewName( SUIT_ViewWindow* theView )
{
int aPos = myViews.find(theView);
theView->setCaption( QString( "Plot2d scene:%1 - viewer:%2" ).arg(myId).arg(aPos+1));
}
+/*!
+ Adds new view
+ \param theView - view to be added
+*/
bool Plot2d_ViewManager::insertView( SUIT_ViewWindow* theView )
{
bool res = SUIT_ViewManager::insertView( theView );
return res;
}
+/*!
+ Creates new view
+*/
void Plot2d_ViewManager::createView()
{
createViewWindow();
}
+/*!
+ SLOT: called if action "Clone view" is activated, emits signal cloneView()
+*/
void Plot2d_ViewManager::onCloneView()
{
SUIT_ViewWindow* vw = createViewWindow();
// See http://www.salome-platform.org/
//
// Plot2d_ViewModel.cxx: implementation of the Plot2d_ViewModel class.
-//
-//////////////////////////////////////////////////////////////////////
#include "Plot2d_ViewModel.h"
#include "Plot2d_ViewWindow.h"
#include <qpopupmenu.h>
+/*!
+ Constructor
+*/
Plot2d_Viewer::Plot2d_Viewer(bool theAutoDel)
:SUIT_ViewModel()
{
myAutoDel = theAutoDel;
}
+/*!
+ Destructor
+*/
Plot2d_Viewer::~Plot2d_Viewer()
{
if (myPrs)
clearPrs();
}
-//*********************************************************************
+/*!
+ Create new instance of view window on desktop \a theDesktop.
+ \retval SUIT_ViewWindow* - created view window pointer.
+*/
SUIT_ViewWindow* Plot2d_Viewer::createView(SUIT_Desktop* theDesktop)
{
Plot2d_ViewWindow* aPlot2dView = new Plot2d_ViewWindow(theDesktop, this);
return aPlot2dView;
}
-//*********************************************************************
+/*!
+ Adds custom items to popup menu
+ \param thePopup - popup menu
+*/
void Plot2d_Viewer::contextMenuPopup(QPopupMenu* thePopup)
{
Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView());
}
}
-
-//*********************************************************************
+/*!
+ Sets presentation of viewer
+ \param thePrs - new presentation
+*/
void Plot2d_Viewer::setPrs(Plot2d_Prs* thePrs)
{
if (myPrs)
myPrs->setAutoDel(myAutoDel);
}
-//*********************************************************************
+/*!
+ Updates current viewer
+*/
void Plot2d_Viewer::update()
{
SUIT_ViewManager* aMgr = getViewManager();
}
}
-//*********************************************************************
+/*!
+ Clear viewer presentation
+*/
void Plot2d_Viewer::clearPrs()
{
SUIT_ViewManager* aMgr = getViewManager();
myPrs = 0;
}
-//*********************************************************************
+/*!
+ Sets "auto delete" state of of presentation
+ \param theDel - new state
+*/
void Plot2d_Viewer::setAutoDel(bool theDel)
{
myAutoDel = theDel;
myPrs->setAutoDel(theDel);
}
-//*********************************************************************
+/*!
+ SLOT: called when action "Change background" is activated
+*/
void Plot2d_Viewer::onChangeBgColor()
{
Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView());
aViewFrame->onChangeBackground();
}
-//*********************************************************************
+/*!
+ SLOT: called when action "Show toolbar" is activated
+*/
void Plot2d_Viewer::onShowToolbar() {
Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView());
if ( aView )
aView->getToolBar()->show();
}
-//*********************************************************************
+/*!
+ SLOT: called when action "Dump view" is activated
+*/
void Plot2d_Viewer::onDumpView()
{
Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)(myViewManager->getActiveView());
aView->onDumpView();
}
-//*********************************************************************
+/*!
+ SLOT: called when action "Clone view" is activated
+*/
void Plot2d_Viewer::onCloneView( Plot2d_ViewFrame*, Plot2d_ViewFrame* )
{
}
-//*********************************************************************
+
+/*!
+ Sets view manager
+ \param mgr - new view manager
+*/
void Plot2d_Viewer::setViewManager( SUIT_ViewManager* mgr )
{
SUIT_ViewModel::setViewManager( mgr );
// See http://www.salome-platform.org/
//
// Plot2d_ViewWindow.cxx: implementation of the Plot2d_ViewWindow class.
-//
-//////////////////////////////////////////////////////////////////////
+
#include "Plot2d_ViewWindow.h"
#include "Plot2d_ViewFrame.h"
#include <qpopupmenu.h>
#include <qimage.h>
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
+/*!
+ Constructor
+*/
Plot2d_ViewWindow::Plot2d_ViewWindow(SUIT_Desktop* theDesktop, Plot2d_Viewer* theModel)
: SUIT_ViewWindow(theDesktop)
{
}
+/*!
+ Destructor
+*/
Plot2d_ViewWindow::~Plot2d_ViewWindow()
{
}
-//****************************************************************
+/*!
+ Puts message to status bar
+ \param theMsg - message text
+*/
void Plot2d_ViewWindow::putInfo(QString theMsg)
{
QStatusBar* aStatusBar = myDesktop->statusBar();
aStatusBar->message(theMsg/*, 3000*/);
}
-//****************************************************************
+/*!
+ Fills popup menu with custom actions
+ \param popup - popup menu to be filled with
+*/
void Plot2d_ViewWindow::contextMenuPopup( QPopupMenu* thePopup )
{
// scaling
myActionsMap[ CurvSettingsId ]->addTo(thePopup);
}
-//****************************************************************
+/*!
+ Custom event filter
+*/
bool Plot2d_ViewWindow::eventFilter(QObject* watched, QEvent* e)
{
if (watched == myViewFrame) {
return SUIT_ViewWindow::eventFilter(watched, e);
}
-//****************************************************************
+/*!
+ Create actions for Plot2d view window
+*/
void Plot2d_ViewWindow::createActions()
{
if ( !myActionsMap.isEmpty() )
}
-//****************************************************************
+/*!
+ Create toolbar for Plot2d view window
+*/
void Plot2d_ViewWindow::createToolBar()
{
myActionsMap[DumpId]->addTo(myToolBar);
onChangeLegendMode();
}
-//****************************************************************
+/*!
+ SLOT: called if scale mode for horizontal axis is changed
+*/
void Plot2d_ViewWindow::onChangeHorMode()
{
bool aLinear = myViewFrame->isModeHorLinear();
myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() );
}
-//****************************************************************
+/*!
+ SLOT: called if scale mode for vertical axis is changed
+*/
void Plot2d_ViewWindow::onChangeVerMode()
{
bool aLinear = myViewFrame->isModeVerLinear();
myActionsMap[GlobalPanId]->setEnabled( myViewFrame->isModeVerLinear() && myViewFrame->isModeHorLinear() );
}
-//****************************************************************
+/*!
+ SLOT: called if curve type is changed
+*/
void Plot2d_ViewWindow::onChangeCurveMode()
{
int aCurveType = myViewFrame->getCurveType();
myActionsMap[CurvSplinesId]->setOn(aCurveType == 2);
}
-//****************************************************************
+/*!
+ SLOT: called if legend mode is changed
+*/
void Plot2d_ViewWindow::onChangeLegendMode()
{
myActionsMap[ LegendId ]->setOn(myViewFrame->isLegendShow());
}
-//****************************************************************
+/*!
+ SLOT: called if action "Fit all" is activated
+*/
void Plot2d_ViewWindow::onFitAll()
{
myViewFrame->onViewFitAll();
}
-//****************************************************************
+/*!
+ SLOT: called if action "Fit rect" is activated
+*/
void Plot2d_ViewWindow::onFitRect()
{
myViewFrame->onViewFitArea();
}
-//****************************************************************
+/*!
+ SLOT: called if action "Zoom" is activated
+*/
void Plot2d_ViewWindow::onZoom()
{
myViewFrame->onViewZoom();
}
-//****************************************************************
+/*!
+ SLOT: called if action "Panning" is activated
+*/
void Plot2d_ViewWindow::onPanning()
{
myViewFrame->onViewPan();
}
-//****************************************************************
+/*!
+ SLOT: called if action "Global panning" is activated
+*/
void Plot2d_ViewWindow::onGlobalPanning()
{
myViewFrame->onViewGlobalPan();
}
-//****************************************************************
+/*!
+ SLOT: called if action of scale mode for horizontal axis changing is activated
+*/
void Plot2d_ViewWindow::onViewHorMode()
{
if (myViewFrame->isModeHorLinear())
myViewFrame->setHorScaleMode(0);
}
-//****************************************************************
+/*!
+ SLOT: called if action of scale mode for vertical axis changing is activated
+*/
void Plot2d_ViewWindow::onViewVerMode()
{
if (myViewFrame->isModeVerLinear())
myViewFrame->setVerScaleMode(0);
}
-//****************************************************************
+/*!
+ SLOT: called if action "Show legend" is activated
+*/
void Plot2d_ViewWindow::onLegend()
{
myViewFrame->showLegend(!myViewFrame->isLegendShow());
onChangeLegendMode();
}
-//****************************************************************
+/*!
+ SLOT: called if action "Change curve type" is activated
+*/
void Plot2d_ViewWindow::onCurves()
{
QtxAction* aSender = (QtxAction*) sender();
myViewFrame->setCurveType(2);
}
-//****************************************************************
+/*!
+ SLOT: called if action "Dump view" is activated
+*/
void Plot2d_ViewWindow::onDumpView()
{
qApp->postEvent( myViewFrame, new QPaintEvent( QRect( 0, 0, myViewFrame->width(), myViewFrame->height() ), TRUE ) );
SUIT_ViewWindow::onDumpView();
}
-//****************************************************************
+/*!
+ \return QImage, containing all scene rendering in window
+*/
QImage Plot2d_ViewWindow::dumpView()
{
QPixmap px = QPixmap::grabWindow( myViewFrame->winId() );
return px.convertToImage();
}
+/*!
+ Saves scene rendering in window to file
+ \param fileName - name of file
+ \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG")
+*/
bool Plot2d_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format )
{
bool res = myViewFrame ? myViewFrame->print( fileName, format ) : false;
return res;
}
+/*!
+ \return filter of image files
+*/
QString Plot2d_ViewWindow::filter() const
{
return SUIT_ViewWindow::filter() + ";;" + tr( "POSTSCRIPT_FILES" );
}
-/*! The method returns the visual parameters of this view as a formated string
+/*!
+ \return the visual parameters of this view as a formated string
*/
QString Plot2d_ViewWindow::getVisualParameters()
{
return myViewFrame->getVisualParameters();
}
-/* The method restors visual parameters of this view from a formated string
- */
+/*!
+ The method restors visual parameters of this view from a formated string
+*/
void Plot2d_ViewWindow::setVisualParameters( const QString& parameters )
{
myViewFrame->setVisualParameters( parameters );
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgid "ERROR"
msgstr "Error"
-msgid "BUT_OK"
-msgstr "Ok"
-
#-------------------------------------
# Plot2d_SetupViewDlg
# ------------------------------------
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# source path
top_srcdir=@top_srcdir@
top_builddir=../..
//using namespace std;
-//===========================================================
/*!
- * Function: SALOME_OCCPrs::DisplayIn \n
- * Purpose: Dispatches display operation to proper Display() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Display() method of SALOME_View
+*/
void SALOME_OCCPrs::DisplayIn( SALOME_View* v ) const
{
if ( v ) v->Display( this );
}
-//===========================================================
/*!
- * Function: SALOME_OCCPrs::EraseIn \n
- * Purpose: Dispatches display operation to proper Erase() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Erase() method of SALOME_View
+*/
void SALOME_OCCPrs::EraseIn( SALOME_View* v, const bool forced ) const
{
if ( v ) v->Erase( this, forced );
}
-//===========================================================
/*!
- * Function: SALOME_OCCPrs::LocalSelectionIn \n
- * Purpose: Dispatches operation to proper LocalSelectionIn() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches operation to proper LocalSelectionIn() method of SALOME_View
+*/
void SALOME_OCCPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const
{
if ( v ) v->LocalSelection( this, mode );
}
-//===========================================================
/*!
- * Function: SALOME_OCCPrs::Update \n
- * Purpose: Dispatches update operation to proper Update() \n
- * method of SALOME_Displayer
- */
-//===========================================================
+ Dispatches update operation to proper Update() method of SALOME_Displayer
+*/
void SALOME_OCCPrs::Update( SALOME_Displayer* d )
{
if ( d ) d->Update( this );
}
-//===========================================================
/*!
- * Function: SALOME_VTKPrs::DisplayIn \n
- * Purpose: Dispatches display operation to proper Display() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Display() method of SALOME_View
+*/
void SALOME_VTKPrs::DisplayIn( SALOME_View* v ) const
{
if ( v ) v->Display( this );
}
-//===========================================================
/*!
- * Function: SALOME_VTKPrs::EraseIn \n
- * Purpose: Dispatches display operation to proper Erase() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Erase() method of SALOME_View
+*/
void SALOME_VTKPrs::EraseIn( SALOME_View* v, const bool forced ) const
{
if ( v ) v->Erase( this, forced );
}
-//===========================================================
/*!
- * Function: SALOME_VTKPrs::LocalSelectionIn \n
- * Purpose: Dispatches operation to proper LocalSelectionIn() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches operation to proper LocalSelectionIn() method of SALOME_View
+*/
void SALOME_VTKPrs::LocalSelectionIn( SALOME_View* v, const int mode ) const
{
if ( v ) v->LocalSelection( this, mode );
}
-//===========================================================
/*!
- * Function: SALOME_VTKPrs::Update \n
- * Purpose: Dispatches update operation to proper Update() \n
- * method of SALOME_Displayer
- */
-//===========================================================
+ Dispatches update operation to proper Update() method of SALOME_Displayer
+*/
void SALOME_VTKPrs::Update( SALOME_Displayer* d )
{
if ( d ) d->Update( this );
}
-//===========================================================
/*!
- * Function: SALOME_Prs2d::DisplayIn \n
- * Purpose: Dispatches display operation to proper Display() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Display() method of SALOME_View
+*/
void SALOME_Prs2d::DisplayIn( SALOME_View* v ) const
{
if ( v ) v->Display( this );
}
-//===========================================================
/*!
- * Function: SALOME_Prs2d::EraseIn \n
- * Purpose: Dispatches display operation to proper Erase() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches display operation to proper Erase() method of SALOME_View
+*/
void SALOME_Prs2d::EraseIn( SALOME_View* v, const bool forced ) const
{
if ( v ) v->Erase( this, forced );
}
-//===========================================================
/*!
- * Function: SALOME_Prs2d::LocalSelectionIn \n
- * Purpose: Dispatches operation to proper LocalSelectionIn() \n
- * method of SALOME_View
- */
-//===========================================================
+ Dispatches operation to proper LocalSelectionIn() method of SALOME_View
+*/
void SALOME_Prs2d::LocalSelectionIn( SALOME_View* v, const int mode ) const
{
if ( v ) v->LocalSelection( this, mode );
}
-//===========================================================
/*!
- * Function: SALOME_Prs2d::Update \n
- * Purpose: Dispatches update operation to proper Update() \n
- * method of SALOME_Displayer
- */
-//===========================================================
+ Dispatches update operation to proper Update() method of SALOME_Displayer
+*/
void SALOME_Prs2d::Update( SALOME_Displayer* d )
{
if ( d ) d->Update( this );
}
-//===========================================================
/*!
- * Function: SALOME_View::Display \n
- * Purpose: Gives control to SALOME_Prs object, so that \n
- * it could perform double dispatch
- */
-//===========================================================
+ Gives control to SALOME_Prs object, so that it could perform double dispatch
+*/
void SALOME_View::Display( const SALOME_Prs* prs )
{
prs->DisplayIn( this );
}
-//===========================================================
/*!
- * Function: SALOME_View::Erase \n
- * Purpose: Gives control to SALOME_Prs object, so that \n
- * it could perform double dispatch
- */
-//===========================================================
+ Gives control to SALOME_Prs object, so that it could perform double dispatch
+*/
void SALOME_View::Erase( const SALOME_Prs* prs, const bool forced )
{
prs->EraseIn( this, forced );
}
-//===========================================================
/*!
- * Function: SALOME_View::LocalSelection \n
- * Purpose: Gives control to SALOME_Prs object, so that \n
- * it could perform double dispatch
- */
-//===========================================================
+ Gives control to SALOME_Prs object, so that it could perform double dispatch
+*/
void SALOME_View::LocalSelection( const SALOME_Prs* prs, const int mode )
{
prs->LocalSelectionIn( this, mode );
}
-//===========================================================
/*!
- * Function: SALOME_View::Display \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Display( const SALOME_OCCPrs* )
{
// MESSAGE( "SALOME_View::Display( const SALOME_OCCPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::Display \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Display( const SALOME_VTKPrs* )
{
// MESSAGE( "SALOME_View::Display( const SALOME_VTKPrs& ) called! Probably, presentation is being displayed in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::Display \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Display( const SALOME_Prs2d* )
{
// MESSAGE( "SALOME_View::Display( const SALOME_Prs2d& ) called! Probably, presentation is being displayed in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::Erase \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Erase( const SALOME_OCCPrs*, const bool )
{
// MESSAGE( "SALOME_View::Erase( const SALOME_OCCPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::Erase \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Erase( const SALOME_VTKPrs*, const bool )
{
// MESSAGE( "SALOME_View::Erase( const SALOME_VTKPrs& ) called! Probably, presentation is being erased in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::Erase \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::Erase( const SALOME_Prs2d*, const bool )
{
// MESSAGE( "SALOME_View::Erase( const SALOME_Prs2d& ) called! Probably, presentation is being erased in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::EraseAll \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::EraseAll( const bool )
{
// MESSAGE( "SALOME_View::EraseAll() called!" );
}
-//===========================================================
/*!
- * Function: SALOME_View::LocalSelection \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::LocalSelection( const SALOME_OCCPrs*, const int )
{
// MESSAGE( "SALOME_View::LocalSelection( const SALOME_OCCPrs* ) called! \
// Probably, selection is being activated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::LocalSelection \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::LocalSelection( const SALOME_VTKPrs*, const int )
{
// MESSAGE( "SALOME_View::LocalSelection( const SALOME_VTKPrs* ) called! \
// Probably, selection is being activated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::LocalSelection \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::LocalSelection( const SALOME_Prs2d*, const int )
{
// MESSAGE( "SALOME_View::LocalSelection( const SALOME_Prs2d* ) called! \
// Probably, selection is being activated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_View::GlobalSelection \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_View::GlobalSelection( const bool ) const
{
// MESSAGE( "SALOME_View::GlobalSelection() called! \
// Probably, selection is being activated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_Displayer::UpdatePrs \n
- * Purpose: Gives control to SALOME_Prs object, so that \n
- * it could perform double dispatch
- */
-//===========================================================
+ Gives control to SALOME_Prs object, so that it could perform double dispatch
+*/
void SALOME_Displayer::UpdatePrs( SALOME_Prs* prs )
{
prs->Update( this );
}
-//===========================================================
/*!
- * Function: SALOME_Displayer::Update \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_Displayer::Update( SALOME_OCCPrs* )
{
// MESSAGE( "SALOME_Displayer::Update( SALOME_OCCPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_Displayer::Update \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_Displayer::Update( SALOME_VTKPrs* )
{
// MESSAGE( "SALOME_Displayer::Update( SALOME_VTKPrs* ) called! Probably, presentation is being updated in uncompatible viewframe." );
}
-//===========================================================
/*!
- * Function: SALOME_Displayer::Update \n
- * Purpose: Virtual method, should be reimplemented in successors, \n
- * by default issues a warning and does nothing.
- */
-//===========================================================
+ Virtual method, should be reimplemented in successors, by default issues a warning and does nothing.
+*/
void SALOME_Displayer::Update( SALOME_Prs2d* )
{
// MESSAGE( "SALOME_Displayer::Update( SALOME_Prs2d* ) called! Probably, presentation is being updated in uncompatible viewframe." );
class SALOME_Displayer;
class Handle_SALOME_InteractiveObject;
-//===========================================================
/*!
- * Class: SALOME_Prs \n
- * Description: Base class for SALOME graphic object wrappers - presentations.\n
- * Presentations are temporary objects, so they can be created on the stack.
- */
-//===========================================================
+ \class SALOME_Prs
+ Base class for SALOME graphic object wrappers - presentations.
+ Presentations are temporary objects, so they can be created on the stack.
+*/
class PRS_EXPORT SALOME_Prs
{
virtual void LocalSelectionIn( SALOME_View*, const int ) const = 0;
};
-//===========================================================
/*!
- * Class: SALOME_OCCPrs \n
- * Description: Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers.\n
- * This intermediate class is necessary to avoid dependencies from OCC libs.
- */
-//===========================================================
+ \class SALOME_OCCPrs
+ Base class for OpenCASCADE graphic object (AIS_InteractiveObject) wrappers.
+ This intermediate class is necessary to avoid dependencies from OCC libs.
+*/
class PRS_EXPORT SALOME_OCCPrs : public SALOME_Prs
{
virtual void LocalSelectionIn( SALOME_View*, const int ) const;
};
-//===========================================================
/*!
- * Class: SALOME_VTKPrs \n
- * Description: Base class for VTK graphic object (vtkActor) wrappers \n
- * This intermediate class is necessary to avoid dependencies from VTK libs.
- */
-//===========================================================
+ \class SALOME_VTKPrs
+ Base class for VTK graphic object (vtkActor) wrappers.
+ This intermediate class is necessary to avoid dependencies from VTK libs.
+*/
class PRS_EXPORT SALOME_VTKPrs : public SALOME_Prs
{
public:
virtual void LocalSelectionIn( SALOME_View*, const int ) const;
};
-//===========================================================
/*!
- * Class: SALOME_Prs2d \n
- * Description: Base class for Plot2d graphic object (Plot2d_Curve) wrappers.
- */
-//===========================================================
-
+ \class SALOME_Prs2d
+ Base class for Plot2d graphic object (Plot2d_Curve) wrappers.
+*/
class PRS_EXPORT SALOME_Prs2d : public SALOME_Prs
{
public:
virtual void LocalSelectionIn( SALOME_View*, const int ) const;
};
-/////////////////////////////////////////////////////////////////////////
-// Base classes for object wrappers for any other visualization libraries
-// should be added here!
-/////////////////////////////////////////////////////////////////////////
-
-//===========================================================
/*!
- * Class: SALOME_View \n
- * Description: Base class for SALOME views (or view frames)
- */
-//===========================================================
-
+ Base classes for object wrappers for any other visualization libraries should be added here!
+*/
+/*!
+ \class SALOME_View
+ Base class for SALOME views (or view frames)
+*/
class PRS_EXPORT SALOME_View
{
public:
virtual void Repaint() {} //!< Null body here.
};
-//===========================================================
-/*
- * Classes: SALOME_Displayer
- * Description: These classes are used to specify type of view
- * VTK, OCC or Plot2d
- */
-//===========================================================
+/*!
+ \class SALOME_Displayer
+ These classes are used to specify type of view VTK, OCC or Plot2d
+*/
class PRS_EXPORT SALOME_OCCViewType {};
class PRS_EXPORT SALOME_VTKViewType {};
class PRS_EXPORT SALOME_Plot2dViewType {};
-//===========================================================
/*!
- * Class: SALOME_Displayer \n
- * Description: Base class for SALOME displayers
- */
-//===========================================================
-
+ \class SALOME_Displayer
+ Base class for SALOME displayers
+*/
class PRS_EXPORT SALOME_Displayer
{
public:
PyInterp_Dispatcher* PyInterp_Dispatcher::myInstance = 0;
-//////////////////////////////////////////////////////////
-// class : PyInterp_Request
-//////////////////////////////////////////////////////////
-
void PyInterp_Request::process()
{
safeExecute();
}
}
-//////////////////////////////////////////////////////////
-// class : PyInterp_Event
-//////////////////////////////////////////////////////////
-
PyInterp_Event::~PyInterp_Event()
{
PyInterp_Request::Destroy( myRequest );
myRequest = 0;
}
-//////////////////////////////////////////////////////////
-// class : PyInterp_Dispatcher
-//////////////////////////////////////////////////////////
-
PyInterp_Dispatcher* PyInterp_Dispatcher::Get()
{
if ( !myInstance )
class PyInterp_Watcher;
class PyInterp_Dispatcher;
-//////////////////////////////////////////////////////////
-// class : PyInterp_Request
-//////////////////////////////////////////////////////////
class PYINTERP_EXPORT PyInterp_Request
{
friend class PyInterp_Dispatcher;
PyInterp_base* myInterp;
};
-//////////////////////////////////////////////////////////
-// class : PyInterp_Event
-//////////////////////////////////////////////////////////
class PYINTERP_EXPORT PyInterp_Event : public QCustomEvent
{
PyInterp_Event();
PyInterp_Request* myRequest;
};
-//////////////////////////////////////////////////////////
-// class : PyInterp_Dispatcher
-//////////////////////////////////////////////////////////
class PYINTERP_EXPORT PyInterp_Dispatcher : protected QThread
{
PyInterp_Dispatcher(); // private constructor
_atFirst = false;
return ret;
}
- ret = simpleRun("salome.salome_init()");
+ ret = simpleRun("salome.salome_init(0,1)");
if (ret) {
_atFirst = false;
return ret;
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : PythonConsole
using namespace std;
-//****************************************************************
+/*!
+ Constructor
+*/
PythonConsole::PythonConsole(QWidget* parent, PyInterp_base* interp)
: QWidget(parent), myEditor( 0 )
{
lay->addWidget( myEditor );
}
-//****************************************************************
+/*!
+ Destructor
+*/
PythonConsole::~PythonConsole()
{
}
-//****************************************************************
+/*!
+ Executes command
+ \param command - string with command and arguments
+*/
void PythonConsole::exec( const QString& command )
{
if ( myEditor )
myEditor->exec( command );
}
-//****************************************************************
+/*!
+ Changes font of python console
+ \param f - new font
+*/
void PythonConsole::setFont( const QFont& f )
{
if( myEditor )
myEditor->setFont( f );
}
-//****************************************************************
+/*!
+ \return font of python console
+*/
QFont PythonConsole::font() const
{
QFont res;
PyInterp_Dispatcher::Get()->Exec( new ExecCommand( myInterp, _buf.latin1(), this ) );
}
-/*
+/*!
Processes drop event: paste dragged text
*/
void PythonConsole_PyEditor::contentsDropEvent( QDropEvent* event )
}
}
-/*
+/*!
Processes middle button release event - paste clipboard's contents
*/
void PythonConsole_PyEditor::contentsMouseReleaseEvent( QMouseEvent* event )
}
}
+/*!
+ Creates popup menu
+*/
QPopupMenu* PythonConsole_PyEditor::createPopupMenu( const QPoint& pos )
{
QPopupMenu* popup = QTextEdit::createPopupMenu( pos );
{
}
+/*!
+ Destructor
+*/
PythonConsole_PyInterp::~PythonConsole_PyInterp()
{
}
return true;
}
-
+/*!
+ The GIL is assumed to be held
+ It is the caller responsability caller to acquire the GIL
+ It will still be held on initContext output
+*/
bool PythonConsole_PyInterp::initContext()
{
- /*
- * The GIL is assumed to be held
- * It is the caller responsability caller to acquire the GIL
- * It will still be held on initContext output
- */
PyObject *m = PyImport_AddModule("__main__"); // interpreter main module (module context)
if(!m){
// if(MYDEBUG) MESSAGE("problem...");
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Alexander SOLOVYOV (OCN)
# Module : QDS
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS.h"
#include "QDS_Datum.h"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_H
#define QDS_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_CheckBox.h"
#include <qcheckbox.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_CHECKBOX_H
#define QDS_CHECKBOX_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_ComboBox.h"
#include <DDS_Dictionary.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_COMBOBOX_H
#define QDS_COMBOBOX_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_Datum.h"
#include "QDS_Validator.h"
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_DATUM_H
#define QDS_DATUM_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_LineEdit.h"
#include <qlineedit.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_LINEEDIT_H
#define QDS_LINEEDIT_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_RadioBox.h"
#include <DDS_Dictionary.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_RADIOBOX_H
#define QDS_RADIOBOX_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_SpinBox.h"
#include <QtxIntSpinBox.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_SPINBOX_H
#define QDS_SPINBOX_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_SpinBoxDbl.h"
#include <DDS_Dictionary.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_PINBOXDBL_H
#define QDS_PINBOXDBL_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_TextEdit.h"
#include <qtextedit.h>
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_TEXTEEDIT_H
#define QDS_TEXTEEDIT_H
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "QDS_Validator.h"
/*!
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef QDS_VALIDATOR_H
#define QDS_VALIDATOR_H
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : suit
QtxResourceEdit.h \
QtxListView.h \
QtxDirListEditor.h \
- QtxDblValidator.h
+ QtxDblValidator.h \
+ QtxSplash.h
# .po files to transform in .qm
QtxWorkstack.cxx \
QtxListView.cxx \
QtxDirListEditor.cxx \
- QtxDblValidator.cxx
+ QtxDblValidator.cxx \
+ QtxSplash.cxx
LIB_MOC = \
QtxAction.h \
QtxListView.h \
QtxListResourceEdit.h \
QtxDirListEditor.h \
- QtxDblValidator.h
+ QtxDblValidator.h \
+ QtxSplash.h
RESOURCES_FILES = \
typedef QValueList<short> QShortList;
typedef QValueList<double> QDoubleList;
+/*!
+ \class Qtx
+ \brief Set of auxiliary static methods
+*/
class QTX_EXPORT Qtx : public Qt
{
public:
#include "QtxAction.h"
#include <qpopupmenu.h>
+#include <qmenubar.h>
/*!
Name: QtxAction [public]
*/
QtxAction::QtxAction( QObject* parent, const char* name, bool toggle )
-: QAction( parent, name, toggle )
+ : QAction( parent, name, toggle )
{
}
QtxAction::QtxAction( const QString& text, const QIconSet& icon,
const QString& menuText, int accel,
QObject* parent, const char* name, bool toggle )
-: QAction( text, icon, menuText, accel, parent, name, toggle )
+ : QAction( text, icon, menuText, accel, parent, name, toggle )
{
}
QtxAction::QtxAction( const QString& text, const QString& menuText, int accel,
QObject* parent, const char* name, bool toggle )
-: QAction( text, menuText, accel, parent, name, toggle )
+ : QAction( text, menuText, accel, parent, name, toggle )
{
}
bool QtxAction::addTo( QWidget* w )
{
+ if ( w->inherits( "QMenuBar" ) ) {
+ // --- Add action to the QMenuBar ---
+ // n.b. currently for the actions inserted to the menu bar
+ // the following properties are not supported:
+ // * tooltips
+ // * what's this info
+ // * toggle mode
+ QMenuBar* mb = (QMenuBar*)w;
+ if ( myMenuIds.find( w ) != myMenuIds.end() )
+ return false; // already added
+ if ( name() == "qt_separator_action" ) // separator
+ myMenuIds[ w ] = mb->insertSeparator();
+ else if ( iconSet().isNull() ) // has no icon
+ myMenuIds[ w ] = mb->insertItem( menuText(), this, SIGNAL( activated() ), accel() );
+ else // has icon
+ myMenuIds[ w ] = mb->insertItem( iconSet(), menuText(), this, SIGNAL( activated() ), accel() );
+ mb->setItemEnabled( myMenuIds[ w ], isEnabled() );
+ mb->setItemVisible( myMenuIds[ w ], isVisible() );
+ return true;
+ }
return QAction::addTo( w );
}
if ( !addTo( w ) )
return false;
- if ( w->inherits( "QPopupMenu" ) )
- {
+ if ( w->inherits( "QPopupMenu" ) ) {
+ // --- Add action to the QPopupMenu ---
QPopupMenu* popup = (QPopupMenu*)w;
- if ( index < (int)popup->count() - 1 )
- {
+ if ( index >= 0 && index < (int)popup->count() - 1 ) {
int id = popup->idAt( popup->count() - 1 );
- if ( id != -1 )
- {
- QMenuItem* item = popup->findItem( id );
- if ( item && item->isSeparator() )
- {
- popup->removeItem( id );
- popup->insertSeparator( index );
- }
- else
- {
- QPopupMenu* p = item ? item->popup() : 0;
- int accel = popup->accel( id );
- bool isOn = popup->isItemEnabled( id );
- QString text = popup->text( id );
- QIconSet icon;
- if ( popup->iconSet( id ) )
- icon = *popup->iconSet( id );
- popup->removeItem( id );
- int pos;
- if ( icon.isNull() )
- if ( p )
- pos = popup->indexOf( popup->insertItem( text, p, id, index ) );
- else
- pos = popup->indexOf( popup->insertItem( text, id, index ) );
- else
- if ( p )
- pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) );
- else
- pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) );
- popup->setId( pos, id );
- popup->setAccel( accel, id );
- popup->setItemEnabled( id, isOn );
- if ( !p )
- popup->connectItem( id, this, SLOT( internalActivation() ) );
- }
+ if ( id != -1 ) {
+ QMenuItem* item = popup->findItem( id );
+ if ( item && item->isSeparator() ) {
+ popup->removeItem( id );
+ popup->insertSeparator( index );
+ }
+ else {
+ QPopupMenu* p = item ? item->popup() : 0;
+ int accel = popup->accel( id );
+ bool isOn = popup->isItemEnabled( id );
+ bool isVisible = popup->isItemVisible( id );
+ bool isChecked = popup->isItemChecked( id );
+ QString text = popup->text( id );
+ QIconSet icon;
+ if ( popup->iconSet( id ) )
+ icon = *popup->iconSet( id );
+ popup->removeItem( id );
+ int pos;
+ if ( icon.isNull() )
+ if ( p )
+ pos = popup->indexOf( popup->insertItem( text, p, id, index ) );
+ else
+ pos = popup->indexOf( popup->insertItem( text, id, index ) );
+ else
+ if ( p )
+ pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) );
+ else
+ pos = popup->indexOf( popup->insertItem( icon, text, p, id, index ) );
+ popup->setId( pos, id );
+ popup->setAccel( accel, id );
+ popup->setItemEnabled( id, isOn );
+ popup->setItemVisible( id, isVisible );
+ popup->setItemChecked( id, isChecked );
+ if ( !whatsThis().isEmpty() )
+ popup->setWhatsThis( id, whatsThis() );
+ if ( !p )
+ popup->connectItem( id, this, SLOT( internalActivation() ) );
+ }
+ }
+ }
+ }
+ else if ( w->inherits( "QMenuBar" ) ) {
+ // --- Add action to the QMenuBar ---
+ QMenuBar* mb = (QMenuBar*)w;
+ if ( index >= 0 && index < (int)mb->count() - 1 ) {
+ int id = mb->idAt( mb->count() - 1 );
+ if ( id != -1 ) {
+ QMenuItem* item = mb->findItem( id );
+ if ( item && item->isSeparator() ) {
+ mb->removeItem( id );
+ mb->insertSeparator( index );
+ }
+ else {
+ QPopupMenu* p = item ? item->popup() : 0;
+ int accel = mb->accel( id );
+ bool isOn = mb->isItemEnabled( id );
+ bool isVisible = mb->isItemVisible( id );
+ QString text = mb->text( id );
+ QIconSet icon;
+ if ( mb->iconSet( id ) )
+ icon = *mb->iconSet( id );
+ mb->removeItem( id );
+ int pos;
+ if ( icon.isNull() )
+ if ( p )
+ pos = mb->indexOf( mb->insertItem( text, p, id, index ) );
+ else
+ pos = mb->indexOf( mb->insertItem( text, id, index ) );
+ else
+ if ( p )
+ pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) );
+ else
+ pos = mb->indexOf( mb->insertItem( icon, text, p, id, index ) );
+ mb->setId( pos, id );
+ mb->setAccel( accel, id );
+ mb->setItemEnabled( id, isOn );
+ mb->setItemVisible( id, isVisible );
+ if ( !p )
+ mb->connectItem( id, this, SIGNAL( activated() ) );
+ }
}
}
}
-
return true;
}
+/*!
+ Name: removeFrom [virtual public]
+ Desc: Removes this action from widget. Returns true if the action was removed
+ successfully and false otherwise.
+*/
+
+bool QtxAction::removeFrom( QWidget* w )
+{
+ // check if widget is QMenuBar
+ if ( w->inherits( "QMenuBar" ) ) {
+ QMenuBar* mb = (QMenuBar*)w;
+ if ( myMenuIds.find( w ) == myMenuIds.end() )
+ return false; // not yet added
+ mb->removeItem( myMenuIds[ w ] );
+ myMenuIds.remove( w );
+ return true;
+ }
+ return QAction::removeFrom( w );
+}
+
/*!
Name: setPopup [virtual public]
Desc: Set or unset the sub popup menu for item with specified id in the given popup.
*/
-void QtxAction::setPopup( QPopupMenu* popup, const int id, QPopupMenu* subPopup ) const
+void QtxAction::setPopup( QWidget* w, const int id, QPopupMenu* subPopup ) const
{
- if ( !popup )
+ if ( !w )
return;
+ if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) )
+ return; // unsupported widget type
+
QMenuData* md = 0;
- const QMenuData* pmd = popup;
- QMenuItem* item = popup->findItem( id, &md );
+ QMenuData* pmd = dynamic_cast<QMenuData*>( w );
+ if ( !pmd )
+ return; // bad widget
+
+ QMenuItem* item = pmd->findItem( id, &md );
if ( !item || md != pmd )
- return;
+ return; // item is not found
QPopupMenu* oldPopup = item->popup();
if ( oldPopup == subPopup )
- return;
+ return; // popup is not changed
- int accel = popup->accel( id );
- bool isOn = popup->isItemEnabled( id );
- QString text = popup->text( id );
+ // get properties
+ int accel = pmd->accel( id );
+ bool isOn = pmd->isItemEnabled( id );
+ bool isVisible = pmd->isItemVisible( id );
+ int pos = pmd->indexOf( id );
+ QString text = pmd->text( id );
QIconSet icon;
- if ( popup->iconSet( id ) )
- icon = *popup->iconSet( id );
- popup->removeItem( id );
+ if ( pmd->iconSet( id ) )
+ icon = *pmd->iconSet( id );
- int pos;
- if ( icon.isNull() )
- pos = popup->indexOf( subPopup ? popup->insertItem( text, subPopup ) : popup->insertItem( text ) );
- else
- pos = popup->indexOf( subPopup ? popup->insertItem( icon, text, subPopup ) : popup->insertItem( icon, text ) );
+ // remove previous item
+ pmd->removeItem( id );
- popup->setId( pos, id );
- popup->setAccel( accel, id );
- popup->setItemEnabled( id, isOn );
+ // add new item
+ if ( w->inherits( "QPopupMenu" ) ) {
+ // --- QPopupMenu ---
+ QPopupMenu* popup = (QPopupMenu*)w;
+ if ( icon.isNull() )
+ pos = popup->indexOf( subPopup ? popup->insertItem( text, subPopup, id, pos ) :
+ popup->insertItem( text, id, pos ) );
+ else
+ pos = popup->indexOf( subPopup ? popup->insertItem( icon, text, subPopup, id, pos ) :
+ popup->insertItem( icon, text, id, pos ) );
+ }
+ else {
+ // --- QMenuBar ---
+ QMenuBar* mb = (QMenuBar*)w;
+ if ( icon.isNull() )
+ pos = mb->indexOf( subPopup ? mb->insertItem( text, subPopup, id, pos ) :
+ mb->insertItem( text, id, pos ) );
+ else
+ pos = mb->indexOf( subPopup ? mb->insertItem( icon, text, subPopup, id, pos ) :
+ mb->insertItem( icon, text, id, pos ) );
+ }
+ // restore properties
+ pmd->setId( pos, id ); // for sure (if id < 0)
+ pmd->setAccel( accel, id );
+ pmd->setItemEnabled( id, isOn );
+ pmd->setItemVisible( id, isVisible );
+
+ // delete old popup
delete oldPopup;
}
+
#include "Qtx.h"
#include <qaction.h>
+#include <qmap.h>
class QTX_EXPORT QtxAction : public QAction
{
virtual bool addTo( QWidget* );
virtual bool addTo( QWidget*, int );
+ virtual bool removeFrom( QWidget* );
protected:
- void setPopup( QPopupMenu*, const int, QPopupMenu* ) const;
+ void setPopup( QWidget*, const int, QPopupMenu* ) const;
+
+private:
+ QMap<QWidget*,int> myMenuIds;
};
#endif
#include <qmainwindow.h>
#include <qfile.h>
#include <qdom.h>
+#include <qvaluelist.h>
+
+// VSR: Uncomment this #define in order to allow dynamic menus support
+// (emit signals when popup menu is pre-activated)
+// Currently this support is disabled.
+//#define ENABLE_DYNAMIC_MENU
+
+/*!
+ Service functions
+ Level: Internal
+*/
+namespace {
+ QValueList<int> prepareIds( const QWidget* w )
+ {
+ QValueList<int> l;
+ const QMenuData* md = 0;
+ if ( w->inherits( "QMenuBar" ) )
+ md = dynamic_cast<const QMenuData*>( w );
+ else if ( w->inherits( "QPopupMenu" ) )
+ md = dynamic_cast<const QMenuData*>( w );
+ if ( md ) {
+ for ( int i=0; i < md->count(); i++ )
+ l.append( md->idAt( i ) );
+ }
+ return l;
+ }
+
+ int getNewId( const QWidget* w, const QValueList<int>& l, bool retId = true )
+ {
+ const QMenuData* md = 0;
+ if ( w->inherits( "QMenuBar" ) )
+ md = dynamic_cast<const QMenuData*>( w );
+ else if ( w->inherits( "QPopupMenu" ) )
+ md = dynamic_cast<const QMenuData*>( w );
+ if ( md ) {
+ for ( int i=0, j=0; i < md->count() && j < l.count(); i++, j++ )
+ if ( md->idAt( i ) != l[ j ] ) return retId ? md->idAt( i ) : i;
+ if ( md->count() > l.count() ) return retId ? md->idAt( md->count()-1 ) : md->count()-1;
+ }
+ return -1;
+ }
+
+ void dumpMenu( QWidget* w, bool before )
+ {
+ QMenuData* md = dynamic_cast<QMenuData*>( w );
+ if ( !w ) return;
+ printf(">>> start dump menu (%s) >>>\n", before ? "before" : "after" );
+ for( int i = 0; i < md->count(); i++ )
+ printf("%d: %d: %s\n",i,md->idAt(i),md->text(md->idAt(i)).latin1() );
+ printf("<<< end dump menu (%s) <<<\n", before ? "before" : "after" );
+ }
+};
/*!
Class: QtxActionMenuMgr::MenuAction
class QtxActionMenuMgr::MenuAction : public QtxAction
{
public:
- MenuAction( const QString&, const QString&, QObject*, const bool = false );
+ MenuAction( const QString&, const QString&, QObject*, const int = -1, const bool = false );
virtual ~MenuAction();
virtual bool addTo( QWidget* );
QPopupMenu* popup() const;
private:
- int myId;
- QPopupMenu* myPopup;
- bool myEmptyEnabled;
+ int myId;
+ QPopupMenu* myPopup;
+ bool myEmptyEnabled;
+ QMap<QWidget*,int> myIds;
};
+
+/*!
+ Constructor for menu action
+ \param text - description text
+ \param menutext - menu text
+ \param parent - parent object
+ \param id - integer identificator of action
+ \param allowEmpty - if it is true, it makes possible to add this action with empty popup to menu
+*/
+
QtxActionMenuMgr::MenuAction::MenuAction( const QString& text,
const QString& menuText,
QObject* parent,
+ const int id,
const bool allowEmpty )
: QtxAction( text, menuText, 0, parent ),
- myId( -1 ),
+ myId( id ),
myPopup( 0 ),
myEmptyEnabled( allowEmpty )
{
myPopup = new QPopupMenu();
}
+/*!
+ Destructor: deletes internal popup
+*/
QtxActionMenuMgr::MenuAction::~MenuAction()
{
delete myPopup;
}
+/*!
+ Adds action to widget, for example, to popup menu or menu bar
+*/
bool QtxActionMenuMgr::MenuAction::addTo( QWidget* w )
{
- if ( myId != -1 || !w )
- return false;
+ if ( !w )
+ return false; // bad widget
if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) )
- return false;
+ return false; // not allowed widget type
+
+ if ( myIds.find( w ) != myIds.end() )
+ return false; // already added
if ( !myPopup )
- return false;
+ return false; // bad own popup menu
if ( !myEmptyEnabled && !myPopup->count() )
- return false;
-
- if ( w->inherits( "QPopupMenu" ) && QAction::addTo( w ) )
- {
- QPopupMenu* pm = (QPopupMenu*)w;
- myId = pm->idAt( pm->count() - 1 );
- setPopup( pm, myId, myPopup );
+ return false; // not allowed empty menu
+
+ if ( w->inherits( "QPopupMenu" ) ) {
+ QValueList<int> l = prepareIds( w );
+ int idx;
+ if ( QtxAction::addTo( w ) && ( idx = getNewId( w, l, false ) ) != -1 ) {
+ QPopupMenu* pm = (QPopupMenu*)w;
+ myIds[ w ] = pm->idAt( idx );
+ if ( myId != -1 )
+ pm->setId( idx, myId );
+ setPopup( pm, myId != -1 ? myId : myIds[ w ], myPopup );
+ }
}
- else if ( w->inherits( "QMenuBar" ) )
- {
- QMenuBar* mb = (QMenuBar*)w;
- myId = iconSet().isNull() ? mb->insertItem( menuText(), myPopup ) :
- mb->insertItem( iconSet(), menuText(), myPopup );
- mb->setItemEnabled( myId, isEnabled() );
+ else if ( w->inherits( "QMenuBar" ) ) {
+ QValueList<int> l = prepareIds( w );
+ int idx;
+ if ( QtxAction::addTo( w ) && ( idx = getNewId( w, l, false ) ) != -1 ) {
+ QMenuBar* mb = (QMenuBar*)w;
+ myIds[ w ] = mb->idAt( idx );
+ if ( myId != -1 )
+ mb->setId( idx, myId );
+ setPopup( mb, myId != -1 ? myId : myIds[ w ], myPopup );
+ }
}
else
return false;
return true;
}
+/*!
+ Removes action from widget, for example, from popup menu or menu bar
+*/
bool QtxActionMenuMgr::MenuAction::removeFrom( QWidget* w )
{
- if ( w->inherits( "QPopupMenu" ) && QAction::removeFrom( w ) )
- myId = -1;
+ if ( !w )
+ return false; // bad widget
+
+ if ( !w->inherits( "QPopupMenu" ) && !w->inherits( "QMenuBar" ) )
+ return false; // not allowed widget type
+
+ if ( myIds.find( w ) == myIds.end() )
+ return false; // not yet added
+
+ if ( w->inherits( "QPopupMenu" ) ) {
+ if ( myId != -1 ) {
+ QPopupMenu* pm = (QPopupMenu*)w;
+ int idx = pm->indexOf( myId );
+ if ( idx != -1 ) pm->setId( idx, myIds[ w ] );
+ }
+ myIds.remove( w );
+ return QtxAction::removeFrom( w );;
+ }
else if ( w->inherits( "QMenuBar" ) )
{
- QMenuBar* mb = (QMenuBar*)w;
- mb->removeItem( myId );
- myId = -1;
+ if ( myId != -1 ) {
+ QMenuBar* mb = (QMenuBar*)w;
+ int idx = mb->indexOf( myId );
+ if ( idx != -1 ) mb->setId( idx, myIds[ w ] );
+ }
+ myIds.remove( w );
+ return QtxAction::removeFrom( w );
}
-
- return myId == -1;
+ return false;
}
+/*!
+ \return internal popup of action
+*/
QPopupMenu* QtxActionMenuMgr::MenuAction::popup() const
{
return myPopup;
Class: QtxActionMenuMgr
Level: Public
*/
-
-
QtxActionMenuMgr::QtxActionMenuMgr( QMainWindow* p )
: QtxActionMgr( p ),
-myMenu( p ? p->menuBar() : 0 )
+ myMenu( p ? p->menuBar() : 0 )
{
myRoot.id = -1;
myRoot.group = -1;
if ( myMenu ) {
connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
+#ifdef ENABLE_DYNAMIC_MENU
if ( myMenu->inherits( "QMenuBar" ) )
connect( myMenu, SIGNAL( highlighted( int ) ), this, SLOT( onHighlighted( int ) ) );
+#endif
}
}
+/*!
+ Constructor
+*/
QtxActionMenuMgr::QtxActionMenuMgr( QWidget* mw, QObject* p )
: QtxActionMgr( p ),
-myMenu( mw )
+ myMenu( mw )
{
myRoot.id = -1;
myRoot.group = -1;
connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
}
+/*!
+ Destructor
+*/
QtxActionMenuMgr::~QtxActionMenuMgr()
{
for ( NodeListIterator it( myRoot.children ); it.current() && myMenu; ++it )
delete itr.data();
}
+/*!
+ \return whether menu item corresponding to action is visible
+ \param actId - identificator of action
+ \param place - identificator of some parent action
+*/
bool QtxActionMenuMgr::isVisible( const int actId, const int place ) const
{
MenuNode* node = find( actId, place );
return node && node->visible;
}
+/*!
+ Sets visible state of action
+ \param actId - identificator of action
+ \param place - identificator of some parent action
+ \param v - visibility state
+*/
void QtxActionMenuMgr::setVisible( const int actId, const int place, const bool v )
{
MenuNode* node = find( actId, place );
node->visible = v;
}
+/*!
+ Insert action as children menu item
+ \param id - identificator of action
+ \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items,
+ for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created.
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( const int id, const QString& menus, const int group, const int idx )
{
return insert( id, QStringList::split( "|", menus ), group, idx );
}
+/*!
+ Insert action as children menu item
+ \param a - action
+ \param menus - few names of parent menu items, separated by '|'. It means sequence of menu items,
+ for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created.
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( QAction* a, const QString& menus, const int group, const int idx )
{
return insert( a, QStringList::split( "|", menus ), group, idx );
}
+/*!
+ Insert action as children menu item
+ \param id - identificator of action
+ \param menus - list of names of parent menu items, separated by |. It means sequence of menu items,
+ for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created.
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( const int id, const QStringList& menus, const int group, const int idx )
{
int pId = createMenu( menus, -1 );
return insert( id, pId, group, idx );
}
+/*!
+ Insert action as children menu item
+ \param a - action
+ \param menus - list of names of parent menu items. It means sequence of menu items,
+ for example "File|Edit" means File->Edit submenu. If submenu doesn't exist, it will be created.
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( QAction* a, const QStringList& menus, const int group, const int idx )
{
int pId = createMenu( menus, -1 );
return insert( a, pId, group, idx );
}
+/*!
+ Insert action as children menu item
+ \param id - identificator of action
+ \param pId - identificator of action corresponding to parent menu item
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( const int id, const int pId, const int group, const int idx )
{
if ( id == -1 )
return node->id;
}
+/*!
+ Insert action as children menu item
+ \param a - action
+ \param pId - identificator of action corresponding to parent menu item
+ \param group - group identificator
+ \param idx - index inside Qt menu
+*/
int QtxActionMenuMgr::insert( QAction* a, const int pId, const int group, const int idx )
{
return insert( registerAction( a ), pId, group, idx );
}
+/*!
+ Create and insert action as children menu item
+ \return identificator of inserted action
+ \param title - menu text of action
+ \param pId - identificator of action corresponding to parent menu item
+ \param group - group identificator
+ \param id - identificator of new action
+ \param idx - index inside Qt menu
+ \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu
+*/
int QtxActionMenuMgr::insert( const QString& title, const int pId, const int group, const int id, const int idx, const bool allowEmpty )
{
MenuNode* pNode = pId == -1 ? &myRoot : find( pId );
if ( fid != -1 )
return fid;
- MenuAction* ma = new MenuAction( clearTitle( title ), title, this, allowEmpty );
+ int gid = (id == -1 || eNode ) ? generateId() : id;
+
+ MenuAction* ma = new MenuAction( clearTitle( title ), title, this, gid, allowEmpty );
+#ifdef ENABLE_DYNAMIC_MENU
connect( ma->popup(), SIGNAL( highlighted( int ) ), this, SLOT( onHighlighted( int ) ) );
+#endif
MenuNode* node = new MenuNode( pNode );
node->group = group;
node->idx = idx;
- node->id = myMenus.insert( (id == -1 || eNode ) ? generateId() : id, ma ).key();
+ node->id = myMenus.insert( gid, ma ).key();
pNode->children.append( node );
return node->id;
}
+/*!
+ Create and insert action as children menu item
+ \return identificator of inserted action
+ \param title - menu text of action
+ \param menus - string list of parents' menu texts, separated by |
+ \param group - group identificator
+ \param id - identificator of new action
+ \param idx - index inside Qt menu
+ \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu
+*/
int QtxActionMenuMgr::insert( const QString& title, const QString& menus, const int group, const int id, const int idx, const bool allowEmpty )
{
return insert( title, QStringList::split( "|", menus ), group, id, idx, allowEmpty );
}
+/*!
+ Create and insert action as children menu item
+ \return identificator of inserted action
+ \param title - menu text of action
+ \param menus - list of parents menu items
+ \param group - group identificator
+ \param id - identificator of new action
+ \param idx - index inside Qt menu
+ \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu
+*/
int QtxActionMenuMgr::insert( const QString& title, const QStringList& menus, const int group, const int id, const int idx, const bool allowEmpty )
{
int pId = createMenu( menus, -1 );
return insert( title, pId, group, id, idx, allowEmpty );
}
+/*!
+ Create and append action as last children
+ \return identificator of inserted action
+ \param title - menu text of action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+ \param id - identificator of new action
+ \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu
+*/
int QtxActionMenuMgr::append( const QString& title, const int pId, const int group, const int id, const bool allowEmpty )
{
return insert( title, pId, group, id, allowEmpty );
}
+/*!
+ Create and append action as last children
+ \return identificator of inserted action
+ \param id - identificator of existing action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+*/
int QtxActionMenuMgr::append( const int id, const int pId, const int group )
{
return insert( id, pId, group );
}
+/*!
+ Create and append action as last children
+ \return identificator of inserted action
+ \param a - action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+*/
int QtxActionMenuMgr::append( QAction* a, const int pId, const int group )
{
return insert( a, pId, group );
}
+/*!
+ Create and insert action as first children
+ \return identificator of inserted action
+ \param title - menu text of action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+ \param id - identificator of new action
+ \param allowEmpty - indicates, that it is possible to add this action with empty popup menu to other menu
+*/
int QtxActionMenuMgr::prepend( const QString& title, const int pId, const int group, const int id, const bool allowEmpty )
{
return insert( title, pId, group, id, 0, allowEmpty );
}
+/*!
+ Create and insert action as last children
+ \return identificator of inserted action
+ \param id - identificator of existing action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+*/
int QtxActionMenuMgr::prepend( const int id, const int pId, const int group )
{
return insert( id, pId, group, 0 );
}
+/*!
+ Create and insert action as last children
+ \return identificator of inserted action
+ \param a - action
+ \param pId - id of action corresponding to parent menu item
+ \param group - group identificator
+*/
int QtxActionMenuMgr::prepend( QAction* a, const int pId, const int group )
{
return insert( a, pId, group, 0 );
}
+/*!
+ Removes menu item corresponding to action
+ \param id - identificator of action
+*/
void QtxActionMenuMgr::remove( const int id )
{
removeMenu( id, 0 );
update();
}
+/*!
+ Removes menu item
+ \param id - identificator of action
+ \param pId - identificator of action corresponding to parent menu item
+ \param group - group identificator
+*/
void QtxActionMenuMgr::remove( const int id, const int pId, const int group )
{
MenuNode* pNode = pId == -1 ? &myRoot : find( pId );
updateMenu( pNode, false );
}
+/*!
+ Shows menu item corresponding to action
+ \param id - identificator of action
+*/
void QtxActionMenuMgr::show( const int id )
{
setShown( id, true );
}
+/*!
+ Hides menu item corresponding to action
+ \param id - identificator of action
+*/
void QtxActionMenuMgr::hide( const int id )
{
setShown( id, false );
}
+/*!
+ \return shown status of menu item corresponding to action
+ \param id - identificator of action
+*/
bool QtxActionMenuMgr::isShown( const int id ) const
{
bool res = false;
return res;
}
+/*!
+ Sets shown status of menu item corresponding to action
+ \param id - identificator of action
+ \param on - new shown status
+*/
void QtxActionMenuMgr::setShown( const int id, const bool on )
{
NodeList aNodes;
updateMenu( itr.key(), false );
}
+/*!
+ SLOT: called when corresponding menu is destroyed, clears internal pointer to menu
+*/
void QtxActionMenuMgr::onDestroyed( QObject* obj )
{
if ( myMenu == obj )
myMenu = 0;
}
+/*!
+ SLOT: called when menu item is highlighted
+*/
void QtxActionMenuMgr::onHighlighted( int id )
{
const QObject* snd = sender();
}
}
+/*!
+ Assignes new menu with manager
+ \param mw - new menu
+*/
void QtxActionMenuMgr::setWidget( QWidget* mw )
{
if ( myMenu == mw )
connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
}
+/*!
+ \return menu node by it's place description
+ \param actId - identificator of action
+ \param pId - identificator of action corresponding to start menu item
+ \param rec - recursive search
+*/
QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId, const bool rec ) const
{
return find( actId, find( pId ), rec );
}
+/*!
+ \return menu node by it's place description
+ \param actId - identificator of action
+ \param startNode - start menu item
+ \param rec - recursive search
+*/
QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode, const bool rec ) const
{
MenuNode* node = 0;
return node;
}
+/*!
+ Finds menu node
+ \return true if at least one node is found
+ \param id - identificator of action
+ \param lst - list to be filled with found nodes
+ \param startNode - start menu item
+*/
bool QtxActionMenuMgr::find( const int id, NodeList& lst, MenuNode* startNode ) const
{
MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
return !lst.isEmpty();
}
+/*!
+ Finds menu node
+ \return menu node
+ \param title - menu text of searched node
+ \param pId - id of action corresponding to start menu item
+ \param rec - recursive searching
+*/
QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int pId, const bool rec ) const
{
return find( title, find( pId ), rec );
}
+/*!
+ Finds menu node
+ \return true if at least one node is found
+ \param title - menu text of node
+ \param lst - list to be filled with found nodes
+ \param startNode - start menu item
+*/
bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* startNode ) const
{
MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
return !lst.isEmpty();
}
+/*!
+ Finds menu node
+ \return menu node
+ \param title - menu text of searched node
+ \param startNode - start menu item
+ \param rec - recursive searching
+*/
QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, MenuNode* startNode, const bool rec ) const
{
MenuNode* node = 0;
return node;
}
+/*!
+ Find id among children
+ \return id (>0) if on success or -1 on fail
+ \param id - id to be searched
+ \param pid - id of parent, among children of that 'id' must be searched
+*/
int QtxActionMenuMgr::findId( const int id, const int pid ) const
{
MenuNode* start = pid != -1 ? find( pid ) : (MenuNode*)&myRoot;
return -1;
}
+/*!
+ Removes child
+ \param id - id of child to be removed
+ \param startNode - parent menu item
+*/
void QtxActionMenuMgr::removeMenu( const int id, MenuNode* startNode )
{
MenuNode* start = startNode ? startNode : &myRoot;
}
}
+/*!
+ \return menu item action by id
+ \param id - id of action
+*/
QAction* QtxActionMenuMgr::itemAction( const int id ) const
{
return action( id );
}
+/*!
+ \return menu action by id
+ \param id - id of action
+*/
QtxActionMenuMgr::MenuAction* QtxActionMenuMgr::menuAction( const int id ) const
{
MenuAction* a = 0;
return a;
}
+/*!
+ Updates menu ( isUpdatesEnabled() must return true )
+ \param startNode - first menu item to be updated
+ \param rec - recursive update
+ \param updParent - update also parent item (without recursion)
+ \sa isUpdatesEnabled()
+*/
void QtxActionMenuMgr::updateMenu( MenuNode* startNode, const bool rec, const bool updParent )
{
if ( !isUpdatesEnabled() )
if ( a )
a->removeFrom( mw );
}
-
+ /* VSR: commented to allow direct creating of menus by calling insertItem() methods
if ( mw->inherits( "QMenuBar" ) )
((QMenuBar*)mw)->clear();
else if ( mw->inherits( "QPopupMenu" ) )
((QPopupMenu*)mw)->clear();
-
+ */
QMap<int, NodeList> idMap;
for ( NodeListIterator it2( node->children ); it2.current(); ++it2 )
{
QAction* a = itemAction( iter.current()->id );
if ( !a )
a = menuAction( iter.current()->id );
- if ( a ) {
- QMenuData* md = dynamic_cast<QMenuData*>( mw );
- int cnt = 0;
- if ( md ) cnt = md->count();
+ if ( a )
a->addTo( mw );
- if ( md && md->count() - cnt == 1 ) { //&& iter.current()->id > 0
- int lid = md->idAt( cnt );
- QMenuItem* mi = md->findItem( lid );
- if ( mi && !mi->isSeparator() )
- md->setId( cnt, iter.current()->id );
- }
- }
}
}
updateMenu( node->parent, false );
}
+/*!
+ Updates menu (virtual variant). To be redefined for custom activity on menu updating
+*/
void QtxActionMenuMgr::internalUpdate()
{
if ( isUpdatesEnabled() )
updateMenu();
}
+/*!
+ \return true if widget is non-empty menu
+ \param wid - widget to be checked
+*/
bool QtxActionMenuMgr::checkWidget( QWidget* wid ) const
{
if ( !wid )
else if ( wid->inherits( "QMenuBar" ) )
md = (QMenuBar*)wid;
- return md->count();
+ return md ? md->count() : false;
}
+/*!
+ \return popup of menu item
+ \param node - menu item
+*/
QWidget* QtxActionMenuMgr::menuWidget( MenuNode* node) const
{
if ( !node || node == &myRoot )
return myMenus[node->id]->popup();
}
+/*!
+ Removes excess separators of menu
+ \param wid - menu to be processed
+*/
void QtxActionMenuMgr::simplifySeparators( QWidget* wid )
{
if ( wid && wid->inherits( "QPopupMenu" ) )
Qtx::simplifySeparators( (QPopupMenu*)wid, false );
}
+/*!
+ Removes special symbols (&) from string
+ \param txt - string to be processed
+ \return clear variant of string
+*/
QString QtxActionMenuMgr::clearTitle( const QString& txt ) const
{
QString res = txt;
return res;
}
+/*!
+ Creates and inserts many menu items
+ \param lst - list of menu texts
+ \param pId - id of action corresponding to parent menu item
+*/
int QtxActionMenuMgr::createMenu( const QStringList& lst, const int pId )
{
if ( lst.isEmpty() )
return insert( title, parentId, -1 );
}
+/*!
+ Loads actions description from file
+ \param fname - name of file
+ \param r - reader of file
+ \return true on success
+*/
bool QtxActionMenuMgr::load( const QString& fname, QtxActionMgr::Reader& r )
{
MenuCreator cr( &r, this );
return r.read( fname, cr );
}
+/*!
+ \return true if item has such child
+ \param title - menu text of child
+ \param pid - id of action corresponding to item
+*/
bool QtxActionMenuMgr::containsMenu( const QString& title, const int pid ) const
{
return (bool)find( title, pid, false );
}
+/*!
+ \return true if item has such child
+ \param id - id of action corresponding to child
+ \param pid - id of action corresponding to item
+*/
bool QtxActionMenuMgr::containsMenu( const int id, const int pid ) const
{
return (bool)find( id, pid, false );
}
+
/*!
- Class: QtxActionMenuMgr::MenuCreator
- Level: Public
+ Constructor
+ \param r - menu reader
+ \param mgr - menu manager
*/
-
QtxActionMenuMgr::MenuCreator::MenuCreator( QtxActionMgr::Reader* r,
QtxActionMenuMgr* mgr )
: QtxActionMgr::Creator( r ),
{
}
+/*!
+ Destructor
+*/
QtxActionMenuMgr::MenuCreator::~MenuCreator()
{
}
+/*!
+ Appends new menu items
+ \param tag - tag of item
+ \param subMenu - it has submenu
+ \param attr - list of attributes
+ \param pId - id of action corresponding to parent item
+*/
int QtxActionMenuMgr::MenuCreator::append( const QString& tag, const bool subMenu,
const ItemAttributes& attr, const int pId )
{
#pragma warning( disable:4251 )
#endif
+/*!
+ \class QtxActionMenuMgr
+ Allows to use set of action to automatically build main menu.
+ With help of methods insert/append/remove it is possible to
+ describe whole structure of menu. Method hide allows
+ to temporary remove some items from menu, method show allows to
+ recreate them.
+ Actions can be grouped with help of group identifictor.
+ Inside popup or menu bar items have order by increasing group id.
+ This manager is able to attune menu: to remove excess separators,
+ to remove empty popup menu etc.
+*/
class QTX_EXPORT QtxActionMenuMgr : public QtxActionMgr
{
Q_OBJECT
typedef QPtrList<MenuNode> NodeList;
typedef QPtrListIterator<MenuNode> NodeListIterator;
+ /*!
+ \class MenuNode
+ Represents a menu item inside main menu structure.
+ For internal purposes only
+ */
class MenuNode
{
public:
MenuMap myMenus;
};
+/*!
+ \class QtxActionMenuMgr::MenuCreator
+ Allows to create automatically main menu by data read from file
+*/
class QtxActionMenuMgr::MenuCreator : public QtxActionMgr::Creator
{
public:
QMap<QToolBar*, QWidgetList> myTools;
};
+/*!
+ Constructor
+*/
QtxActionMgr::SeparatorAction::SeparatorAction( QObject* parent )
: QtxAction( parent )
{
}
+/*!
+ Destructor
+*/
QtxActionMgr::SeparatorAction::~SeparatorAction()
{
}
+/*!
+ Adds action to widget
+ \param wid - widget
+*/
bool QtxActionMgr::SeparatorAction::addTo( QWidget* wid )
{
if ( !wid )
return res;
}
+/*!
+ Removes action from widget
+ \param wid - widget
+*/
bool QtxActionMgr::SeparatorAction::removeFrom( QWidget* wid )
{
if ( !wid )
Level: Public
*/
+/*!
+ Constructor
+*/
QtxActionMgr::QtxActionMgr( QObject* parent )
: QObject( parent ),
myUpdate( true )
{
}
+/*!
+ Destructor
+*/
QtxActionMgr::~QtxActionMgr()
{
}
+/*!
+ Stores action in internal map
+ If action with such id is registered already, then it will be unregistered
+ \param a - action to be registered
+ \param userId - proposed id (if it is less than 0, then id will be generated automatically)
+*/
int QtxActionMgr::registerAction( QAction* a, const int userId )
{
if ( !a )
return theId;
}
+/*!
+ Removes action from internal map
+ \param id - action id
+*/
void QtxActionMgr::unRegisterAction( const int id )
{
if( contains( id ) )
myActions.remove( id );
}
+/*!
+ \return action by id
+ \param id - action id
+*/
QAction* QtxActionMgr::action( const int id ) const
{
if ( contains( id ) )
return 0;
}
+/*!
+ \return id by action
+ \param a - action
+*/
int QtxActionMgr::actionId( const QAction* a ) const
{
if ( !a )
return theId;
}
+/*!
+ \return true if internal map contains such id
+ \param id - action id
+*/
bool QtxActionMgr::contains( const int id ) const
{
return myActions.contains( id );
}
+/*!
+ \return count of actions in internal map
+*/
int QtxActionMgr::count() const
{
return myActions.count();
}
+/*!
+ \return true if internal map is empty
+*/
bool QtxActionMgr::isEmpty() const
{
return myActions.isEmpty();
}
+/*!
+ Fills list with ids of registered actions
+*/
void QtxActionMgr::idList( QIntList& lst ) const
{
lst = myActions.keys();
}
+/*!
+ \return true if updates are enabled
+*/
bool QtxActionMgr::isUpdatesEnabled() const
{
return myUpdate;
}
+/*!
+ Enables/disables updates
+ \param upd - new state
+*/
void QtxActionMgr::setUpdatesEnabled( const bool upd )
{
myUpdate = upd;
}
+/*!
+ \return true if action is visible (by default \return always true)
+*/
bool QtxActionMgr::isVisible( const int, const int ) const
{
return true;
}
+/*!
+ Sets visibility of action (by default, empty implementation)
+*/
void QtxActionMgr::setVisible( const int, const int, const bool )
{
}
+/*!
+ Updates actions, check isUpdatesEnabled() and call internalUpdate()
+ \sa isUpdatesEnabled(), internalUpdate()
+*/
void QtxActionMgr::update()
{
if ( isUpdatesEnabled() )
internalUpdate();
}
+/*!
+ Real update (to be redefined in successors)
+*/
void QtxActionMgr::internalUpdate()
{
}
+/*!
+ \return global free id
+*/
int QtxActionMgr::generateId() const
{
static int id = -1;
return --id;
}
+/*!
+ \return true if action is enabled
+ \param id - action id
+*/
bool QtxActionMgr::isEnabled( const int id ) const
{
QAction* a = action( id );
return false;
}
+/*!
+ Enables/disables action
+ \param id - action id
+ \param en - new state
+*/
void QtxActionMgr::setEnabled( const int id, const bool en )
{
QAction* a = action( id );
a->setEnabled( en );
}
+/*!
+ \return action for separator
+ If this action doesn't exist, then it will be created
+ \param individual - if it is false, then action will be shared, otherwise it will be created on every call
+*/
QAction* QtxActionMgr::separator( const bool individual )
{
if ( individual )
Level: Public
*/
+/*!
+ Constructor
+*/
QtxActionMgr::Reader::Reader()
{
}
+/*!
+ Destructor
+*/
QtxActionMgr::Reader::~Reader()
{
}
+/*!
+ \return list of options
+*/
QStringList QtxActionMgr::Reader::options() const
{
return myOptions.keys();
}
+/*!
+ \return value of option
+ \param name - option name
+ \param def - default option value (is returned, if there is no such option)
+*/
QString QtxActionMgr::Reader::option( const QString& name, const QString& def ) const
{
if( myOptions.contains( name ) )
return def;
}
+/*!
+ Sets value of option
+ \param name - option name
+ \param value - option value
+*/
void QtxActionMgr::Reader::setOption( const QString& name, const QString& value )
{
myOptions[ name ] = value;
/*!
- Class: QtxActionMgr::XMLReader
- Level: Public
+ Constructor
*/
QtxActionMgr::XMLReader::XMLReader( const QString& root,
const QString& item,
setOption( QString( "toggle" ), QString( "toggle-id" ) );
}
+/*!
+ Destructor
+*/
QtxActionMgr::XMLReader::~XMLReader()
{
}
+/*!
+ Reads file and fills action manager with help of creator
+ \param fname - file name
+ \param cr - creator
+*/
bool QtxActionMgr::XMLReader::read( const QString& fname, Creator& cr ) const
{
bool res = false;
return res;
}
+/*!
+ Create item by xml node
+ \param parent_node - parent node
+ \param parent_id - parent id
+ \param cr - creator
+*/
void QtxActionMgr::XMLReader::read( const QDomNode& parent_node,
const int parent_id,
Creator& cr ) const
}
}
+/*!
+ \return true if node satisfies pattern
+*/
bool QtxActionMgr::XMLReader::isNodeSimilar( const QDomNode& node,
const QString& pattern ) const
{
/*!
- Class: QtxActionMgr::Creator
- Level: Public
+ \return integer value by attributes
+ \param attrs - attributes
+ \param name - name of attribute
+ \param def - default value (is returned on fail)
*/
int QtxActionMgr::Creator::intValue( const ItemAttributes& attrs,
const QString& name, int def )
return def;
}
+/*!
+ \return string value by attributes
+ \param attrs - attributes
+ \param name - name of attribute
+ \param def - default value (is returned on fail)
+*/
QString QtxActionMgr::Creator::strValue( const ItemAttributes& attrs,
const QString& name,
const QString& def )
return def;
}
+/*!
+ Constructor
+*/
QtxActionMgr::Creator::Creator( QtxActionMgr::Reader* r )
: myReader( r )
{
}
+/*!
+ Destructor
+*/
QtxActionMgr::Creator::~Creator()
{
}
+/*!
+ \return corresponding reader
+*/
QtxActionMgr::Reader* QtxActionMgr::Creator::reader() const
{
return myReader;
}
+/*!
+ Connects action to some slots (default implementation is empty)
+*/
void QtxActionMgr::Creator::connect( QAction* ) const
{
}
+/*!
+ Loads pixmap
+ \param fname - file name
+ \param pix - to return loaded pixmap
+*/
bool QtxActionMgr::Creator::loadPixmap( const QString& fname, QPixmap& pix ) const
{
if( !reader() )
#pragma warning( disable:4251 )
#endif
+
+/*!
+ \class QtxActionMgr
+ Contains set of actions accessible by id.
+ Base class for menu, popup creators and other action containers.
+*/
class QTX_EXPORT QtxActionMgr : public QObject
{
Q_OBJECT
QTX_EXPORT typedef QMap<QString, QString> ItemAttributes;
+/*!
+ \class QtxActionMgr::Creator
+ Allows to fill automatically action manager with actions created by data from file
+*/
class QtxActionMgr::Creator
{
public:
QtxActionMgr::Reader* myReader;
};
+/*!
+ \class QtxActionMgr::Reader
+ This class is used to read files of some format
+ to create actions and to fill action manager automatically
+*/
class QtxActionMgr::Reader
{
public:
QMap< QString, QString > myOptions;
};
+/*!
+ \class QtxActionMgr::Reader
+ This class is used to read files of XML format
+ to create actions and to fill action manager automatically
+*/
class QtxActionMgr::XMLReader : public Reader
{
public:
#include <qmainwindow.h>
#include <qobjectlist.h>
+/*!
+ Constructor
+*/
QtxActionToolMgr::QtxActionToolMgr( QMainWindow* p )
: QtxActionMgr( p ),
myMainWindow( p )
{
}
+/*!
+ Destructor
+*/
QtxActionToolMgr::~QtxActionToolMgr()
{
}
+/*!
+ \return desktop
+*/
QMainWindow* QtxActionToolMgr::mainWindow() const
{
return myMainWindow;
}
+/*!
+ Creates toolbar
+ \return id of just created toolbar
+ \param name - name of toolbar
+ \param tid - proposed id (if such id is used already, then it will be returned without creation)
+*/
int QtxActionToolMgr::createToolBar( const QString& name, const int tid )
{
static int _toolBarId = -1;
return tbId;
}
+/*!
+ \return toolbar by title
+ \param label - toolbar title
+ \param mw - desktop
+*/
QToolBar* QtxActionToolMgr::find( const QString& label, QMainWindow* mw ) const
{
if ( !mw )
return res;
}
+/*!
+ Removes toolbar
+ \param tid - toolbar id
+*/
void QtxActionToolMgr::removeToolBar( const int tid )
{
if ( !myToolBars.contains( tid ) )
myToolBars.remove( tid );
}
+/*!
+ Removes toolbar
+ \param tname - toolbar name
+*/
void QtxActionToolMgr::removeToolBar( const QString& tname )
{
removeToolBar( find( tname ) );
}
+/*!
+ Insert action into toolbar
+ \param id - identificator of action
+ \param tId - identificator of toolbar
+ \param idx - position inside toolbar
+*/
int QtxActionToolMgr::insert( const int id, const int tid, const int idx )
{
if ( !contains( id ) || !hasToolBar( tid ) )
return -1;
+ if ( containsAction( id, tid ) )
+ remove( id, tid );
+
ToolNode node;
node.id = id;
return id;
}
+/*!
+ Insert action into toolbar
+ \param act - action
+ \param tId - identificator of toolbar
+ \param pos - position inside toolbar
+*/
int QtxActionToolMgr::insert( QAction* act, const int tid, const int pos )
{
return insert( registerAction( act ), tid, pos );
}
+/*!
+ Insert action into toolbar
+ \param id - identificator of action
+ \param tname - name of toolbar
+ \param pos - position inside toolbar
+*/
int QtxActionToolMgr::insert( const int id, const QString& tname, const int pos )
{
return insert( id, createToolBar( tname ), pos );
}
+/*!
+ Insert action into toolbar
+ \param act - action
+ \param tname - name of toolbar
+ \param pos - position inside toolbar
+*/
int QtxActionToolMgr::insert( QAction* act, const QString& tname, const int pos )
{
return insert( registerAction( act ), createToolBar( tname ), pos );
}
+/*!
+ Append action into toolbar as last toolbutton
+ \param id - identificator of action
+ \param tId - identificator of toolbar
+*/
int QtxActionToolMgr::append( const int id, const int tid )
{
return insert( id, tid );
}
+/*!
+ Append action into toolbar as last toolbutton
+ \param act - action
+ \param tId - identificator of toolbar
+*/
int QtxActionToolMgr::append( QAction* act, const int tid )
{
return insert( act, tid );
}
+/*!
+ Append action into toolbar as last toolbutton
+ \param id - identificator of action
+ \param tname - toolbar name
+*/
int QtxActionToolMgr::append( const int id, const QString& tname )
{
return insert( id, tname );
}
+/*!
+ Append action into toolbar as last toolbutton
+ \param act - action
+ \param tname - toolbar name
+*/
int QtxActionToolMgr::append( QAction* act, const QString& tname )
{
return insert( act, tname );
}
+/*!
+ Append action into toolbar as first toolbutton
+ \param id - identificator of action
+ \param tId - identificator of toolbar
+*/
int QtxActionToolMgr::prepend( const int id, const int tid )
{
return insert( id, tid, 0 );
}
+/*!
+ Append action into toolbar as first toolbutton
+ \param act - action
+ \param tId - identificator of toolbar
+*/
int QtxActionToolMgr::prepend( QAction* act, const int tid )
{
return insert( act, tid, 0 );
}
+/*!
+ Append action into toolbar as first toolbutton
+ \param id - identificator of action
+ \param tname - toolbar name
+*/
int QtxActionToolMgr::prepend( const int id, const QString& tname )
{
return insert( id, tname, 0 );
}
+/*!
+ Append action into toolbar as first toolbutton
+ \param act - action
+ \param tname - toolbar name
+*/
int QtxActionToolMgr::prepend( QAction* act, const QString& tname )
{
return insert( act, tname, 0 );
}
+/*!
+ Remove action from toolbar
+ \param id - identificator of action
+ \param tId - identificator of toolbar
+*/
void QtxActionToolMgr::remove( const int id, const int tid )
{
if ( !myToolBars.contains( tid ) )
updateToolBar( tid );
}
+/*!
+ Remove action from toolbar
+ \param id - identificator of action
+ \param tname - name of toolbar
+*/
void QtxActionToolMgr::remove( const int id, const QString& tname )
{
remove( id, find( tname ) );
}
+/*!
+ \return toolbar by it's id
+ \param tId - identificator of toolbar
+*/
QToolBar* QtxActionToolMgr::toolBar( const int tid ) const
{
QToolBar* tb = 0;
return tb;
}
+/*!
+ \return toolbar by it's name
+ \param tname - name of toolbar
+*/
QToolBar* QtxActionToolMgr::toolBar( const QString& tname ) const
{
return toolBar( find( tname ) );
}
+/*!
+ \return true if manager contains toolbar with such id
+ \param tId - identificator of toolbar
+*/
bool QtxActionToolMgr::hasToolBar( const int tid ) const
{
return myToolBars.contains( tid );
}
+/*!
+ \return true if manager contains toolbar with such name
+ \param tname - name of toolbar
+*/
bool QtxActionToolMgr::hasToolBar( const QString& tname ) const
{
return find( tname ) != -1;
}
+/*!
+ \return true if toolbar contains action
+ \param id - identificator of action
+ \param tId - identificator of toolbar
+*/
bool QtxActionToolMgr::containsAction( const int id, const int tid ) const
{
for ( ToolBarMap::ConstIterator it = myToolBars.begin(); it != myToolBars.end(); ++it )
return false;
}
+/*!
+ SLOT: called when toolbar is destroyed, removes just destroyed toolbar from map
+*/
void QtxActionToolMgr::onToolBarDestroyed()
{
myToolBars.remove( find( (QToolBar*)sender() ) );
}
+/*!
+ \return id of toolbar by it's name
+ \param tname - name of toolbar
+*/
int QtxActionToolMgr::find( const QString& tname ) const
{
int id = -1;
return id;
}
+/*!
+ \return id of toolbar
+ \param t - toolbar
+*/
int QtxActionToolMgr::find( QToolBar* t ) const
{
int id = -1;
return id;
}
+/*!
+ Updates toolbar
+ \param tId - toolbar id
+*/
void QtxActionToolMgr::updateToolBar( const int tId )
{
if ( !isUpdatesEnabled() )
simplifySeparators( tb );
}
+/*!
+ Updates all toolbars
+*/
void QtxActionToolMgr::internalUpdate()
{
for ( ToolBarMap::ConstIterator it1 = myToolBars.begin(); it1 != myToolBars.end(); ++it1 )
updateToolBar( it1.key() );
}
+/*!
+ Removes excess separators from toolbar
+*/
void QtxActionToolMgr::simplifySeparators( QToolBar* t )
{
if ( t )
Qtx::simplifySeparators( t );
}
+/*!
+ Shows action in all toolbars
+ \param actId - action id
+*/
void QtxActionToolMgr::show( const int actId )
{
setShown( actId, true );
}
+/*!
+ Hides action in all toolbars
+ \param actId - action id
+*/
void QtxActionToolMgr::hide( const int actId )
{
setShown( actId, false );
}
+/*!
+ Changes shown status of action in all toolbars
+ \param id - action id
+ \param on - new shown status
+*/
void QtxActionToolMgr::setShown( const int id, const bool on )
{
for ( ToolBarMap::Iterator it = myToolBars.begin(); it != myToolBars.end(); ++it )
setVisible( id, it.key(), on );
}
+/*!
+ \return true if action is shown in all toolbars
+ \param id - action id
+*/
bool QtxActionToolMgr::isShown( const int id ) const
{
QPtrList<ToolNode> nodes;
return vis;
}
+/*!
+ \return shown status of action in toolbar
+ \param id - action id
+ \param tId - toolbar id
+*/
bool QtxActionToolMgr::isVisible( const int id, const int tId ) const
{
if ( !myToolBars.contains( tId ) )
return vis;
}
+/*!
+ Changes action shown status in certain toolbar
+ \param id - action id
+ \param tId - toolbar id
+ \param on - new shown status
+*/
void QtxActionToolMgr::setVisible( const int id, const int tId, const bool on )
{
if ( !myToolBars.contains( tId ) )
updateToolBar( tId );
}
+/*!
+ Loads toolbar content from file
+ \param fname - file name
+ \param r - reader
+*/
bool QtxActionToolMgr::load( const QString& fname, QtxActionMgr::Reader& r )
{
ToolCreator cr( &r, this );
/*!
- Class: QtxActionToolMgr::ToolCreator
- Level: Public
+ Constructor
*/
QtxActionToolMgr::ToolCreator::ToolCreator( QtxActionMgr::Reader* r,
QtxActionToolMgr* mgr )
{
}
+/*!
+ Destructor
+*/
QtxActionToolMgr::ToolCreator::~ToolCreator()
{
}
+/*!
+ Appends new tool buttons
+ \param tag - tag of toolmenu
+ \param subMenu - it has submenu (not used here)
+ \param attr - list of attributes
+ \param pId - id of action corresponding to parent item
+*/
int QtxActionToolMgr::ToolCreator::append( const QString& tag, const bool subMenu,
const ItemAttributes& attr, const int tId )
{
#pragma warning( disable:4251 )
#endif
+/*!
+ \class QtxActionToolMgr
+ Allows to use set of action to automatically build set of toolbars.
+ With help of methods insert/append/remove it is possible to
+ describe toolbars and its internal structure.
+ This manager is able to attune toolbar by removing excess separators
+*/
class QTX_EXPORT QtxActionToolMgr : public QtxActionMgr
{
Q_OBJECT
+ /*!
+ \class ToolNode
+ Represents a toolbutton inside toolbar
+ For internal purposes only
+ */
class ToolNode
{
public:
QMainWindow* myMainWindow;
};
+/*!
+ \class QtxActionToolMgr::ToolCreator
+ Allows to create automatically toolbar by data read from file
+*/
class QtxActionToolMgr::ToolCreator : public QtxActionMgr::Creator
{
public:
#include <math.h>
-/*********************************************************************
-** Class: QtxColorScale
-** Descr: Color Scale widget.
-** Level: Public
-*********************************************************************/
-
+/*!
+ Constructor
+*/
QtxColorScale::QtxColorScale( QWidget* parent, const char* name, WFlags f )
: QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ),
myDock( 0 ),
setCaption( tr ( "Color scale" ) );
}
+/*!
+ Constructor
+*/
QtxColorScale::QtxColorScale( const int num, QWidget* parent, const char* name, WFlags f )
: QFrame( parent, name, f | WResizeNoErase | WRepaintNoErase ),
myDock( 0 ),
#if QT_VER == 3
+/*!
+ Constructor
+*/
QtxColorScale::QtxColorScale( Dock* dock, const char* name, WFlags f )
: QFrame( dock, name, f | WResizeNoErase | WRepaintNoErase ),
myMin( 0.0 ),
#endif
+/*!
+ Destructor
+*/
QtxColorScale::~QtxColorScale()
{
}
-//================================================================
-// Function : minimum
-// Purpose : Returns minimal limit of scale.
-//================================================================
-
+/*!
+ \returns minimal limit of scale.
+*/
double QtxColorScale::minimum() const
{
return myMin;
}
-//================================================================
-// Function : maximum
-// Purpose : Returns maximal limit of scale.
-//================================================================
-
+/*!
+ \return maximal limit of scale.
+*/
double QtxColorScale::maximum() const
{
return myMax;
}
-//================================================================
-// Function : range
-// Purpose : Returns range (minimal and maximal limits) of scale.
-//================================================================
-
+/*!
+ \return range (minimal and maximal limits) of scale.
+*/
void QtxColorScale::range( double& min, double& max ) const
{
min = myMin;
max = myMax;
}
-//================================================================
-// Function : title
-// Purpose : Returns the current title string.
-//================================================================
-
+/*!
+ \return the current title string.
+*/
QString QtxColorScale::title() const
{
return myTitle;
}
-//================================================================
-// Function : format
-// Purpose : Returns the current format of number presentation in
-// labels for Auto label mode (sprintf specification).
-//================================================================
-
+/*!
+ \returns the current format of number presentation in labels for Auto label mode (sprintf specification).
+*/
QString QtxColorScale::format() const
{
return myFormat;
}
-//================================================================
-// Function : dumpMode
-// Purpose : Returns dump mode.
-//================================================================
-
+/*!
+ \return dump mode.
+*/
int QtxColorScale::dumpMode() const
{
return myDumpMode;
}
-//================================================================
-// Function : labelMode
-// Purpose : Returns label mode.
-//================================================================
-
+/*!
+ \return label mode.
+*/
int QtxColorScale::labelMode() const
{
return myLabelMode;
}
-//================================================================
-// Function : colorMode
-// Purpose : Returns color mode.
-//================================================================
-
+/*!
+ \return color mode.
+*/
int QtxColorScale::colorMode() const
{
return myColorMode;
}
-//================================================================
-// Function : intervalsNumber
-// Purpose : Returns intervals number of color scale.
-//================================================================
-
+/*!
+ \return intervals number of color scale.
+*/
int QtxColorScale::intervalsNumber() const
{
return myInterval;
}
-//================================================================
-// Function : label
-// Purpose : Returns the user label of specified interval.
-//================================================================
-
+/*!
+ \return the user label of specified interval.
+*/
QString QtxColorScale::label( const int idx ) const
{
QString res;
return res;
}
-//================================================================
-// Function : color
-// Purpose : Returns the user color of specified interval.
-//================================================================
-
+/*!
+ \return the user color of specified interval.
+*/
QColor QtxColorScale::color( const int idx ) const
{
QColor res;
return res;
}
-//================================================================
-// Function : labels
-// Purpose : Returns the user labels.
-//================================================================
-
+/*!
+ \return the user labels.
+*/
void QtxColorScale::labels( QStringList& list ) const
{
list = myLabels;
}
-//================================================================
-// Function : colors
-// Purpose : Returns the user color.
-//================================================================
-
+/*!
+ \return the user color.
+*/
void QtxColorScale::colors( QValueList<QColor>& list ) const
{
list = myColors;
}
-//================================================================
-// Function : labelPosition
-// Purpose : Returns the label position.
-//================================================================
-
+/*!
+ \return the label position.
+*/
int QtxColorScale::labelPosition() const
{
return myLabelPos;
}
-//================================================================
-// Function : titlePosition
-// Purpose : Returns the title position.
-//================================================================
-
+/*!
+ \return the title position.
+*/
int QtxColorScale::titlePosition() const
{
return myTitlePos;
}
-//================================================================
-// Function : setMinimum
-// Purpose : Sets the minimum limit.
-//================================================================
-
+/*!
+ Sets the minimum limit.
+*/
void QtxColorScale::setMinimum( const double val )
{
setRange( val, maximum() );
}
-//================================================================
-// Function : setMaximum
-// Purpose : Sets the maximum limit.
-//================================================================
-
+/*!
+ Sets the maximum limit.
+*/
void QtxColorScale::setMaximum( const double val )
{
setRange( minimum(), val );
}
-//================================================================
-// Function : setRange
-// Purpose : Sets the minimum and maximum limits.
-//================================================================
-
+/*!
+ Sets the minimum and maximum limits.
+*/
void QtxColorScale::setRange( const double min, const double max )
{
if ( myMin == min && myMax == max )
updateScale();
}
-//================================================================
-// Function : setTitle
-// Purpose : Sets the title string.
-//================================================================
-
+/*!
+ Sets the title string.
+*/
void QtxColorScale::setTitle( const QString& str )
{
if ( myTitle == str )
updateScale();
}
-//================================================================
-// Function : setFormat
-// Purpose : Sets the format of number presentation in labels for
-// Auto label mode (sprintf specification).
-//================================================================
-
+/*!
+ Sets the format of number presentation in labels for
+ Auto label mode (sprintf specification).
+*/
void QtxColorScale::setFormat( const QString& format )
{
if ( myFormat == format )
updateScale();
}
-//================================================================
-// Function : setIntervalsNumber
-// Purpose : Sets the number of intervals.
-//================================================================
-
+/*!
+ Sets the number of intervals.
+*/
void QtxColorScale::setIntervalsNumber( const int num )
{
if ( myInterval == num || num < 1 )
updateScale();
}
-//================================================================
-// Function : setLabel
-// Purpose : Sets the user label for specified interval. If number
-// of interval is negative then user label will be added
-// as new at the end of list.
-//================================================================
-
+/*!
+ Sets the user label for specified interval. If number
+ of interval is negative then user label will be added
+ as new at the end of list.
+*/
void QtxColorScale::setLabel( const QString& txt, const int idx )
{
bool changed = false;
updateScale();
}
-//================================================================
-// Function : setColor
-// Purpose : Sets the user color for specified interval. If number
-// of interval is negative then user color will be added
-// as new at the end of list.
-//================================================================
-
+/*!
+ Sets the user color for specified interval. If number
+ of interval is negative then user color will be added
+ as new at the end of list.
+*/
void QtxColorScale::setColor( const QColor& clr, const int idx )
{
bool changed = false;
updateScale();
}
-//================================================================
-// Function : setLabels
-// Purpose : Replace the all user label with specified list.
-//================================================================
-
+/*!
+ Replace the all user label with specified list.
+*/
void QtxColorScale::setLabels( const QStringList& list )
{
if ( list.isEmpty() )
updateScale();
}
-//================================================================
-// Function : setColors
-// Purpose : Replace the all user colors with specified list.
-//================================================================
-
+/*!
+ Replace the all user colors with specified list.
+*/
void QtxColorScale::setColors( const QValueList<QColor>& list )
{
if ( list.isEmpty() )
updateScale();
}
-//================================================================
-// Function : setColorMode
-// Purpose : Sets the color mode (Auto or User).
-//================================================================
-
+/*!
+ Sets the color mode (Auto or User).
+*/
void QtxColorScale::setColorMode( const int mode )
{
if ( myColorMode == mode )
updateScale();
}
-//================================================================
-// Function : setDumpMode
-// Purpose : Sets the dump mode.
-//================================================================
-
+/*!
+ Sets the dump mode.
+*/
void QtxColorScale::setDumpMode( const int mode )
{
myDumpMode = mode;
}
-//================================================================
-// Function : setLabelMode
-// Purpose : Sets the label mode (Auto or User).
-//================================================================
-
+/*!
+ Sets the label mode (Auto or User).
+*/
void QtxColorScale::setLabelMode( const int mode )
{
if ( myLabelMode != mode )
}
}
-//================================================================
-// Function : setLabelPosition
-// Purpose : Sets the label position.
-//================================================================
-
+/*!
+ Sets the label position.
+*/
void QtxColorScale::setLabelPosition( const int pos )
{
if ( myLabelPos != pos && pos >= None && pos <= Center )
}
}
-//================================================================
-// Function : setTitlePosition
-// Purpose : Sets the title position.
-//================================================================
-
+/*!
+ Sets the title position.
+*/
void QtxColorScale::setTitlePosition( const int pos )
{
if ( myTitlePos != pos && pos >= None && pos <= Center )
}
}
-//================================================================
-// Function : setFlags
-// Purpose : Set the specified flags.
-//================================================================
-
+/*!
+ Set the specified flags.
+*/
void QtxColorScale::setFlags( const int flags )
{
int prev = myFlags;
updateScale();
}
-//================================================================
-// Function : testFlags
-// Purpose : Returns true if specified flags are setted.
-//================================================================
-
+/*!
+ \return true if specified flags are setted.
+*/
bool QtxColorScale::testFlags( const int flags ) const
{
return ( myFlags & flags ) == flags;
}
-//================================================================
-// Function : clearFlags
-// Purpose : Clear (reset) the specified flags.
-//================================================================
-
+/*!
+ Clear (reset) the specified flags.
+*/
void QtxColorScale::clearFlags( const int flags )
{
int prev = myFlags;
updateScale();
}
-//================================================================
-// Function : minimumSizeHint
-// Purpose :
-//================================================================
-
+/*!
+ \return minimum size hint
+*/
QSize QtxColorScale::minimumSizeHint() const
{
QSize sz = calculateSize( true, myFlags, titlePosition() != None, labelPosition() != None, true );
return sz + QSize( frameWidth(), frameWidth() );
}
-//================================================================
-// Function : sizeHint
-// Purpose :
-//================================================================
-
+/*!
+ \return size hint
+*/
QSize QtxColorScale::sizeHint() const
{
QSize sz = calculateSize( false, myFlags, titlePosition() != None, labelPosition() != None, true );
return sz + QSize( frameWidth(), frameWidth() );
}
-//================================================================
-// Function : calculateSize
-// Purpose : Dump color scale into pixmap with current size.
-//================================================================
-
+/*!
+ Dump color scale into pixmap with current size.
+*/
QSize QtxColorScale::calculateSize( const bool min, const int flags, const bool title,
const bool labels, const bool colors ) const
{
return QSize( W, H );
}
-//================================================================
-// Function : dump
-// Purpose : Dump color scale into pixmap with current size.
-//================================================================
-
+/*!
+ Dump color scale into pixmap with current size.
+*/
QPixmap QtxColorScale::dump() const
{
QPixmap aPix;
return aPix;
}
-//================================================================
-// Function : dump
-// Purpose : Dump color scale into pixmap with specified size.
-//================================================================
-
+/*!
+ Dump color scale into pixmap with specified size.
+*/
QPixmap QtxColorScale::dump( const int w, const int h ) const
{
#if QT_VER < 3
#endif
}
-//================================================================
-// Function : dump
-// Purpose : Dump color scale into pixmap with specified size
-// and background color.
-//================================================================
-
+/*!
+ Dump color scale into pixmap with specified size and background color.
+*/
QPixmap QtxColorScale::dump( const QColor& bg, const int w, const int h ) const
{
QPixmap aPix;
return aPix;
}
-//================================================================
-// Function : show
-// Purpose : Show the color scale. [Reimplemented]
-//================================================================
-
+/*!
+ Show the color scale. [Reimplemented]
+*/
void QtxColorScale::show()
{
#if QT_VER == 3
QFrame::show();
}
-//================================================================
-// Function : hide
-// Purpose : Hides the color scale. [Reimplemented]
-//================================================================
-
+/*!
+ Hides the color scale. [Reimplemented]
+*/
void QtxColorScale::hide()
{
#if QT_VER == 3
QFrame::hide();
}
-//================================================================
-// Function : drawContents
-// Purpose : Draw color scale contents. [Reimplemented]
-//================================================================
-
+/*!
+ Draw color scale contents. [Reimplemented]
+*/
void QtxColorScale::drawContents( QPainter* p )
{
if ( !isUpdatesEnabled() )
titlePosition() != None, labelPosition() != None, true );
}
-//================================================================
-// Function : drawScale
-// Purpose : Draw color scale contents.
-//================================================================
-
+/*!
+ Draw color scale contents.
+*/
void QtxColorScale::drawScale( QPainter* p, const bool transp, const int X, const int Y,
const int W, const int H, const bool title,
const bool label, const bool scale ) const
p->drawPixmap( X, Y, cache );
}
-//================================================================
-// Function : drawScale
-// Purpose : Draw color scale contents.
-//================================================================
-
+/*!
+ Draw color scale contents.
+*/
void QtxColorScale::drawScale( QPainter* p, const QColor& bg, const bool transp,
const int X, const int Y, const int W, const int H,
const bool drawTitle, const bool drawLabel, const bool drawColors ) const
}
}
-//================================================================
-// Function : getFormat
-// Purpose : Returns the format for number labels.
-//================================================================
-
+/*!
+ \return the format for number labels.
+*/
QString QtxColorScale::getFormat() const
{
QString aFormat = format();
return aFormat;
}
-//================================================================
-// Function : getNumber
-// Purpose : Returns the number for specified interval.
-//================================================================
-
+/*!
+ \return the number for specified interval.
+*/
double QtxColorScale::getNumber( const int idx ) const
{
double val = 0;
return val;
}
-//================================================================
-// Function : getLabel
-// Purpose : Returns the label for specified interval according
-// to the current label mode.
-//================================================================
-
+/*!
+ \return the label for specified interval according to the current label mode.
+*/
QString QtxColorScale::getLabel( const int idx ) const
{
QString res;
return res;
}
-//================================================================
-// Function : getColor
-// Purpose : Returns the color for specified interval according
-// to the current color mode.
-//================================================================
-
+/*!
+ \return the color for specified interval according to the current color mode.
+*/
QColor QtxColorScale::getColor( const int idx ) const
{
QColor res;
return res;
}
-//================================================================
-// Function : updateScale
-// Purpose : Update color scale if it required.
-//================================================================
-
+/*!
+ Update color scale if it required.
+*/
void QtxColorScale::updateScale()
{
update();
updateGeometry();
}
-//================================================================
-// Function : simpleRichText
-// Purpose : Return QSimpleRichText object for title. If title
-// not defined (empty string) then return null pointer.
-// Object should be deleted by caller function.
-//================================================================
-
+/*!
+ \return QSimpleRichText object for title. If title
+ not defined (empty string) then return null pointer.
+ Object should be deleted by caller function.
+*/
QSimpleRichText* QtxColorScale::simpleRichText( const int flags ) const
{
QSimpleRichText* srt = 0;
#if QT_VER == 3
-/*********************************************************************
-** Class: QtxColorScale::Dock
-** Descr: Dockable window contains the color scale.
-** Level: Public
-*********************************************************************/
-
-//================================================================
-// Function : Dock
-// Purpose : Constructor.
-//================================================================
+/*!
+ \class QtxColorScale::Dock
+ Dockable window contains the color scale.
+*/
+/*!
+ Constructor
+*/
QtxColorScale::Dock::Dock( Place p, QWidget* parent, const char* name, WFlags f )
: QDockWindow( p, parent, name, f ),
myBlockShow( false ),
setCaption( tr ( "Color scale" ) );
}
-//================================================================
-// Function : ~Dock
-// Purpose : Destructor.
-//================================================================
-
+/*!
+ Destructor.
+*/
QtxColorScale::Dock::~Dock()
{
}
-//================================================================
-// Function : colorScale
-// Purpose : Returns color scale widget.
-//================================================================
-
+/*!
+ \return color scale widget.
+*/
QtxColorScale* QtxColorScale::Dock::colorScale() const
{
return myScale;
}
-//================================================================
-// Function : activate
-// Purpose : Set the dockable window is visible for main window.
-//================================================================
-
+/*!
+ Set the dockable window is visible for main window.
+*/
void QtxColorScale::Dock::activate()
{
if ( myBlockShow )
mw->setAppropriate( this, true );
}
-//================================================================
-// Function : deactivate
-// Purpose : Set the dockable window is hidden for main window.
-//================================================================
-
+/*!
+ Set the dockable window is hidden for main window.
+*/
void QtxColorScale::Dock::deactivate()
{
if ( myBlockShow )
mw->setAppropriate( this, false );
}
-//================================================================
-// Function : isActive
-// Purpose : Returns true if the dockable window is visible.
-//================================================================
-
+/*!
+ \return true if the dockable window is visible.
+*/
bool QtxColorScale::Dock::isActive() const
{
QMainWindow* mw = 0;
return false;
}
-//================================================================
-// Function : show
-// Purpose : Reimplemented for internal reasons.
-//================================================================
-
+/*!
+ Redefined show
+*/
void QtxColorScale::Dock::show()
{
bool f = myBlockShow;
myBlockShow = f;
}
-//================================================================
-// Function : hide
-// Purpose : Reimplemented for internal reasons.
-//================================================================
-
+/*!
+ Redefined hide
+*/
void QtxColorScale::Dock::hide()
{
bool f = myBlockShow;
myBlockShow = f;
}
-//================================================================
-// Function : resize
-// Purpose : Make extent width as maximum value of widget width.
-//================================================================
-
+/*!
+ Make extent width as maximum value of widget width.
+*/
void QtxColorScale::Dock::resize( int w, int h )
{
QDockWindow::resize( w, h );
setFixedExtentHeight( QMAX( fixedExtent().height(), h ) );
}
-//================================================================
-// Function : setOrientation
-// Purpose :
-//================================================================
-
+/*!
+ Set orientation
+ \param o - new orientation
+*/
void QtxColorScale::Dock::setOrientation( Orientation o )
{
bool b = myBlockResize;
#pragma warning( disable:4251 )
#endif
+/*!
+ \class QtxColorScale
+ Color Scale widget.
+*/
class QTX_EXPORT QtxColorScale : public QFrame
{
Q_OBJECT
#include <qlineedit.h>
#include <qvaluelist.h>
+/*!
+ Constructor
+*/
QtxComboBox::QtxComboBox( QWidget* parent, const char* name )
: QComboBox( parent, name ),
myCleared( false )
connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) );
}
+/*!
+ Constructor
+*/
QtxComboBox::QtxComboBox( bool rw, QWidget* parent, const char* name )
: QComboBox( rw, parent, name ),
myCleared( false )
connect( this, SIGNAL( activated( const QString& ) ), this, SLOT( onActivated( const QString& ) ) );
}
+/*!
+ Destructor
+*/
QtxComboBox::~QtxComboBox()
{
}
+/*!
+ \return true if combobox is cleared
+*/
bool QtxComboBox::isCleared() const
{
return myCleared;
}
+/*!
+ Sets cleared status
+ \param isClear - new status
+*/
void QtxComboBox::setCleared( const bool isClear )
{
if ( myCleared == isClear )
update();
}
+/*!
+ Sets currently selected item
+ \param idx - index of item
+*/
void QtxComboBox::setCurrentItem( int idx )
{
if ( idx < 0 || idx >= count() )
QComboBox::setCurrentItem( idx );
}
+/*!
+ Sets current text
+ \param txt - new current text
+*/
void QtxComboBox::setCurrentText( const QString& txt )
{
myCleared = false;
#endif
}
+/*!
+ \return current selected id
+*/
int QtxComboBox::currentId() const
{
return id( currentItem() );
}
+/*!
+ Sets current selected id
+*/
void QtxComboBox::setCurrentId( int num )
{
setCurrentItem( index( num ) );
}
+/*!
+ Custom paint event handler
+*/
void QtxComboBox::paintEvent( QPaintEvent* e )
{
if ( !count() || !myCleared || editable() )
paintClear( e );
}
+/*!
+ SLOT: called if some item is activated
+ \param idx - index of activated item
+*/
void QtxComboBox::onActivated( int idx )
{
resetClear();
emit activatedId( myIndexId[idx] );
}
-void QtxComboBox::onActivated( const QString& )
+/*!
+ SLOT: called if some item is activated
+*/void QtxComboBox::onActivated( const QString& )
{
resetClear();
}
+/*!
+ Strips "cleared" state and updates
+*/
void QtxComboBox::resetClear()
{
if ( !myCleared )
update();
}
+/*!
+ Draws combobox when it is cleared or isn't editable
+*/
void QtxComboBox::paintClear( QPaintEvent* e )
{
int curIndex = currentItem();
setUpdatesEnabled( upd );
}
+/*!
+ \return id by index
+*/
int QtxComboBox::id( const int idx ) const
{
int id = -1;
return id;
}
+/*!
+ \return index by id
+*/
int QtxComboBox::index( const int id ) const
{
int idx = -1;
#include <float.h>
-/*
- Class: QtxDblSpinBox::Validator [internal]
- Descr: Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator)
+/*!
+ \class QtxDblSpinBox::Validator [internal]
+ Validator for QtxDblSpinBox (getted from Trolltech Qt - SpinBoxValidator)
*/
-
class QtxDblSpinBox::Validator : public QDoubleValidator
{
public:
QtxDblSpinBox* spinBox;
};
+
+/*!
+ Checks string and \return QValidator::State
+*/
QValidator::State QtxDblSpinBox::Validator::validate( QString& str, int& pos ) const
{
QString pref = spinBox->prefix();
return state;
}
-/*
- Class: QtxDblSpinBox
- Descr: Spin box for real numbers.
+/*!
+ Constructor
*/
-
QtxDblSpinBox::QtxDblSpinBox( QWidget* parent, const char* name )
: QSpinBox( parent, name ),
myCleared( false ),
connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) );
}
+/*!
+ Constructor
+*/
QtxDblSpinBox::QtxDblSpinBox( double min, double max, double step, QWidget* parent, const char* name )
: QSpinBox( parent, name ),
myMin( min ),
connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) );
}
+/*!
+ Destructor
+*/
QtxDblSpinBox::~QtxDblSpinBox()
{
}
+/*!
+ \return min value of spin box
+*/
double QtxDblSpinBox::minValue() const
{
return myMin;
}
+/*!
+ \return max value of spin box
+*/
double QtxDblSpinBox::maxValue() const
{
return myMax;
}
+/*!
+ Changes min value of spin box
+ \param min - new min value
+*/
void QtxDblSpinBox::setMinValue( int min )
{
setMinValue( (double)min );
}
+/*!
+ Changes min value of spin box
+ \param min - new min value
+*/
void QtxDblSpinBox::setMinValue( double min )
{
if ( myMin != min )
}
}
+/*!
+ Changes max value of spin box
+ \param max - new max value
+*/
void QtxDblSpinBox::setMaxValue( int max )
{
setMaxValue( (double)max );
}
+/*!
+ Changes max value of spin box
+ \param max - new max value
+*/
void QtxDblSpinBox::setMaxValue( double max )
{
if ( myMax != max )
}
}
+/*!
+ Changes min and max value of spin box
+ \param min - new min value
+ \param max - new max value
+*/
void QtxDblSpinBox::setRange( int min, int max )
{
setRange( (double)min, (double)max );
}
+/*!
+ Changes min and max value of spin box
+ \param min - new min value
+ \param max - new max value
+*/
void QtxDblSpinBox::setRange( double min, double max )
{
if ( myMin != min || myMax != max )
}
}
+/*!
+ \return step of spin box
+*/
double QtxDblSpinBox::lineStep() const
{
return myStep;
}
+/*!
+ Changes step of spin box
+ \param step - new step
+*/
void QtxDblSpinBox::setLineStep( int step )
{
setLineStep( (double)step );
}
+/*!
+ Changes step of spin box
+ \param step - new step
+*/
void QtxDblSpinBox::setLineStep( double step )
{
myStep = step;
}
+/*!
+ \return value of spin box
+*/
double QtxDblSpinBox::value() const
{
QSpinBox::value();
return myValue;
}
+/*!
+ Changes value of spin box
+ \param val - new value of spin box
+*/
void QtxDblSpinBox::setValue( int val )
{
setValue( (double)val );
}
+/*!
+ Changes value of spin box
+ \param val - new value of spin box
+*/
void QtxDblSpinBox::setValue( double val )
{
myCleared = false;
valueChange();
}
+/*!
+ Adds step to value
+*/
void QtxDblSpinBox::stepUp()
{
interpretText();
setValue( myValue + myStep );
}
+/*!
+ Subtracks step from value
+*/
void QtxDblSpinBox::stepDown()
{
interpretText();
setValue( myValue - myStep );
}
+/*!
+ \return number of digit after comma
+*/
int QtxDblSpinBox::precision() const
{
return myPrecision;
}
+/*!
+ Changes number of digit after comma
+ \param prec - new digit number
+*/
void QtxDblSpinBox::setPrecision( const int prec )
{
int newPrec = QMAX( prec, 0 );
updateDisplay();
}
+/*!
+ \return true if spin box is cleared
+*/
bool QtxDblSpinBox::isCleared() const
{
return myCleared;
}
+/*!
+ Changes cleared status of spin box
+ \param on - new status
+*/
void QtxDblSpinBox::setCleared( const bool on )
{
if ( myCleared == on )
updateDisplay();
}
+/*!
+ Selects all content of spin box editor
+*/
void QtxDblSpinBox::selectAll()
{
#if QT_VER >= 3
#endif
}
+/*!
+ Custom event filter, updates text of spin box editor
+*/
bool QtxDblSpinBox::eventFilter( QObject* o, QEvent* e )
{
if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() )
return QSpinBox::eventFilter( o, e );
}
+/*!
+ Updates text of editor
+*/
void QtxDblSpinBox::updateDisplay()
{
if ( myBlocked )
myBlocked = isBlock;
}
+/*!
+ Sets double value by text in editor
+*/
void QtxDblSpinBox::interpretText()
{
myCleared = false;
updateDisplay();
}
+/*!
+ Emits signal "valueChanged"
+*/
void QtxDblSpinBox::valueChange()
{
updateDisplay();
emit valueChanged( currentValueText() );
}
+/*!
+ Attune parameters on range changing
+*/
void QtxDblSpinBox::rangeChange()
{
double min = QMIN( myMin, myMax );
updateDisplay();
}
+/*!
+ \return text of editor
+*/
QString QtxDblSpinBox::currentValueText()
{
QString s;
return s;
}
+/*!
+ Converts number to string
+ \param v - number to be converted
+*/
QString QtxDblSpinBox::mapValueToText( double v )
{
QString s;
return removeTrailingZeroes( s );
}
+/*!
+ Converts value to string
+*/
QString QtxDblSpinBox::mapValueToText( int )
{
QString s;
return removeTrailingZeroes( s );
}
+/*!
+ Converts current text of editor to double
+*/
double QtxDblSpinBox::mapTextToDoubleValue( bool* ok )
{
QString s = text();
return newVal;
}
+/*!
+ \return value corrected in accordance with borders
+ \param val - value to be corrected
+*/
double QtxDblSpinBox::bound( double val )
{
double newVal = val;
return newVal;
}
+/*!
+ Custom handler for leave event
+*/
void QtxDblSpinBox::leaveEvent( QEvent* e )
{
if ( !myCleared )
QSpinBox::leaveEvent( e );
}
+/*!
+ Custom handler for wheel event
+*/
void QtxDblSpinBox::wheelEvent( QWheelEvent* e )
{
if ( !isEnabled() )
updateDisplay();
}
+/*!
+ SLOT: called if text is changed
+*/
void QtxDblSpinBox::onTextChanged( const QString& str )
{
if ( !myBlocked )
myCleared = false;
}
+/*!
+ \return string without excess zeros in start and in end
+*/
QString QtxDblSpinBox::removeTrailingZeroes( const QString& src ) const
{
QString delim( "." );
#include <qspinbox.h>
+/*!
+ \class QtxDblSpinBox
+ Spin box for real numbers.
+*/
class QTX_EXPORT QtxDblSpinBox : public QSpinBox
{
Q_OBJECT
#include "QtxDblValidator.h"
+/*!
+ Constructor
+ \param bot - minimal possible value
+ \param top - maximal possible value
+ \param dec - number of digits
+ \param o - parent object
+ \param name - name of validator
+*/
QtxDblValidator::QtxDblValidator( const double bot, const double top, const int dec,
QObject* o, const char* name )
: QDoubleValidator( bot, top, dec, o, name )
{
}
+/*!
+ Destructor
+*/
QtxDblValidator::~QtxDblValidator()
{
}
+/*!
+ Corrects string: if it represent double value less then bottom, it becomes equal to bottom,
+ if it is more then top, it becomes equal to top, if it isn't number is becomes '0'
+*/
void QtxDblValidator::fixup( QString& str ) const
{
bool ok = false;
Class: QtxDialog::Area
Level: Internal
*/
-
class QtxDialog::Area : public QFrame
{
public:
Orientation myOrientation;
};
+/*!
+ Contructor
+*/
QtxDialog::Area::Area( Orientation o, QtxDialog* dlg, QWidget* parent )
: QFrame( parent ),
myDlg( dlg ),
hide();
}
+/*!
+ Destructor
+*/
QtxDialog::Area::~Area()
{
}
+/*!
+ Inserts button to area
+ \param b - button
+*/
void QtxDialog::Area::insertButton( QButton* b )
{
if ( !b || myButtons.findRef( b ) != -1 )
updateBorder();
}
+/*!
+ Removes button from area
+ \param b - button
+*/
void QtxDialog::Area::removeButton( QButton* b )
{
if ( !b )
layoutButtons();
}
+/*!
+ \return true if area contains button
+ \param b - button
+*/
bool QtxDialog::Area::contains( QButton* b ) const
{
return myButtons.containsRef( b );
}
+/*!
+ \return policy of button layouting.
+*/
int QtxDialog::Area::policy() const
{
return myPolicy;
}
+/*!
+ Changes policy of button layouting.
+ \param p - new policy
+*/
void QtxDialog::Area::setPolicy( const int p )
{
if ( myPolicy == p )
layoutButtons();
}
+/*!
+ \return true if border enabled
+*/
bool QtxDialog::Area::isBorderEnabled() const
{
return myLine && myBorder;
}
+/*!
+ Enables/disable separator between main frame and button frame
+ \param on - new state
+*/
void QtxDialog::Area::setBorderEnabled( const bool on )
{
if ( !myLine || myBorder == on )
updateBorder();
}
+/*!
+ Sets label as separator between main frame and button frame
+ \param line - new separator
+*/
void QtxDialog::Area::setBorderWidget( QLabel* line )
{
if ( myLine == line )
updateBorder();
}
+/*!
+ \return const reference to list of buttons
+*/
const QPtrList<QButton>& QtxDialog::Area::buttons() const
{
return myButtons;
}
+/*!
+ Updates visibility of border
+*/
void QtxDialog::Area::updateBorder()
{
if ( !myLine )
myLine->setLineWidth( myBorder ? 1 : 0 );
}
+/*!
+ Installs buttons into layout
+*/
void QtxDialog::Area::layoutButtons()
{
int aPolicy = policy();
Qtx::setTabOrder( wids );
}
+
/*!
- Class: QtxDialog::Border
- Level: Internal
-*/
+ \class QtxDialog::Border
+ Special label used as separator between main frame and button frame
+*/
class QtxDialog::Border : public QLabel
{
public:
virtual QSize minimumSizeHint() const;
};
+/*!
+ Constructor
+*/
QtxDialog::Border::Border( QWidget* parent )
: QLabel( parent )
{
setAlignment( Qt::AlignCenter );
}
+/*!
+ Destructor
+*/
QtxDialog::Border::~Border()
{
}
+/*!
+ Set line width of separator
+ \param lw - new line width
+*/
void QtxDialog::Border::setLineWidth( int lw )
{
bool isOn = lineWidth() > 0;
updateGeometry();
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxDialog::Border::sizeHint() const
{
QSize sz( 5, 5 );
return sz;
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxDialog::Border::minimumSizeHint() const
{
return sizeHint();
}
/*!
- Class: QtxDialog
- Level: Public
+ Constructor
+ Construct a dialog with specified parent and name.
+ \param modal define modal status of dialog (default non modal dialog created).
+ \param allowResize - if it is true then dialog can be resize by user (default non resizable dialog created).
+ \param Button flags specified control buttons for dialog (default buttons is OK, Cancel and Help).
+ \param Widget flags used as in any widget.
*/
-
-/*!
- Name: QtxDialog [public]
- Desc: Construct a dialog with specified parent and name.
- Parameter 'modal' define modal status of dialog (default non modal
- dialog created). If parameter 'allowResize' is true then dialog
- can be resize by user (default non resizable dialog created).
- Button flags specified control buttons for dialog (default buttons
- is OK, Cancel and Help). Widget flags used as in any widget.
-*/
-
QtxDialog::QtxDialog( QWidget* parent, const char* name,
bool modal, bool allowResize, const int f, WFlags wf )
: QDialog( parent, name, modal,
return QtxAction::removeFrom( wid );
}
+/*!
+ Sets menu text of action
+ \param txt - new menu text
+*/
void QtxDockAction::setMenuText( const QString& txt )
{
if ( menuText() == txt )
delete objs;
}
+/*!
+ \return true if main window is parent of object
+ \param mw - main window
+ \param win - object
+*/
bool QtxDockAction::dockMainWindow( QMainWindow* mw, QObject* win ) const
{
if ( !mw || !win )
}
}
+/*!
+ Updates menu of action
+*/
void QtxDockAction::updateMenus()
{
for ( MenuMap::Iterator it = myMenu.begin(); it != myMenu.end(); ++it )
#include <qapplication.h>
/*!
- Class: QtxDockWindow::Watcher [Internal]
- Descr: Internal object with event filter.
+ \class QtxDockWindow::Watcher [Internal]
+ Internal object with event filter.
*/
-
class QtxDockWindow::Watcher : public QObject
{
public:
bool myVisible;
};
+/*!
+ Constructor
+*/
QtxDockWindow::Watcher::Watcher( QtxDockWindow* cont )
: QObject( cont ), myCont( cont ),
myState( true ),
installFilters();
}
+/*!
+ Custom event filter
+*/
bool QtxDockWindow::Watcher::eventFilter( QObject* o, QEvent* e )
{
if ( o == myCont &&
return false;
}
+/*!
+ Sets internal status to shown
+*/
void QtxDockWindow::Watcher::shown( QtxDockWindow* dw )
{
if ( dw != myCont )
myVisible = true;
}
+/*!
+ Sets internal status to hidden
+*/
void QtxDockWindow::Watcher::hided( QtxDockWindow* dw )
{
if ( dw != myCont )
myVisible = false;
}
+/*!
+ Shows corresponding dock window
+*/
void QtxDockWindow::Watcher::showContainer()
{
if ( !myCont )
myCont = cont;
}
+/*!
+ Hides corresponding dock window
+*/
void QtxDockWindow::Watcher::hideContainer()
{
if ( !myCont )
myCont = cont;
}
+/*!
+ Event filter of custom events
+*/
void QtxDockWindow::Watcher::customEvent( QCustomEvent* e )
{
installFilters();
updateVisibility();
}
+/*!
+ Installs this object as event filter to all widgets inside corresponding main window
+*/
void QtxDockWindow::Watcher::installFilters()
{
if ( !myCont )
}
}
+/*!
+ Updates visibility of all widgets inside corresponding main window
+*/
void QtxDockWindow::Watcher::updateVisibility()
{
if ( !myCont )
vis ? showContainer() : hideContainer();
}
+/*!
+ Updates icon of corresponding main window
+*/
void QtxDockWindow::Watcher::updateIcon()
{
if ( !myCont || !myCont->widget() )
myCont->setIcon( ico ? *ico : QPixmap() );
}
+/*!
+ Updates caption of corresponding main window
+*/
void QtxDockWindow::Watcher::updateCaption()
{
if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() )
}
/*!
- Class: QtxDockWindow [Public]
- Descr:
+ Constructor
*/
-
QtxDockWindow::QtxDockWindow( Place p, QWidget* parent, const char* name, WFlags f )
: QDockWindow( p, parent, name, f ),
myWatcher( 0 ),
{
}
+/*!
+ Constructor
+*/
QtxDockWindow::QtxDockWindow( const bool watch, QWidget* parent, const char* name, WFlags f )
: QDockWindow( InDock, parent, name, f ),
myWatcher( 0 ),
myWatcher = new Watcher( this );
}
+/*!
+ Constructor
+*/
QtxDockWindow::QtxDockWindow( QWidget* parent, const char* name, WFlags f )
: QDockWindow( InDock, parent, name, f ),
myWatcher( 0 ),
{
}
+/*!
+ Destructor
+*/
QtxDockWindow::~QtxDockWindow()
{
}
+/*!
+ Sets the dock window's main widget
+ \param wid - new main widget
+*/
void QtxDockWindow::setWidget( QWidget* wid )
{
if ( wid )
QDockWindow::setWidget( wid );
}
+/*!
+ \return true if the dock window is stretchable
+*/
bool QtxDockWindow::isStretchable() const
{
return myStretch;
}
+/*!
+ Sets the dock window "stretchable" state
+ \param on - new state
+*/
void QtxDockWindow::setStretchable( const bool on )
{
if ( myStretch == on )
}
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxDockWindow::sizeHint() const
{
QSize sz = QDockWindow::sizeHint();
return sz;
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxDockWindow::minimumSizeHint() const
{
QSize sz = QDockWindow::minimumSizeHint();
return sz;
}
+/*!
+ \return corresponding main window
+*/
QMainWindow* QtxDockWindow::mainWindow() const
{
QMainWindow* mw = 0;
return mw;
}
+/*!
+ Shows window
+*/
void QtxDockWindow::show()
{
if ( myWatcher )
QDockWindow::show();
}
+/*!
+ Hides window
+*/
void QtxDockWindow::hide()
{
if ( myWatcher )
#include <qapplication.h>
#include <qobjectlist.h>
+/*!
+ Constructor
+*/
QtxGroupBox::QtxGroupBox( QWidget* parent, const char* name )
: QGroupBox( parent, name ),
myContainer( 0 )
{
}
+/*!
+ Constructor
+*/
QtxGroupBox::QtxGroupBox( const QString& title, QWidget* parent, const char* name )
: QGroupBox( title, parent, name ),
myContainer( 0 )
initialize();
}
+/*!
+ Constructor
+*/
QtxGroupBox::QtxGroupBox( int strips, Orientation o, QWidget* parent, const char* name )
: QGroupBox( strips, o, parent, name ),
myContainer( 0 )
initialize();
}
+/*!
+ Constructor
+*/
QtxGroupBox::QtxGroupBox( int strips, Orientation o, const QString& title,
QWidget* parent, const char* name )
: QGroupBox( strips, o, title, parent, name ),
initialize();
}
+/*!
+ Destructor
+*/
QtxGroupBox::~QtxGroupBox()
{
delete myContainer;
}
+/*!
+ Creates horizontal box as container
+*/
void QtxGroupBox::initialize()
{
myContainer = new QHBox( this, 0, WStyle_Customize | WStyle_NoBorderEx | WStyle_Tool );
#if QT_VER < 3
+/*!
+ \return the width of the empty space between the items in the group and the frame of the group
+*/
int QtxGroupBox::insideMargin() const
{
int m = 0;
return m;
}
+/*!
+ \return the width of the empty space between each of the items in the group
+*/
int QtxGroupBox::insideSpacing() const
{
int s = 0;
return s;
}
+/*!
+ Sets the width of the empty space between the items in the group and the frame of the group
+*/
void QtxGroupBox::setInsideMargin( int m )
{
if ( layout() )
layout()->setMargin( m );
}
+/*!
+ Sets the width of the empty space between each of the items in the group
+*/
void QtxGroupBox::setInsideSpacing( int s )
{
if ( layout() )
#endif
+/*!
+ Inserts title widget
+ \param wid - new title widget
+*/
void QtxGroupBox::insertTitleWidget( QWidget* wid )
{
if ( !myContainer )
updateTitle();
}
+/*!
+ Removes title widget
+ \param wid - title widget
+*/
void QtxGroupBox::removeTitleWidget( QWidget* wid )
{
if ( !myContainer || wid->parentWidget() != myContainer )
updateTitle();
}
+/*!
+ Calculates margin
+*/
void QtxGroupBox::adjustInsideMargin()
{
QApplication::sendPostedEvents( myContainer, QEvent::ChildInserted );
setInsideMargin( myContainer->height() );
}
+/*!
+ Sets the alignment of the group box title
+*/
void QtxGroupBox::setAlignment( int align )
{
QGroupBox::setAlignment( align );
updateTitle();
}
+/*!
+ Sets title of groop box
+*/
void QtxGroupBox::setTitle( const QString& title )
{
QGroupBox::setTitle( title );
updateTitle();
}
+/*!
+ Changes the layout of the group box
+ \param strips - number of column/rows
+ \param o - orientation
+*/
void QtxGroupBox::setColumnLayout( int strips, Orientation o )
{
if ( myContainer )
updateTitle();
}
+/*!
+ Shows group box
+*/
void QtxGroupBox::show()
{
QGroupBox::show();
updateTitle();
}
+/*!
+ Updates group box
+*/
void QtxGroupBox::update()
{
QGroupBox::update();
updateTitle();
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxGroupBox::sizeHint() const
{
QSize sz = QGroupBox::sizeHint();
return QSize( QMAX( sz.width(), sw ), sz.height() );
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxGroupBox::minimumSizeHint() const
{
QSize sz = QGroupBox::minimumSizeHint();
return QSize( QMAX( sz.width(), sw ), sz.height() );
}
+/*!
+ Custom event filter
+*/
bool QtxGroupBox::eventFilter( QObject* obj, QEvent* e )
{
QEvent::Type type = e->type();
return QGroupBox::eventFilter( obj, e );
}
+/*!
+ Custom resize event filter
+*/
void QtxGroupBox::resizeEvent( QResizeEvent* e )
{
QGroupBox::resizeEvent( e );
updateTitle();
}
+/*!
+ Custom child event filter
+*/
void QtxGroupBox::childEvent( QChildEvent* e )
{
if ( e->type() == QEvent::ChildInserted && e->child() == myContainer )
QGroupBox::childEvent( e );
}
+/*!
+ Event filter of custom items
+*/
void QtxGroupBox::customEvent( QCustomEvent* )
{
updateTitle();
}
+/*!
+ On frame changed
+*/
void QtxGroupBox::frameChanged()
{
updateTitle();
}
+/*!
+ \return size of title
+*/
QSize QtxGroupBox::titleSize() const
{
QSize sz( 0, 0 );
return QSize( w, h );
}
+/*!
+ Updates title
+*/
void QtxGroupBox::updateTitle()
{
if ( !myContainer )
#include <qlineedit.h>
#include <qapplication.h>
+/*!
+ Constructor
+*/
QtxIntSpinBox::QtxIntSpinBox( QWidget* parent, const char* name )
: QSpinBox( parent, name ),
myCleared( false ),
connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) );
}
+/*!
+ Constructor
+*/
QtxIntSpinBox::QtxIntSpinBox( int min, int max, int step, QWidget* parent, const char* name )
: QSpinBox( min, max, step, parent, name ),
myCleared( false ),
connect( editor(), SIGNAL( textChanged( const QString& ) ), this, SLOT( onTextChanged( const QString& ) ) );
}
+/*!
+ Destructor
+*/
QtxIntSpinBox::~QtxIntSpinBox()
{
}
+/*!
+ \return true if spin box is cleared
+*/
bool QtxIntSpinBox::isCleared() const
{
return myCleared;
}
+/*!
+ Changes cleared status of spin box
+ \param on - new status
+*/
void QtxIntSpinBox::setCleared( const bool on )
{
if ( myCleared == on )
updateDisplay();
}
+/*!
+ Changes value of spin box
+ \param val - new value of spin box
+*/
void QtxIntSpinBox::setValue( int value )
{
myCleared = false;
QSpinBox::setValue( value );
}
+/*!
+ Custom event filter
+*/
bool QtxIntSpinBox::eventFilter( QObject* o, QEvent* e )
{
if ( !myCleared || o != editor() || !editor()->text().stripWhiteSpace().isEmpty() )
return QSpinBox::eventFilter( o, e );
}
+/*!
+ Sets integer value by text in editor
+*/
void QtxIntSpinBox::interpretText()
{
myCleared = false;
QSpinBox::interpretText();
}
+/*!
+ Updates text of editor
+*/
void QtxIntSpinBox::updateDisplay()
{
if ( myBlocked )
myBlocked = block;
}
+/*!
+ Custom handler for leave event
+*/
void QtxIntSpinBox::leaveEvent( QEvent* e )
{
if ( !myCleared )
QSpinBox::leaveEvent( e );
}
+/*!
+ Custom handler for wheel event
+*/
void QtxIntSpinBox::wheelEvent( QWheelEvent* e )
{
if ( !isEnabled() )
updateDisplay();
}
+/*!
+ SLOT: called if text is changed
+*/
void QtxIntSpinBox::onTextChanged( const QString& )
{
if ( !myBlocked )
};
/*!
- Class: QtxListAction::ToolButton
- Level: Internal
+ \class QtxListAction::ToolButton
+ Custom tool button
*/
-
class QtxListAction::ToolButton : public QToolButton
{
public:
QtxListAction* myAction;
};
+/*!
+ Constructor
+*/
QtxListAction::ToolButton::ToolButton( QtxListAction* a, QWidget* parent, const char* name )
: QToolButton( parent, name ),
myAction( a )
setIconSet( QPixmap( list_arrow_icon ) );
}
+/*!
+ Destructor
+*/
QtxListAction::ToolButton::~ToolButton()
{
if ( myAction )
myAction->controlDeleted( this );
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxListAction::ToolButton::sizeHint() const
{
QSize sz = iconSet().pixmap().size();
}
/*!
- Class: QtxListAction
- Level: Public
+ Constructs an list action with given parent and name. If toggle is true the
+ action will be a toggle action, otherwise it will be a command action.
*/
-
-/*!
- Name: QtxListAction [public]
- Desc: Constructs an list action with given parent and name. If toggle is true the
- action will be a toggle action, otherwise it will be a command action.
-*/
-
QtxListAction::QtxListAction( QObject* parent, const char* name, bool toggle )
: QtxAction( parent, name, toggle ),
myFrame( 0 ),
}
/*!
- Name: QtxListAction [public]
- Desc: This constructor creates an action with the following properties: the
- description text, the icon or iconset icon, the menu text and keyboard
- accelerator. It is a child of given parent and named specified name.
- If toggle is true the action will be a toggle action, otherwise it will
- be a command action.
+ This constructor creates an action with the following properties: the
+ description text, the icon or iconset icon, the menu text and keyboard
+ accelerator. It is a child of given parent and named specified name.
+ If toggle is true the action will be a toggle action, otherwise it will
+ be a command action.
*/
QtxListAction::QtxListAction( const QString& text, const QIconSet& icon,
}
/*!
- Name: QtxListAction [public]
- Desc: This constructor creates an action with the following properties: the
- description text, the menu text and keyboard accelerator. It is a child
- of given parent and named specified name. If toggle is true the action
- will be a toggle action, otherwise it will be a command action.
+ This constructor creates an action with the following properties: the
+ description text, the menu text and keyboard accelerator. It is a child
+ of given parent and named specified name. If toggle is true the action
+ will be a toggle action, otherwise it will be a command action.
*/
QtxListAction::QtxListAction( const QString& text, const QString& menuText,
}
/*!
- Name: ~QtxListAction [virtual public]
- Desc: Destructor.
+ Destructor.
*/
QtxListAction::~QtxListAction()
myMode = mode;
}
+/*!
+ \return list of names
+*/
QStringList QtxListAction::names() const
{
QStringList lst;
myFrame->hide();
}
+/*!
+ SLOT: called when frame is hidden
+*/
void QtxListAction::onHided()
{
for ( ButtonsMap::Iterator bit = myButtons.begin(); bit != myButtons.end(); ++bit )
}
}
-/**********************************************************************
-** Class: QtxListFrame
-** Descr: Frame for the list of actions
-** Level: Internal
-***********************************************************************/
-
+/*!
+ \class QtxListFrame
+ Frame for the list of actions
+*/
class QtxListFrame::ScrollEvent : public QCustomEvent
{
public:
setFrameStyle( Panel | Raised );
}
+/*!
+ Destructor
+*/
QtxListFrame::~QtxListFrame()
{
if ( myAction )
setNames( myNames );
}
+/*!
+ Adds a names to the list. Truncates the name to fit to the frame width.
+ Use QtxListAction::setMaxLineChar( int ) to set the width in characters. [ public ]
+*/
+
void QtxListFrame::addNames( const QStringList& names )
{
for ( QStringList::ConstIterator it = names.begin(); it != names.end(); ++it )
}
}
+/*!
+ \return list of names
+*/
const QStringList QtxListFrame::names() const
{
return myNames;
myComment->setText( com );
}
+/*!
+ Sets owner
+ \param wo - new owner
+*/
void QtxListFrame::setOwner( QWidget* wo )
{
myOwner = wo;
return true;
}
+/*!
+ Custom event filter
+*/
bool QtxListFrame::event( QEvent* e )
{
if ( e->type() != (int)ScrollEvent::Scroll )
updateComment();
}
+/*!
+ return number of selected items
+*/
int QtxListFrame::selected() const
{
uint sel = 0;
friend class QtxListFrame;
};
-/*************************************
-** Class: QtxListFrame
-** Level: Internal
-*************************************/
-
+/*!
+ \class QtxListFrame
+*/
class QtxListFrame : public QFrame
{
Q_OBJECT
#include <qpixmap.h>
#include <qlineedit.h>
+/*!
+ Constructor
+*/
QtxListBox::QtxListBox( QWidget* parent, const char* name, WFlags f )
: QListBox( parent, name, f ),
myEditor( 0 ),
this, SLOT( onContentsMoving( int, int ) ) );
}
+/*!
+ Destructor
+*/
QtxListBox::~QtxListBox()
{
}
+/*!
+ \return true if editing is enabled
+*/
bool QtxListBox::isEditEnabled() const
{
return myEditState;
}
+/*!
+ Enables/disables editing
+ \param on - new state
+*/
void QtxListBox::setEditEnabled( bool on )
{
if ( isEditEnabled() == on )
endEdition( defaultEditAction() );
}
+/*!
+ \return default edit action
+ \sa setDefaultEditAction()
+*/
bool QtxListBox::defaultEditAction() const
{
return myEditDefault;
}
+/*!
+ Changes default edit action.
+ Pressing of ENTER button always accepts new value of edited item.
+ But other ways, such as focus out or edition of other item accepts
+ new value of edited item only if "default edit action" is true
+ \param def - new value
+*/
void QtxListBox::setDefaultEditAction( bool def )
{
myEditDefault = def;
}
+/*!
+ \return modification enabled state
+ \sa setModificationEnabled()
+*/
bool QtxListBox::isModificationEnabled() const
{
return myModifEnabled;
}
+/*!
+ Changes "modification enabled" state
+ If it is true, then pressing of CTRL + { Up, Down, Home, End } allows move items in list
+ \param on - new state
+*/
void QtxListBox::setModificationEnabled( bool on )
{
myModifEnabled = on;
}
+/*!
+ \return current edited item
+*/
QListBoxItem* QtxListBox::editedItem() const
{
return item( editedIndex() );
}
+/*!
+ \return current edited index
+*/
int QtxListBox::editedIndex() const
{
return myEditIndex;
}
+/*!
+ Starts edition of item
+ \param idx - index of item
+*/
void QtxListBox::startEdition( const int idx )
{
if ( idx < 0 || editedIndex() == idx || !isEditEnabled() )
ed->setFocus();
}
+/*!
+ Starts edition of item
+ \param item - item to be edited
+*/
void QtxListBox::startEdition( const QListBoxItem* item )
{
startEdition( index( item ) );
}
+/*!
+ Finishes edition of item
+ \param action - if it is true, then new values must be accepted
+*/
void QtxListBox::endEdition( const bool action )
{
int idx = editedIndex();
}
}
+/*!
+ Ensures that the item is visible.
+ \param idx - index of item
+*/
void QtxListBox::ensureItemVisible( const int idx )
{
if ( idx < 0 )
setTopItem( idx );
}
+/*!
+ Ensures that the item is visible.
+ \param item - item to be made visible
+*/
void QtxListBox::ensureItemVisible( const QListBoxItem* item )
{
ensureItemVisible( index( item ) );
}
+/*!
+ \return validator of item editor
+*/
const QValidator* QtxListBox::validator() const
{
const QValidator* v = 0;
return v;
}
+/*!
+ Removes validator of item editor
+*/
void QtxListBox::clearValidator()
{
if ( editor() )
editor()->clearValidator();
}
+/*!
+ Changes validator of item editor
+ \param v - new validator
+*/
void QtxListBox::setValidator( const QValidator* v )
{
if ( editor() )
editor()->setValidator( v );
}
+/*!
+ Moves item to top
+ \param idx - index of item
+*/
void QtxListBox::moveItemToTop( const int idx )
{
moveItem( idx, -idx );
}
+/*!
+ Moves item to bottom
+ \param idx - index of item
+*/
void QtxListBox::moveItemToBottom( const int idx )
{
moveItem( idx, count() - idx );
}
+/*!
+ Moves item
+ \param idx - index of item
+ \param step - changing of position
+*/
void QtxListBox::moveItem( const int idx, const int step )
{
QListBoxItem* i = item( idx );
emit itemMoved( idx, pos );
}
+/*!
+ Inserts empty item
+ \param i - position of item (if it is less than 0, then current position is used)
+*/
void QtxListBox::createItem( const int i )
{
if ( !isEditEnabled() )
startEdition( idx );
}
+/*!
+ Removes item
+ \param i - position of item (if it is less than 0, then current position is used)
+*/
void QtxListBox::deleteItem( const int i )
{
if ( !isEditEnabled() )
updateEditor();
}
+/*!
+ Scrolls the content so that the point is in the top-left corner.
+ \param x, y - point co-ordinates
+*/
void QtxListBox::setContentsPos( int x, int y )
{
QListBox::setContentsPos( x, y );
updateEditor();
}
+/*!
+ Custom event filter, performs finish of edition on focus out, escape/return/enter pressing
+*/
bool QtxListBox::eventFilter( QObject* o, QEvent* e )
{
if ( editor() == o )
return QListBox::eventFilter( o, e );
}
+/*!
+ Custom key press event handler
+ Allows to move items by CTRL + { Up, Down, Home, End }
+*/
void QtxListBox::keyPressEvent( QKeyEvent* e )
{
if ( e->key() == Key_Up && e->state() & ControlButton && isModificationEnabled() )
QListBox::keyPressEvent( e );
}
+/*!
+ Custom resize event handler
+*/
void QtxListBox::viewportResizeEvent( QResizeEvent* e )
{
QListBox::viewportResizeEvent( e );
updateEditor();
}
+/*!
+ Custom mouse double click event handler
+*/
void QtxListBox::mouseDoubleClickEvent( QMouseEvent* e )
{
if ( isEditEnabled() )
QListBox::mouseDoubleClickEvent( e );
}
+/*!
+ Updates editor on contents moving
+*/
void QtxListBox::onContentsMoving( int, int )
{
updateEditor();
}
+/*!
+ \return item editor
+*/
QLineEdit* QtxListBox::editor() const
{
if ( !myEditor )
return myEditor;
}
+/*!
+ Creates item editor
+*/
void QtxListBox::createEditor()
{
if ( myEditor )
addChild( myEditor );
}
+/*!
+ Updates item editor
+*/
void QtxListBox::updateEditor()
{
if ( !editedItem() || !editor() )
#include "QtxListOfOperations.h"
#include <stdarg.h>
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Constructor
+*/
QtxListOfOperations::QtxListOfOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxListOfOperations::~QtxListOfOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return fills list with brackets symbols
+ \param list - list to be filled
+ \param open - if it is true, it is necessary to fill with open brackets otherwise with close
+*/
void QtxListOfOperations::bracketsList( QStringList& list, bool open ) const
{
OperationSetsIterator anIt = mySets.begin(),
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills list with operation names
+*/
void QtxListOfOperations::opersList( QStringList& list ) const
{
OperationSetsIterator anIt = mySets.begin(),
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Create some value by it's string representation
+*/
bool QtxListOfOperations::createValue( const QString& str, QtxValue& val ) const
{
bool ok;
return ok;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of operation
+*/
int QtxListOfOperations::prior( const QString& op, bool isBin ) const
{
OperationSetsIterator anIt = mySets.begin(),
return prior>0 ? prior : 0;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return whether values with passed types are valid for arguments of operation
+ \param op - name of operation
+ \param t1 - type of first argument
+ \param t2 - type of second argument
+*/
QtxParser::Error QtxListOfOperations::isValid( const QString& op,
const QVariant::Type t1,
const QVariant::Type t2 ) const
return err;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxListOfOperations::calculate( const QString& op,
QtxValue& v1,
QtxValue& v2 ) const
return QtxParser::InvalidOperation;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Clears list of operations
+*/
void QtxListOfOperations::clear()
{
mySets.clear();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if list contains operations
+ \param name - name of operation
+*/
bool QtxListOfOperations::has( const QString& name ) const
{
OperationSetsIterator anIt = mySets.begin(),
return false;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Appends operations to list
+ \param name - name of operations
+ \param oper - operations
+ \param prior - additional prior
+*/
void QtxListOfOperations::append( const QString& name, QtxOperations* oper,
int prior )
{
insert( name, oper, prior );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Prepends operations to list
+ \param name - name of operations
+ \param oper - operations
+ \param prior - additional prior
+*/
void QtxListOfOperations::prepend( const QString& name, QtxOperations* oper,
int prior )
{
insert( name, oper, prior, 0 );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Inserts operations to list
+ \param name - name of operations
+ \param oper - operations
+ \param prior - additional prior
+ \param pos - insert position
+*/
void QtxListOfOperations::insert( const QString& name, QtxOperations* oper,
int prior, int pos )
{
mySets.insert( mySets.at( pos ), op );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes operations from list
+ \param name - name of operations
+*/
void QtxListOfOperations::remove( const QString& name )
{
OperationSets::iterator anIt = mySets.begin(),
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return count of operations in list
+*/
int QtxListOfOperations::count() const
{
return mySets.count();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return operations by name
+ \name - name of operations
+*/
QtxOperations* QtxListOfOperations::operations( const QString& name ) const
{
OperationSetsIterator anIt = mySets.begin(),
#endif
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ Class: QtxListOfOperations
+
+ This class provides special variant of QtxOperations. It contains list of QtxOperations* with
+ fixed order. When it is necessary to calculate operation or get it's priority, this operation is
+ being found starting from first item. It makes possible to create unions of operations. Every QtxOperations*
+ has priority, which is added to priority of operation, so that it makes possible to increase priority of
+ whole group of operations
+*/
class QTX_EXPORT QtxListOfOperations : public QtxOperations
{
public:
#include "QtxComboBox.h"
#include "QtxDirListEditor.h"
-/*
- Class: QtxListResourceEdit
- Descr: GUI implementation of QtxResourceEdit - manager of resources
+/*!
+ Constructor
*/
-
QtxListResourceEdit::QtxListResourceEdit( QtxResourceMgr* mgr, QWidget* parent )
: QFrame( parent ),
QtxResourceEdit( mgr )
updateState();
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::~QtxListResourceEdit()
{
}
+/*!
+ Sets value to widget
+ \param id - id of widget
+ \param prop - name of resource
+ \param val - value of resource
+*/
void QtxListResourceEdit::setItemProperty( const int id, const QString& prop, const QVariant& val )
{
Item* i = item( id );
updateVisible();
}
+/*!
+ SLOT: called if main list selection changed, raises resource group widgets
+*/
void QtxListResourceEdit::onSelectionChanged()
{
QString title = myList->text( myList->index( myList->selectedItem() ) );
myStack->raiseWidget( i->id() );
}
+/*!
+ Custom activity after item addition
+ \param i - added item
+*/
void QtxListResourceEdit::itemAdded( QtxResourceEdit::Item* i )
{
if ( !i )
updateVisible();
}
+/*!
+ Creates and \return category
+ \param title - category title
+*/
QtxResourceEdit::Item* QtxListResourceEdit::createItem( const QString& title, const int )
{
Item* i = item( title, -1 );
return category;
}
+/*!
+ Emits signal about resource changing
+ \param map - map of changed resources
+*/
void QtxListResourceEdit::changedResources( const QMap<Item*, QString>& map )
{
QMap<int, QString> idMap;
emit resourcesChanged( idMap );
}
+/*!
+ Updates widgets with accordance with main list selection
+*/
void QtxListResourceEdit::updateState()
{
if ( myList->selectedItem() && myStack->visibleWidget() )
myList->setShown( myList->count() > 1 );
}
+/*!
+ Updates visibility state
+*/
void QtxListResourceEdit::updateVisible()
{
QPtrList<Item> items;
updateState();
}
-/*
- Class: QtxListResourceEdit::Category
- Descr: GUI implementation of preferences category.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::Category::Category( QtxListResourceEdit* edit, QWidget* parent )
: QFrame( parent ),
Item( edit )
updateState();
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::Category::~Category()
{
}
+/*!
+ \return true if it is empty
+*/
bool QtxListResourceEdit::Category::isEmpty() const
{
return Item::isEmpty() && myInfo->text().isEmpty();
}
+/*!
+ \return category type
+*/
int QtxListResourceEdit::Category::type() const
{
return -1;
}
+/*!
+ Default empty implementation of resources storing
+*/
void QtxListResourceEdit::Category::store()
{
}
+/*!
+ Default empty implementation of resources retrieving
+*/
void QtxListResourceEdit::Category::retrieve()
{
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::Category::property( const QString& prop ) const
{
QVariant var;
return var;
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::Category::setProperty( const QString& name, const QVariant& var )
{
QVariant prop = var;
updateState();
}
+/*!
+ Creates new tab
+ \param title - name of tab
+*/
QtxResourceEdit::Item* QtxListResourceEdit::Category::createItem( const QString& title, const int )
{
Item* i = item( title, id() );
return tab;
}
+/*!
+ Updates category
+*/
void QtxListResourceEdit::Category::updateState()
{
if ( myTabs->count() )
myInfo->hide();
}
-/*
- Class: QtxListResourceEdit::Tab
- Descr: GUI implementation of resources tab.
-*/
+/*!
+ Constructor
+*/
QtxListResourceEdit::Tab::Tab( QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: QFrame( parent ),
Item( edit, pItem )
main->addStretch( 1 );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::Tab::~Tab()
{
}
+/*!
+ \return tab type
+*/
int QtxListResourceEdit::Tab::type() const
{
return -1;
}
+/*!
+ Default empty implementation of resources storing
+*/
void QtxListResourceEdit::Tab::store()
{
}
+/*!
+ Default empty implementation of resources retrieving
+*/
void QtxListResourceEdit::Tab::retrieve()
{
}
+/*!
+ Delayed initialization of a widget
+*/
void QtxListResourceEdit::Tab::polish()
{
QFrame::polish();
adjustLabels();
}
+/*!
+ Creates new group
+ \param title - name of group
+*/
QtxResourceEdit::Item* QtxListResourceEdit::Tab::createItem( const QString& title, const int )
{
Item* i = item( title, id() );
return group;
}
+/*!
+ Adjusts sizes of labels
+*/
void QtxListResourceEdit::Tab::adjustLabels()
{
QObjectList* labels = queryList( "QLabel" );
}
}
-/*
- Class: QtxListResourceEdit::Group
- Descr: GUI implementation of resources group.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::Group::Group( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: QGroupBox( 2, Qt::Horizontal, title, parent ),
Item( edit, pItem )
{
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::Group::~Group()
{
}
+/*!
+ \return group type
+*/
int QtxListResourceEdit::Group::type() const
{
return -1;
}
+/*!
+ Default empty implementation of resources storing
+*/
void QtxListResourceEdit::Group::store()
{
}
+/*!
+ Default empty implementation of resources retrieving
+*/
void QtxListResourceEdit::Group::retrieve()
{
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::Group::property( const QString& prop ) const
{
QVariant var;
return var;
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::Group::setProperty( const QString& name, const QVariant& var )
{
QVariant prop = var;
}
}
+/*!
+ Sets title of group
+ \param title - new title of group
+*/
void QtxListResourceEdit::Group::setTitle( const QString& title )
{
Item::setTitle( title );
QGroupBox::setTitle( title );
}
+/*!
+ Creates new item
+ \param title - title of new item
+ \type - type of new item
+*/
QtxResourceEdit::Item* QtxListResourceEdit::Group::createItem( const QString& title, const int type )
{
Item* item = 0;
return item;
}
-/*
- Class: QtxListResourceEdit::PrefItem
- Descr: Base class for preferences items.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::PrefItem::PrefItem( const int type, QtxResourceEdit* edit, Item* pi, QWidget* parent )
: QHBox( parent ),
Item( edit, pi ),
setSpacing( 5 );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::PrefItem::~PrefItem()
{
}
+/*!
+ \return preference item type
+*/
int QtxListResourceEdit::PrefItem::type() const
{
return myType;
}
+/*!
+ Doesn't create item, \return 0 by default
+*/
QtxResourceEdit::Item* QtxListResourceEdit::PrefItem::createItem( const QString&, const int )
{
return 0;
}
-/*
- Class: QtxListResourceEdit::Spacer
- Descr: GUI implementation of resources spacer.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::Spacer::Spacer( QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: PrefItem( Space, edit, pItem, parent )
{
setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::Spacer::~Spacer()
{
}
+/*!
+ Default empty implementation of resources storing
+*/
void QtxListResourceEdit::Spacer::store()
{
}
+/*!
+ Default empty implementation of resources retrieving
+*/
void QtxListResourceEdit::Spacer::retrieve()
{
}
-/*
- Class: QtxListResourceEdit::SelectItem
- Descr: GUI implementation of resources list item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::SelectItem::SelectItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( Selector, edit, pItem, parent )
myList->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::SelectItem::~SelectItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::SelectItem::store()
{
int idx = myList->currentItem();
setInteger( myIndex[idx] );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::SelectItem::retrieve()
{
int id = getInteger( -1 );
myList->setCurrentItem( idx );
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::SelectItem::property( const QString& name ) const
{
QVariant val;
return val;
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::SelectItem::setProperty( const QString& name, const QVariant& val )
{
if ( name == QString( "strings" ) )
setIndexes( val );
}
+/*!
+ Sets property "strings" - items for selection in combo box
+ \param var - must be string list: list of items
+*/
void QtxListResourceEdit::SelectItem::setStrings( const QVariant& var )
{
if ( var.type() != QVariant::StringList )
setStrings( var.toStringList() );
}
+/*!
+ Sets property "indexes" - corresponding indices of items in combo box
+ \param var - must be list of integer variants: list of indices
+*/
void QtxListResourceEdit::SelectItem::setIndexes( const QVariant& var )
{
if ( var.type() != QVariant::List )
setIndexes( lst );
}
+/*!
+ Sets property "strings" - items for selection in combo box
+ \param lst - list of items
+*/
void QtxListResourceEdit::SelectItem::setStrings( const QStringList& lst )
{
myList->clear();
myList->insertStringList( lst );
}
+/*!
+ Sets property "indexes" - corresponding indices of items in combo box
+ \param var - list of indices
+*/
void QtxListResourceEdit::SelectItem::setIndexes( const QValueList<int>& lst )
{
myIndex.clear();
myIndex.insert( idx, *it );
}
-/*
- Class: QtxListResourceEdit::StateItem
- Descr: GUI implementation of resources bool item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::StateItem::StateItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( Bool, edit, pItem, parent )
myState->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::StateItem::~StateItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::StateItem::store()
{
setBoolean( myState->isChecked() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::StateItem::retrieve()
{
myState->setChecked( getBoolean() );
}
-/*
- Class: QtxListResourceEdit::StringItem
- Descr: GUI implementation of resources string item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::StringItem::StringItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( String, edit, pItem, parent )
myString->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::StringItem::~StringItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::StringItem::store()
{
setString( myString->text() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::StringItem::retrieve()
{
myString->setText( getString() );
}
-/*
- Class: QtxListResourceEdit::IntegerEditItem
- Descr: GUI implementation of resources integer item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::IntegerEditItem::IntegerEditItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: PrefItem( Integer, edit, pItem, parent )
{
myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::IntegerEditItem::~IntegerEditItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::IntegerEditItem::store()
{
setString( myInteger->text() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::IntegerEditItem::retrieve()
{
myInteger->setText( getString() );
}
-/*
- Class: QtxListResourceEdit::IntegerSpinItem
- Descr: GUI implementation of resources integer item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::IntegerSpinItem::IntegerSpinItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: PrefItem( IntSpin, edit, pItem, parent )
{
myInteger->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::IntegerSpinItem::~IntegerSpinItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::IntegerSpinItem::store()
{
setInteger( myInteger->value() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::IntegerSpinItem::retrieve()
{
myInteger->setValue( getInteger() );
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::IntegerSpinItem::property( const QString& name ) const
{
QVariant var;
return var;
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::IntegerSpinItem::setProperty( const QString& name, const QVariant& var )
{
QVariant prop = var;
myInteger->setSuffix( prop.toString() );
}
-/*
- Class: QtxListResourceEdit::DoubleEditItem
- Descr: GUI implementation of resources string item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::DoubleEditItem::DoubleEditItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( Double, edit, pItem, parent )
myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::DoubleEditItem::~DoubleEditItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::DoubleEditItem::store()
{
setString( myDouble->text() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::DoubleEditItem::retrieve()
{
myDouble->setText( getString() );
}
-/*
- Class: QtxListResourceEdit::DoubleSpinItem
- Descr: GUI implementation of resources double item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::DoubleSpinItem::DoubleSpinItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( DblSpin, edit, pItem, parent )
myDouble->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::DoubleSpinItem::~DoubleSpinItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::DoubleSpinItem::store()
{
setDouble( myDouble->value() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::DoubleSpinItem::retrieve()
{
myDouble->setValue( getDouble() );
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::DoubleSpinItem::property( const QString& name ) const
{
QVariant var;
return var;
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::DoubleSpinItem::setProperty( const QString& name, const QVariant& var )
{
QVariant prop = var;
myDouble->setSuffix( prop.toString() );
}
-/*
- Class: QtxListResourceEdit::ColorItem
- Descr: GUI implementation of resources color item.
+/*!
+ Constructor
*/
-
QtxListResourceEdit::ColorItem::ColorItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
: PrefItem( Color, edit, pItem, parent )
{
+ /*!
+ \class QtxListResourceEdit::ColorItem::ColorSelector
+ \brief Label, showing color and allowing to pick color with help of standard color dialog
+ */
class ColorSelector : public QLabel
{
public:
myColor->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::ColorItem::~ColorItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::ColorItem::store()
{
setColor( myColor->paletteBackgroundColor() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::ColorItem::retrieve()
{
myColor->setPaletteBackgroundColor( getColor() );
}
-/*
- Class: QtxListResourceEdit::FontItem
- Descr: GUI implementation of resources font item.
+/*!
+ Constructor
*/
QtxListResourceEdit::FontItem::FontItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
setProperty( "widget_flags", ( int )All );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::FontItem::~FontItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::FontItem::store()
{
QFont f( family(), size() );
Item::setFont( f );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::FontItem::retrieve()
{
QFont f = getFont();
setParams( f.bold(), f.italic(), f.underline() );
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::FontItem::property( const QString& name ) const
{
if( name=="system" )
return QVariant();
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::FontItem::setProperty( const QString& name, const QVariant& value )
{
if( name=="system" )
myProperties[ name ] = value;
}
+/*!
+ Sets family of font
+ \param f - new family
+*/
void QtxListResourceEdit::FontItem::setFamily( const QString& f )
{
QString curtext;
onActivateFamily( idx );
}
+/*!
+ \return family of font
+*/
QString QtxListResourceEdit::FontItem::family() const
{
return myFamilies->currentText();
}
+/*!
+ Sets size of font
+ \param s - new size of font
+*/
void QtxListResourceEdit::FontItem::setSize( const int s )
{
int cursize = -1;
mySizes->setCurrentText( cursize>0 ? QString( "%1" ).arg( cursize ) : "" );
}
+/*!
+ \return size of font
+*/
int QtxListResourceEdit::FontItem::size() const
{
QString s = mySizes->currentText();
return ( ok ? pSize : 0 );
}
+/*!
+ Sets font parameters
+ \param bold - is font bold
+ \param italic - is font italic
+ \param underline - is font underlined
+*/
void QtxListResourceEdit::FontItem::setParams( const bool bold, const bool italic, const bool underline )
{
bool curbold = false, curitalic = false, curunderline = false;
myUnderline->setChecked( curunderline );
}
+/*!
+ \return font parameters
+ \param bold - is font bold
+ \param italic - is font italic
+ \param underline - is font underlined
+*/
void QtxListResourceEdit::FontItem::params( bool& bold, bool& italic, bool& underline )
{
bold = myBold->isChecked();
underline = myUnderline->isChecked();
}
+/*!
+ Updates internal selection of font properties
+*/
void QtxListResourceEdit::FontItem::internalUpdate()
{
- //update internal selection of font properties
setFamily( family() );
setSize( size() );
bool b1, b2, b3;
setParams( b1, b2, b3 );
}
+/*!
+ SLOT: called if family is activated, updates list of possible sizes
+*/
void QtxListResourceEdit::FontItem::onActivateFamily( int )
{
QVariant sizes = property( QString( "%1:sizes" ).arg( family() ) );
setSize( s );
}
+/*!
+ SLOT: called if it is necessary to show font preview
+*/
void QtxListResourceEdit::FontItem::onPreview()
{
QFont f( family(), size() );
-
-
-/*
- Class: QtxListResourceEdit::DirListItem
- Descr:
+/*!
+ Constructor
*/
QtxListResourceEdit::DirListItem::DirListItem( const QString& title, QtxResourceEdit* edit, Item* pItem, QWidget* parent )
: PrefItem( Font, edit, pItem, parent )
myDirListEditor = new QtxDirListEditor( this );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::DirListItem::~DirListItem()
{
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::DirListItem::store()
{
QStringList list;
setString( QString(list.join(";")) );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::DirListItem::retrieve()
{
myDirListEditor->setPathList(QStringList::split(";", getString()));
-/*
- Class: QtxListResourceEdit::FileItem
- Descr: GUI implementation of resources file item.
+/*!
+ Constructor
*/
QtxListResourceEdit::FileItem::FileItem( const QString& title, QtxResourceEdit* edit,
Item* pItem, QWidget* parent )
connect( myOpenFile, SIGNAL( clicked() ), this, SLOT( onOpenFile() ) );
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::FileItem::~FileItem()
{
if( myFileDlg )
delete myFileDlg;
}
+/*!
+ Stores value to resource manager
+*/
void QtxListResourceEdit::FileItem::store()
{
setString( myFile->text() );
}
+/*!
+ Retrieve value to resource manager
+*/
void QtxListResourceEdit::FileItem::retrieve()
{
myFile->setText( getString() );
}
+/*!
+ \return value of property
+ \param prop - property name
+*/
QVariant QtxListResourceEdit::FileItem::property( const QString& name ) const
{
if( name=="filter" )
return QVariant();
}
+/*!
+ Sets property value
+ \param name - name of property
+ \param var - value of property
+*/
void QtxListResourceEdit::FileItem::setProperty( const QString& name, const QVariant& value )
{
if( name=="filter" )
}
}
+/*!
+ SLOT: called if user click "Open File" button, shows dialog
+*/
void QtxListResourceEdit::FileItem::onOpenFile()
{
if( !myFileDlg )
}
}
+/*!
+ \return true if file satisfies permissions
+ \param f - file name
+*/
bool QtxListResourceEdit::FileItem::isFileCorrect( const QString& f ) const
{
bool res = false;
return res;
}
+/*!
+ SLOT: called if user has selected file in file dialog, checks file permissions and passes it's name to widget
+ \param f - file name
+*/
void QtxListResourceEdit::FileItem::onFileSelected( const QString& f )
{
if( myFileDlg && !isFileCorrect( f ) )
}
-
+/*!
+ Constructor
+*/
QtxListResourceEdit::FileItem::FileValidator::FileValidator( FileItem* item, QObject* parent )
: QValidator( parent ),
myItem( item )
{
}
+/*!
+ Destructor
+*/
QtxListResourceEdit::FileItem::FileValidator::~FileValidator()
{
}
+/*!
+ Check file permissions
+ \param f - file name
+*/
QValidator::State QtxListResourceEdit::FileItem::FileValidator::validate( QString& f, int& ) const
{
if( myItem && myItem->isFileCorrect( f ) )
class QtxDirListEditor;
-/*
- Class: QtxListResourceEdit
- Descr: GUI implementation of QtxResourceEdit - manager of resources
+/*!
+ \class QtxListResourceEdit
+ GUI implementation of QtxResourceEdit - manager of resources
*/
class QTX_EXPORT QtxListResourceEdit : public QFrame, public QtxResourceEdit
QWidgetStack* myStack;
};
-/*
- Class: QtxListResourceEdit::Category
- Descr: GUI implementation of 'Category' frame
+/*!
+ \class QtxListResourceEdit::Category
+ GUI implementation of 'Category' frame
*/
class QtxListResourceEdit::Category : public QFrame, public Item
QTabWidget* myTabs;
};
-/*
- Class: QtxListResourceEdit::Tab
- Descr: GUI implementation of resources tab.
+/*!
+ \class QtxListResourceEdit::Tab
+ GUI implementation of resources tab.
*/
class QtxListResourceEdit::Tab : public QFrame, public Item
QWidget* myMainFrame;
};
-/*
- Class: QtxListResourceEdit::Group
- Descr: GUI implementation of resources group.
+/*!
+ \class QtxListResourceEdit::Group
+ GUI implementation of resources group.
*/
class QtxListResourceEdit::Group : public QGroupBox, public Item
virtual Item* createItem( const QString&, const int );
};
-/*
- Class: QtxListResourceEdit::PrefItem
- Descr: Base class for preferences items.
+/*!
+ \class QtxListResourceEdit::PrefItem
+ Base class for preferences items.
*/
class QtxListResourceEdit::PrefItem : public QHBox, public Item
int myType;
};
-/*
- Class: QtxListResourceEdit::Spacer
- Descr: GUI implementation of resources spacer.
+/*!
+ \class QtxListResourceEdit::Spacer
+ GUI implementation of resources spacer.
*/
class QtxListResourceEdit::Spacer : public PrefItem
virtual void retrieve();
};
-/*
- Class: QtxListResourceEdit::SelectItem
- Descr: GUI implementation of resources selector item.
+/*!
+ \class QtxListResourceEdit::SelectItem
+ GUI implementation of resources selector item.
*/
class QtxListResourceEdit::SelectItem : public PrefItem
QMap<int, int> myIndex;
};
-/*
- Class: QtxListResourceEdit::StateItem
- Descr: GUI implementation of resources bool item.
+/*!
+ \class QtxListResourceEdit::StateItem
+ GUI implementation of resources bool item.
*/
-
class QtxListResourceEdit::StateItem : public PrefItem
{
public:
QCheckBox* myState;
};
-/*
- Class: QtxListResourceEdit::StringItem
- Descr: GUI implementation of resources string item.
+/*!
+ \class QtxListResourceEdit::StringItem
+ GUI implementation of resources string item.
*/
class QtxListResourceEdit::StringItem : public PrefItem
QLineEdit* myString;
};
-/*
- Class: QtxListResourceEdit::IntegerEditItem
- Descr: GUI implementation of resources integer item.
+/*!
+ \class QtxListResourceEdit::IntegerEditItem
+ GUI implementation of resources integer item.
*/
class QtxListResourceEdit::IntegerEditItem : public PrefItem
QLineEdit* myInteger;
};
-/*
- Class: QtxListResourceEdit::IntegerSpinItem
- Descr: GUI implementation of resources integer item.
+/*!
+ \class QtxListResourceEdit::IntegerSpinItem
+ GUI implementation of resources integer item.
*/
class QtxListResourceEdit::IntegerSpinItem : public PrefItem
QtxIntSpinBox* myInteger;
};
-/*
- Class: QtxListResourceEdit::DoubleEditItem
- Descr: GUI implementation of resources double item.
+/*!
+ \class QtxListResourceEdit::DoubleEditItem
+ GUI implementation of resources double item.
*/
class QtxListResourceEdit::DoubleEditItem : public PrefItem
QLineEdit* myDouble;
};
-/*
- Class: QtxListResourceEdit::DoubleSpinItem
- Descr: GUI implementation of resources double item.
+/*!
+ \class QtxListResourceEdit::DoubleSpinItem
+ GUI implementation of resources double item.
*/
class QtxListResourceEdit::DoubleSpinItem : public PrefItem
QtxDblSpinBox* myDouble;
};
-/*
- Class: QtxListResourceEdit::ColorItem
- Descr: GUI implementation of resources color item.
+/*!
+ \class QtxListResourceEdit::ColorItem
+ GUI implementation of resources color item.
*/
class QtxListResourceEdit::ColorItem : public PrefItem
QWidget* myColor;
};
-/*
- Class: QtxListResourceEdit::FontItem
- Descr: GUI implementation of resources font item.
-*/
-
class QtxComboBox;
class QToolButton;
+/*!
+ \class QtxListResourceEdit::FontItem
+ GUI implementation of resources font item.
+*/
class QtxListResourceEdit::FontItem : public PrefItem
{
Q_OBJECT
/*!
- * \brief GUI implementation of resources directory list item.
- *
- *
- */
+ \class QtxListResourceEdit
+ \brief GUI implementation of resources directory list item.
+*/
class QtxListResourceEdit::DirListItem : public PrefItem
{
Q_OBJECT
QtxDirListEditor* myDirListEditor; //!< The widget wich implements in GUI the list of directories
};
-/*
- Class: QtxListResourceEdit::FontItem
- Descr: GUI implementation of resources font item.
-*/
-
class QtxComboBox;
class QToolButton;
class QFileDialog;
+/*!
+ \class QtxListResourceEdit::FontItem
+ GUI implementation of resources font item.
+*/
+
class QtxListResourceEdit::FileItem : public PrefItem
{
Q_OBJECT
private:
+ /*!
+ \class QtxListResourceEdit::FileItem::FileValidator
+ custom file validator: checks files on some rights
+ */
+
class FileValidator : public QValidator
{
public:
"................",
"................" };
+/*!
+ Constructor
+*/
QtxListView::QtxListView( const int state, QWidget* parent, const char* name, WFlags f )
: QListView( parent, name, f ),
myButton( 0 ),
initialize();
}
+/*!
+ Constructor
+*/
QtxListView::QtxListView( QWidget* parent, const char* name, WFlags f )
: QListView( parent, name, f ),
myButton( 0 ),
initialize();
}
+/*!
+ Initialization
+*/
void QtxListView::initialize()
{
if ( myHeaderState == HeaderButton )
connect( header(), SIGNAL( sizeChange( int, int, int ) ), this, SLOT( onHeaderResized() ) );
}
+/*!
+ Destructor
+*/
QtxListView::~QtxListView()
{
}
+/*!
+ Add new column
+ \param label - column title
+ \param width - column width
+*/
int QtxListView::addColumn( const QString& label, int width )
{
int res = QListView::addColumn( label, width );
return res;
}
+/*!
+ Add new column
+ \param iconset - column icon
+ \param label - column title
+ \param width - column width
+*/
int QtxListView::addColumn( const QIconSet& iconset, const QString& label, int width )
{
int res = QListView::addColumn( iconset, label, width );
return res;
}
+/*!
+ Removes column
+ \param index - column index
+*/
void QtxListView::removeColumn( int index )
{
QListView::removeColumn( index );
onHeaderResized();
}
+/*!
+ \return true if column is situated in popup for show/hide columns
+*/
bool QtxListView::appropriate( const int index ) const
{
return index >= 0 && index < (int)myAppropriate.count() && myAppropriate[index];
}
+/*!
+ Sets appropriate state: whether column is situated in popup for show/hide columns
+ \param index - column index
+ \param on - new state
+*/
void QtxListView::setAppropriate( const int index, const bool on )
{
if ( index < 0 || index >= (int)myAppropriate.count() )
myAppropriate[index] = on ? 1 : 0;
}
+/*!
+ Resizes list view and header
+*/
void QtxListView::resize( int w, int h )
{
QListView::resize( w, h );
onHeaderResized();
}
+/*!
+ Shows list view
+*/
void QtxListView::show()
{
QListView::show();
onHeaderResized();
}
+/*!
+ Update on resize contents
+*/
void QtxListView::resizeContents( int w, int h )
{
/*
onHeaderResized();
}
+/*!
+ Shows column
+ \param ind - column index
+*/
void QtxListView::show( int ind )
{
setShown( ind, true );
}
+/*!
+ Hides column
+ \param ind - column index
+*/
void QtxListView::hide( int ind )
{
setShown( ind, false );
}
+/*!
+ \return true if column is shown
+ \param ind - column index
+*/
bool QtxListView::isShown( int ind ) const
{
if ( ind>=0 && ind<header()->count() )
return false;
}
+/*!
+ Shows/hides column
+ \param ind - column index
+ \param sh - new is shown state
+*/
void QtxListView::setShown( int ind, bool sh )
{
if( ind<0 || ind>=header()->count() || isShown( ind )==sh )
updateContents();
}
+/*!
+ Changes column width
+ \param c - column index
+ \param w - new width
+*/
void QtxListView::setColumnWidth( int c, int w )
{
if ( myColumns.contains( c ) )
QListView::setColumnWidth( c, !myColumns.contains( c ) ? w : 0 );
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxListView::sizeHint() const
{
QSize sz = QListView::sizeHint();
return sz;
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxListView::minimumSizeHint() const
{
QSize sz = QListView::minimumSizeHint();
return sz;
}
+/*!
+ SLOT: called if header is resized
+*/
void QtxListView::onHeaderResized()
{
if ( myHeaderState == HeaderAuto )
}
}
+/*!
+ Shows popup filled with column names to show/hide column
+ \param x, y - position of popup
+*/
void QtxListView::showPopup( const int x, const int y )
{
myPopup->clear();
myPopup->exec( mapToGlobal( QPoint( x, y ) ) );
}
+/*!
+ SLOT: shows popup on button ".." click
+*/
void QtxListView::onButtonClicked()
{
if ( myHeaderState != HeaderButton )
showPopup( x, y );
}
+/*!
+ SLOT: called on popup action is activated, toggles shown state of column
+ \param id - column index
+*/
void QtxListView::onShowHide( int id )
{
//if ( myHeaderState != HeaderButton )
setShown( id, !isShown( id ) );
}
+/*!
+ Receives all resize events sent to the viewport
+*/
void QtxListView::viewportResizeEvent( QResizeEvent* e )
{
QListView::viewportResizeEvent( e );
onHeaderResized();
}
+/*!
+ Custom event filter, shows popup on right button click
+*/
bool QtxListView::eventFilter( QObject* o, QEvent* e )
{
if( o==header() && e->type()==QEvent::MouseButtonPress )
#include <qmenubar.h>
#include <qapplication.h>
+/*!
+ Constructor
+*/
QtxLogoMgr::QtxLogoMgr( QMenuBar* mb )
: QObject( mb ),
myMenus( mb ),
{
}
+/*!
+ Destructor
+*/
QtxLogoMgr::~QtxLogoMgr()
{
}
generate();
}
+/*!
+ Inserts logo to menu bar
+*/
void QtxLogoMgr::generate()
{
if ( !menuBar() )
QApplication::postEvent( menuBar()->parentWidget(), new QEvent( QEvent::LayoutHint ) );
}
+/*!
+ \return index of found logo
+ \param id - logo id
+*/
int QtxLogoMgr::find( const QString& id ) const
{
int idx = -1;
QWidget* myWidget;
};
+/*!
+ Constructor
+*/
QtxMainWindow::Filter::Filter( QWidget* wid, QtxMainWindow* mw, QObject* parent )
: QObject( parent ),
myMain( mw ),
myMain->installEventFilter( this );
};
+/*!
+ Destructor
+*/
QtxMainWindow::Filter::~Filter()
{
}
+/*!
+ Custom event filter
+*/
bool QtxMainWindow::Filter::eventFilter( QObject* o, QEvent* e )
{
if ( myMain == o && e->type() == QEvent::ChildRemoved &&
Descr: Main window with support of dockable menubar/status bar
and geometry store/retrieve.
*/
-
QtxMainWindow::QtxMainWindow( QWidget* parent, const char* name, WFlags f )
: QMainWindow( parent, name, f ),
myMode( -1 ),
{
}
+/*!
+ Destructor
+*/
QtxMainWindow::~QtxMainWindow()
{
setDockableMenuBar( false );
setDockableStatusBar( false );
}
+/*!
+ \return true if menu bar exists
+*/
bool QtxMainWindow::isDockableMenuBar() const
{
return myMenuBar;
}
+/*!
+ Creates or deletes menu bar
+ \param on - if it is true, then to create, otherwise - to delete
+*/
void QtxMainWindow::setDockableMenuBar( const bool on )
{
if ( isDockableMenuBar() == on )
setUpLayout();
}
+/*!
+ \return true if status bar exists
+*/
bool QtxMainWindow::isDockableStatusBar() const
{
return myStatusBar;
}
+/*!
+ Creates or deletes status bar
+ \param on - if it is true, then to create, otherwise - to delete
+*/
void QtxMainWindow::setDockableStatusBar( const bool on )
{
if ( isDockableStatusBar() == on )
setUpLayout();
}
+/*!
+ Retrieve the geometry information from the specified resource manager section.
+ \param resMgr - instance of ersource manager
+ \param section - section name
+*/
void QtxMainWindow::loadGeometry( QtxResourceMgr* resMgr, const QString& section )
{
QString sec = section.stripWhiteSpace();
myMode = winState;
}
+/*!
+ Shows main window
+*/
void QtxMainWindow::show()
{
if ( myMode != -1 )
QMainWindow::show();
}
+/*!
+ Handler of custom events
+*/
void QtxMainWindow::customEvent( QCustomEvent* e )
{
QMainWindow::customEvent( e );
- int mode = (int)e->data();
+ size_t mode = size_t(e->data());
switch ( mode )
{
case WS_Normal:
}
}
+/*!
+ \return relative co-ordinate by two points
+ \param type - type of result: WP_Center (center), WP_Left (left), WP_Right (right)
+ \param wh - left point
+ \param WH - right point
+*/
int QtxMainWindow::relativeCoordinate( const int type, const int WH, const int wh ) const
{
int res = 0;
return res;
}
+/*!
+ Store the geometry information into the specified resource manager section.
+ \param resMgr - instance of ersource manager
+ \param section - section name
+*/
void QtxMainWindow::saveGeometry( QtxResourceMgr* resMgr, const QString& section ) const
{
QString sec = section.stripWhiteSpace();
resMgr->setValue( sec, "state", winState );
}
+/*!
+ Custom event filter
+*/
bool QtxMainWindow::eventFilter( QObject* o, QEvent* e )
{
return QMainWindow::eventFilter( o, e );
}
+/*!
+ Controls whether or not the dw dock window's caption should appear
+ as a menu item on the dock window menu that lists the dock windows.
+ \param dw - window
+ \param a - if it is true, then it appears in menu
+*/
void QtxMainWindow::setAppropriate( QDockWindow* dw, bool a )
{
QMainWindow::setAppropriate( dw, myStatusBar != dw && myMenuBar != dw && a );
}
+/*!
+ Sets up layout
+*/
void QtxMainWindow::setUpLayout()
{
QMainWindow::setUpLayout();
layout()->setMenuBar( 0 );
}
+/*!
+ SLOT: called on object destroyed, clears internal fields in case of deletion of menu bar or status bar
+*/
void QtxMainWindow::onDestroyed( QObject* obj )
{
QObject* o = 0;
}
}
+/*!
+ \return flag of window state by it's name
+ \param str - name of flag
+*/
int QtxMainWindow::windowState( const QString& str ) const
{
static QMap<QString, int> winStateMap;
return res;
}
+/*!
+ \return flag of position by it's name
+ \param str - name of position
+*/
int QtxMainWindow::windowPosition( const QString& str ) const
{
static QMap<QString, int> winPosMap;
QtxMenuButton* myMenuButton;
};
+/*!
+ Sets the widget's minimum size
+ \param w - width
+ \param h - height
+*/
void QtxMenuButton::PopupMenu::setMinimumSize( int w, int h )
{
if ( myMenuButton->isAlignWidth() &&
}
+/*!
+ Constructor
+ \param pos - position
+ \param parent - parent widget
+ \param name - name
+*/
QtxMenuButton::QtxMenuButton( int pos, QWidget* parent, const char* name )
: QPushButton( parent, name ),
myPos( pos )
initialize();
}
+/*!
+ Constructor
+ \param text - button text
+ \param parent - parent widget
+ \param name - name
+*/
QtxMenuButton::QtxMenuButton( const QString& text, QWidget* parent, const char* name )
: QPushButton( parent, name ),
myPos( Bottom )
initialize();
}
+/*!
+ Constructor
+ \param pos - position
+ \param text - button text
+ \param parent - parent widget
+ \param name - name
+*/
QtxMenuButton::QtxMenuButton( int pos, const QString& text, QWidget* parent, const char* name )
: QPushButton( parent, name ),
myPos( pos )
initialize();
}
+/*!
+ Constructor
+ \param parent - parent widget
+ \param name - name
+*/
QtxMenuButton::QtxMenuButton( QWidget* parent, const char* name )
: QPushButton( parent, name ),
myPos( Bottom )
initialize();
}
+/*!
+ Destructor
+*/
QtxMenuButton::~QtxMenuButton()
{
}
+/*!
+ Initialization
+*/
void QtxMenuButton::initialize()
{
myArrow = true;
connect( this, SIGNAL( clicked() ), this, SLOT( onShowPopup() ) );
}
+/*!
+ \return position
+*/
int QtxMenuButton::position() const
{
return myPos;
}
+/*!
+ \return true if align is enabled
+*/
bool QtxMenuButton::isAlignWidth() const
{
return myAlign;
}
+/*!
+ \return true if arrow is shown
+*/
bool QtxMenuButton::isArrowEnabled() const
{
return myArrow;
}
+/*!
+ Changes position
+ \param pos - new position
+*/
void QtxMenuButton::setPosition( const int pos )
{
if ( myPos == pos )
onShowPopup();
}
+/*!
+ Changes align state
+ \param on - new align state
+*/
void QtxMenuButton::setAlignWidth( const bool on )
{
if ( myAlign == on )
updateGeometry();
}
+/*!
+ Enables/disable arrow
+ \param on - new enabled state
+*/
void QtxMenuButton::setArrowEnabled( const bool on )
{
if ( myArrow == on )
repaint();
}
+/*!
+ Clears popup
+*/
void QtxMenuButton::clear()
{
if ( myPopup )
updateGeometry();
}
+/*!
+ Removes item from popup
+ \param id - item id
+*/
void QtxMenuButton::removeItem( int id )
{
if ( myPopup )
- removeItem( id );
+ myPopup->removeItem( id );
updateGeometry();
}
+/*!
+ Inserts separator into popup
+ \param id - position
+*/
int QtxMenuButton::insertSeparator( int id )
{
int res = -1;
return res;
}
+/*!
+ Inserts item into popup
+ \param t - menu text
+ \param id - item id
+ \param index - position
+*/
int QtxMenuButton::insertItem( const QString& t, int id, int index )
{
int resId = -1;
return resId;
}
+/*!
+ Inserts item into popup
+ \param is - icons
+ \param t - menu text
+ \param id - item id
+ \param index - position
+*/
int QtxMenuButton::insertItem( const QIconSet& is, const QString& t, int id, int index )
{
int resId = -1;
return resId;
}
+/*!
+ SLOT: calls when button is clicked, shows popup
+*/
void QtxMenuButton::onShowPopup()
{
if ( !myPopup || !myPopup->count() )
myPopup->exec( QPoint( x, y ) );
}
+/*!
+ Custom event handler
+*/
bool QtxMenuButton::event( QEvent* e )
{
if ( e->type() == QEvent::MouseButtonPress ||
return QPushButton::event( e );
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxMenuButton::sizeHint() const
{
QSize sz = QPushButton::sizeHint();
return sz;
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxMenuButton::minimumSizeHint() const
{
QSize sz = QPushButton::minimumSizeHint();
return sz;
}
+/*!
+ Custom resize event handler
+*/
void QtxMenuButton::resizeEvent( QResizeEvent* re )
{
if ( re )
myPopup->setMinimumWidth( re ? re->size().width() : width() );
}
+/*!
+ \return corresponding popup
+*/
QPopupMenu* QtxMenuButton::popup() const
{
return myPopup;
}
+/*!
+ Draws label
+*/
void QtxMenuButton::drawButtonLabel( QPainter* p )
{
QPushButton::drawButtonLabel( p );
#include "QtxOperations.h"
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxOperations::QtxOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxOperations::~QtxOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates QtxValue by it's string representation
+*/
bool QtxOperations::createValue( const QString& str, QtxValue& v ) const
{
v = str;
#include "Qtx.h"
#include "QtxParser.h"
-//================================================================
-// Class :
-// Purpose :
-//================================================================
class QTX_EXPORT QtxOperations
{
public:
#include "QtxParser.h"
#include "QtxOperations.h"
-//================================================================
-// Function :
-// Purpose :
-//================================================================
-QtxParser::QtxParser( QtxOperations* operations,
- const QString& expr )
+/*!
+ Constructor
+*/
+QtxParser::QtxParser( QtxOperations* operations, const QString& expr )
: myOperations( operations )
{
if( myOperations )
setLastError( OperationsNull );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxParser::~QtxParser()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Search elements of list as substrings starting on 'offset'
+ \returns the least position of substrings inside string
+ \param list - list of substrings
+ \param str - string where search
+ \param offset - starting index for search
+ \param matchLen - the length of appropriate substring
+ \param listind - list index of appropriate substring
+*/
int QtxParser::search( const QStringList& list, const QString& str, int offset,
int& matchLen, int& listind )
{
return min;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return substring
+ \param str - string
+ \param pos - start position of substring
+ \param len - length of substring
+*/
QString QtxParser::note( const QString& str, int pos, int len )
{
return str.mid( pos, len ).stripWhiteSpace();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ First step of parsing: finding tokens, determining its types and creating of unsorted pseudo-postfix (with brackets)
+ \param expr - string expression
+ \param post - postfix to be created
+*/
bool QtxParser::prepare( const QString& expr, Postfix& post )
{
int pos = 0, len = expr.length();
return lastError()==OK;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Second step of parsing: determining types of operations
+ \param post - unsorted postfix
+*/
bool QtxParser::setOperationTypes( Postfix& post )
{
Postfix::iterator aStart = post.begin(),
return lastError()==OK;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return how many global brackets there is (for example '((2+3))' has 2 global brackets)
+ \param post - postfix to be checked
+ \param f - start index to search
+ \param l - last index to search
+*/
int QtxParser::globalBrackets( const QtxParser::Postfix& post, int f, int l )
{
int i,
return br+min_br_num;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Third step of parsing: sorting of postfix in order to convert it to real postfix
+ \param post - source postfix
+ \param res - destination postfix
+ \param anOpen - list of open brackets
+ \param aClose - list of close brackets
+ \param f - start index of postfix to sorting
+ \param l - last index of postfix to sorting
+*/
bool QtxParser::sort( const Postfix& post, Postfix& res,
const QStringList& anOpen,
const QStringList& aClose,
return lastError()==OK;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Build posfix by expression
+ \param expr - string expression
+*/
bool QtxParser::parse( const QString& expr )
{
myPost.clear();
sort( p, myPost, opens, closes );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculate operation
+ \param op - operation name
+ \param v1 - first argument (it is not valid for unary prefix operations and it is used to store result)
+ \param v2 - second argument (it is not valid for unary postfix operations)
+*/
bool QtxParser::calculate( const QString& op, QtxValue& v1, QtxValue& v2 )
{
Error err = myOperations->isValid( op, v1.type(), v2.type() );
return lastError()==OK;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates expression without postfix rebuilding
+ \return QtxValue as result (it is invalid if there were errors during calculation)
+*/
QtxValue QtxParser::calculate()
{
setLastError( OK );
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Change expression, rebuild postfix and calculate it
+ \return QtxValue as result (it is invalid if there were errors during calculation)
+*/
QtxValue QtxParser::calculate( const QString& expr )
{
setExpr( expr );
return calculate();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Change expression and rebuild postfix
+*/
bool QtxParser::setExpr( const QString& expr )
{
return parse( expr );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true, if parser contain parameter
+ \param name - name of parameter
+*/
bool QtxParser::has( const QString& name ) const
{
return myParameters.contains( name.stripWhiteSpace() );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Sets parameter value
+ \param name - name of parameter
+ \param value - value of parameter
+*/
void QtxParser::set( const QString& name, const QtxValue& value )
{
myParameters[ name.stripWhiteSpace() ] = value;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes parameter
+ \param name - name of parameter
+*/
bool QtxParser::remove( const QString& name )
{
QString sname = name.stripWhiteSpace();
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return value of parameter (result is invalid if there is no such parameter)
+ \param name - name of parameter
+*/
QtxValue QtxParser::value( const QString& name ) const
{
QString sname = name.stripWhiteSpace();
return QtxValue();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Searches first parameter with assigned invalid QtxValue
+ \return true if it is found
+ \param name - variable to return name of parameter
+*/
bool QtxParser::firstInvalid( QString& name ) const
{
QMap< QString, QtxValue >::const_iterator anIt = myParameters.begin(),
return false;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes all parameters with assigned invalid QtxValues
+*/
void QtxParser::removeInvalids()
{
QStringList toDelete;
myParameters.remove( *aLIt );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return last error occured during parsing
+*/
QtxParser::Error QtxParser::lastError() const
{
return myLastError;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Sets last error occured during parsing (for internal using only)
+*/
void QtxParser::setLastError( QtxParser::Error err )
{
myLastError = err;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return string dump of internal parser postfix
+*/
QString QtxParser::dump() const
{
return dump( myPost );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return string dump of postfix
+ \param post - postfix to be dumped
+*/
QString QtxParser::dump( const Postfix& post ) const
{
QString res;
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills list with names of parameters
+ \param list - list to be filled
+*/
void QtxParser::paramsList( QStringList& list )
{
PostfixIterator anIt = myPost.begin(),
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes all parameters
+*/
void QtxParser::clear()
{
myParameters.clear();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return string representation for list of QtxValues
+ \param list - list to be converted
+*/
QString QtxParser::toString( const QValueList< QtxValue >& list )
{
QValueList< QtxValue >::const_iterator anIt = list.begin(),
class QtxOperations;
+/*! \var QtxValue
+ \brief Alias for QVariant
+*/
typedef QVariant QtxValue;
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxParser
+
+ This class allows to calculate values of expressions using different set of operations.
+ It is provided some of standard set of operations (arithmetics, logic, strings, etc - in QtxStdOperations.h).
+ This parser allows to use parameters with help of methods has(), set(), remove(), value(). It uses
+ postfix representation of expressions and uses class QtxOperations in order to make certain operation
+ Every instance of parser contains only one postfix, so that if expression has been changed, then postfix
+ must be rebuilt. In order to increase performance of frequent calculation for many of expressions it is
+ recommended to use different instances of parser for expressions
+
+*/
class QTX_EXPORT QtxParser
{
public:
+ /*!
+ \enum Error
+ \brief Errors during parsing
+ */
typedef enum
{
- OK, OperandsNotMatch, InvalidResult, InvalidOperation,
- OperationsNull, InvalidToken, CloseExpected, ExcessClose,
- BracketsNotMatch, StackUnderflow, ExcessData
+ OK, /*! \var All right */
+ OperandsNotMatch, /*! \var Types of arguments are invalid for this operation */
+ InvalidResult, /*! \var Operation cannot find result (for example, division by zero) */
+ InvalidOperation, /*! \var Name of operation is unknown */
+ OperationsNull, /*! \var Internal operations pointer of parser is null */
+ InvalidToken, /*! \var It isn't operation, parameter of value */
+ CloseExpected, /*! \var Close bracket is expected */
+ ExcessClose, /*! \var The one of close bracket is excess */
+ BracketsNotMatch, /*! \var Last open and this close bracket are different, for example [) */
+ StackUnderflow, /*! \var There is no arguments in stack for operation */
+ ExcessData /*! \var The parsing is finished, but there is more then one value in stack */
} Error;
static QString toString( const QValueList< QtxValue >& );
protected:
- typedef enum { Value, Param, Open, Close, Pre, Post, Binary } PostfixItemType;
+ /*!
+ \enum PostfixItemType
+ \brief Types of postfix representation elements
+ */
+ typedef enum
+ {
+ Value, /*! \var Value (number, string, etc.)*/
+ Param, /*! \var Parameter */
+ Open, /*! \var Open bracket */
+ Close, /*! \var Close bracket */
+ Pre, /*! \var Unary prefix operation */
+ Post, /*! \var Unary postfix operation */
+ Binary /*! \var Binary operation */
+
+ } PostfixItemType;
+ /*! \var postfix representation element */
typedef struct
{
QtxValue myValue;
} PostfixItem;
+ /*! \var postfix representation */
typedef QValueList< PostfixItem > Postfix;
+
+ /*! \var postfix representation iterator */
typedef Postfix::const_iterator PostfixIterator;
protected:
static int globalBrackets( const Postfix&, int, int );
private:
+ /*! \var stack of QtxValues */
typedef QValueStack < QtxValue > QtxValueStack;
private:
" "
};
-//================================================================
-// Function : QtxPathDialog
-// Purpose : Constructor.
-//================================================================
-
+/*!
+ Constructor.
+*/
QtxPathDialog::QtxPathDialog( const bool import, QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f )
: QtxDialog( parent, 0, modal, resize, buttons, f ),
myDefault( -1 ),
setFocusProxy( le );
}
-//================================================================
-// Function : QtxPathDialog
-// Purpose : Constructor.
-//================================================================
-
+/*!
+ Constructor.
+*/
QtxPathDialog::QtxPathDialog( QWidget* parent, const bool modal, const bool resize, const int buttons, WFlags f )
: QtxDialog( parent, 0, modal, resize, buttons, f ),
myDefault( -1 ),
initialize();
}
-//================================================================
-// Function : ~QtxPathDialog
-// Purpose : Destructor.
-//================================================================
-
+/*!
+ Destructor.
+*/
QtxPathDialog::~QtxPathDialog()
{
}
-//================================================================
-// Function : fileName
-// Purpose :
-//================================================================
-
+/*!
+ \return file name
+*/
QString QtxPathDialog::fileName() const
{
return fileName( defaultEntry() );
}
-//================================================================
-// Function : setFileName
-// Purpose :
-//================================================================
-
+/*!
+ Sets file name
+ \param txt - new file name
+ \param autoExtension - auto extension determination by file
+*/
void QtxPathDialog::setFileName( const QString& txt, const bool autoExtension )
{
setFileName( defaultEntry(), txt, autoExtension );
}
-//================================================================
-// Function : filter
-// Purpose :
-//================================================================
-
+/*!
+ \return filter
+*/
QString QtxPathDialog::filter() const
{
return myFilter;
}
-//================================================================
-// Function : setFilter
-// Purpose :
-//================================================================
-
+/*!
+ Changes filter (filter is a list of masks, separated by ';;')
+ \param fltr - new filter
+*/
void QtxPathDialog::setFilter( const QString& fltr )
{
myFilter = fltr;
}
-//================================================================
-// Function : show
-// Purpose :
-//================================================================
-
+/*!
+ Shows path dialog
+*/
void QtxPathDialog::show()
{
if ( hasVisibleChildren( myEntriesFrame ) )
QtxDialog::show();
}
-//================================================================
-// Function : onBrowse
-// Purpose :
-//================================================================
-
+/*!
+ SLOT: called if user click button to show standard file dialog
+*/
void QtxPathDialog::onBrowse()
{
const QObject* obj = sender();
emit fileNameChanged( fName );
}
-//================================================================
-// Function : onReturnPressed
-// Purpose :
-//================================================================
-
+/*!
+ SLOT: called if user presses RETURN in line edit
+*/
void QtxPathDialog::onReturnPressed()
{
const QObject* obj = sender();
emit fileNameChanged( fileName() );
}
-//================================================================
-// Function : onTextChanged
-// Purpose :
-//================================================================
-
+/*!
+ SLOT: called if text in line edit is changed
+*/
void QtxPathDialog::onTextChanged( const QString& )
{
validate();
}
-//================================================================
-// Function : validate
-// Purpose :
-//================================================================
-
+/*!
+ Checks validity of text and according to it enables/disables OK, Yes buttons
+*/
void QtxPathDialog::validate()
{
setButtonEnabled( isValid(), OK | Yes );
}
-//================================================================
-// Function : isValid
-// Purpose :
-//================================================================
-
+/*!
+ \return true if selected file is valid
+*/
bool QtxPathDialog::isValid()
{
bool ok = true;
return ok;
}
-//================================================================
-// Function : acceptData
-// Purpose :
-//================================================================
-
+/*!
+ \return true entered data is accepted
+*/
bool QtxPathDialog::acceptData() const
{
bool ok = true;
return ok;
}
-//================================================================
-// Function : fileNameChanged
-// Purpose :
-//================================================================
-
+/*!
+ Some custom activity on file name changing (must be redefined, default implementation is empty
+*/
void QtxPathDialog::fileNameChanged( int, QString )
{
}
-//================================================================
-// Function : optionsFrame
-// Purpose :
-//================================================================
-
+/*!
+ \return frame with options
+*/
QFrame* QtxPathDialog::optionsFrame()
{
return myOptionsFrame;
}
-//================================================================
-// Function : getFileName
-// Purpose :
-//================================================================
-
+/*!
+ \return file name
+ \param id - id of file entry
+*/
QString QtxPathDialog::fileName( const int id ) const
{
QString res;
return res;
}
-//================================================================
-// Function : setFileName
-// Purpose :
-//================================================================
-
+/*!
+ Change file name of file entry
+ \param id - id of file entry
+ \param txt - new file name
+ \param autoExt - assign extension automatically
+*/
void QtxPathDialog::setFileName( const int id, const QString& txt, const bool autoExt )
{
int mode;
}
}
-//================================================================
-// Function : fileEntry
-// Purpose :
-//================================================================
-
+/*!
+ \return line edit of file entry
+ \param id - id of file entry
+*/
QLineEdit* QtxPathDialog::fileEntry( const int id ) const
{
QLineEdit* le = 0;
return le;
}
-//================================================================
-// Function : fileEntry
-// Purpose :
-//================================================================
-
+/*!
+ \return line edit and mode of file entry
+ \param id - id of file entry
+ \param theMode - for return mode of file entry
+*/
QLineEdit* QtxPathDialog::fileEntry( const int theId, int& theMode ) const
{
QLineEdit* le = 0;
return le;
}
-//================================================================
-// Function : createFileEntry
-// Purpose :
-//================================================================
-
+/*!
+ Creates file entry
+ \return id of just created file entry
+ \param lab - title of entry
+ \param mode - mode of entry
+ \param id - proposed id (if it is -1, then id will be chosen automatically)
+*/
int QtxPathDialog::createFileEntry( const QString& lab, const int mode, const int id )
{
int num = id;
return num;
}
-//================================================================
-// Function : defaultEntry
-// Purpose :
-//================================================================
-
+/*!
+ \return id of default entry
+*/
int QtxPathDialog::defaultEntry() const
{
return myDefault;
}
-//================================================================
-// Function : setDefaultEntry
-// Purpose :
-//================================================================
-
+/*!
+ Change default entry id
+ \param id - new default entry id
+*/
void QtxPathDialog::setDefaultEntry( const int id )
{
myDefault = id;
}
-//================================================================
-// Function : initialize
-// Purpose :
-//================================================================
-
+/*!
+ Initialize dialog layout
+*/
void QtxPathDialog::initialize()
{
setCaption( tr( "File dialog" ) );
myOptionsFrame = new QFrame( mainGroup );
}
-//================================================================
-// Function : prepareFilters
-// Purpose :
-//================================================================
-
+/*!
+ \return list of filters
+*/
QStringList QtxPathDialog::prepareFilters() const
{
QStringList res;
return res;
}
-//================================================================
-// Function : filterWildCards
-// Purpose :
-//================================================================
-
+/*!
+ \return list of filters with filtered wild cards
+*/
QStringList QtxPathDialog::filterWildCards( const QString& theFilter ) const
{
QStringList res;
return res;
}
-//================================================================
-// Function : autoExtension
-// Purpose :
-//================================================================
-
+/*!
+ \return file name with assigned extension
+ \param theFileName - source file name
+ \param theFilter - list of filters
+*/
QString QtxPathDialog::autoExtension( const QString& theFileName, const QString& theFilter ) const
{
QString fName = theFileName;
return fName;
}
-//================================================================
-// Function : hasVisibleChildren
-// Purpose :
-//================================================================
-
+/*!
+ \return true if widget has visible children
+ \param wid - widget
+*/
bool QtxPathDialog::hasVisibleChildren( QWidget* wid ) const
{
bool res = false;
int myAlign;
};
+/*!
+ Constructor
+*/
QtxPopupMenu::TitleMenuItem::TitleMenuItem( const QString& txt, const QIconSet& ico, const int align )
: QCustomMenuItem(),
myText( txt ),
{
}
+/*!
+ Destructor
+*/
QtxPopupMenu::TitleMenuItem::~TitleMenuItem()
{
}
+/*!
+ \return TRUE if this item wants to span the entire popup menu width
+*/
bool QtxPopupMenu::TitleMenuItem::fullSpan() const
{
return true;
}
+/*!
+ \return TRUE if this item is just a separator
+*/
bool QtxPopupMenu::TitleMenuItem::isSeparator() const
{
return false;
}
+/*!
+ Changes font of item
+ \param font - new font
+*/
void QtxPopupMenu::TitleMenuItem::setFont( const QFont& font )
{
myFont = font;
myFont.setBold( true );
}
+/*!
+ Draws item
+*/
void QtxPopupMenu::TitleMenuItem::paint( QPainter* p, const QColorGroup& cg,
bool act, bool enabled, int x, int y, int w, int h )
{
p->setFont( f );
}
+/*!
+ \return the recommended size for item
+*/
QSize QtxPopupMenu::TitleMenuItem::sizeHint()
{
QFontMetrics fM( myFont );
}
/*!
- Class: QtxPopupMenu [Public]
- Descr: Popup menu item with title.
+ Constructor
*/
-
QtxPopupMenu::QtxPopupMenu( QWidget* parent, const char* name )
: QPopupMenu( parent, name ),
myId( -1 ),
{
}
+/*!
+ Destructor
+*/
QtxPopupMenu::~QtxPopupMenu()
{
}
+/*!
+ \return popup menu title
+*/
QString QtxPopupMenu::titleText() const
{
return myText;
}
+/*!
+ \return popup menu icon
+*/
QIconSet QtxPopupMenu::titleIcon() const
{
return myIcon;
}
+/*!
+ \return popup menu title policy
+*/
int QtxPopupMenu::titlePolicy() const
{
return myPolicy;
}
+/*!
+ \return popup menu title alignment
+*/
int QtxPopupMenu::titleAlignment() const
{
return myAlign;
}
+/*!
+ Changes title text
+ \param txt - new text
+*/
void QtxPopupMenu::setTitleText( const QString& txt )
{
if ( myText == txt )
updateTitle();
}
+/*!
+ Changes title icon
+ \param icon - new icon
+*/
void QtxPopupMenu::setTitleIcon( const QIconSet& ico )
{
myIcon = ico;
updateTitle();
}
+/*!
+ Changes title policy
+ \param p - new policy
+*/
void QtxPopupMenu::setTitlePolicy( const int p )
{
if ( myPolicy == p )
updateTitle();
}
+/*!
+ Changes title alignment
+ \param a - new alignment
+*/
void QtxPopupMenu::setTitleAlignment( const int a )
{
if ( myAlign == a )
updateTitle();
}
+/*!
+ Shows menu
+*/
void QtxPopupMenu::show()
{
insertTitle();
QPopupMenu::show();
}
+/*!
+ Hides menu
+*/
void QtxPopupMenu::hide()
{
QPopupMenu::hide();
removeTitle();
}
+/*!
+ Creates title item
+ \param txt - item text
+ \param icon - item icon
+ \param align - item alignment
+*/
QtxPopupMenu::TitleMenuItem* QtxPopupMenu::createTitleItem( const QString& txt, const QIconSet& ico,
const int align ) const
{
return new TitleMenuItem( txt, ico, align );
}
+/*!
+ Inserts title item to popup menu
+*/
void QtxPopupMenu::insertTitle()
{
if ( myId != -1 || titlePolicy() == TitleOff ||
setItemEnabled( myId, false );
}
+/*!
+ Removes title item from popup menu
+*/
void QtxPopupMenu::removeTitle()
{
if ( myId == -1 )
myId = -1;
}
+/*!
+ Updates title item
+*/
void QtxPopupMenu::updateTitle()
{
if ( myId != -1 )
#include <qpopupmenu.h>
#include <qdatetime.h>
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+
+/*!
+ \return value of global parameter (depending on whole selection, but not dependending on one object of selection)
+ \param str - name of parameter
+
+ By default, it returns count of selected objects ("selcount") and list of parameters ("$<name>")
+*/
QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const
{
if( str==selCountParam() )
return QtxValue();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return symbole to detect name of parameter list
+*/
QChar QtxPopupMgr::Selection::equality() const
{
return defEquality();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return name of parameter for count of selected objects
+*/
QString QtxPopupMgr::Selection::selCountParam() const
{
return defSelCountParam();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return default symbole to detect name of parameter list
+*/
QChar QtxPopupMgr::Selection::defEquality()
{
return '$';
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return default name of parameter for count of selected objects
+*/
QString QtxPopupMgr::Selection::defSelCountParam()
{
return "selcount";
+/*!
+ \class QtxCacheSelection
+ Special selection class, that caches parameter values.
+ Every parameter during popup building is calculated only one time,
+ although it may be included to many rules. After calculation
+ it is stored in internal map
+*/
-//================================================================
-// Class :
-// Purpose :
-//================================================================
class QtxCacheSelection : public QtxPopupMgr::Selection
{
public:
CacheMap myParamCache;
};
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Constructor
+ \param sel - base selection used for parameter calculation
+*/
QtxCacheSelection::QtxCacheSelection( QtxPopupMgr::Selection* sel )
: mySel( sel )
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxCacheSelection::~QtxCacheSelection()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return count of selected objects
+*/
int QtxCacheSelection::count() const
{
return mySel ? mySel->count() : 0;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates and caches parameters.
+ Already calculated parameters are returned without calculation
+ \return parameter value
+ \param i - index of selected object
+ \param name - name of parameter
+*/
QtxValue QtxCacheSelection::param( const int i, const QString& name ) const
{
QString param_name = name + "#####" + QString::number( i );
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates and caches global parameters.
+ Already calculated parameters are returned without calculation
+ \return parameter value
+ \param name - name of parameter
+*/
QtxValue QtxCacheSelection::globalParam( const QString& name ) const
{
if( myParamCache.contains( name ) )
-
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Constructor
+ \param mgr - popup manager
+*/
QtxPopupMgr::Operations::Operations( QtxPopupMgr* mgr )
: QtxStrings(),
myPopupMgr( mgr )
myParser = new QtxParser( mgr->myOperations );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+ Deletes internal parser
+*/
QtxPopupMgr::Operations::~Operations()
{
delete myParser;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of popup operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxPopupMgr::Operations::prior( const QString& op, bool isBin ) const
{
if( !isBin && ( op=="every" || op=="any" || op=="onlyone" ) )
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxPopupMgr::Operations::calculate
( const QString& op, QtxValue& v1, QtxValue& v2 ) const
{
return QtxStrings::calculate( op, v1, v2 );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Clears internal map of values
+*/
void QtxPopupMgr::Operations::clear()
{
myValues.clear();
-
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Constructor
+*/
QtxPopupMgr::QtxPopupMgr( QPopupMenu* popup, QObject* parent )
: QtxActionMenuMgr( popup, parent ),
myCurrentSelection( 0 )
createOperations();
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxPopupMgr::~QtxPopupMgr()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates popup operations instance
+*/
void QtxPopupMgr::createOperations()
{
myOperations = new QtxListOfOperations;
myOperations->append( "custom", new Operations( this ), 200 );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Additional version of registerAction
+ \param act - action to be registered
+ \param visible - rule for visibility state
+ \param toggle - rule for toggle on state
+ \param id - proposed id (if it is less than 0, then id will be generated automatically)
+*/
int QtxPopupMgr::registerAction( QAction* act,
const QString& visible,
const QString& toggle,
return _id;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes action from internal map
+ \param id - action id
+*/
void QtxPopupMgr::unRegisterAction( const int id )
{
QAction* act = action( id );
//QtxActionMenuMgr::unRegisterAction( id );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if manager has rule for action
+ \param act - action
+ \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle"
+*/
bool QtxPopupMgr::hasRule( QAction* act, bool visibility ) const
{
return map( visibility ).contains( act );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if manager has rule for action
+ \param id - action id
+ \param visibility - if it is true, then rule for "visibility" is checked, otherwise - for "toggle"
+*/
bool QtxPopupMgr::hasRule( const int id, bool visibility ) const
{
return hasRule( action( id ), visibility );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Sets new rule for action
+ \param act - action
+ \param rule - string expression of rule
+ \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle"
+*/
void QtxPopupMgr::setRule( QAction* act, const QString& rule, bool visibility )
{
if( !act || rule.isEmpty() )
}
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Sets new rule for action
+ \param id - action id
+ \param rule - string expression of rule
+ \param visibility - if it is true, then rule for "visibility" will be set, otherwise - for "toggle"
+*/
void QtxPopupMgr::setRule( const int id, const QString& rule, bool visibility )
{
setRule( action( id ), rule, visibility );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if parser has finished work without errors
+ \param p - parser
+*/
bool result( QtxParser* p )
{
bool res = false;
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills parser parameters with help of Selection::globalParam() method
+ \param p - parser
+ \param specific - list will be filled with names of parameters depending on selection objects (not global)
+*/
void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const
{
if( !p || !myCurrentSelection )
}
}
+/*!
+ \return true if 'v1'<'v2'
+ This function can work with many types of values
+*/
bool operator<( const QtxValue& v1, const QtxValue& v2 )
{
QVariant::Type t1 = v1.type(), t2 = v2.type();
return t1<t2;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if rule of action is satisfied on current selection
+ \param act - action
+ \param visibility - what rule is checked: for visibility(true) or for toggle(false)
+*/
bool QtxPopupMgr::isSatisfied( QAction* act, bool visibility ) const
{
QString menu = act->menuText();
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return true if item corresponding to action is visible
+ \param actId - action id
+ \param place - index of place
+*/
bool QtxPopupMgr::isVisible( const int actId, const int place ) const
{
bool res = QtxActionMenuMgr::isVisible( actId, place );
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Updates popup according to selection
+ \param p - popup menu
+ \param sel - selection
+*/
void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel )
{
QTime t1 = QTime::currentTime();
delete myCurrentSelection;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return reference to map of rules
+ \param visibility - type of map: visibility of toggle
+*/
QtxPopupMgr::RulesMap& QtxPopupMgr::map( bool visibility ) const
{
return ( RulesMap& )( visibility ? myVisibility : myToggle );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Loads actions description from file
+ \param fname - name of file
+ \param r - reader of file
+ \return true on success
+*/
bool QtxPopupMgr::load( const QString& fname, QtxActionMgr::Reader& r )
{
PopupCreator cr( &r, this );
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Constructor
+ \param r - menu reader
+ \param mgr - menu manager
+*/
QtxPopupMgr::PopupCreator::PopupCreator( QtxActionMgr::Reader* r,
QtxPopupMgr* mgr )
: QtxActionMgr::Creator( r ),
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
-QtxPopupMgr::PopupCreator::~PopupCreator()
+/*!
+ Destructor
+*/QtxPopupMgr::PopupCreator::~PopupCreator()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+
+/*!
+ Appends new menu items
+ \param tag - tag of item
+ \param subMenu - it has submenu
+ \param attr - list of attributes
+ \param pId - id of action corresponding to parent item
+*/
int QtxPopupMgr::PopupCreator::append( const QString& tag, const bool subMenu,
const ItemAttributes& attr, const int pId )
{
return res;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return visibility rule by attributes
+ Default implementation is empty
+*/
QString QtxPopupMgr::PopupCreator::visibleRule( const ItemAttributes& ) const
{
return QString::null;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return toggle rule by attributes
+ Default implementation is empty
+*/
QString QtxPopupMgr::PopupCreator::toggleRule( const ItemAttributes& ) const
{
return QString::null;
class QtxListOfOperations;
-//================================================================
-// Class :
-// Purpose :
-//================================================================
class QTX_EXPORT QtxPopupMgr : public QtxActionMenuMgr
{
Q_OBJECT
#include "QtxResourceMgr.h"
-/*
- Class: QtxResourceEdit
- Descr: Class for managing preferences items
-*/
+/*!
+ Constructor
+*/
QtxResourceEdit::QtxResourceEdit( QtxResourceMgr* mgr )
: myResMgr( mgr )
{
}
+/*!
+ Destructor
+*/
QtxResourceEdit::~QtxResourceEdit()
{
ItemMap items;
delete itr.data();
}
+/*!
+ \return assigned resource manager
+*/
QtxResourceMgr* QtxResourceEdit::resourceMgr() const
{
return myResMgr;
}
+/*!
+ Adds new item
+ \param label - label of widget to edit preference
+ \param pId - parent item id
+ \param type - type of item
+ \param section - section of resource assigned with item
+ \param param - name of resource assigned with item
+*/
int QtxResourceEdit::addItem( const QString& label, const int pId, const int type,
const QString& section, const QString& param )
{
return i->id();
}
+/*!
+ \return value of item property
+ \param id - item id
+ \propName - propertyName
+*/
QVariant QtxResourceEdit::itemProperty( const int id, const QString& propName ) const
{
QVariant propValue;
return propValue;
}
+/*!
+ Sets value of item property
+ \param id - item id
+ \propName - propertyName
+ \propValue - new value of property
+*/
void QtxResourceEdit::setItemProperty( const int id, const QString& propName, const QVariant& propValue )
{
Item* i = item( id );
i->setProperty( propName, propValue );
}
+/*!
+ \return resource assigned with item
+ \param id - item id
+ \param section - to return section of resource
+ \param param - to return name of resource
+*/
void QtxResourceEdit::resource( const int id, QString& sec, QString& param ) const
{
Item* i = item( id );
i->resource( sec, param );
}
+/*!
+ Stores all values to resource manager
+*/
void QtxResourceEdit::store()
{
QMap<Item*, QString> before;
changedResources( changed );
}
+/*!
+ Retrieve all values from resource manager
+*/
void QtxResourceEdit::retrieve()
{
for ( ItemMap::ConstIterator it = myItems.begin(); it != myItems.end(); ++it )
it.data()->retrieve();
}
+/*!
+ Stores all values to backup container
+*/
void QtxResourceEdit::toBackup()
{
myBackup.clear();
resourceValues( myBackup );
}
+/*!
+ Retrieve all values from backup container
+*/
void QtxResourceEdit::fromBackup()
{
QMap<Item*, QString> before;
changedResources( changed );
}
+/*!
+ Updates resource edit (default implementation is empty)
+*/
void QtxResourceEdit::update()
{
}
+/*!
+ \return item by it's id
+ \param id - item id
+*/
QtxResourceEdit::Item* QtxResourceEdit::item( const int id ) const
{
Item* i = 0;
return i;
}
+/*!
+ \return item by it's title (finds first item)
+ \param title - item title
+*/
QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title ) const
{
Item* i = 0;
return i;
}
+/*!
+ \return item by it's title and parent id
+ \param title - item title
+ \param pId - parent id
+*/
QtxResourceEdit::Item* QtxResourceEdit::item( const QString& title, const int pId ) const
{
Item* i = 0;
return i;
}
+/*!
+ Creates item
+ \return new item
+ \param label - text of label for new item
+ \param type - type of new item
+ \param pId - parent id
+*/
QtxResourceEdit::Item* QtxResourceEdit::createItem( const QString& label, const int type, const int pId )
{
Item* i = 0;
return i;
}
+/*!
+ Removes item
+ \param item - item to be removed
+*/
void QtxResourceEdit::removeItem( Item* item )
{
if ( !item )
itemRemoved( item );
}
+/*!
+ \return children items of resource edit
+ \param lst - list of items to be filled with children
+*/
void QtxResourceEdit::childItems( QPtrList<Item>& lst ) const
{
lst.clear();
lst.append( it.current() );
}
+/*!
+ \return all resources values from widgets
+ \param map - map to be filled by resources values
+*/
void QtxResourceEdit::resourceValues( QMap<int, QString>& map ) const
{
QString sect, name;
}
}
+/*!
+ \return all resources values from widgets
+ \param map - map to be filled by resources values
+*/
void QtxResourceEdit::resourceValues( QMap<Item*, QString>& map ) const
{
QString sect, name;
}
}
+/*!
+ Sets to widgets all resources values from map
+ \param map - map with resources values
+*/
void QtxResourceEdit::setResourceValues( QMap<int, QString>& map ) const
{
for ( QMap<int, QString>::ConstIterator it = map.begin(); it != map.end(); ++it )
}
}
+/*!
+ Sets to widgets all resources values from map
+ \param map - map with resources values
+*/
void QtxResourceEdit::setResourceValues( QMap<Item*, QString>& map ) const
{
for ( QMap<Item*, QString>::ConstIterator it = map.begin(); it != map.end(); ++it )
it.key()->setResourceValue( it.data() );
}
-
+/*!
+ Compares two map of resources values and finds different ones
+ \param map1 - first map
+ \param map2 - second map
+ \param resMap - map to be filled with different values
+ \param fromFirst - if it is true, then resMap will be filled with values from first map, otherwise - from second
+*/
void QtxResourceEdit::differentValues( const QMap<int, QString>& map1, const QMap<int, QString>& map2,
QMap<int, QString>& resMap, const bool fromFirst ) const
{
}
}
+/*!
+ Compares two map of resources values and finds different ones
+ \param map1 - first map
+ \param map2 - second map
+ \param resMap - map to be filled with different values
+ \param fromFirst - if it is true, then resMap will be filled with values from first map, otherwise - from second
+*/
void QtxResourceEdit::differentValues( const QMap<Item*, QString>& map1, const QMap<Item*, QString>& map2,
QMap<Item*, QString>& resMap, const bool fromFirst ) const
{
}
}
+/*!
+ Makes some activity on resource changing (called from store() method)
+ \sa store()
+*/
void QtxResourceEdit::changedResources( const QMap<Item*, QString>& )
{
}
+/*!
+ Some activity on item addition (default implementation is empty)
+*/
void QtxResourceEdit::itemAdded( Item* )
{
}
+/*!
+ Some activity on item removing (default implementation is empty)
+*/
void QtxResourceEdit::itemRemoved( Item* )
{
}
-/*
- Class: QtxResourceEdit::Item
- Descr: Class for incapsulation of one preference item
+/*!
+ Constructor
*/
-
QtxResourceEdit::Item::Item( QtxResourceEdit* edit, Item* parent )
: myEdit( edit ),
myParent( 0 )
parent->insertChild( this );
}
+/*!
+ Destructor
+*/
QtxResourceEdit::Item::~Item()
{
if ( resourceEdit() )
resourceEdit()->removeItem( this );
}
+/*!
+ \return id of item
+*/
int QtxResourceEdit::Item::id() const
{
return myId;
}
+/*!
+ \return parent item
+*/
QtxResourceEdit::Item* QtxResourceEdit::Item::parentItem() const
{
return myParent;
}
+/*!
+ Appends child and (if necessary) removes item from old parent
+ \param item - item to be added
+*/
void QtxResourceEdit::Item::insertChild( Item* item )
{
if ( !item || myChildren.contains( item ) )
myChildren.append( item );
}
+/*!
+ Removes child
+ \param item - item to be removed
+*/
void QtxResourceEdit::Item::removeChild( Item* item )
{
if ( !item || !myChildren.contains( item ) )
item->myParent = 0;
}
+/*!
+ Fills list with children items
+ \param lst - list to be filled with
+*/
void QtxResourceEdit::Item::childItems( QPtrList<Item>& lst ) const
{
for ( ItemListIterator it( myChildren ); it.current(); ++it )
lst.append( it.current() );
}
+/*!
+ \return true if there is no children of this item
+*/
bool QtxResourceEdit::Item::isEmpty() const
{
return myChildren.isEmpty();
}
+/*!
+ \return title of item
+*/
QString QtxResourceEdit::Item::title() const
{
return myTitle;
}
+/*!
+ \return assigned resource placement
+ \param sec - to return section
+ \param param - to return param name
+*/
void QtxResourceEdit::Item::resource( QString& sec, QString& param ) const
{
sec = myResSection;
param = myResParameter;
}
+/*!
+ Sets item title
+ \param title - new item title
+*/
void QtxResourceEdit::Item::setTitle( const QString& title )
{
myTitle = title;
}
+/*!
+ Assigns new resource to item
+ \param sec - section
+ \param sec - param name
+*/
void QtxResourceEdit::Item::setResource( const QString& sec, const QString& param )
{
myResSection = sec;
myResParameter = param;
}
+/*!
+ Updates item (default implementation is empty)
+*/
void QtxResourceEdit::Item::update()
{
}
+/*!
+ \return property value
+*/
QVariant QtxResourceEdit::Item::property( const QString& ) const
{
return QVariant();
}
+/*!
+ Sets property value
+*/
void QtxResourceEdit::Item::setProperty( const QString&, const QVariant& )
{
}
+/*!
+ \return value of assigned resource
+*/
QString QtxResourceEdit::Item::resourceValue() const
{
return getString();
}
+/*!
+ Sets value of assigned resource
+ \param val - new value
+*/
void QtxResourceEdit::Item::setResourceValue( const QString& val )
{
setString( val );
}
+/*!
+ \return corresponding resource manager
+*/
QtxResourceMgr* QtxResourceEdit::Item::resourceMgr() const
{
QtxResourceMgr* resMgr = 0;
return resMgr;
}
+/*!
+ \return corresponding resource edit
+*/
QtxResourceEdit* QtxResourceEdit::Item::resourceEdit() const
{
return myEdit;
}
+/*!
+ \return integer value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
int QtxResourceEdit::Item::getInteger( const int val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->integerValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ \return double value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
double QtxResourceEdit::Item::getDouble( const double val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->doubleValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ \return boolean value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
bool QtxResourceEdit::Item::getBoolean( const bool val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->booleanValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ \return string value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
QString QtxResourceEdit::Item::getString( const QString& val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->stringValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ \return color value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
QColor QtxResourceEdit::Item::getColor( const QColor& val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->colorValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ \return font value of resource corresponding to item
+ \param val - default value (it is returned if there is no such resource)
+*/
QFont QtxResourceEdit::Item::getFont( const QFont& val ) const
{
QtxResourceMgr* resMgr = resourceMgr();
return resMgr ? resMgr->fontValue( myResSection, myResParameter, val ) : val;
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setInteger( const int val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setDouble( const double val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setBoolean( const bool val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setString( const QString& val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setColor( const QColor& val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ Sets value of resource
+ \param val - value
+*/
void QtxResourceEdit::Item::setFont( const QFont& val )
{
QtxResourceMgr* resMgr = resourceMgr();
resMgr->setValue( myResSection, myResParameter, val );
}
+/*!
+ \return other item
+ \param id - other item id
+*/
QtxResourceEdit::Item* QtxResourceEdit::Item::item( const int id ) const
{
return resourceEdit() ? resourceEdit()->item( id ) : 0;
}
+/*!
+ \return other item
+ \param title - other item title
+*/
QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title ) const
{
return resourceEdit() ? resourceEdit()->item( title ) : 0;
}
+/*!
+ \return other item
+ \param title - other item title
+ \param id - parent item id
+*/
QtxResourceEdit::Item* QtxResourceEdit::Item::item( const QString& title, const int id ) const
{
return resourceEdit() ? resourceEdit()->item( title, id ) : 0;
}
+/*!
+ \return free item id
+*/
int QtxResourceEdit::Item::generateId()
{
static int _id = 0;
#include <qvariant.h>
#include <qfont.h>
+/*!
+ \class QtxResourceEdit
+ Class for managing preferences items
+*/
class QTX_EXPORT QtxResourceEdit
{
public:
friend class QtxResourceEdit::Item;
};
-/*
- Class: QtxResourceEditor::Item
- Descr: Class for incapsulation of one preference item
+/*!
+ \class QtxResourceEditor::Item
+ Class for incapsulation of one preference item
*/
class QTX_EXPORT QtxResourceEdit::Item
{
}
+/*!
+ Destructor
+*/
QtxResourceMgr::Resources::~Resources()
{
}
+/*!
+ Returns name of resource file
+ This file is used to load/save operations
+*/
QString QtxResourceMgr::Resources::file() const
{
return myFileName;
}
+/*!
+ Sets name of resource file
+ \param fn - name of file
+*/
void QtxResourceMgr::Resources::setFile( const QString& fn )
{
myFileName = fn;
}
+/*!
+ Returns string representation of parameter value
+ Returns QString::null if there is no such parameter
+
+ \param sect - name of section
+ \param name - name of parameter
+ \param subst - if it is true, then the substitution of variables
+ will be done with help of makeSubstitution method
+ \sa makeSubstitution()
+*/
QString QtxResourceMgr::Resources::value( const QString& sect, const QString& name, const bool subst ) const
{
QString val;
return val;
}
+/*!
+ Sets value by it's string representation
+
+ \param sect - name of section
+ \param name - name of parameter
+ \param val - string value
+*/
void QtxResourceMgr::Resources::setValue( const QString& sect, const QString& name, const QString& val )
{
Section& s = section( sect );
s.insert( name, val );
}
+/*!
+ \return true if section exists
+ \param sect - name of section
+*/
bool QtxResourceMgr::Resources::hasSection( const QString& sect ) const
{
return mySections.contains( sect );
}
+/*!
+ \return true if parameter exists in section
+ \param sect - name of section
+ \param name - name of parameter
+*/
bool QtxResourceMgr::Resources::hasValue( const QString& sect, const QString& name ) const
{
return hasSection( sect ) && section( sect ).contains( name );
}
+/*!
+ Removes section from resources
+ \param sect - name of section
+*/
void QtxResourceMgr::Resources::removeSection( const QString& sect )
{
mySections.remove( sect );
}
+/*!
+ Removes parameter from section
+ \param sect - name of section
+ \param name - name of parameter
+*/
void QtxResourceMgr::Resources::removeValue( const QString& sect, const QString& name )
{
if ( !hasSection( sect ) )
mySections.remove( sect );
}
+/*!
+ Removes all sections
+*/
void QtxResourceMgr::Resources::clear()
{
mySections.clear();
}
+/*!
+ \return list of section names
+*/
QStringList QtxResourceMgr::Resources::sections() const
{
return mySections.keys();
}
+/*!
+ \return list of parameter names from section
+ \param sec - name of section
+*/
QStringList QtxResourceMgr::Resources::parameters( const QString& sec ) const
{
if ( !hasSection( sec ) )
return section( sec ).keys();
}
+/*!
+ \return path of file from directory built by parameter
+ \return QString::null if built path doesn't exist
+ \param sec - name of section
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+*/
QString QtxResourceMgr::Resources::path( const QString& sec, const QString& prefix, const QString& name ) const
{
QString filePath = fileName( sec, prefix, name );
return filePath;
}
+/*!
+ \return corresponding resource manager
+*/
QtxResourceMgr* QtxResourceMgr::Resources::resMgr() const
{
return myMgr;
}
+/*!
+ \return instance of section by it's name. Section will be created if it doesn't exist
+*/
QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn )
{
if ( !mySections.contains( sn ) )
return mySections[sn];
}
+/*!
+ \return instance of section by it's name. Section will be created if it doesn't exist
+*/
const QtxResourceMgr::Section& QtxResourceMgr::Resources::section( const QString& sn ) const
{
return mySections[sn];
}
+/*!
+ \return full path of file
+ \param sect - name of section
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+*/
QString QtxResourceMgr::Resources::fileName( const QString& sect, const QString& prefix, const QString& name ) const
{
QString path;
return QString();
}
+/*!
+ \return QPixmap loaded from file
+ \param sect - name of section
+ \param prefix - name of parameter containing some path
+ \param name - name of picture file
+*/
QPixmap QtxResourceMgr::Resources::loadPixmap( const QString& sect, const QString& prefix, const QString& name ) const
{
QString fname = fileName( sect, prefix, name );
return p;
}
+/*!
+ \return just created and loaded translator
+ \param sect - name of section
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+*/
QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, const QString& prefix, const QString& name ) const
{
QTranslator* trans = new QTranslator( 0 );
return trans;
}
+/*!
+ Finds in string variables by patterns: ${name} or $(name) or %name%
+ \return first found name or QString::null if there is no ones
+ \param str - string where the search is processed
+ \param start - integer value for returning start position of variable
+ \param len - integer value for returning length of variable
+*/
QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& start, int& len ) const
{
QString varName = QString::null;
return varName;
}
+/*!
+ Substitutes variables by its' values. If variable is from enviroment,
+ it will be replaced by environment value. If it isn't, method tries to
+ find it's value among resources
+ \return new variant of string 'str'
+ \param str - string to process substitution
+ \param sect - section, in which the variables will be finding
+ \param name - name of variable which must be ignored during substitution
+*/
QString QtxResourceMgr::Resources::makeSubstitution( const QString& str, const QString& sect, const QString& name ) const
{
QString res = str;
Class: QtxResourceMgr::IniFormat
Level: Internal
*/
-
class QtxResourceMgr::IniFormat : public Format
{
public:
virtual bool save( const QString&, const QMap<QString, Section>& );
};
+/*!
+ Default constructor
+*/
QtxResourceMgr::IniFormat::IniFormat()
: Format( "ini" )
{
}
+/*!
+ Destructor
+*/
QtxResourceMgr::IniFormat::~IniFormat()
{
}
+/*!
+ Loads resources from ini-file to map of sections
+ \param fname - name of resource file
+ \param secMap - map of sections
+*/
bool QtxResourceMgr::IniFormat::load( const QString& fname, QMap<QString, Section>& secMap )
{
QFile file( fname );
return res;
}
+/*!
+ Saves map of sections to resource ini-file
+ \param fname - name of resource file
+ \param secMap - map of sections
+*/
bool QtxResourceMgr::IniFormat::save( const QString& fname, const QMap<QString, Section>& secMap )
{
QFile file( fname );
QString valueAttribute() const;
};
+/*!
+ Default constructor
+*/
QtxResourceMgr::XmlFormat::XmlFormat()
: Format( "xml" )
{
}
+/*!
+ Destructor
+*/
QtxResourceMgr::XmlFormat::~XmlFormat()
{
}
+/*!
+ Loads resources from xml-file to map of sections
+ \param fname - name of resource file
+ \param secMap - map of sections
+*/
bool QtxResourceMgr::XmlFormat::load( const QString& fname, QMap<QString, Section>& secMap )
{
bool res = false;
QFile file( fname );
if ( !file.open( IO_ReadOnly ) )
+ {
+ qDebug( "File cannot be opened" );
return false;
+ }
QDomDocument doc;
file.close();
if ( !res )
+ {
+ qDebug( "File is empty" );
return false;
+ }
QDomElement root = doc.documentElement();
if ( root.isNull() || root.tagName() != docTag() )
+ {
+ qDebug( "Invalid root" );
return false;
+ }
QDomNode sectNode = root.firstChild();
while ( res && !sectNode.isNull() )
secMap[section].insert( paramName, paramValue );
}
else
+ {
+ qDebug( "Invalid parameter element" );
res = false;
+ }
}
else
+ {
res = paramNode.isComment();
+ if( !res )
+ qDebug( "Node isn't element nor comment" );
+ }
paramNode = paramNode.nextSibling();
}
}
else
+ {
+ qDebug( "Invalid section" );
res = false;
+ }
}
else
+ {
res = sectNode.isComment(); // if it's a comment -- let it be, pass it..
+ if( !res )
+ qDebug( "Node isn't element nor comment" );
+ }
sectNode = sectNode.nextSibling();
}
#endif
+ if( res )
+ qDebug( QString( "File '%1' is loaded successfully" ).arg( fname ) );
return res;
}
+/*!
+ Saves map of sections to resource xml-file
+ \param fname - name of resource file
+ \param secMap - map of sections
+*/
bool QtxResourceMgr::XmlFormat::save( const QString& fname, const QMap<QString, Section>& secMap )
{
bool res = false;
return res;
}
+/*!
+ \return XML tag of document
+*/
QString QtxResourceMgr::XmlFormat::docTag() const
{
QString tag = option( "doc_tag" );
return tag;
}
+/*!
+ \return XML tag of section
+*/
QString QtxResourceMgr::XmlFormat::sectionTag() const
{
QString tag = option( "section_tag" );
return tag;
}
+/*!
+ \return XML tag of parameter
+*/
QString QtxResourceMgr::XmlFormat::parameterTag() const
{
QString tag = option( "parameter_tag" );
return tag;
}
+/*!
+ \return XML attribute of parameter name
+*/
QString QtxResourceMgr::XmlFormat::nameAttribute() const
{
QString str = option( "name_attribute" );
return str;
}
+/*!
+ \return XML attribute of parameter value
+*/
QString QtxResourceMgr::XmlFormat::valueAttribute() const
{
QString str = option( "value_attribute" );
Qtx::mkDir( Qtx::dir( res->myFileName ) );
- return save( res->myFileName, res->mySections );
+ QtxResourceMgr* mgr = res->resMgr();
+ QString name = mgr ? mgr->userFileName( mgr->appName(), false ) : res->myFileName;
+ return save( name, res->mySections );
}
/*!
it.current()->clear();
}
+/*!
+ Set state 'ignore user values'.
+ If it is true, then all resources loaded from user home directory is ignored
+*/
void QtxResourceMgr::setIgnoreUserValues( const bool val )
{
myIsIgnoreUserValues = val;
}
+/*!
+ \return state 'ignore user values'
+*/
bool QtxResourceMgr::ignoreUserValues() const
{
return myIsIgnoreUserValues;
return res;
}
+/*!
+ \brief Import some file with resources
+*/
+bool QtxResourceMgr::import( const QString& fname )
+{
+ Format* fmt = format( currentFormat() );
+ if ( !fmt )
+ return false;
+
+ Resources* r = myResources.getFirst();
+ if( !r )
+ return false;
+
+ QString old = r->file();
+ r->setFile( fname );
+ bool res = fmt->load( r );
+ r->setFile( old );
+ return res;
+}
+
/*!
\brief Save the changed resources in to the user resource file.
*/
return res;
}
+/*!
+ \return path of file from directory built by parameter
+ \return QString::null if built path doesn't exist
+ \param sec - name of section
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+*/
QString QtxResourceMgr::path( const QString& sect, const QString& prefix, const QString& name ) const
{
QString res;
return res;
}
+/*!
+ \return section corresponding to resources paths
+*/
QString QtxResourceMgr::resSection() const
{
QString res = option( "res_section_name" );
return res;
}
+/*!
+ \return section corresponding to language settings
+*/
QString QtxResourceMgr::langSection() const
{
QString res = option( "lang_section_name" );
return res;
}
+/*!
+ \return default image used when during loading the image file doesn't exist
+*/
QPixmap QtxResourceMgr::defaultPixmap() const
{
return myDefaultPix;
}
+/*!
+ Set image as default image used when during loading the image file doesn't exist
+ \param pix - image
+*/
void QtxResourceMgr::setDefaultPixmap( const QPixmap& pix )
{
myDefaultPix = pix;
}
+/*!
+ \return image loaded from file
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+*/
QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name ) const
{
return loadPixmap( prefix, name, true );
}
+/*!
+ \return image loaded from file
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+ \param useDef - indicates if it is possible to use default image returning by defaultPixmap() method.
+ If it is false, the empty pixmap will be used as default
+ \sa defaultPixmap()
+*/
QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const bool useDef ) const
{
return loadPixmap( prefix, name, useDef ? defaultPixmap() : QPixmap() );
}
+/*!
+ Finds in all sections an existing path corresponding to 'prefix' parameter
+ and load image with name 'name' from this folder
+
+ \return image loaded from file
+ \param prefix - name of parameter containing some path
+ \param name - name of file
+ \param defPix - default image used when file doesn't exist
+*/
QPixmap QtxResourceMgr::loadPixmap( const QString& prefix, const QString& name, const QPixmap& defPix ) const
{
initialize();
return pix;
}
+/*!
+ Loads translator for language
+ Name of translator file is constructed by list returning by option "translators" or,
+ if it is empty, by predefined pattern "%P_msg_%L.qm". It is recommended to used in translators
+ name the strings %A, %P, %L whose will be replaced by application name, prefix and language name correspondingly
+
+ \param pref - name of parameter containing path to translator's file.
+ If it is empty, the list of parameters from resource section ( resSection() )
+ is used.
+
+ \param l - name of language. If it is empty, then value of parameter "language"
+ from language section ( langSection() ) is used. If it is also empty, then
+ predefined name "en" is used
+
+ \sa resSection(), langSection()
+*/
void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l )
{
initialize();
}
}
+/*!
+ Loads translators by path and list of files
+
+ \param prefix - value of this parameter must contain path
+ \param translators - list of translators' files
+*/
void QtxResourceMgr::loadTranslators( const QString& prefix, const QStringList& translators )
{
initialize();
}
}
+/*!
+ Loads translator by path and file name
+
+ \param prefix - value of this parameter must contain path
+ \param name - name of translator file
+*/
void QtxResourceMgr::loadTranslator( const QString& prefix, const QString& name )
{
initialize();
}
}
+/*!
+ Remove all translators corresponding to prefix
+
+ \param prefix - parameter containing path
+*/
void QtxResourceMgr::removeTranslators( const QString& prefix )
{
if ( !myTranslator.contains( prefix ) )
myTranslator.remove( prefix );
}
+/*!
+ Moves translators corresponding to prefix to the top of translator stack
+
+ \param prefix - parameter containing path
+*/
void QtxResourceMgr::raiseTranslators( const QString& prefix )
{
if ( !myTranslator.contains( prefix ) )
}
}
+/*!
+ Copies all resources to user resources, so that they will be saved in user home folder
+*/
void QtxResourceMgr::refresh()
{
QStringList sl = sections();
}
}
+/*!
+ \brief Sets the resource directories list except user home directory and clear resources
+*/
void QtxResourceMgr::setDirList( const QStringList& dl )
{
myDirList = dl;
myResources.clear();
}
+/*!
+ Sets resource value
+ \param sect - name of section
+ \param name - name of parameter
+ \param val - string representation of value
+*/
void QtxResourceMgr::setResource( const QString& sect, const QString& name, const QString& val )
{
initialize();
myResources.first()->setValue( sect, name, val );
}
-QString QtxResourceMgr::userFileName( const QString& appName ) const
+/*!
+ \return name of resource file, which is being found in user home directory
+ \param appName - name of application
+ \param for_load - flag indicating that file will be used for loading (true) or for saving(false)
+ It makes possible to use different resource files for loading and saving
+*/
+QString QtxResourceMgr::userFileName( const QString& appName, const bool /*for_load*/ ) const
{
QString fileName;
QString pathName = QDir::homeDirPath();
return pathName;
}
+/*!
+ \return name of resource file, which is being found in all resource directories, except user home
+*/
QString QtxResourceMgr::globalFileName( const QString& appName ) const
{
return QString( "%1.%2" ).arg( appName ).arg( currentFormat() );
}
+/*!
+ Replaced substrings by pattern %A, %B, etc by values from map
+
+ \param src - string to be processed
+ \param substMap - map of values for replacing
+*/
QString QtxResourceMgr::substMacro( const QString& src, const QMap<QChar, QString>& substMap ) const
{
QString trg = src;
QString path( const QString&, const QString&, const QString& ) const;
bool load();
+ bool import( const QString& );
bool save();
QStringList sections() const;
virtual void setDirList( const QStringList& );
virtual void setResource( const QString&, const QString&, const QString& );
- virtual QString userFileName( const QString& ) const;
+ virtual QString userFileName( const QString&, const bool = true ) const;
virtual QString globalFileName( const QString& ) const;
private:
--- /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/
+//
+// File: QtxSplash.cxx
+// Author: Vadim SANDLER
+
+#include "QtxSplash.h"
+
+#include <qapplication.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qmessagebox.h>
+
+const int _PROGRESS_EVENT = QEvent::User + 10;
+const int _PROGRESS_WIDTH = 10;
+
+/*!
+ Class ProgressEvent [ internal ].
+*/
+class ProgressEvent: public QCustomEvent
+{
+public:
+ ProgressEvent( const QString& msg, const int progress = 0 )
+ : QCustomEvent( id() ),
+ myMessage( msg ),
+ myProgress( progress )
+ {}
+ QString message() const { return myMessage; }
+ int progress() const { return myProgress; }
+ static int id() { return _PROGRESS_EVENT; }
+
+private:
+ QString myMessage;
+ int myProgress;
+};
+
+// Only one instance of splash screen is allowed
+QtxSplash* QtxSplash::mySplash = 0;
+
+/*!
+ Construct a splash screen that will display the \a pixmap.
+*/
+QtxSplash::QtxSplash( const QPixmap& pixmap )
+ : QWidget( 0, 0, WStyle_Customize | WStyle_StaysOnTop | WX11BypassWM | WStyle_NoBorder )
+{
+ myAlignment = AlignBottom | AlignRight;
+ myColor = white;
+ myHideOnClick = false;
+ myProgress = 0;
+ myTotal = 0;
+ myGradientType = Vertical;
+ myError = 0;
+ myStartColor = red;
+
+ setPixmap( pixmap );
+}
+
+/*!
+ Destructor.
+*/
+QtxSplash::~QtxSplash()
+{
+ mySplash = 0;
+}
+
+/*!
+ Returns an only instance of splash screen.
+ If \a px is valid sets this pixmap to the splash screen.
+*/
+QtxSplash* QtxSplash::splash( const QPixmap& px )
+{
+ if ( !mySplash )
+ mySplash = new QtxSplash( px );
+ else if ( !px.isNull() )
+ mySplash->setPixmap( px );
+ return mySplash;
+}
+
+/*!
+ Sends the status message and (optionally) progress to the splash screen.
+ Can be used, for example, from the progress thread.
+*/
+void QtxSplash::setStatus( const QString& msg,
+ const int progress )
+{
+ if ( mySplash ) {
+ QApplication::postEvent( mySplash, new ProgressEvent( msg, progress ) );
+ qApp->processEvents();
+ }
+}
+
+/*!
+ Sets error status and shows error message box to the user.
+*/
+void QtxSplash::error( const QString& error, const QString& title, const int code )
+{
+ printf("QtxSplash::error: %s\n",error.latin1());
+ if ( mySplash ) {
+ mySplash->setError( code );
+ QMessageBox::critical( mySplash,
+ title.isEmpty() ? tr( "Error" ) : title,
+ error,
+ tr( "&OK" ) );
+ }
+}
+
+/*!
+ Sets the pixmap that will be used as the splash screen's image to
+ \a pixmap.
+*/
+void QtxSplash::setPixmap( const QPixmap& pixmap )
+{
+ myPixmap = pixmap;
+ QRect r( 0, 0, myPixmap.size().width(), myPixmap.size().height() );
+ resize( myPixmap.size() );
+ move( QApplication::desktop()->screenGeometry().center() - r.center() );
+ repaint();
+}
+
+/*!
+ Returns the pixmap that is used in the splash screen.
+*/
+QPixmap QtxSplash::pixmap() const
+{
+ return myPixmap;
+}
+
+/*!
+ Sets/clear the 'hide on mouse click' flag.
+ Default is FALSE.
+ When this flag is set, user can hide the splash screen window
+ by clicking on it with mouse.
+ But for this to work it is necessary to call periodically
+ QApplication::processEvents() in order to allow event loop to process
+ events because usually main application loop is not yet started
+ at that moment.
+*/
+void QtxSplash::setHideOnClick( const bool on )
+{
+ myHideOnClick = on;
+}
+
+/*!
+ Returns the 'hide on mouse click' flag.
+*/
+bool QtxSplash::hideOnClick() const
+{
+ return myHideOnClick;
+}
+
+/*!
+ Sets total progress steps to \a total.
+*/
+void QtxSplash::setTotalSteps( const int total )
+{
+ myTotal = total;
+ repaint();
+}
+
+/*!
+ Return total progress steps number.
+ \sa setTotalSteps(), setProgress()
+*/
+int QtxSplash::totalSteps() const
+{
+ return myTotal;
+}
+
+/*!
+ Sets progress to \a progress.
+*/
+void QtxSplash::setProgress( const int progress )
+{
+ myProgress = progress;
+ repaint();
+}
+
+/*!
+ Return current progress.
+ \sa setProgress(), setTotalSteps()
+*/
+int QtxSplash::progress() const
+{
+ return myProgress;
+}
+
+/*!
+ Sets progress to \a progress and total progress steps to \a total.
+*/
+void QtxSplash::setProgress( const int progress, const int total )
+{
+ myTotal = total;
+ myProgress = progress;
+ repaint();
+}
+
+/*!
+ Sets progress bar colors to \a startColor and \a endColor.
+ If the colors differ the gradient color bar is drawed.
+ If the \a endColor is not valid, \a startColor is used instead.
+ \a gradientType sets the type of gradient to be used for progress
+ bar - horizontal or vertical. Default is vertical.
+*/
+void QtxSplash::setProgressColors( const QColor& startColor,
+ const QColor& endColor,
+ const int gradientType )
+{
+ myStartColor = startColor;
+ myEndColor = endColor;
+ myGradientType = gradientType;
+ repaint();
+}
+
+/*!
+ Return progress colors and gradient type (horizontal or vertical).
+ \sa setProgressColors()
+*/
+int QtxSplash::progressColors( QColor& startColor, QColor& endColor )
+{
+ startColor = myStartColor;
+ endColor = myEndColor;
+ return myGradientType;
+}
+
+/*!
+ Sets message text alignment flags to \a alignment.
+ Default is AlignBottom | AlignRight.
+*/
+void QtxSplash::setTextAlignment( const int alignment )
+{
+ myAlignment = alignment;
+ repaint();
+}
+
+/*!
+ Return message text alignment flags.
+ \sa setTextAlignment()
+*/
+int QtxSplash::textAlignment() const
+{
+ return myAlignment;
+}
+
+/*!
+ Sets message text color to \a color.
+ Default is white.
+ \sa setTextColors()
+*/
+void QtxSplash::setTextColor( const QColor& color )
+{
+ myColor = color;
+ myShadowColor = QColor();
+ repaint();
+}
+
+/*!
+ Return message text color.
+ \sa setTextColor()
+*/
+QColor QtxSplash::textColor() const
+{
+ return myColor;
+}
+
+/*!
+ Sets message text color to \a color and text shadow color to \a shadow.
+ \sa setTextColor()
+*/
+void QtxSplash::setTextColors( const QColor& color, const QColor& shadow )
+{
+ myColor = color;
+ myShadowColor = shadow;
+ repaint();
+}
+
+/*!
+ Return message text color and text shadow color.
+ \sa setTextColors()
+*/
+void QtxSplash::textColors( QColor& color, QColor& shadow ) const
+{
+ color = myColor;
+ shadow = myShadowColor;
+}
+
+/*!
+ Returns current status message.
+*/
+QString QtxSplash::message() const
+{
+ return myMessage;
+}
+
+/*!
+ Return error code. If no errors were occured returns 0.
+ Error code can be set by error( QString&, QString, int ).
+*/
+int QtxSplash::error() const
+{
+ return myError;
+}
+
+/*!
+ Makes the splash screen wait until the widget \a mainWin is displayed
+ before calling close() on itself.
+*/
+void QtxSplash::finish( QWidget* mainWin )
+{
+ if ( mainWin ) {
+#if defined(Q_WS_X11)
+ extern void qt_wait_for_window_manager( QWidget* w );
+ qt_wait_for_window_manager( mainWin );
+#endif
+ }
+ close();
+}
+
+/*!
+ Repaint the splash screen.
+*/
+void QtxSplash::repaint()
+{
+ drawContents();
+ QWidget::repaint();
+ QApplication::flush();
+}
+
+/*!
+ Draws the \a message text onto the splash screen with color \a
+ color and aligns the text according to the flags in \a alignment.
+*/
+void QtxSplash::message( const QString& msg,
+ int alignment,
+ const QColor& color )
+{
+ myMessage = msg;
+ myAlignment = alignment;
+ myColor = color;
+ repaint();
+}
+
+/*!
+ This is an overloaded member function, provided for convenience.
+ It behaves essentially like the above function.
+ Draws the \a message text onto the splash screen with default color
+ and aligns the text according to the default alignment flags.
+*/
+void QtxSplash::message( const QString& msg )
+{
+ myMessage = msg;
+ repaint();
+}
+
+/*!
+ Removes the message being displayed on the splash screen.
+ \sa message()
+*/
+void QtxSplash::clear()
+{
+ myMessage = QString::null;
+ repaint();
+}
+
+/*!
+ Draw the contents of the splash screen using painter \a painter.
+*/
+void QtxSplash::drawContents( QPainter* painter )
+{
+ QRect r = rect();
+ if ( myTotal > 0 ) {
+ // draw progress bar outline rectangle
+ painter->setPen( palette().active().dark() );
+ painter->drawLine( r.x()+5,
+ r.height()-5-_PROGRESS_WIDTH,
+ r.width()-5,
+ r.height()-5-_PROGRESS_WIDTH );
+ painter->drawLine( r.x()+5,
+ r.height()-5-_PROGRESS_WIDTH,
+ r.x()+5,
+ r.height()-5 );
+ painter->setPen( palette().active().light() );
+ painter->drawLine( r.x()+5,
+ r.height()-5,
+ r.width()-5,
+ r.height()-5 );
+ painter->drawLine( r.width()-5,
+ r.height()-5-_PROGRESS_WIDTH,
+ r.width()-5,
+ r.height()-5 );
+ // draw progress bar
+ if ( myGradientType == Horizontal ) {
+ int tng = r.width() - r.x() - 11;
+ int ng = (int) ( 1.0 * tng * ( myProgress > 0 ? myProgress : 0 ) / myTotal );
+ int h1, h2, s1, s2, v1, v2;
+ myStartColor.hsv( &h1, &s1, &v1 );
+ myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) :
+ myStartColor.hsv( &h2, &s2, &v2 );
+ for ( int i = 0; i < ng; i++ ) {
+ painter->setPen( QColor( h1 + ((h2-h1)*i)/(tng-1),
+ s1 + ((s2-s1)*i)/(tng-1),
+ v1 + ((v2-v1)*i)/(tng-1),
+ QColor::Hsv ) );
+ painter->drawLine( r.x()+6+i,
+ r.height()-5-_PROGRESS_WIDTH+1,
+ r.x()+6+i,
+ r.height()-6 );
+ }
+ }
+ else {
+ int ng = (int) ( 1.0 * (r.width() - r.x() - 11) * ( myProgress > 0 ? myProgress : 0 ) / myTotal );
+ int h1, h2, s1, s2, v1, v2;
+ myStartColor.hsv( &h1, &s1, &v1 );
+ myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) :
+ myStartColor.hsv( &h2, &s2, &v2 );
+ for ( int i = 0; i < _PROGRESS_WIDTH-1; i++ ) {
+ painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-2),
+ s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-2),
+ v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-2),
+ QColor::Hsv ) );
+ painter->drawLine( r.x()+6,
+ r.height()-5-_PROGRESS_WIDTH+1+i,
+ r.x()+6+ng-1,
+ r.height()-5-_PROGRESS_WIDTH+1+i );
+ }
+ }
+ }
+ // draw status
+ if ( !myMessage.isEmpty() ) {
+ QFontMetrics f( font() );
+ int spacing = f.lineSpacing();
+ int shift = myTotal > 0 ? _PROGRESS_WIDTH : _PROGRESS_WIDTH; // : 0
+ int i = myMessage.length() - 1;
+ while( i >= 0 && myMessage[ i-- ] == '\n' )
+ shift += spacing;
+ QRect r1( r.x() + 5, r.y() + 5, r.width() - 10, r.height() - 10 - shift );
+ QRect r2 = r1;
+ if ( myAlignment & Qt::AlignLeft ) r2.setLeft ( r2.left() + 1 );
+ if ( myAlignment & Qt::AlignTop ) r2.setTop ( r2.top() + 1 );
+ if ( myAlignment & Qt::AlignRight ) r2.setRight ( r2.right() + 1 );
+ if ( myAlignment & Qt::AlignBottom ) r2.setBottom( r2.bottom() + 1 );
+ if ( myShadowColor.isValid() ) {
+ painter->setPen( myShadowColor );
+ painter->drawText( r2, myAlignment, myMessage );
+ }
+ painter->setPen( myColor );
+ painter->drawText( r1, myAlignment, myMessage );
+ }
+}
+
+/*!
+ Mouse press event.
+ Hides splash screen if the 'hide on mouse click' flag is set.
+ \sa setHideOnClick()
+*/
+void QtxSplash::mousePressEvent( QMouseEvent* )
+{
+ if ( myHideOnClick )
+ hide();
+}
+
+/*!
+ Processes custom event sent by setStatus() method.
+ \sa setStatus().
+*/
+void QtxSplash::customEvent( QCustomEvent* ce )
+{
+ if ( ce->type() == ProgressEvent::id() ) {
+ ProgressEvent* pe = (ProgressEvent*)ce;
+ pe->message().isEmpty() ? clear() : message( pe->message() );
+ setProgress( pe->progress() );
+ qApp->processEvents();
+ }
+}
+
+/*!
+ Draws the splash screen window [ internal ].
+*/
+void QtxSplash::drawContents()
+{
+ QPixmap textPix = myPixmap;
+ QPainter painter( &textPix, this );
+ drawContents( &painter );
+ setErasePixmap( textPix );
+}
+
+/*!
+ Sets error code [ internal ].
+*/
+void QtxSplash::setError( const int code )
+{
+ myError = code;
+}
--- /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/
+//
+// File: QtxSplash.h
+// Author: Vadim SANDLER
+
+#ifndef QTXSPLASH_H
+#define QTXSPLASH_H
+
+#include "Qtx.h"
+
+#include <qpixmap.h>
+#include <qwidget.h>
+
+#ifdef WIN32
+#pragma warning( disable:4251 )
+#endif
+
+class QTX_EXPORT QtxSplash : public QWidget
+{
+ Q_OBJECT
+
+private:
+ QtxSplash( const QPixmap& = QPixmap() );
+
+public:
+ enum { Horizontal, Vertical };
+
+ virtual ~QtxSplash();
+
+ static QtxSplash* splash( const QPixmap& = QPixmap() );
+ static void setStatus( const QString&, const int = 0 );
+ static void error( const QString&, const QString& = QString::null, const int = -1 );
+
+ void setPixmap( const QPixmap& );
+ QPixmap pixmap() const;
+
+ void setHideOnClick( const bool );
+ bool hideOnClick() const;
+
+ void setTotalSteps( const int );
+ int totalSteps() const;
+ void setProgress( const int );
+ int progress() const;
+ void setProgress( const int, const int );
+ void setProgressColors( const QColor&,
+ const QColor& = QColor(),
+ const int = Vertical );
+ int progressColors( QColor&, QColor& );
+
+ void setTextAlignment( const int );
+ int textAlignment() const;
+
+ void setTextColor( const QColor& );
+ QColor textColor() const;
+ void setTextColors( const QColor&, const QColor& = QColor() );
+ void textColors( QColor&, QColor& ) const;
+
+ QString message() const;
+
+ int error() const;
+
+ void finish( QWidget* );
+ void repaint();
+
+public slots:
+ void message( const QString&,
+ const int,
+ const QColor& = white );
+ void message( const QString& );
+ void clear();
+
+protected:
+ virtual void mousePressEvent( QMouseEvent* );
+ virtual void customEvent( QCustomEvent* );
+ virtual void drawContents( QPainter* );
+
+private:
+ void drawContents();
+ void setError( const int );
+
+private:
+ static QtxSplash* mySplash;
+
+ QPixmap myPixmap;
+ QString myMessage;
+ int myAlignment;
+ QColor myColor;
+ QColor myShadowColor;
+ bool myHideOnClick;
+ int myProgress;
+ int myTotal;
+ QColor myStartColor;
+ QColor myEndColor;
+ int myGradientType;
+ int myError;
+};
+
+#endif
#include <math.h>
#include <stdlib.h>
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxStdOperations::QtxStdOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxStdOperations::~QtxStdOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false')
+*/
void QtxStdOperations::bracketsList( QStringList& list, bool open ) const
{
if( open )
list.append( ")" );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills list with operation names by copying of internal list of operations
+*/
void QtxStdOperations::opersList( QStringList& list ) const
{
- list += myOpers;
+ list += myOpers;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Add operation names from list to internal list of operations
+*/
void QtxStdOperations::addOperations( const QStringList& list )
{
QStringList::const_iterator anIt = list.begin(),
myOpers.append( *anIt );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Append operation names from 'list' to internal list of operations
+*/
void QtxStdOperations::addTypes( const ListOfTypes& list )
{
ListOfTypes::const_iterator anIt = list.begin(),
myTypes.append( *anIt );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return whether values with passed types are valid for arguments of operation
+ \param op - name of operation
+ \param t1 - type of first argument
+ \param t2 - type of second argument
+*/
QtxParser::Error QtxStdOperations::isValid( const QString& op,
const QVariant::Type t1,
const QVariant::Type t2 ) const
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxArithmetics::QtxArithmetics()
: QtxStdOperations()
{
addTypes( aTypes );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxArithmetics::~QtxArithmetics()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates numbers by it's string representation [redefined virtual]
+*/
bool QtxArithmetics::createValue( const QString& str, QtxValue& v ) const
{
bool ok = false;
return ok;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of arithmetic operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxArithmetics::prior( const QString& op, bool isBin ) const
{
if( isBin )
v1 = QVariant( v2, 0 );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxArithmetics::calculate( const QString& op,
QtxValue& v1, QtxValue& v2 ) const
{
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxLogic::QtxLogic()
: QtxStdOperations()
{
addTypes( aTypes );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxLogic::~QtxLogic()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates value 'true' or 'false' it's string representation [redefined virtual]
+*/
bool QtxLogic::createValue( const QString& str, QtxValue& v ) const
{
bool ok = true;
return ok;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of arithmetic operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxLogic::prior( const QString& op, bool isBin ) const
{
if( isBin )
return false;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxLogic::calculate( const QString& op,
QtxValue& v1, QtxValue& v2 ) const
{
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxFunctions::QtxFunctions()
: QtxStdOperations()
{
addTypes( aTypes );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxFunctions::~QtxFunctions()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates numbers by it's string representation [redefined virtual]
+*/
bool QtxFunctions::createValue( const QString& str, QtxValue& v ) const
{
bool ok = false;
return ok;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of arithmetic operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxFunctions::prior( const QString& op, bool isBin ) const
{
if( isBin )
return 0;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxFunctions::calculate( const QString& op,
QtxValue& v1, QtxValue& v2 ) const
{
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxStrings::QtxStrings()
: QtxStdOperations()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxStrings::~QtxStrings()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates string QtxValue by it's Qt string representation [redefined virtual]
+*/
bool QtxStrings::createValue( const QString& str, QtxValue& v ) const
{
QChar st = str[0],
return QtxStdOperations::createValue( str, v );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of arithmetic operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxStrings::prior( const QString& op, bool isBin ) const
{
if( isBin )
return 0;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxStrings::calculate( const QString& op,
QtxValue& v1, QtxValue& v2 ) const
{
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Default constructor
+*/
QtxSets::QtxSets()
{
QStringList aList;
addTypes( aTypes );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Destructor
+*/
QtxSets::~QtxSets()
{
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Fills list of brackets treated as open (when 'open' is 'true') or close ('open' is 'false')
+*/
void QtxSets::bracketsList( QStringList& list, bool open ) const
{
if( open )
QtxStdOperations::bracketsList( list, open );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Creates set of QtxValues by their string representation [redefined virtual]
+*/
bool QtxSets::createValue( const QString& str, QtxValue& val ) const
{
return QtxStdOperations::createValue( str, val );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return priority of arithmetic operation 'op'.
+ \param isBin indicate whether the operation is binary
+*/
int QtxSets::prior( const QString& op, bool isBin ) const
{
if( isBin )
return 0;
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ \return whether values with passed types are valid for arguments of operation
+ \param op - name of operation
+ \param t1 - type of first argument
+ \param t2 - type of second argument
+*/
QtxParser::Error QtxSets::isValid( const QString& op,
const QVariant::Type t1,
const QVariant::Type t2 ) const
return QtxStdOperations::isValid( op, t1, t2 );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Adds new value 'v' to set 'set' [static]
+*/
void QtxSets::add( ValueSet& set, const QtxValue& v )
{
if( v.isValid() && set.contains( v )==0 )
set.append( v );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Adds values from set 's2' to set 's1'
+*/
void QtxSets::add( ValueSet& s1, const ValueSet& s2 )
{
ValueSet::const_iterator anIt = s2.begin(),
add( s1, *anIt );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes value 'v' from set 'set'
+*/
void QtxSets::remove( ValueSet& set, const QtxValue& v )
{
set.remove( v );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Removes values of set 's2' from set 's1'
+*/
void QtxSets::remove( ValueSet& s1, const ValueSet& s2 )
{
ValueSet::const_iterator anIt = s2.begin(),
s1.remove( *anIt );
}
-//================================================================
-// Function :
-// Purpose :
-//================================================================
+/*!
+ Calculates result of operation
+ \return one of error states
+ \param op - name of operation
+ \param v1 - first operation argument (must be used also to store result)
+ \param v2 - second operation argument
+*/
QtxParser::Error QtxSets::calculate( const QString& op, QtxValue& v1, QtxValue& v2 ) const
{
QtxParser::Error err = QtxParser::OK;
#include "Qtx.h"
#include "QtxOperations.h"
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxStdOperations
+ Provides simplified interface for standard operations.
+ Conatins list of operation names, priority and possible types
+*/
class QTX_EXPORT QtxStdOperations : public QtxOperations
{
public:
ListOfTypes myTypes;
};
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxArithmetics
+ Provides set of arithmetic operations for parser
+*/
class QTX_EXPORT QtxArithmetics : public QtxStdOperations
{
public:
virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const;
};
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxLogic
+ Provides set of logic operations for parser
+*/
class QTX_EXPORT QtxLogic : public QtxStdOperations
{
public:
virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const;
};
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxFunctions
+ Provides set of more complex operations for parser (sqrt, sin, cos, etc)
+*/
class QTX_EXPORT QtxFunctions : public QtxStdOperations
{
public:
virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const;
};
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxStrings
+ Provides set of string operations for parser
+*/
class QTX_EXPORT QtxStrings : public QtxStdOperations
{
public:
virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const;
};
-//================================================================
-// Class :
-// Purpose :
-//================================================================
+/*!
+ \class QtxSets
+ Provides set of operations with sets for parser
+*/
class QTX_EXPORT QtxSets : public QtxStdOperations
{
public:
#include <qlineedit.h>
+/*!
+ Constructor
+*/
QtxTable::QtxTable( QWidget* parent, const char* name )
: QTable( parent, name ),
myHeaderEditor( 0 ),
connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) );
}
+/*!
+ Constructor
+*/
QtxTable::QtxTable( int numRows, int numCols, QWidget* parent, const char* name )
: QTable( numRows, numCols, parent, name ),
myHeaderEditor( 0 ),
connect( horizontalScrollBar(), SIGNAL( valueChanged( int ) ), this, SLOT( onScrollBarMoved( int ) ) );
}
+/*!
+ Destructor
+*/
QtxTable::~QtxTable()
{
}
+/*!
+ \return true if header is editable
+ \param o - header orientation
+*/
bool QtxTable::headerEditable( Orientation o ) const
{
return myHeaderEditable.contains( o ) ? myHeaderEditable[o] : false;
}
+/*!
+ Changes editable state of header
+ \param o - header orientation
+ \param on - new state
+*/
void QtxTable::setHeaderEditable( Orientation o, const bool on )
{
if ( headerEditable( o ) == on )
hdr->removeEventFilter( this );
}
+/*!
+ Starts edition of header
+ \param o - header orientation
+ \param sec - column/row
+*/
bool QtxTable::editHeader( Orientation o, const int sec )
{
return beginHeaderEdit( o, sec );
}
+/*!
+ Finishes edition of header
+ \param accept - whether new value must be accepted
+*/
void QtxTable::endEditHeader( const bool accept )
{
endHeaderEdit( accept );
}
+/*!
+ Finishes edition and hides table
+*/
void QtxTable::hide()
{
endHeaderEdit();
QTable::hide();
}
+/*!
+ Custom event filter
+ Starts edition of header by double click
+ Finishes edition by escape/return/enter pressing
+*/
bool QtxTable::eventFilter( QObject* o, QEvent* e )
{
if ( e->type() == QEvent::MouseButtonDblClick )
return QTable::eventFilter( o, e );
}
+/*!
+ SLOT: called on scroll
+*/
void QtxTable::onScrollBarMoved( int )
{
updateHeaderEditor();
}
+/*!
+ SLOT: called on header size changing
+*/
void QtxTable::onHeaderSizeChange( int, int, int )
{
if ( sender() == myEditedHeader )
updateHeaderEditor();
}
+/*!
+ Custom resize event handler
+*/
void QtxTable::resizeEvent( QResizeEvent* e )
{
QTable::resizeEvent( e );
updateHeaderEditor();
}
+/*!
+ Starts edition of header
+ \param o - header orientation
+ \param sec - column/row
+*/
bool QtxTable::beginHeaderEdit( Orientation o, const int section )
{
if ( !headerEditable( o ) || !header( o ) || !header( o )->isVisibleTo( this ) )
return true;
}
+/*!
+ Finishes edition of header
+ \param accept - whether new value must be accepted
+*/
void QtxTable::endHeaderEdit( const bool accept )
{
if ( !isHeaderEditing() )
}
}
+/*!
+ \return true if header is being edited
+*/
bool QtxTable::isHeaderEditing() const
{
return myHeaderEditor && myEditedHeader && myEditedSection != -1;
}
+/*!
+ Creates and \return header editor
+ \param hdr - header
+ \param sec - column/row
+ \param init - init editor with value
+*/
QWidget* QtxTable::createHeaderEditor( QHeader* hdr, const int sec, const bool init )
{
QLineEdit* ed = new QLineEdit( 0 );
return ed;
}
+/*!
+ Initialize editor with value
+ \param hdr - header
+ \param sec - column/row
+ \param editor - editor
+*/
void QtxTable::setHeaderContentFromEditor( QHeader* hdr, const int sec, QWidget* editor )
{
if ( !hdr || !editor )
hdr->setLabel( sec, ((QLineEdit*)editor)->text() );
}
+/*!
+ \return header
+ \param o - orientation
+*/
QHeader* QtxTable::header( Orientation o ) const
{
return o == Horizontal ? horizontalHeader() : verticalHeader();
}
+/*!
+ Starts edition of header
+ \param o - header orientation
+ \param p - point
+*/
void QtxTable::beginHeaderEdit( Orientation o, const QPoint& p )
{
QHeader* hdr = header( o );
beginHeaderEdit( o, sec );
}
+/*!
+ \return rectangle of header section
+ \param hdr - header
+ \param sec - column/row
+*/
QRect QtxTable::headerSectionRect( QHeader* hdr, const int sec ) const
{
QRect r( -1, -1, -1, -1 );
return r;
}
+/*!
+ Updates header editor
+*/
void QtxTable::updateHeaderEditor()
{
if ( !myHeaderEditor || !myEditedHeader || myEditedSection < 0 )
bool myVisible;
};
+/*!
+ Constructor
+*/
QtxToolBar::Watcher::Watcher( QtxToolBar* cont )
: QObject( cont ),
myCont( cont ),
installFilters();
}
+/*!
+ Custom event filter
+*/
bool QtxToolBar::Watcher::eventFilter( QObject* o, QEvent* e )
{
if ( o == myCont && e->type() == QEvent::ChildInserted )
return false;
}
+/*!
+ Sets internal visibility state to true
+*/
void QtxToolBar::Watcher::shown( QtxToolBar* tb )
{
if ( tb != myCont )
myVisible = true;
}
+/*!
+ Sets internal visibility state to false
+*/
void QtxToolBar::Watcher::hided( QtxToolBar* tb )
{
if ( tb != myCont )
myVisible = false;
}
+/*!
+ Shows corresponding QtxToolBar
+*/
void QtxToolBar::Watcher::showContainer()
{
if ( !myCont )
myCont = cont;
}
+/*!
+ Hides corresponding QtxToolBar
+*/
void QtxToolBar::Watcher::hideContainer()
{
if ( !myCont )
myCont = cont;
}
+/*!
+ Event handler of custom events
+*/
void QtxToolBar::Watcher::customEvent( QCustomEvent* e )
{
switch ( e->type() )
}
}
+/*!
+ Installs event filters
+*/
void QtxToolBar::Watcher::installFilters()
{
if ( !myCont )
}
}
+/*!
+ Update visibility state
+*/
void QtxToolBar::Watcher::updateVisibility()
{
if ( !myCont )
vis ? showContainer() : hideContainer();
}
+/*!
+ Updates icon
+*/
void QtxToolBar::Watcher::updateIcon()
{
if ( !myCont || !myCont->widget() )
myCont->setIcon( ico ? *ico : QPixmap() );
}
+/*!
+ Updates caption
+*/
void QtxToolBar::Watcher::updateCaption()
{
if ( myCont && myCont->widget() && !myCont->widget()->caption().isNull() )
}
/*!
- Class: QtxToolBar [Public]
- Descr:
+ Constructor
*/
-
QtxToolBar::QtxToolBar( const bool watch, const QString& label, QMainWindow* main,
QWidget* parent, bool newLine, const char* name, WFlags f )
: QToolBar( label, main, parent, newLine, name, f ),
myWatcher = new Watcher( this );
}
+/*!
+ Constructor
+*/
QtxToolBar::QtxToolBar( const QString& label, QMainWindow* main,
QWidget* parent, bool newLine, const char* name, WFlags f )
: QToolBar( label, main, parent, newLine, name, f ),
{
}
+/*!
+ Constructor
+*/
QtxToolBar::QtxToolBar( const bool watch, QMainWindow* main, const char* name )
: QToolBar( main, name ),
myWatcher( 0 ),
myWatcher = new Watcher( this );
}
+/*!
+ Constructor
+*/
QtxToolBar::QtxToolBar( QMainWindow* main, const char* name )
: QToolBar( main, name ),
myWatcher( 0 ),
{
}
+/*!
+ Destructor
+*/
QtxToolBar::~QtxToolBar()
{
}
+/*!
+ Change the toolbar's main widget
+ \param wid - new main widget
+*/
void QtxToolBar::setWidget( QWidget* wid )
{
if ( wid )
}
}
+/*!
+ \return true if toolbar is stretchable
+*/
bool QtxToolBar::isStretchable() const
{
return myStretch;
}
+/*!
+ Sets stretchable state of toolbar
+ \param on - new state
+*/
void QtxToolBar::setStretchable( const bool on )
{
if ( myStretch == on )
}
}
+/*!
+ \return the recommended size for the widget
+*/
QSize QtxToolBar::sizeHint() const
{
QSize sz = QToolBar::sizeHint();
return sz;
}
+/*!
+ \return the recommended minimum size for the widget
+*/
QSize QtxToolBar::minimumSizeHint() const
{
QSize sz = QToolBar::minimumSizeHint();
return sz;
}
+/*!
+ Shows toolbar
+*/
void QtxToolBar::show()
{
if ( myWatcher )
QToolBar::show();
}
+/*!
+ Hides toolbar
+*/
void QtxToolBar::hide()
{
if ( myWatcher )
#define TOOLTIP_SHOW_DELAY 0500
#define TOOLTIP_HIDE_DELAY 7000
+/*!
+ Constructor
+*/
QtxToolTip::QtxToolTip( QWidget* parent )
: QLabel( parent, "", WStyle_Customize | WStyle_NoBorder | WX11BypassWM | WStyle_Tool | WStyle_StaysOnTop | WType_TopLevel )
{
myShowDelayTime = 5000;
}
+/*!
+ Destructor
+*/
QtxToolTip::~QtxToolTip()
{
}
+/*!
+ Custom event filter
+*/
bool QtxToolTip::eventFilter( QObject* o, QEvent* e )
{
if ( ( e->type() == QEvent::Destroy ) || ( e->type() == QEvent::Close ) || ( e->type() == QEvent::Hide ) )
return false;
}
+/*!
+ Shows tool tip
+ \param aPos - position
+ \param text - tooltip text
+ \param aWidgetRegion - rectangle
+*/
void QtxToolTip::showTip( const QPoint& aPos, const QString& text, const QRect& aWidgetRegion )
{
QFontMetrics theFM = fontMetrics();
showTip( QRect( QPoint( aPos.x(), aPos.y() + 10 ), QSize( theWidth, theHeight ) ), text, aWidgetRegion );
}
+/*!
+ Shows tool tip
+ \param aRegion - tooltip region
+ \param text - tooltip text
+ \param aWidgetRegion - widget rectangle
+*/
void QtxToolTip::showTip( const QRect& aRegion, const QString& text, const QRect& aWidgetRegion )
{
setText( text );
show();
}
+/*!
+ Hides tooltip
+*/
void QtxToolTip::hideTip()
{
hide();
mySleepTimer->stop();
}
+/*!
+ It is called when there is a possibility that a tool tip should be shown and
+ must decide whether there is a tool tip for the point p in the widget that this QToolTip object relates to
+ \param pos - position
+*/
void QtxToolTip::maybeTip( const QPoint& pos )
{
QString text;
}
}
+/*!
+ SLOT: called when sleep time is out
+*/
void QtxToolTip::onSleepTimeOut()
{
mySleepTimer->stop();
hideTip();
}
+/*!
+ SLOT: called when wake time is out
+*/
void QtxToolTip::onWakeUpTimeOut()
{
myWakeUpTimer->stop();
maybeTip( pos );
}
+/*!
+ Custom mouse press event handler
+*/
void QtxToolTip::mousePressEvent( QMouseEvent* e )
{
hideTip();
QApplication::sendEvent( reciever, me );
}
+/*!
+ Custom mouse double click event handler
+*/
void QtxToolTip::mouseDoubleClickEvent( QMouseEvent* e )
{
hideTip();
QApplication::sendEvent( reciever, me );
}
+/*!
+ Sets wake delay time
+ \param theTime
+*/
void QtxToolTip::setWakeUpDelayTime( int theTime )
{
if( !(theTime < 0) )
myWakeUpDelayTime = theTime;
}
+/*!
+ Sets show delay time
+ \param theTime
+*/
void QtxToolTip::setShowDelayTime( int theTime )
{
if( !(theTime < 0) )
myShowDelayTime = theTime;
}
+/*!
+ \return timer measuring time of sleeping
+*/
QTimer* QtxToolTip::sleepTimer() const
{
return mySleepTimer;
}
+/*!
+ \return timer measuring time of waking up
+*/
QTimer* QtxToolTip::wakeUpTimer() const
{
return myWakeUpTimer;
#include <qworkspace.h>
#include <qwidgetlist.h>
+/*!
+ Constructor
+*/
QtxWorkspaceAction::QtxWorkspaceAction( QWorkspace* ws, QObject* parent, const char* name )
: QtxAction( tr( "Controls windows into workspace" ), tr( "Workspace management" ), 0, parent, name ),
myFlags( Standard ),
connect( myItem[VTile], SIGNAL( activated() ), this, SLOT( tileHorizontal() ) );
}
+/*!
+ Destructor
+*/
QtxWorkspaceAction::~QtxWorkspaceAction()
{
}
+/*!
+ \return corresponding workspace
+*/
QWorkspace* QtxWorkspaceAction::workspace() const
{
return myWorkspace;
}
+/*!
+ \return set of action flags
+*/
int QtxWorkspaceAction::items() const
{
return myFlags;
}
+/*!
+ Sets action flags
+ \param flags - new set of flags
+*/
void QtxWorkspaceAction::setItems( const int flags )
{
if ( !flags || flags == myFlags || !( flags & Operations ) )
myFlags = flags;
}
+/*!
+ \return true if action contains all flags
+ \param flags - new set of flags
+*/
bool QtxWorkspaceAction::hasItems( const int flags ) const
{
return ( myFlags & flags ) == flags;
}
+/*!
+ \return accelerator of item
+ \param id - item id
+*/
int QtxWorkspaceAction::accel( const int id ) const
{
int a = 0;
return a;
}
+/*!
+ \return icons of item
+ \param id - item id
+*/
QIconSet QtxWorkspaceAction::iconSet( const int id ) const
{
QIconSet ico;
return ico;
}
+/*!
+ \return menu text of item
+ \param id - item id
+*/
QString QtxWorkspaceAction::menuText( const int id ) const
{
QString txt;
return txt;
}
+/*!
+ \return status tip of item
+ \param id - item id
+*/
QString QtxWorkspaceAction::statusTip( const int id ) const
{
QString txt;
return txt;
}
+/*!
+ Changes accelerator of item
+ \param id - item id
+ \param a - new accelerator
+*/
void QtxWorkspaceAction::setAccel( const int id, const int a )
{
if ( myItem.contains( id ) )
myItem[id]->setAccel( a );
}
+/*!
+ Changes icons of item
+ \param id - item id
+ \param ico - new icons
+*/
void QtxWorkspaceAction::setIconSet( const int id, const QIconSet& ico )
{
if ( myItem.contains( id ) )
myItem[id]->setIconSet( ico );
}
+/*!
+ Changes menu text of item
+ \param id - item id
+ \param txt - new menu text
+*/
void QtxWorkspaceAction::setMenuText( const int id, const QString& txt )
{
if ( myItem.contains( id ) )
myItem[id]->setMenuText( txt );
}
+/*!
+ Changes status tip of item
+ \param id - item id
+ \param txt - new status tip
+*/
void QtxWorkspaceAction::setStatusTip( const int id, const QString& txt )
{
if ( myItem.contains( id ) )
myItem[id]->setStatusTip( txt );
}
+/*!
+ Adds action to widget
+ \param wid - widget
+*/
bool QtxWorkspaceAction::addTo( QWidget* wid )
{
return addTo( wid, -1 );
}
+/*!
+ Adds action to widget
+ \param wid - widget
+ \param idx - position
+*/
bool QtxWorkspaceAction::addTo( QWidget* wid, const int idx )
{
if ( !wid || !wid->inherits( "QPopupMenu" ) )
return true;
}
+/*!
+ Removes action from widget
+ \param wid - widget
+*/
bool QtxWorkspaceAction::removeFrom( QWidget* wid )
{
if ( !wid || !wid->inherits( "QPopupMenu" ) )
return true;
}
+/*!
+ Performs action
+ \param type - action type
+*/
void QtxWorkspaceAction::perform( const int type )
{
switch ( type )
}
}
+/*!
+ Performs tile action
+*/
void QtxWorkspaceAction::tile()
{
QWorkspace* ws = workspace();
ws->tile();
}
+/*!
+ Performs cascade action
+*/
void QtxWorkspaceAction::cascade()
{
QWorkspace* ws = workspace();
it.current()->resize( int( w * 0.8 ), int( h * 0.8 ) );
}
+/*!
+ Performs tile vertical action
+*/
void QtxWorkspaceAction::tileVertical()
{
QWorkspace* wrkSpace = workspace();
}
}
+/*!
+ Performs tile horizontal action
+*/
void QtxWorkspaceAction::tileHorizontal()
{
QWorkspace* wrkSpace = workspace();
}
}
+/*!
+ SLOT: called just before the popup menu is displayed, updates popup
+*/
void QtxWorkspaceAction::onAboutToShow()
{
const QObject* obj = sender();
updatePopup( (QPopupMenu*)obj );
}
+/*!
+ SLOT: called when popup menu is destroyed, removes it from menu
+*/
void QtxWorkspaceAction::onPopupDestroyed( QObject* obj )
{
myMenu.remove( (QPopupMenu*)obj );
}
+/*!
+ Updates popup
+ \param pm - popup menu
+*/
void QtxWorkspaceAction::checkPopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
}
}
+/*!
+ Clears and refills popup and updates state of actions
+ \param pm - popup menu
+*/
void QtxWorkspaceAction::updatePopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
myItem[VTile]->setEnabled( count );
}
+/*!
+ Clears popup
+ \param pm - popup menu
+*/
int QtxWorkspaceAction::clearPopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
return idx;
}
+/*!
+ Fills popup with items
+ \param pm - popup menu
+ \param idx - position
+*/
void QtxWorkspaceAction::fillPopup( QPopupMenu* pm, const int idx )
{
if ( !pm )
}
}
+/*!
+ SLOT: called when popup item corresponding to window is activated, activates window
+*/
void QtxWorkspaceAction::onItemActivated( int idx )
{
QWorkspace* ws = workspace();
#define DARK_COLOR_LIGHT 250
/*!
- Class: QtxWorkstack [Public]
- Descr:
+ Constructor
*/
-
QtxWorkstack::QtxWorkstack( QWidget* parent )
: QWidget( parent ),
myWin( 0 ),
base->addWidget( mySplit );
}
+/*!
+ Destructor
+*/
QtxWorkstack::~QtxWorkstack()
{
}
+/*!
+ \return list of all widgets in all areas
+*/
QWidgetList QtxWorkstack::windowList() const
{
QPtrList<QtxWorkstackArea> lst;
return widList;
}
+/*!
+ \return list of all widgets in active area
+*/
QWidgetList QtxWorkstack::splitWindowList() const
{
return myArea ? myArea->widgetList() : QWidgetList();
}
+/*!
+ \return active widget
+*/
QWidget* QtxWorkstack::activeWindow() const
{
return myWin;
}
+/*!
+ Splits widgets
+ \param o - orientation (Qt::Orientation)
+*/
void QtxWorkstack::split( const int o )
{
QtxWorkstackArea* area = myWorkArea;
}
/*!
-* \brief Split workarea of the given widget on two parts.
-* \param wid - widget, belonging to this workstack
-* \param o - orientation of splitting (Qt::Horizontal or Qt::Vertical)
-* \param type - type of splitting, see <VAR>SplitType</VAR> enumeration
+ \brief Split workarea of the given widget on two parts.
+ \param wid - widget, belonging to this workstack
+ \param o - orientation of splitting (Qt::Horizontal or Qt::Vertical)
+ \param type - type of splitting, see <VAR>SplitType</VAR> enumeration
*/
void QtxWorkstack::Split (QWidget* wid, const Qt::Orientation o, const SplitType type)
{
}
/*!
-* \brief Put given widget on top of its workarea
-* \param wid - widget, belonging to this workstack
+ \brief Put given widget on top of its workarea
+ \param wid - widget, belonging to this workstack
*/
/*
void QtxWorkstack::OnTop (QWidget* wid)
*/
/*!
-* \brief Move widget(s) from source workarea into target workarea
-* or just reorder widgets inside one workarea.
-* \param wid1 - widget from target workarea
-* \param wid2 - widget from source workarea
-* \param all - if this parameter is TRUE, all widgets from source workarea will
-* be moved into the target one, else only the \a wid2 will be moved
-*
-* Move \a wid2 in target workarea. Put it right after \a wid1.
-* If value of boolean argument is TRUE, all widgets from source workarea
-* will be moved together with \a wid2, source workarea will be deleted.
-* If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place.
+ \brief Move widget(s) from source workarea into target workarea
+ or just reorder widgets inside one workarea.
+ \param wid1 - widget from target workarea
+ \param wid2 - widget from source workarea
+ \param all - if this parameter is TRUE, all widgets from source workarea will
+ be moved into the target one, else only the \a wid2 will be moved
+
+ Move \a wid2 in target workarea. Put it right after \a wid1.
+ If value of boolean argument is TRUE, all widgets from source workarea
+ will be moved together with \a wid2, source workarea will be deleted.
+ If \a wid1 and \a wid2 belongs to one workarea, simple reordering will take place.
*/
void QtxWorkstack::Attract ( QWidget* wid1, QWidget* wid2, const bool all )
{
return 0;
}
+/*!
+ Redistributes space among widgets equally
+*/
void QtxWorkstack::distributeSpace( QSplitter* split ) const
{
if ( !split )
split->setSizes( szList );
}
+/*!
+ Splits widgets vertically
+*/
void QtxWorkstack::splitVertical()
{
split( Qt::Horizontal );
}
+/*!
+ Splits widgets horizontally
+*/
void QtxWorkstack::splitHorizontal()
{
split( Qt::Vertical );
}
+/*!
+ SLOT: called if action "Rename" is activated, changes caption of widget
+*/
void QtxWorkstack::onRename()
{
if ( !myWorkWin )
myWorkWin->setCaption( newName );
}
+/*!
+ Wraps area into new splitter
+ \return new splitter
+*/
QSplitter* QtxWorkstack::wrapSplitter( QtxWorkstackArea* area )
{
if ( !area )
return wrap;
}
+/*!
+ Reparenst and adds widget
+ \param wid - widget
+ \param pWid - parent widget
+ \param after - after widget
+*/
void QtxWorkstack::insertWidget( QWidget* wid, QWidget* pWid, QWidget* after )
{
if ( !wid || !pWid )
activeWindow()->close();
}
+/*!
+ SLOT: called on area is destroyed
+ Sets focus to neighbour area
+*/
void QtxWorkstack::onDestroyed( QObject* obj )
{
QtxWorkstackArea* area = (QtxWorkstackArea*)obj;
QApplication::postEvent( this, new QCustomEvent( QEvent::User ) );
}
+/*!
+ SLOT: called on window activating
+*/
void QtxWorkstack::onWindowActivated( QWidget* wid )
{
const QObject* obj = sender();
setActiveArea( (QtxWorkstackArea*)obj );
}
+/*!
+ SLOT: called on window deactivating
+*/
void QtxWorkstack::onDeactivated( QtxWorkstackArea* area )
{
if ( myArea != area )
QApplication::postEvent( this, new QCustomEvent( QEvent::User ) );
}
+/*!
+ Creates and shows popup menu for area
+ \param w - area
+ \param p - popup position
+*/
void QtxWorkstack::onContextMenuRequested( QWidget* w, QPoint p )
{
QtxWorkstackArea* anArea = dynamic_cast<QtxWorkstackArea*>( (QObject*)sender() );
myWorkArea = 0;
}
+/*!
+ Custom child event handler, inserts widget to active or current area
+*/
void QtxWorkstack::childEvent( QChildEvent* e )
{
if ( e->inserted() && e->child()->isWidgetType() )
QWidget::childEvent( e );
}
+/*!
+ Handler of custom events
+*/
void QtxWorkstack::customEvent( QCustomEvent* e )
{
updateState();
}
+/*!
+ \return splitter corresponding to area
+ \param area
+*/
QSplitter* QtxWorkstack::splitter( QtxWorkstackArea* area ) const
{
if ( !area )
return split;
}
+/*!
+ Fills list with children splitters
+ \param split - parent splitter
+ \param splitList - list to be filled with
+ \param rec - recursive search of children
+*/
void QtxWorkstack::splitters( QSplitter* split, QPtrList<QSplitter>& splitList, const bool rec ) const
{
if ( !split )
}
}
+/*!
+ Fills list with children areas
+ \param split - parent splitter
+ \param areaList - list to be filled with
+ \param rec - recursive search of children
+*/
void QtxWorkstack::areas( QSplitter* split, QPtrList<QtxWorkstackArea>& areaList, const bool rec ) const
{
if ( !split )
}
}
+/*!
+ \return active area
+*/
QtxWorkstackArea* QtxWorkstack::activeArea() const
{
return myArea;
}
+/*!
+ \return active area or current area or create new area of there is no one
+*/
QtxWorkstackArea* QtxWorkstack::targetArea()
{
QtxWorkstackArea* area = activeArea();
return area;
}
+/*!
+ \return current area (that has focus)
+*/
QtxWorkstackArea* QtxWorkstack::currentArea() const
{
QtxWorkstackArea* area = 0;
return area;
}
+/*!
+ Creates new area
+*/
QtxWorkstackArea* QtxWorkstack::createArea( QWidget* parent ) const
{
QtxWorkstackArea* area = new QtxWorkstackArea( parent );
return area;
}
+/*!
+ Sets area as active
+ \param area
+*/
void QtxWorkstack::setActiveArea( QtxWorkstackArea* area )
{
QWidget* oldCur = myWin;
emit windowActivated( myWin );
}
+/*!
+ \return neighbour area
+ \param area - area to search neighbour
+*/
QtxWorkstackArea* QtxWorkstack::neighbourArea( QtxWorkstackArea* area ) const
{
QPtrList<QtxWorkstackArea> lst;
return na;
}
+/*!
+ \return area covering point
+ \param p - point
+*/
QtxWorkstackArea* QtxWorkstack::areaAt( const QPoint& p ) const
{
QtxWorkstackArea* area = 0;
return area;
}
+/*!
+ Update
+*/
void QtxWorkstack::updateState()
{
updateState( mySplit );
}
+/*!
+ Update splitters
+*/
void QtxWorkstack::updateState( QSplitter* split )
{
QPtrList<QSplitter> recList;
split->hide();
}
+/*!
+ Gets splitter info for debug
+ \param split - splitter
+ \param info - string to be filled with info
+*/
void QtxWorkstack::splitterInfo( QSplitter* split, QString& info ) const
{
if ( !split )
}
-// cuts starting '(' symbol and ending '(' symbol
+//Cuts starting '(' symbol and ending '(' symbol
void cutBrackets( QString& parameters )
{
if ( !parameters.isEmpty() && parameters[0] == '(' && parameters[parameters.length()-1] == ')' )
parameters = parameters.mid( 1, parameters.length()-2 );
}
-// for strings like "(splitter orientation=0 children=2 sizes=332:478" returns values of
-// parameters. For example, getValue( example, "children" ) returns "2"
-// getValue( example, "sizes" ) returns "332:478"
+/*
+ for strings like "(splitter orientation=0 children=2 sizes=332:478" returns values of
+ parameters. For example, getValue( example, "children" ) returns "2"
+ getValue( example, "sizes" ) returns "332:478"
+*/
QString getValue( const QString& str, const QString& valName )
{
int i = str.find( valName );
return QString( "" );
}
-// checks format of splitter parameters string
+/*
+ checks format of splitter parameters string
+*/
bool checkFormat( const QString& parameters )
{
QString params( parameters );
return ok;
}
-// returns children of splitter in a list. Children are separated by '(' and ')' symbols
+/*
+ Returns children of splitter in a list. Children are separated by '(' and ')' symbols
+*/
QStringList getChildren( const QString& str )
{
QStringList lst;
return view;
}
-// installs a splitter described by given parameters string
+/*!
+ Installs a splitter described by given parameters string
+*/
void QtxWorkstack::setSplitter( QSplitter* splitter, const QString& parameters, QMap< QSplitter*, QValueList<int> >& sMap )
{
if ( !::checkFormat( parameters ) ) {
}
}
-// Restore workstack's configuration stored in 'parameters' string
+/*!
+ Restore workstack's configuration stored in 'parameters' string
+*/
QtxWorkstack& QtxWorkstack::operator<<( const QString& parameters )
{
// clear the main splitter - remove all child splitters and empty areas from it
return (*this);
}
-// Example of string produced by operator>> :
-// "(splitter orientation=0 sizes=186:624 (views active='OCCViewer_0_0' 'OCCViewer_0_0')
-// (views active='VTKViewer_0_0' 'VTKViewer_0_0'))"
+/*!
+ Example of string produced by operator>> :
+ "(splitter orientation=0 sizes=186:624 (views active='OCCViewer_0_0' 'OCCViewer_0_0')
+/ (views active='VTKViewer_0_0' 'VTKViewer_0_0'))"
+*/
QtxWorkstack& QtxWorkstack::operator>>( QString& outParameters )
{
splitterInfo( mySplit, outParameters );
/*!
- Class: QtxWorkstackArea [Internal]
- Descr:
+ Constructor
*/
-
QtxWorkstackArea::QtxWorkstackArea( QWidget* parent )
: QWidget( parent )
{
qApp->installEventFilter( this );
}
+/*!
+ Destructor
+*/
QtxWorkstackArea::~QtxWorkstackArea()
{
qApp->removeEventFilter( this );
}
+/*!
+ \return true if area is empty
+*/
bool QtxWorkstackArea::isEmpty() const
{
bool res = false;
return !res;
}
+/*!
+ Adds widget to area
+ \param wid - widget
+ \param idx - index
+*/
void QtxWorkstackArea::insertWidget( QWidget* wid, const int idx )
{
if ( !wid )
wid->setFocus();
}
+/*!
+ Creates and shows popup menu for area
+ \param p - popup position
+*/
void QtxWorkstackArea::onContextMenuRequested( QPoint p )
{
const QtxWorkstackTabBar* bar = ::qt_cast<const QtxWorkstackTabBar*>( sender() );
emit contextMenuRequested( wid, p );
}
+/*!
+ SLOT: called when widget added to area is destroyed, removes widget from area
+*/
void QtxWorkstackArea::onWidgetDestroyed()
{
if ( sender() )
removeWidget( (QWidget*)sender(), false );
}
+/*!
+ Removes widget from area
+ \param wid - widget
+ \param del - auto deleting
+*/
void QtxWorkstackArea::removeWidget( QWidget* wid, const bool del )
{
if ( !myList.contains( wid ) )
updateState();
}
+/*!
+ \return list of visible widgets
+*/
QWidgetList QtxWorkstackArea::widgetList() const
{
QWidgetList lst;
return lst;
}
+/*!
+ \return active widget
+*/
QWidget* QtxWorkstackArea::activeWidget() const
{
return widget( myBar->currentTab() );
}
+/*!
+ Sets widget as active
+ \param wid - widget
+*/
void QtxWorkstackArea::setActiveWidget( QWidget* wid )
{
myBar->setCurrentTab( widgetId( wid ) );
}
+/*!
+ \return true if area contains widget
+ \param wid - widget
+*/
bool QtxWorkstackArea::contains( QWidget* wid ) const
{
return myList.contains( wid );
}
+/*!
+ Shows area
+*/
void QtxWorkstackArea::show()
{
QMap<QWidget*, bool> map;
setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false );
}
+/*!
+ Hides area
+*/
void QtxWorkstackArea::hide()
{
QMap<QWidget*, bool> map;
setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false );
}
+/*!
+ \return true if area is active
+*/
bool QtxWorkstackArea::isActive() const
{
QtxWorkstack* ws = workstack();
return ws->activeArea() == this;
}
+/*!
+ Update active state of tab bar
+*/
void QtxWorkstackArea::updateActiveState()
{
myBar->setActive( isActive() );
}
+/*!
+ \return corresponding workstack
+*/
QtxWorkstack* QtxWorkstackArea::workstack() const
{
QtxWorkstack* ws = 0;
return ws;
}
+/*!
+ Custom event filter
+*/
bool QtxWorkstackArea::eventFilter( QObject* o, QEvent* e )
{
if ( o->isWidgetType() )
return false;
}
+/*!
+ \return rectangle of area in order to draw drop rectangle on area
+*/
QRect QtxWorkstackArea::floatRect() const
{
QRect r = myStack->geometry();
return QRect( mapToGlobal( r.topLeft() ), mapToGlobal( r.bottomRight() ) );
}
+/*!
+ \return rectangle of tab in order to draw drop rectangle on tab
+ \param idx - tab index
+*/
QRect QtxWorkstackArea::floatTab( const int idx ) const
{
return myBar->tabRect( idx );
}
+/*!
+ \return tab covering point
+ \param p - point
+*/
int QtxWorkstackArea::tabAt( const QPoint& p ) const
{
int idx = -1;
return idx;
}
+/*!
+ Event handler for custom events
+*/
void QtxWorkstackArea::customEvent( QCustomEvent* e )
{
switch ( e->type() )
}
}
+/*!
+ Custom focus in event handler
+*/
void QtxWorkstackArea::focusInEvent( QFocusEvent* e )
{
QWidget::focusInEvent( e );
emit activated( activeWidget() );
}
+/*!
+ Custom mouse press event handler
+*/
void QtxWorkstackArea::mousePressEvent( QMouseEvent* e )
{
QWidget::mousePressEvent( e );
emit activated( activeWidget() );
}
+/*!
+ SLOT: called if button close is pressed
+*/
void QtxWorkstackArea::onClose()
{
QWidget* wid = activeWidget();
wid->close();
}
+/*!
+ SLOT: called if tab page is selected
+*/
void QtxWorkstackArea::onSelected( int id )
{
updateCurrent();
emit activated( activeWidget() );
}
+/*!
+ SLOT: called if active tab page is dragged
+*/
void QtxWorkstackArea::onDragActiveTab()
{
QtxWorkstackChild* c = child( activeWidget() );
new QtxWorkstackDrag( workstack(), c );
}
+/*!
+ SLOT: called on child is destroyed, removes from area
+*/
void QtxWorkstackArea::onChildDestroyed( QObject* obj )
{
QtxWorkstackChild* child = (QtxWorkstackChild*)obj;
QApplication::postEvent( this, new QCustomEvent( (QEvent::Type)RemoveWidget, wid ) );
}
+/*!
+ SLOT: called on child is shown
+*/
void QtxWorkstackArea::onChildShown( QtxWorkstackChild* c )
{
setWidgetShown( c->widget(), true );
}
+/*!
+ SLOT: called on child is hidden
+*/
void QtxWorkstackArea::onChildHided( QtxWorkstackChild* c )
{
setWidgetShown( c->widget(), false );
}
+/*!
+ SLOT: called on child is activated
+*/
void QtxWorkstackArea::onChildActivated( QtxWorkstackChild* c )
{
setWidgetActive( c->widget() );
}
+/*!
+ SLOT: called on child caption is changed
+*/
void QtxWorkstackArea::onChildCaptionChanged( QtxWorkstackChild* c )
{
updateTab( c->widget() );
}
+/*!
+ Raises widget when active tab is changed
+*/
void QtxWorkstackArea::updateCurrent()
{
QMap<QWidget*, bool> map;
setBlocked( itr.current(), map.contains( itr.current() ) ? map[itr.current()] : false );
}
+/*!
+ Updates tab
+ \param wid - tab widget
+*/
void QtxWorkstackArea::updateTab( QWidget* wid )
{
QTab* tab = myBar->tab( widgetId( wid ) );
tab->setText( wid->caption() );
}
+/*!
+ \return widget
+ \param id - widget id
+*/
QWidget* QtxWorkstackArea::widget( const int id ) const
{
QWidget* wid = 0;
return wid;
}
+/*!
+ \return widget id
+ \param wid - widget
+*/
int QtxWorkstackArea::widgetId( QWidget* wid ) const
{
int id = -1;
return id;
}
+/*!
+ \return true if widget is visible
+ \param wid - widget
+*/
bool QtxWorkstackArea::widgetVisibility( QWidget* wid ) const
{
bool res = false;
return res;
}
+/*!
+ Sets widget as active
+ \param wid - widget
+*/
void QtxWorkstackArea::setWidgetActive( QWidget* wid )
{
int id = widgetId( wid );
myBar->setCurrentTab( id );
}
+/*!
+ Shows/hides widget
+ \param wid - widget
+ \param on - new shown state
+*/
void QtxWorkstackArea::setWidgetShown( QWidget* wid, const bool on )
{
if ( isBlocked( wid ) || !myInfo.contains( wid ) || myInfo[wid].vis == on )
updateState();
}
+/*!
+ Update
+*/
void QtxWorkstackArea::updateState()
{
bool updBar = myBar->isUpdatesEnabled();
}
}
+/*!
+ \return first unshared widget id
+*/
int QtxWorkstackArea::generateId() const
{
QMap<int, int> map;
return id;
}
+/*!
+ \return true if widget is blocked
+ \param wid - widget
+*/
bool QtxWorkstackArea::isBlocked( QWidget* wid ) const
{
return myBlock.contains( wid );
}
+/*!
+ Blocks widget
+ \param wid - widget
+ \param on - new blocked state
+*/
void QtxWorkstackArea::setBlocked( QWidget* wid, const bool on )
{
if ( on )
myBlock.remove( wid );
}
+/*!
+ \return child corresponding to widget
+ \param wid - widget
+*/
QtxWorkstackChild* QtxWorkstackArea::child( QWidget* wid ) const
{
QtxWorkstackChild* res = 0;
}
/*!
- Class: QtxWorkstackChild [Internal]
- Descr:
+ Constructor
*/
-
QtxWorkstackChild::QtxWorkstackChild( QWidget* wid, QWidget* parent )
: QHBox( parent ),
myWidget( wid )
connect( myWidget, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
}
+/*!
+ Destructor
+*/
QtxWorkstackChild::~QtxWorkstackChild()
{
qApp->removeEventFilter( this );
disconnect( widget(), SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
}
+/*!
+ \return corresponding widget
+*/
QWidget* QtxWorkstackChild::widget() const
{
return myWidget;
}
+/*!
+ Custom event filter
+*/
bool QtxWorkstackChild::eventFilter( QObject* o, QEvent* e )
{
if ( o->isWidgetType() )
return QHBox::eventFilter( o, e );
}
+/*!
+ SLOT: called on object is destroyed
+*/
void QtxWorkstackChild::onDestroyed( QObject* obj )
{
if ( obj != widget() )
deleteLater();
}
+/*!
+ Custom child event handler
+*/
void QtxWorkstackChild::childEvent( QChildEvent* e )
{
if ( e->type() == QEvent::ChildRemoved && e->child() == widget() )
}
/*!
- Class: QtxWorkstackTabBar [Internal]
- Descr:
+ Constructor
*/
-
QtxWorkstackTabBar::QtxWorkstackTabBar( QWidget* parent )
: QTabBar( parent ),
myId( -1 )
{
}
+/*!
+ Destructor
+*/
QtxWorkstackTabBar::~QtxWorkstackTabBar()
{
}
+/*!
+ Sets tab bar as active or inactive
+ \param on - new active state
+*/
void QtxWorkstackTabBar::setActive( const bool on )
{
QFont aFont = font();
update();
}
+/*!
+ \return tab rectangle
+ \param idx - tab index
+*/
QRect QtxWorkstackTabBar::tabRect( const int idx ) const
{
QRect r;
return r;
}
+/*!
+ Custom mouse move event handler
+*/
void QtxWorkstackTabBar::mouseMoveEvent( QMouseEvent* e )
{
if ( myId != -1 && !tab( myId )->rect().contains( e->pos() ) )
QTabBar::mouseMoveEvent( e );
}
+/*!
+ Custom mouse press event handler
+*/
void QtxWorkstackTabBar::mousePressEvent( QMouseEvent* e )
{
QTabBar::mousePressEvent( e );
myId = currentTab();
}
+/*!
+ Custom mouse release event handler
+*/
void QtxWorkstackTabBar::mouseReleaseEvent( QMouseEvent* e )
{
QTabBar::mouseReleaseEvent( e );
emit contextMenuRequested( e->globalPos() );
}
+/*!
+ Custom context menu event handler
+*/
void QtxWorkstackTabBar::contextMenuEvent( QContextMenuEvent* e )
{
if ( e->reason() != QContextMenuEvent::Mouse )
emit contextMenuRequested( e->globalPos() );
}
+/*!
+ Draws label of tab bar
+*/
void QtxWorkstackTabBar::paintLabel( QPainter* p, const QRect& br, QTab* t, bool has_focus ) const
{
if ( currentTab() != t->identifier() )
}
/*!
- Class: QtxWorkstackDrag [Internal]
- Descr:
+ Constructor
*/
-
QtxWorkstackDrag::QtxWorkstackDrag( QtxWorkstack* ws, QtxWorkstackChild* child )
: QObject( 0 ),
myWS( ws ),
qApp->installEventFilter( this );
}
+/*!
+ Destructor
+*/
QtxWorkstackDrag::~QtxWorkstackDrag()
{
qApp->removeEventFilter( this );
endDrawRect();
}
+/*!
+ Custom event filter
+*/
bool QtxWorkstackDrag::eventFilter( QObject*, QEvent* e )
{
switch ( e->type() )
return true;
}
+/*!
+ Updates internal field with widget-target for dropping
+ \param p - current point of dragging
+*/
void QtxWorkstackDrag::updateTarget( const QPoint& p )
{
int tab = -1;
setTarget( area, tab );
}
+/*!
+ \return target area for dropping by point
+ \param p - current point of dragging
+ \param tab - index of tab to dropping
+*/
QtxWorkstackArea* QtxWorkstackDrag::detectTarget( const QPoint& p, int& tab ) const
{
if ( p.isNull() )
return area;
}
+/*!
+ Changes target area for dropping
+ \param area - new target area
+ \param tab - tab index
+*/
void QtxWorkstackDrag::setTarget( QtxWorkstackArea* area, const int tab )
{
if ( !area || ( myArea == area && tab == myTab ) )
drawRect();
}
+/*!
+ Called on widget drop, inserts dropped widget to area
+*/
void QtxWorkstackDrag::dropWidget()
{
if ( myArea )
myArea->insertWidget( myChild->widget(), myTab );
}
+/*!
+ Draws float rect
+*/
void QtxWorkstackDrag::drawRect()
{
if ( !myPainter || !myArea )
myPainter->drawRect( tr );
}
+/*!
+ Deletes internal painter
+*/
void QtxWorkstackDrag::endDrawRect()
{
delete myPainter;
myPainter = 0;
}
+/*!
+ Initialize internal painter
+*/
void QtxWorkstackDrag::startDrawRect()
{
if ( myPainter )
#include <qpopupmenu.h>
#include <qwidgetlist.h>
+/*!
+ Constructor
+*/
QtxWorkstackAction::QtxWorkstackAction( QtxWorkstack* ws, QObject* parent, const char* name )
: QtxAction( tr( "Controls windows into workstack" ), tr( "Workstack management" ), 0, parent, name ),
myFlags( Standard ),
connect( myItem[HSplit], SIGNAL( activated() ), ws, SLOT( splitHorizontal() ) );
}
+/*!
+ Destructor
+*/
QtxWorkstackAction::~QtxWorkstackAction()
{
}
+/*!
+ \return corresponding workstack
+*/
QtxWorkstack* QtxWorkstackAction::workstack() const
{
return myWorkstack;
}
+/*!
+ \return set of action flags
+*/
int QtxWorkstackAction::items() const
{
return myFlags;
}
+/*!
+ Sets action flags
+ \param flags - new set of flags
+*/
void QtxWorkstackAction::setItems( const int flags )
{
if ( !flags || flags == myFlags || !( flags & Split ) )
myFlags = flags;
}
+/*!
+ \return true if action contains all flags
+ \param flags - new set of flags
+*/
bool QtxWorkstackAction::hasItems( const int flags ) const
{
return ( myFlags & flags ) == flags;
}
+/*!
+ \return accelerator of item
+ \param id - item id
+*/
int QtxWorkstackAction::accel( const int id ) const
{
int a = 0;
return a;
}
+/*!
+ \return icons of item
+ \param id - item id
+*/
QIconSet QtxWorkstackAction::iconSet( const int id ) const
{
QIconSet ico;
return ico;
}
+/*!
+ \return menu text of item
+ \param id - item id
+*/
QString QtxWorkstackAction::menuText( const int id ) const
{
QString txt;
return txt;
}
+/*!
+ \return status tip of item
+ \param id - item id
+*/
QString QtxWorkstackAction::statusTip( const int id ) const
{
QString txt;
return txt;
}
+/*!
+ Changes accelerator of item
+ \param id - item id
+ \param a - new accelerator
+*/
void QtxWorkstackAction::setAccel( const int id, const int a )
{
if ( myItem.contains( id ) )
myItem[id]->setAccel( a );
}
+/*!
+ Changes icons of item
+ \param id - item id
+ \param ico - new icons
+*/
void QtxWorkstackAction::setIconSet( const int id, const QIconSet& ico )
{
if ( myItem.contains( id ) )
myItem[id]->setIconSet( ico );
}
+/*!
+ Changes menu text of item
+ \param id - item id
+ \param txt - new menu text
+*/
void QtxWorkstackAction::setMenuText( const int id, const QString& txt )
{
if ( myItem.contains( id ) )
myItem[id]->setMenuText( txt );
}
+/*!
+ Changes status tip of item
+ \param id - item id
+ \param txt - new status tip
+*/
void QtxWorkstackAction::setStatusTip( const int id, const QString& txt )
{
if ( myItem.contains( id ) )
myItem[id]->setStatusTip( txt );
}
+/*!
+ Adds action to widget
+ \param wid - widget
+*/
bool QtxWorkstackAction::addTo( QWidget* wid )
{
return addTo( wid, -1 );
}
+/*!
+ Adds action to widget
+ \param wid - widget
+ \param idx - position
+*/
bool QtxWorkstackAction::addTo( QWidget* wid, const int idx )
{
if ( !wid || !wid->inherits( "QPopupMenu" ) )
return true;
}
+/*!
+ Removes action from widget
+ \param wid - widget
+*/
bool QtxWorkstackAction::removeFrom( QWidget* wid )
{
if ( !wid || !wid->inherits( "QPopupMenu" ) )
return true;
}
+/*!
+ Performs action
+ \param type - action type
+*/
void QtxWorkstackAction::perform( const int type )
{
switch ( type )
}
}
+/*!
+ SLOT: called just before the popup menu is displayed, updates popup
+*/
void QtxWorkstackAction::onAboutToShow()
{
const QObject* obj = sender();
updatePopup( (QPopupMenu*)obj );
}
+/*!
+ SLOT: called when popup menu is destroyed, removes it from menu
+*/
void QtxWorkstackAction::onPopupDestroyed( QObject* obj )
{
myMenu.remove( (QPopupMenu*)obj );
}
+/*!
+ Updates popup
+ \param pm - popup menu
+*/
void QtxWorkstackAction::checkPopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
}
}
+/*!
+ Clears and refills popup and updates state of actions
+ \param pm - popup menu
+*/
void QtxWorkstackAction::updatePopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
myItem[HSplit]->setEnabled( count > 1 );
}
+/*!
+ Clears popup
+ \param pm - popup menu
+*/
int QtxWorkstackAction::clearPopup( QPopupMenu* pm )
{
if ( !myMenu.contains( pm ) )
return idx;
}
+/*!
+ Fills popup with items
+ \param pm - popup menu
+ \param idx - position
+*/
void QtxWorkstackAction::fillPopup( QPopupMenu* pm, const int idx )
{
if ( !pm )
}
}
+/*!
+ SLOT: called when popup item corresponding to window is activated, activates window
+*/
void QtxWorkstackAction::onItemActivated( int idx )
{
QtxWorkstack* ws = workstack();
using namespace std;
+/*!
+ Constructor
+*/
HelpWindow::HelpWindow(QWidget* parent, const char* name )
: QMainWindow( parent, name, WType_TopLevel | WDestructiveClose )
{
#define SPACING_SIZE 6
#define MIN_SPIN_WIDTH 100
+/*!
+ Constructor
+*/
IntervalWindow::IntervalWindow ( QWidget* parent )
: QDialog( parent, "IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose )
{
END_OF("IntervalWindow constructor")
}
+
+/*!
+ Destructor
+*/
IntervalWindow::~IntervalWindow() {}
-/*
+
+/*!
Sets start interval size
*/
void IntervalWindow::setValue(const int size)
mySpinBox->setValue(size);
}
-/*
+/*!
Gets interval size
*/
int IntervalWindow::getValue()
return mySpinBox->value();
}
-/*
+/*!
gets a pointer to myButtonOk
*/
QPushButton* IntervalWindow::Ok()
return myButtonOk;
}
-/*
+/*!
gets a pointer to myButtonCancel
*/
QPushButton* IntervalWindow::Cancel()
LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl
-CPPFLAGS+=$(QT_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS+=$(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil
+CPPFLAGS+=$(QT_INCLUDES) $(KERNEL_CXXFLAGS)
+LDFLAGS+=$(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil
@CONCLUDE@
a.append( QString( " )<br> " ) + tr( "in directory" ) + QString( " " ));
a.append( BOLD( c_info.cdir ) );
+ time_t aTime;
a.append( QString( "<br>" ) + tr( "begins" ) + QString( " " ) );
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
a.append( BOLD( t1 ) );
delete [] t1;
if (c_info.tc_hello != 0 )
{
- char * t2 = (char * )duplicate(ctime(&c_info.tc_hello));
+ aTime = time_t(c_info.tc_hello);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
a.append( tr( "last signal" ) + QString(" : ") );
a.append( BOLD( t2 ) );
}
if ((c_info.tc_end - c_info.difftime) != 0)
{
- char * t3 = (char * )duplicate(ctime(&c_info.tc_end));
+ aTime = time_t(c_info.tc_end);
+ char * t3 = (char * )duplicate(ctime(&aTime));
t3 [strlen(t3) -1 ] = ' ';
a.append( tr( "ends" ) + QString( " " ) );
a.append( BOLD( t3 ) );
_history->clear();
try
{
+ time_t aTime;
_serverhistory = _VarComponents->history();
for (CORBA::ULong i=0; i<_serverhistory->length(); i++)
{
ASSERT( c_info.name!=NULL);
QString a;
a.setNum(int(c_info.pid));
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
- char * t2 = (char * )duplicate(ctime(&c_info.tc_end));
+ aTime = time_t(c_info.tc_end);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\
a, QString(c_info.pwname), QString(c_info.machine), \
_clients->clear();
try
{
+ time_t aTime;
_serverclients = _VarComponents->getall();
for (CORBA::ULong i=0; i<_serverclients->length(); i++)
{
ASSERT( c_info.name!=NULL);
QString a;
a.setNum(int(c_info.pid));
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
- char * t2 = (char * )duplicate(ctime(&c_info.tc_hello));
+ aTime = time_t(c_info.tc_hello);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\
a, QString(c_info.pwname), QString(c_info.machine), \
END_OF("slotSelectRefresh");
}
+/*!
+ SLOT: called when button OK is clicked in interval window
+*/
void RegWidget::slotIntervalOk()
{
BEGIN_OF("slotIntervalOk");
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vadim SANDLER (OCN)
# Module : SalomeApp
-//======================================================================================================
-// File: ResourceExporter.cxx
-// Created: 27/06/05
-// Author: Vadim SANDLER
-// Copyright (C) CEA 2005
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
//
-// This tool provides command-line interface allowing to modify user preferences.
-// The tool can be used by the compilation procedures in order to set default preferences for the module.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
//
-// Usage:
-// ResourceExporter <parameters-list>
-// Parameters have the following format:
-// '<section>:<name>=<new_value>' - to set <new_value> for the user
-// preference <name> from the <section> section;
-// '<section>:<name>+=<value>[|<separator>]' - the <value> is appended to the current value
-// of the preference <name> from the <section> section;
-// separator is used to concatenate old and new values,
-// by default comma (',') symbol is used
-// '-<section>:<name>' - to remove user preference <name> from the <section>
-// section. Note that only use preference file is
-// influenced, you may need to use '<section>:<name>=""'
-// option
-// The number of parameters is limeted only by maximum possible length of the command line.
-//======================================================================================================
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
+/*!
+ File: ResourceExporter.cxx
+ Created: 27/06/05
+ Author: Vadim SANDLER
+ Copyright (C) CEA 2005
+
+ This tool provides command-line interface allowing to modify user preferences.
+ The tool can be used by the compilation procedures in order to set default preferences for the module.
+
+ Usage:
+ ResourceExporter <parameters-list>
+ Parameters have the following format:
+ '<section>:<name>=<new_value>' - to set <new_value> for the user
+ preference <name> from the <section> section;
+ '<section>:<name>+=<value>[|<separator>]' - the <value> is appended to the current value
+ of the preference <name> from the <section> section;
+ separator is used to concatenate old and new values,
+ by default comma (',') symbol is used
+ '-<section>:<name>' - to remove user preference <name> from the <section>
+ section. Note that only use preference file is
+ influenced, you may need to use '<section>:<name>=""'
+ option
+ The number of parameters is limeted only by maximum possible length of the command line.
+*/
#include "SUIT_ResourceMgr.h"
#include <qfile.h>
#include <qapplication.h>
#include <iostream>
-//============================================================
-// salomeVersion(): get the SALOME version number
-//============================================================
+/*!
+ \return the SALOME version number
+*/
static QString salomeVersion()
{
QString path( ::getenv( "GUI_ROOT_DIR" ) );
return ver;
}
-//============================================================
-// help(): print the help information
-//============================================================
+/*!
+ print the help information
+*/
static void help()
{
std::cout << "" << std::endl;
std::cout << "" << std::endl;
}
-//============================================================
-// main(): application main() function
-//============================================================
+/*!
+ application main() function
+*/
int main( int argc, char** argv )
{
QApplication app( argc, argv );
SALOME_Exception.idl \
SALOME_GenericObj.idl
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -DHAVE_CONFIG_H
+CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -DHAVE_CONFIG_H
LDFLAGS+= $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(OGL_LIBS) -lSalomeApp -lvtkCommonPython -lvtkGraphicsPython -lvtkImagingPython
# -lVTKViewer
using namespace std;
-//////////////////////////////////////////////////////////////////////////////
-// VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based)
-// All methods are implemented using Event mechanism:
-// - getRenderer()
-// - getRenderWindow()
-// - getRenderWindowInteractor()
-// These methods open new VTK viewer if there is no one opened.
-// In case of error methods return None object in Python.
-//////////////////////////////////////////////////////////////////////////////
+/*!
+ VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based)
+ All methods are implemented using Event mechanism:
+ - getRenderer()
+ - getRenderWindow()
+ - getRenderWindowInteractor()
+ These methods open new VTK viewer if there is no one opened.
+ In case of error methods return None object in Python.
+*/
static PyObject* GetPyClass(const char* theClassName){
static PyObject *aVTKModule = NULL;
SALOME_ContainerManager.idl \
SALOME_Component.idl
-CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome -D__CALL_OLD_METHODS__
+CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS) -D__CALL_OLD_METHODS__
LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
LDFLAGS += -lPyInterp -lSalomeApp
//
// See http://www.salome-platform.org/
//
-//=============================================================================
-// File : SALOME_PYQT_Module.cxx
-// Created : 25/04/05
-// Author : Vadim SANDLER
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
#include "SALOME_PYQT_Module.h"
#include <qfile.h>
#include <qdom.h>
#include <qworkspace.h>
+#include <qmenubar.h>
#include <qpopupmenu.h>
#include "SALOME_PYQT_SipDefs.h"
using namespace std;
-///////////////////////////////////////////////////////////////////////////////
-// Default name of the module, replaced at the moment of module creation
+/*!
+ \var __DEFAULT_NAME__ - Default name of the module, replaced at the moment of module creation
+*/
const char* __DEFAULT_NAME__ = "SALOME_PYQT_Module";
-///////////////////////////////////////////////////////////////////////////////
-// Default menu group number
+/*!
+ \var __DEFAULT_GROUP__ - Default menu group number
+*/
const int __DEFAULT_GROUP__ = 40;
-///////////////////////////////////////////////////////////////////////////////
// If __CALL_OLD_METHODS__ macro is not defined the invoking of obsolete Python
// module's methods like setSetting(), definePopup(), etc. is blocked.
// This macro is defined by default (in Makefile)
const bool IsCallOldMethods = false;
#endif
-///////////////////////////////////////////////////////////////////////////////
// NB: Python requests.
// General rule for Python requests created by SALOME_PYQT_Module:
// all requests should be executed SYNCHRONOUSLY within the main GUI thread.
// However, it is obligatory that ANY Python call is wrapped with a request object,
// so that ALL Python API calls are serialized with PyInterp_Dispatcher.
-///////////////////////////////////////////////////////////////////////////////
-//=============================================================================
-// The class for parsing of the XML resource files.
-// Used for backward compatibility with existing Python modules.
-//=============================================================================
+/*!
+ \class SALOME_PYQT_XmlHandler
+ The class for parsing of the XML resource files.
+ Used for backward compatibility with existing Python modules.
+*/
class SALOME_PYQT_XmlHandler
{
public:
SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module, const QString& fileName );
void createActions();
+ void clearActions();
void createPopup ( QPopupMenu* menu,
const QString& context,
const QString& parent,
const QString& object );
protected:
- void createToolBar ( QDomNode& parentNode );
- void createMenu ( QDomNode& parentNode,
- const int parentMenuId = -1 );
+ void createToolBar ( QDomNode& parentNode );
+ void createMenu ( QDomNode& parentNode,
+ const int parentMenuId = -1,
+ QPopupMenu* parentPopup = 0 );
void insertPopupItems( QDomNode& parentNode,
QPopupMenu* menu );
private:
SALOME_PYQT_Module* myModule;
QDomDocument myDoc;
+ QStringList myMenuItems;
+ QStringList myCurrentMenu;
+ bool myMenuCreated;
};
-//=============================================================================
// SALOME_PYQT_Module class implementation (implements CAM_Module API for
// all Python-based SALOME module
-//=============================================================================
// While the SalomePyQtGUI library is not imported in Python it's initialization function
// should be called manually (and only once) in order to initialize global sip data
/*!
* Constructor
*/
-SALOME_PYQT_Module::SALOME_PYQT_Module() :
- SalomeApp_Module( __DEFAULT_NAME__ ), myModule( 0 ), myXmlHandler ( 0 )
+SALOME_PYQT_Module::SALOME_PYQT_Module()
+ : SalomeApp_Module( __DEFAULT_NAME__ ),
+ myModule( 0 ),
+ myXmlHandler ( 0 )
{
}
*/
void SALOME_PYQT_Module::initialize( CAM_Application* app )
{
+ MESSAGE( "SALOME_PYQT_Module::initialize" );
+
SalomeApp_Module::initialize( app );
// Try to get XML resource file name
QString aFileName = aName + "_" + aLang + ".xml";
aFileName = aResMgr->path( "resources", aName, aFileName );
- // parse XML file if it is found and create actions
- if ( !myXmlHandler && !aFileName.isEmpty() ) {
+ // create XML handler instance
+ if ( !myXmlHandler && !aFileName.isEmpty() && QFile::exists( aFileName ) )
myXmlHandler = new SALOME_PYQT_XmlHandler( this, aFileName );
- myXmlHandler->createActions();
- }
// perform internal initialization and call module's initialize() method
// InitializeReq: request class for internal init() operation
connect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ),
this, SLOT( onMenuHighlighted( int, int ) ) );
+ // create menus & toolbars from XML file if required
+ if ( myXmlHandler )
+ myXmlHandler->createActions();
+
+ // CustomizeReq: request class for internal customize() operation
+ class CustomizeReq : public PyInterp_Request
+ {
+ public:
+ CustomizeReq( SUIT_Study* _study,
+ SALOME_PYQT_Module* _obj )
+ : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true)
+ myStudy ( _study ),
+ myObj ( _obj ) {}
+
+ protected:
+ virtual void execute()
+ {
+ myObj->customize( myStudy );
+ }
+
+ private:
+ SUIT_Study* myStudy;
+ SALOME_PYQT_Module* myObj;
+ };
+
+ // Posting the request
+ PyInterp_Dispatcher::Get()->Exec( new CustomizeReq( theStudy, this ) );
+
return true;
}
disconnect( menuMgr(), SIGNAL( menuHighlighted( int, int ) ),
this, SLOT( onMenuHighlighted( int, int ) ) );
- bool res = SalomeApp_Module::deactivateModule( theStudy );
+ // remove menus & toolbars created from XML file if required
+ if ( myXmlHandler )
+ myXmlHandler->clearActions();
// deactivate menus, toolbars, etc
setMenuShown( false );
// Posting the request
PyInterp_Dispatcher::Get()->Exec( new DeactivateReq( myInterp, theStudy, this ) );
- return res;
+ return SalomeApp_Module::deactivateModule( theStudy );
+}
+
+/*!
+ * Called when study desktop is activated.
+ * Used for notifying about changing of the active study.
+ */
+void SALOME_PYQT_Module::studyActivated()
+{
+ // StudyChangedReq: request class for internal studyChanged() operation
+ class StudyChangedReq : public PyInterp_Request
+ {
+ public:
+ StudyChangedReq( SUIT_Study* _study,
+ SALOME_PYQT_Module* _obj )
+ : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true)
+ myStudy ( _study ),
+ myObj ( _obj ) {}
+
+ protected:
+ virtual void execute()
+ {
+ myObj->studyChanged( myStudy );
+ }
+
+ private:
+ SUIT_Study* myStudy;
+ SALOME_PYQT_Module* myObj;
+ };
+
+ // Posting the request
+ PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) );
}
/*!
myInitModule = this;
- if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
- // call Python module's setWorkspace() method
- setWorkSpace();
- } //__CALL_OLD_METHODS__
-
// then call Python module's initialize() method
// ... first get python lock
PyLockWrapper aLock = myInterp->GetLockWrapper();
* Performs internal activation:
* - initializes/gets the Python interpreter (one per study)
* - imports the Python GUI module
- * - calls Python module's setSettings() method (obsolete function, used for compatibility with old code)
- * or activate() method (for new modules)
+ * - calls Python module's activate() method (for new modules)
*/
void SALOME_PYQT_Module::activate( SUIT_Study* theStudy )
{
// get python lock
PyLockWrapper aLock = myInterp->GetLockWrapper();
+ // call Python module's activate() method (for the new modules)
+ if(PyObject_HasAttrString(myModule , "activate")){
+ PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) );
+ if( !res1 ) {
+ PyErr_Print();
+ }
+ }
+}
+
+/*!
+ * Performs additional customization after module is activated:
+ * - gets the Python interpreter (one per study)
+ * - imports the Python GUI module
+ * - calls Python module's setSettings() method (obsolete function, used for compatibility with old code)
+ */
+void SALOME_PYQT_Module::customize ( SUIT_Study* theStudy )
+{
+ // get study Id
+ SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( theStudy );
+ int aStudyId = aStudy ? aStudy->studyDS()->StudyId() : 0;
+
+ // initialize Python subinterpreter (on per study) and put it in <myInterp> variable
+ initInterp( aStudyId );
+ if ( !myInterp )
+ return; // Error
+
+ // import Python GUI module
+ importModule();
+ if ( !myModule )
+ return; // Error
+
+ if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+ // call Python module's setWorkspace() method
+ setWorkSpace();
+ } //__CALL_OLD_METHODS__
+
+ // get python lock
+ PyLockWrapper aLock = myInterp->GetLockWrapper();
+
if ( IsCallOldMethods ) { //__CALL_OLD_METHODS__
// call Python module's setSettings() method (obsolete)
if(PyObject_HasAttrString(myModule , "setSettings")){
}
}
} //__CALL_OLD_METHODS__
-
- // call Python module's activate() method (for the new modules)
- if(PyObject_HasAttrString(myModule , "activate")){
- PyObjWrapper res1( PyObject_CallMethod( myModule, "activate", "" ) );
- if( !res1 ) {
- PyErr_Print();
- }
- }
}
/*!
if ( !myModule )
return; // Error
+ if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+ // call Python module's setWorkspace() method
+ setWorkSpace();
+ } //__CALL_OLD_METHODS__
+
// get python lock
PyLockWrapper aLock = myInterp->GetLockWrapper();
return QString( "" );
}
-/*!
- * Called when study desktop is activated.
- * Used for notifying about changing of the active study.
- */
-void SALOME_PYQT_Module::studyActivated()
-{
- // StudyChangedReq: request class for internal studyChanged() operation
- class StudyChangedReq : public PyInterp_Request
- {
- public:
- StudyChangedReq( SUIT_Study* _study,
- SALOME_PYQT_Module* _obj )
- : PyInterp_Request( 0, true ), // this request should be processed synchronously (sync == true)
- myStudy ( _study ),
- myObj ( _obj ) {}
-
- protected:
- virtual void execute()
- {
- myObj->studyChanged( myStudy );
- }
-
- private:
- SUIT_Study* myStudy;
- SALOME_PYQT_Module* myObj;
- };
-
- // Posting the request
- PyInterp_Dispatcher::Get()->Exec( new StudyChangedReq( application()->activeStudy(), this ) );
-}
-
/*!
* Processes context popup menu request
* - calls Python module's definePopup(...) method (obsolete function, used for compatibility with old code)
return;
}
// ... then call a method
- PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "" ) );
+ int embedded = 1;
+ PyObjWrapper aRes( PyObject_CallMethod( aMod, "salome_init", "ii", theStudyId, embedded ) );
if( !aRes ) {
// Error!
PyErr_Print();
* Also these methods are used to register created from outside menus
* in order to enable dynamic menus handling.
*/
+
+
+/*! Create tool bar with name \a name, if it was't created before.
+ * \retval -1 - if tool manager was't be created.
+ */
int SALOME_PYQT_Module::createTool( const QString& name )
{
return SalomeApp_Module::createTool( name );
}
+/*! Create tool.
+ * Insert QAction with id \a id from action map(myActionMap) to tool manager.
+ *\param id - integer
+ *\param tBar - integer
+ *\param idx - integer
+ *\retval integer id of new action in tool manager.
+ *\retval Return -1 if something wrong.
+ */
int SALOME_PYQT_Module::createTool( const int id, const int tBar, const int idx )
{
return SalomeApp_Module::createTool( id, tBar, idx );
}
+/*! Create tool.
+ * Insert QAction with id \a id from action map(myActionMap) to tool manager.
+ *\param id - integer
+ *\param tBar - QString&
+ *\param idx - integer
+ *\retval integer id of new action in tool manager.
+ *\retval Return -1 if something wrong.
+ */
int SALOME_PYQT_Module::createTool( const int id, const QString& tBar, const int idx )
{
return SalomeApp_Module::createTool( id, tBar, idx );
}
+/*! Create tool. Register action \a a with id \a id.
+ * Insert QAction to tool manager.
+ *\param a - QAction
+ *\param tBar - integer
+ *\param id - integer
+ *\param idx - integer
+ *\retval integer id of new action in tool manager.
+ *\retval Return -1 if something wrong.
+ */
int SALOME_PYQT_Module::createTool( QAction* a, const int tBar, const int id, const int idx )
{
return SalomeApp_Module::createTool( a, tBar, id, idx );
}
+/*! Create tool. Register action \a a with id \a id.
+ * Insert QAction to tool manager.
+ *\param a - QAction
+ *\param tBar - QString&
+ *\param id - integer
+ *\param idx - integer
+ *\retval integer id of new action in tool manager.
+ *\retval Return -1 if something wrong.
+ */
int SALOME_PYQT_Module::createTool( QAction* a, const QString& tBar, const int id, const int idx )
{
return SalomeApp_Module::createTool( a, tBar, id, idx );
}
+
int SALOME_PYQT_Module::createMenu( const QString& subMenu, const int menu, const int id, const int group, const int idx, const bool constantMenu )
{
bool exists = hasMenu( subMenu, menu );
registerMenu( regId, menu, constantMenu );
return regId;
}
+
int SALOME_PYQT_Module::createMenu( const QString& subMenu, const QString& menu, const int id, const int group, const int idx, const bool constantMenu )
{
QStringList menus = QStringList::split( "|", menu, false );
pid = createMenu( subMenu, pid, id, group, idx, constantMenu );
return pid;
}
+
int SALOME_PYQT_Module::createMenu( const int id, const int menu, const int group, const int idx, const bool constantMenu )
{
int regId = SalomeApp_Module::createMenu( id, menu, group, idx );
registerMenu( regId, menu, constantMenu );
return regId;
}
+
int SALOME_PYQT_Module::createMenu( const int id, const QString& menu, const int group, const int idx, const bool constantMenu )
{
QStringList menus = QStringList::split( "|", menu, false );
pid = createMenu( id, pid, group, idx, constantMenu );
return pid;
}
+
int SALOME_PYQT_Module::createMenu( QAction* a, const int menu, const int id, const int group, const int idx, const bool constantMenu )
{
int regId = SalomeApp_Module::createMenu( a, menu, id, group, idx );
registerMenu( regId, menu, constantMenu );
return regId;
}
+
int SALOME_PYQT_Module::createMenu( QAction* a, const QString& menu, const int id, const int group, const int idx, const bool constantMenu )
{
QStringList menus = QStringList::split( "|", menu, false );
pid = createMenu( a, pid, id, group, idx, constantMenu );
return pid;
}
+
QAction* SALOME_PYQT_Module::createSeparator()
{
return SalomeApp_Module::separator();
}
+
QAction* SALOME_PYQT_Module::action( const int id ) const
{
return SalomeApp_Module::action( id );
}
+
int SALOME_PYQT_Module::actionId( const QAction* a ) const
{
return SalomeApp_Module::actionId( a );
}
+
QAction* SALOME_PYQT_Module::createAction( const int id, const QString& text, const QString& icon,
const QString& menu, const QString& tip, const int key,
const bool toggle )
{
- QIconSet anIcon;
- if ( !icon.isEmpty() ) {
- QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( icon ) );
- if ( !pixmap.isNull() )
- anIcon = QIconSet( pixmap );
- }
+ QIconSet anIcon = loadIcon( icon );
QAction* a = action( id );
if ( a ) {
if ( a->text().isEmpty() && !text.isEmpty() ) a->setText( text );
}
return a;
}
+/*!
+ * Load icon from resource file
+ */
+QIconSet SALOME_PYQT_Module::loadIcon( const QString& fileName )
+{
+ QIconSet anIcon;
+ if ( !fileName.isEmpty() ) {
+ QPixmap pixmap = getApp()->resourceMgr()->loadPixmap( name(""), tr( fileName ) );
+ if ( !pixmap.isNull() )
+ anIcon = QIconSet( pixmap );
+ }
+ return anIcon;
+}
/*!
* Returns TRUE if menu already exists
return false;
}
-//=============================================================================
// SALOME_PYQT_XmlHandler class implementation
-//=============================================================================
// gets an tag name for the dom element [ static ]
// returns an empty string if the element does not have tag name
}
// checks the given value for the boolean value [ static ]
-// returns TRUE if string is "true", "yes" or "1"
-static bool checkBool( const QString& value ) {
- return ( value == "true" || value == "yes" || value == "1" );
+// returns TRUE if string represents boolean value:
+// - "true", "yes" or "1" for true
+// - "false", "no" or "0" for false
+// second parameter allows to check certain boolean value
+// - 1: true
+// - 0: false
+// - other value is not taken into account
+static bool checkBool( const QString& value, const int check = -1 ) {
+ QString v = value.lower();
+ if ( ( v == "true" || v == "yes" || v == "1" ) && ( check != 0 ) )
+ return true;
+ if ( ( v == "false" || v == "no" || v == "0" ) && ( check != 1 ) )
+ return true;
+ return false;
}
// checks the given value for the integer value [ static ]
// returns -1 if item is empty or presents and invalid number
-static int checkInt( const QString& value, const int def = -1 )
+static int checkInt( const QString& value, const int def = -1, const int shift = -1 )
{
- return value.isEmpty() ? def : value.toInt();
+ bool bOk;
+ int val = value.toInt( &bOk );
+ if ( !bOk ) val = def;
+ if ( shift > 0 && bOk && val < 0 )
+ val += shift;
+ return val;
}
/*!
* Constructor
*/
-SALOME_PYQT_XmlHandler::SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module, const QString& fileName )
- : myModule( module )
+SALOME_PYQT_XmlHandler::SALOME_PYQT_XmlHandler( SALOME_PYQT_Module* module,
+ const QString& fileName )
+ : myModule( module ),
+ myMenuCreated( false )
{
+ if (fileName.isEmpty() )
+ return;
QFile aFile( fileName );
if ( !aFile.open( IO_ReadOnly ) )
return;
if ( !myDoc.setContent( &aFile ) ) {
- aFile.close();
- return;
+ aFile.close();
+ return;
}
aFile.close();
}
/*!
- Called by SALOME_PYQT_Module::initialize() in order to create actions
- (menus, toolbars, popup menus)
+ * Called by SALOME_PYQT_Module::activate() in order to create actions
+ * (menus, toolbars, popup menus)
*/
void SALOME_PYQT_XmlHandler::createActions()
{
+ // check flag : are menus already created?
+ if ( myMenuCreated && !IsCallOldMethods )
+ return;
+
// get document element
QDomElement aDocElem = myDoc.documentElement();
- // get main menu actions
+ // create main menu actions
QDomNodeList aMenuList = aDocElem.elementsByTagName( "menu-item" );
for ( int i = 0; i < aMenuList.count(); i++ ) {
QDomNode n = aMenuList.item( i );
QDomNode n = aToolsList.item( i );
createToolBar( n );
}
+ // set flag : menus are already created
+ myMenuCreated = true;
+}
+
+/*!
+ * Called by SALOME_PYQT_Module::deactivate() in order to remove actions
+ * (menus, toolbars, popup menus)
+ */
+void SALOME_PYQT_XmlHandler::clearActions()
+{
+ for ( uint i = 0; i < myMenuItems.count(); i++ ) {
+ QMenuData* md = dynamic_cast<QMenuData*>( myModule->getApp()->desktop()->menuBar() );
+ QStringList menus = QStringList::split( ":", myMenuItems[ i ] );
+ for ( uint j = 0; j < menus.count(); j++) {
+ int id = menus[ j ].toInt();
+ QMenuData* smd;
+ QMenuItem* mi = md->findItem( id, &smd );
+ if ( mi && md == smd ) {
+ if ( j == menus.count()-1 || !mi->popup() ) { // last item or not popup
+ md->removeItem( id );
+ break;
+ }
+ else if ( mi->popup() )
+ md = dynamic_cast<QMenuData*>( mi->popup() );
+ }
+ else
+ break;
+ }
+ }
+ myMenuItems.clear();
}
/*!
/*!
Create main menu with child actions
*/
-void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode, const int parentMenuId )
+void SALOME_PYQT_XmlHandler::createMenu( QDomNode& parentNode,
+ const int parentMenuId,
+ QPopupMenu* parentPopup )
{
if ( !myModule )
return;
int group = checkInt( attribute( parentElement, "group-id" ),
myModule->defaultMenuGroup() );
if ( !plabel.isEmpty() ) {
+ QPopupMenu* popup = 0;
+ int menuId = -1;
// create menu
- int menuId = myModule->createMenu( plabel, // label
- parentMenuId, // parent menu ID, should be -1 for main menu
- pid, // ID
- group, // group ID
- ppos, // position
- true ); // create constant menu (not removed by clearMenu())
+ if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+ SUIT_Desktop* desktop = myModule->getApp()->desktop();
+ if ( parentMenuId == -1 ) { // top-level menu
+ QMenuBar* mb = desktop->menuBar();
+ QMenuItem* mi = mb->findItem( pid );
+ if ( mi ) popup = mi->popup();
+ if ( !popup ) {
+ popup = new QPopupMenu( desktop );
+ ppos = checkInt( attribute( parentElement, "pos-id" ), -1, mb->count() );
+ menuId = mb->insertItem( plabel, popup, pid, ppos );
+ myCurrentMenu.push_back( QString::number( menuId ) );
+ myMenuItems.append( myCurrentMenu.join( ":" ) );
+ }
+ else {
+ menuId = pid;
+ myCurrentMenu.push_back( QString::number( menuId ) );
+ }
+ }
+ else {
+ // parentPopup should not be 0 here!
+ QMenuItem* mi = parentPopup->findItem( pid );
+ if ( mi ) popup = mi->popup();
+ if ( !popup ) {
+ popup = new QPopupMenu( desktop );
+ ppos = checkInt( attribute( parentElement, "pos-id" ), -1, popup->count() );
+ menuId = parentPopup->insertItem( plabel, popup, pid, ppos );
+ myCurrentMenu.push_back( QString::number( menuId ) );
+ myMenuItems.append( myCurrentMenu.join( ":" ) );
+ }
+ else {
+ menuId = pid;
+ myCurrentMenu.push_back( QString::number( menuId ) );
+ }
+ }
+ }
+ else { //!__CALL_OLD_METHODS__
+ menuId = myModule->createMenu( plabel, // label
+ parentMenuId, // parent menu ID, should be -1 for main menu
+ pid, // ID
+ group, // group ID
+ ppos, // position
+ true ); // create constant menu (not removed by clearMenu())
+ } // __CALL_OLD_METHODS__
QDomNode node = parentNode.firstChild();
while ( !node.isNull() ) {
if ( node.isElement() ) {
// -1 action ID is not allowed : it means that <item-id> attribute is missed in the XML file!
// also check if the action with given ID is already created
if ( id != -1 ) {
- // create menu action
- QAction* action = myModule->createAction( id, // ID
- tooltip, // tooltip
- icon, // icon
- label, // menu text
- tooltip, // status-bar text
- QKeySequence( accel ), // keyboard accelerator
- toggle ); // toogled action
- myModule->createMenu( action, // action
- menuId, // parent menu ID
- id, // ID (same as for createAction())
- group, // group ID
- pos, // position
- true ); // create constant menu (not removed by clearMenu())
+ if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+ QIconSet iconSet = myModule->loadIcon( icon );
+ pos = checkInt( attribute( elem, "pos-id" ), -1, popup->count() );
+ int aid = iconSet.isNull() ? popup->insertItem( label,
+ myModule,
+ SLOT( onGUIEvent(int) ),
+ QKeySequence( accel ),
+ id,
+ pos ) :
+ popup->insertItem( iconSet,
+ label,
+ myModule,
+ SLOT( onGUIEvent(int) ),
+ QKeySequence( accel ),
+ id,
+ pos );
+ myCurrentMenu.push_back( QString::number( aid ) );
+ myMenuItems.append( myCurrentMenu.join( ":" ) );
+ myCurrentMenu.pop_back();
+ if ( toggle )
+ popup->setItemChecked( aid, checkBool( attribute( elem, "toggle-id" ), 1 ) );
+ }
+ else { //!__CALL_OLD_METHODS__
+ // create menu action
+ QAction* action = myModule->createAction( id, // ID
+ tooltip, // tooltip
+ icon, // icon
+ label, // menu text
+ tooltip, // status-bar text
+ QKeySequence( accel ), // keyboard accelerator
+ toggle ); // toogled action
+ myModule->createMenu( action, // action
+ menuId, // parent menu ID
+ id, // ID (same as for createAction())
+ group, // group ID
+ pos, // position
+ true ); // create constant menu (not removed by clearMenu())
+ } // __CALL_OLD_METHODS__
}
}
else if ( aTagName == "submenu" ) {
// create sub-menu
- createMenu( node, menuId );
+ createMenu( node, menuId, popup );
}
else if ( aTagName == "separator" ) {
// create menu separator
int pos = checkInt( attribute( elem, "pos-id" ) );
int group = checkInt( attribute( elem, "group-id" ),
myModule->defaultMenuGroup() );
- QAction* action = myModule->createSeparator();
- myModule->createMenu( action, // separator action
- menuId, // parent menu ID
- id, // ID
- group, // group ID
- pos, // position
- true ); // create constant menu (not removed by clearMenu())
+ if ( IsCallOldMethods ) { // __CALL_OLD_METHODS__
+ pos = checkInt( attribute( elem, "pos-id" ), -1, popup->count() );
+ int sid = popup->insertSeparator( pos );
+ myCurrentMenu.push_back( QString::number( sid ) );
+ myMenuItems.append( myCurrentMenu.join( ":" ) );
+ myCurrentMenu.pop_back();
+ }
+ else { //!__CALL_OLD_METHODS__
+ QAction* action = myModule->createSeparator();
+ myModule->createMenu( action, // separator action
+ menuId, // parent menu ID
+ id, // ID
+ group, // group ID
+ pos, // position
+ true ); // create constant menu (not removed by clearMenu())
+ } // __CALL_OLD_METHODS__
}
}
node = node.nextSibling();
}
+ myCurrentMenu.pop_back();
}
}
}
myModule->createTool( action, tbId, -1, pos );
}
}
- else if ( aTagName == "separatorTB" ) {
+ else if ( aTagName == "separatorTB" || aTagName == "separator" ) {
// create toolbar separator
int pos = checkInt( attribute( elem, "pos-id" ) );
QAction* action = myModule->createSeparator();
}
}
+/*!
+ * Fill popup menu with items
+ */
void SALOME_PYQT_XmlHandler::insertPopupItems( QDomNode& parentNode, QPopupMenu* menu )
{
if ( !myModule )
//
// See http://www.salome-platform.org/
//
-//=============================================================================
-// File : SALOME_PYQT_Module.h
-// Created : 25/04/05
-// Author : Vadim SANDLER
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
#ifndef SALOME_PYQT_MODULE_H
#define SALOME_PYQT_MODULE_H
int actionId( const QAction* ) const;
QAction* createAction( const int, const QString&, const QString&, const QString&,
const QString&, const int, const bool = false );
+ /* load icon from resource file */
+ QIconSet loadIcon( const QString& fileName );
/* Show/hide menus/toolbars */
void setMenuShown( const bool );
void activate ( SUIT_Study* );
/* internal deactivation */
void deactivate ( SUIT_Study* );
+ /* customization */
+ void customize ( SUIT_Study* );
/* study activation */
void studyChanged( SUIT_Study* );
/* context popup menu processing */
//
// See http://www.salome-platform.org/
//
-//=============================================================================
-// File : SALOME_PYQT_PyInterp.h
-// Created : 25/04/05
-// Author : Christian CAREMOLI, Paul RASCLE, EDF
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
#ifndef SALOME_PYQT_PYINTERP_H
#define SALOME_PYQT_PYINTERP_H
LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl
# Compilation/linkage flags
-CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS += $(QT_INCLUDES) $(SIP_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS)
LIBS += $(PYTHON_LIBS) $(SIP_LIBS) $(PYQT_LIBS) $(VTK_LIBS) $(OGL_LIBS)
LDFLAGS += -lsuit -lCAM -lstd -lqtx -lSalomeApp -lSalomeSession -lEvent -lLogWindow -lVTKViewer -lToolsGUI -lSalomePyQtGUI
//
// See http://www.salome-platform.org/
//
-//=============================================================================
-// File : SalomePyQt.cxx
-// Created : 25/04/05
-// Author : Vadim SANDLER
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
#include "SALOME_PYQT_Module.h" // this include must be first!!!
#include "SalomePyQt.h"
using namespace std;
-//====================================================================================
-// static functions
-//====================================================================================
/*!
- getApplication()
- Returns active application object [ static ]
+ \return active application object [ static ]
*/
static SalomeApp_Application* getApplication() {
if ( SUIT_Session::session() )
}
/*!
- getActiveStudy()
- Gets active study or 0 if there is no study opened [ static ]
+ \return active study or 0 if there is no study opened [ static ]
*/
static SalomeApp_Study* getActiveStudy()
{
return 0;
}
-//====================================================================================
-// SALOME_Selection class.
-//====================================================================================
static QMap<SalomeApp_Application*, SALOME_Selection*> SelMap;
/*!
- SALOME_Selection::GetSelection
Creates or finds the selection object (one per study).
*/
SALOME_Selection* SALOME_Selection::GetSelection( SalomeApp_Application* app )
}
/*!
- SALOME_Selection::SALOME_Selection
Selection constructor.
*/
SALOME_Selection::SALOME_Selection( QObject* p ) : QObject( p ), mySelMgr( 0 )
}
}
/*!
- SALOME_Selection::~SALOME_Selection
Selection destructor. Removes selection object from the map.
*/
SALOME_Selection::~SALOME_Selection()
}
/*!
- SALOME_Selection::onSelMgrDestroyed
Watches for the selection manager destroying when study is closed.
*/
void SALOME_Selection::onSelMgrDestroyed()
}
/*!
- SALOME_Selection::Clear
Clears the selection.
*/
void SALOME_Selection::Clear()
}
/*!
- SALOME_Selection::ClearIObjects
Clears the selection.
*/
void SALOME_Selection::ClearIObjects()
}
/*!
- SALOME_Selection::ClearFilters
Removes all selection filters.
*/
void SALOME_Selection::ClearFilters()
ProcessVoidEvent( new TEvent( mySelMgr ) );
}
-//====================================================================================
-// SalomePyQt class
-//====================================================================================
-
/*!
- SalomePyQt::getDesktop
- Gets desktop. Returns 0 in error.
+ \return desktop (0 if error)
*/
class TGetDesktopEvent: public SALOME_Event {
public:
myResult = (QWidget*)( getApplication()->desktop() );
}
};
+
+/*!
+ \return desktop
+*/
QWidget* SalomePyQt::getDesktop()
{
return ProcessEvent( new TGetDesktopEvent() );
}
/*!
- SalomePyQt::getMainFrame
- Gets workspace widget. Returns 0 in error.
+ \return workspace widget (0 if error)
*/
class TGetMainFrameEvent: public SALOME_Event {
public:
}
}
};
+
+/*!
+ \return workspace widget (0 if error)
+*/
QWidget* SalomePyQt::getMainFrame()
{
return ProcessEvent( new TGetMainFrameEvent() );
}
}
};
+
+/*!
+ \return main menu
+ \retval 0 in error.
+*/
QMenuBar* SalomePyQt::getMainMenuBar()
{
return ProcessEvent( new TGetMainMenuBarEvent() );
}
}
};
+
+/*!
+ \return popup menu
+ \param menu - menu name
+*/
QPopupMenu* SalomePyQt::getPopupMenu( const MenuName menu )
{
return ProcessEvent( new TGetPopupMenuEvent( menu ) );
}
}
};
+
+/*!
+ SalomePyQt::getStudyId
+ Returns active study's ID or 0 if there is no active study.
+*/
int SalomePyQt::getStudyId()
{
return ProcessEvent( new TGetStudyIdEvent() );
myResult = SALOME_Selection::GetSelection( getApplication() );
}
};
+
+/*!
+ Creates a Selection object (to provide a compatibility with previous SALOME GUI).
+ \return just created selection object
+*/
SALOME_Selection* SalomePyQt::getSelection()
{
return ProcessEvent( new TGetSelectionEvent() );
}
}
};
+
+/*!
+ Puts an information message to the desktop's status bar
+ (with optional delay parameter given in seconds)
+ \param msg - message text
+ \param sec - delay in seconds
+*/
void SalomePyQt::putInfo( const QString& msg, const int sec )
{
ProcessVoidEvent( new TPutInfoEvent( msg, sec ) );
}
}
};
+
+/*!
+ \return an active component name or empty string if there is no active component
+*/
const QString SalomePyQt::getActiveComponent()
{
return ProcessEvent( new TGetActiveComponentEvent() );
}
}
};
+
+/*!
+ \return a setting value (as string)
+ This function is obsolete. Use stringSetting(), integerSetting(),
+ boolSetting(), stringSetting() or colorSetting() instead.
+*/
QString SalomePyQt::getSetting( const QString& name )
{
return ProcessEvent( new TGetSettingEvent( name ) );
}
}
};
+
+/*!
+ \return an integer setting from the application preferences
+*/
int SalomePyQt::integerSetting( const QString& section, const QString& name, const int def )
{
return ProcessEvent( new TGetIntSettingEvent( section, name, def ) );
}
}
};
+
+/*!
+ \return an double setting from the application preferences
+*/
double SalomePyQt::doubleSetting( const QString& section, const QString& name, const int def )
{
return ProcessEvent( new TGetDblSettingEvent( section, name, def ) );
}
}
};
+
+/*!
+ \return an boolean setting from the application preferences
+*/
bool SalomePyQt::boolSetting( const QString& section, const QString& name, const bool def )
{
return ProcessEvent( new TGetBoolSettingEvent( section, name, def ) );
}
}
};
+
+/*!
+ \return an string setting from the application preferences
+*/
QString SalomePyQt::stringSetting( const QString& section, const QString& name, const QString& def )
{
return ProcessEvent( new TGetStrSettingEvent( section, name, def ) );
}
}
};
+
+/*!
+ \return a color setting from the application preferences
+*/
QColor SalomePyQt::colorSetting ( const QString& section, const QString& name, const QColor& def )
{
return ProcessEvent( new TGetColorSettingEvent( section, name, def ) );
}
}
};
+
+/*!
+ Displays 'Open/Save file' dialog box and returns a user's choice (file name)
+*/
QString SalomePyQt::getFileName( QWidget* parent,
const QString& initial,
const QStringList& filters,
}
}
};
+
+/*!
+ Displays 'Open files' dialog box and returns a user's choice (a list of file names)
+*/
QStringList SalomePyQt::getOpenFileNames( QWidget* parent,
const QString& initial,
const QStringList& filters,
}
}
};
+
+/*!
+ Displays 'Get Directory' dialog box and returns a user's choice (a directory name)
+*/
QString SalomePyQt::getExistingDirectory( QWidget* parent,
const QString& initial,
const QString& caption )
}
}
};
+
+/*!
+ Dumps the contents of the currently active view to the image file
+ in the given format (JPEG, PNG, BMP are supported)
+*/
bool SalomePyQt::dumpView( const QString& filename )
{
return ProcessEvent( new TDumpViewEvent( filename ) );
myResult = SALOME_PYQT_Module::defaultMenuGroup();
}
};
+
+/*!
+ \return default menu group
+*/
int SalomePyQt::defaultMenuGroup()
{
return ProcessEvent( new TDefMenuGroupEvent() );
}
}
};
-// create new toolbar or get existing by name
+
+/*!
+ create new toolbar or get existing by name
+*/
int SalomePyQt::createTool( const QString& tBar )
{
return ProcessEvent( new TCreateToolEvent( CrTool( tBar ) ) );
}
-// add action with id and index to the existing tollbar
+/*! add action with id and index to the existing tollbar
+*/
int SalomePyQt::createTool( const int id, const int tBar, const int idx )
{
return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) );
}
-// add action with id and index to the existing tollbar
+/*! add action with id and index to the existing tollbar
+*/
int SalomePyQt::createTool( const int id, const QString& tBar, const int idx )
{
return ProcessEvent( new TCreateToolEvent( CrTool( id, tBar, idx ) ) );
}
-// add action with id and index to the existing tollbar
+/*! add action with id and index to the existing tollbar
+*/
int SalomePyQt::createTool( QtxAction* a, const int tBar, const int id, const int idx )
{
return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) );
}
-// add action with id and index to the existing tollbar
+/*! add action with id and index to the existing tollbar
+*/
int SalomePyQt::createTool( QtxAction* a, const QString& tBar, const int id, const int idx )
{
return ProcessEvent( new TCreateToolEvent( CrTool( a, tBar, id, idx ) ) );
//
// See http://www.salome-platform.org/
//
-//=============================================================================
-// File : SalomePyQt.h
-// Created : 25/04/05
-// Author : Vadim SANDLER
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
#ifndef SALOME_PYQT_H
#define SALOME_PYQT_H
+++ /dev/null
-# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Help.py
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-class SalomeDoc:
- def __init__(self, aDoc):
- self.doc = aDoc
- def __repr__(self):
- print self.doc
- return "---"
- def salome(self):
- doc_salome = '''
-MODULE : salome
----------------
-module salome gives access to Salome ressources:
-variables:
-
- salome:orb : CORBA
- salome.naming_service : instance of naming Service class
- methods:
- Resolve(name) : find a CORBA object (ior) by its pathname
- Register(name) : register a CORBA object under a pathname
- salome.lcc : instance of lifeCycleCORBA class
- methods:
- FindOrLoadComponent(server,name) :
- obtain an Engine (CORBA object)
- or launch the Engine if not found,
- with a Server name and an Engine name
- salome.sg
- methods:
- updateObjBrowser(bool):
- getActiveStudyId():
- getActiveStudyName():
-
- SelectedCount(): returns number of selected objects
- getSelected(i): returns entry of selected object number i
- getAllSelected(): returns list of entry of selected objects
- AddIObject(Entry): select an existing Interactive object
- RemoveIObject(Entry): remove object from selection
- ClearIObjects(): clear selection
-
- Display(*Entry):
- DisplayOnly(Entry):
- Erase(Entry):
- DisplayAll():
- EraseAll():
-
- IDToObject(Entry): returns CORBA reference from entry
-
- salome.myStudyName : active Study Name
- salome.myStudyId : active Study Id
- salome.myStudy : the active Study itself (CORBA ior)
- methods : defined in SALOMEDS.idl
-
-methods:
- salome.DumpStudy(study) : Dump a study, given the ior
----
-'''
- print doc_salome
-
- def geompy(self):
- doc_geompy = '''
-MODULE : geompy
----------------
-module geompy provides an encapsulation of GEOM Engine methods
-variables:
- geompy.geom : a Geometry Engine, found or loaded
- at first import of module geompy.
- methods : defined in GEOM_Gen.idl
- geompy.myBuilder : a study builder
- geompy.father : GEOM root in current study (salome.myStudy)
-
-methods:
- addToStudy(aShape, aName) : add the shape into the current study
- --- all methods of GEOM_Gen.idl that returns a shape are encapsulated,
- with the same interface : shapes are named with their ior
-'''
- print doc_geompy
-
- def supervision(self):
- doc_supervision = '''
-MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor
------------------------------------------------------------------
-this modules provide access to Editor and Executor Engine methods
-
-See SUPERV.idl
-
-In order to run the example (supervisionexample.py)
-
- Type : from supervisionexample import *
- supervisionexample.py contains comments
-
-A new python example avoids references to LifeCycleCORBA
- avoids references to NamingService
- avoids references to ModuleCatalog
- avoids SuperVisionComponent creation
- allows G.Input(...) instead of AddInput(G,...)
- replaces Editor/Executor with Graph
- allows Nodes, Ports and Links CORBA objects
- shortens methods names
- ...
-
- See /SuperVisionTest/resources/GraphExample.py
- and GraphExample.xml
----
-'''
- print doc_supervision
-
-
-
-help = SalomeDoc('''
-Availables modules:
- salome : gives access to Salome ressources
- geompy : encapsulation of GEOM Engine methods
- supervision : gives access to SuperVision Engine
-To obtain specific help on a module "truc", type: help.truc()
-To run an example, type: import example3
-''')
-
SALOME_GenericObj.idl
SWIG_DEF = libSALOME_Swig.i
-EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py salome_test.py test_remove_ref.py
+EXPORT_PYSCRIPTS = libSALOME_Swig.py examplevtk1.py supervisionexample.py supervisiongeomexample.py test_table.py test_big_table.py test_many_objects.py test_remove_ref.py
EXPORT_SHAREDPYSCRIPTS=SALOMEGUI_shared_modules.py
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) $(BOOST_CPPFLAGS) -DHAVE_CONFIG_H $(KERNEL_CXXFLAGS)
LIBS+= $(PYTHON_LIBS)
LDFLAGS+= -lSalomeApp
+++ /dev/null
-# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : PyInterp.py
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-import sys
-from omniORB import CORBA
-from LifeCycleCORBA import *
-from libSALOME_Swig import *
-import SALOMEDS
-from SALOME_NamingServicePy import *
-
- #--------------------------------------------------------------------------
-
-def DumpComponent(Study, SO, offset):
- it = Study.NewChildIterator(SO)
- Builder = Study.NewBuilder()
- while it.More():
- CSO = it.Value()
- it.Next()
- anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
- AtName = anAttr._narrow(SALOMEDS.AttributeName)
- t_name = AtName.Value()
- if t_name[0] == 1:
- ofs = 1
- a = ""
- while ofs <= offset:
- a = a + "--"
- ofs = ofs +1
- print a + ">" + CSO.GetID() + " " + t_name[1]
- t_RefSO = CSO.ReferencedObject()
- if t_RefSO[0] == 1:
- RefSO = t_RefSO[1]
- ofs = 1
- a = ""
- while ofs <= offset:
- a = a + " "
- ofs = ofs +1
- print a + ">" + RefSO.GetID()
- DumpComponent(Study, CSO, offset+2)
-
- #--------------------------------------------------------------------------
-
-def DumpStudy(Study):
- itcomp = Study.NewComponentIterator()
- while itcomp.More():
- SC = itcomp.Value()
- itcomp.Next()
- name = SC.ComponentDataType()
- print "-> ComponentDataType is " + name
- DumpComponent(Study, SC, 1)
-
-
- #--------------------------------------------------------------------------
-
-# initialise the ORB
-orb = CORBA.ORB_init([''], CORBA.ORB_ID)
-
-# create an LifeCycleCORBA instance
-lcc = LifeCycleCORBA(orb)
-
-# create an SALOMEGUI_Swig instance
-sg = SALOMEGUI_Swig()
-
-#create an naming service instance
-naming_service = SALOME_NamingServicePy_i(orb)
-
-# get active study name and id
-myStudyName = sg.getActiveStudyName()
-print myStudyName
-
-myStudyId = sg.getActiveStudyId()
-print myStudyId
-
-# get Study Manager reference
-obj = naming_service.Resolve('myStudyManager')
-myStudyManager = obj._narrow(SALOMEDS.StudyManager)
-
-# get active study
-myStudy = myStudyManager.GetStudyByName(myStudyName)
-
using namespace std;
-//////////////////////////////////////////////////////////////////////////////
-// asv : 3.12.04 : added checking for NULL GUI objects in almost all methods.
-// In the scope of fixing bug PAL6869.
-//////////////////////////////////////////////////////////////////////////////
-// (PR : modify comments)
-// Instance of this class is created every time "import salome" line is typed
-// - in IAPP embedded Python interpretor (SALOME_Session_Server executable),
-// - in inline Python nodes in Supervisor (in SALOME_Container executable),
-// - in stand-alone Python console outside any executable.
-// SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server
-//////////////////////////////////////////////////////////////////////////////
-// VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based)
-// All methods are implemeted using Event mechanism.
-// Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently
-// implemented only for OCC and VTK viewers.
-//////////////////////////////////////////////////////////////////////////////
+/*!
+ asv : 3.12.04 : added checking for NULL GUI objects in almost all methods.
+ In the scope of fixing bug PAL6869.
+
+ (PR : modify comments)
+ Instance of this class is created every time "import salome" line is typed
+ - in IAPP embedded Python interpretor (SALOME_Session_Server executable),
+ - in inline Python nodes in Supervisor (in SALOME_Container executable),
+ - in stand-alone Python console outside any executable.
+ SALOME GUI(desktop and other objects) is only available in SALOME_Session_Server
+
+ VSR : 19.04.05 : Reimplemented for new SALOME GUI (SUIT-based)
+ All methods are implemeted using Event mechanism.
+ Display/Erase methods use SALOME_Prs/SALOME_View mechanism. It is currently
+ implemented only for OCC and VTK viewers.
+*/
/*!
getApplication()
myResult = (bool)( getApplication() && getApplication()->desktop() );
}
};
+
+/*!
+ \return true if GUI is available.
+*/
bool SALOMEGUI_Swig::hasDesktop()
{
return ProcessEvent( new THasDesktopEvent() );
}
}
};
+
+/*!
+ \return active study's ID or 0 if there is no active study.
+*/
int SALOMEGUI_Swig::getActiveStudyId()
{
return ProcessEvent( new TGetActiveStudyIdEvent() );
}
}
};
+
+/*!
+ \return active study's name or NULL if there is no active study.
+*/
const char* SALOMEGUI_Swig::getActiveStudyName()
{
string result = ProcessEvent( new TGetActiveStudyNameEvent() );
SALOMEGUI_Swig::getComponentName
Returns the name of the component by its user name.
*/
+class TGetModulCatalogEvent: public SALOME_Event {
+public:
+ typedef CORBA::Object_var TResult;
+ TResult myResult;
+ TGetModulCatalogEvent() : myResult(CORBA::Object::_nil()) {}
+ virtual void Execute() {
+ if (SalomeApp_Application* anApp = getApplication())
+ myResult = anApp->namingService()->Resolve("/Kernel/ModulCatalog");
+ }
+};
+
+/*!
+ \return the name of the component by its user name.
+*/
const char* SALOMEGUI_Swig::getComponentName( const char* componentUserName )
{
- if ( SalomeApp_Application* anApp = getApplication() ) {
- CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog");
- if ( !CORBA::is_nil( anObject ) ) {
- SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue =
- SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject );
- SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList();
- for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) {
- CORBA::String_var aModuleName = aModules[ ind ].modulename;
- CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername;
- if ( strcmp(componentUserName, aModuleUserName.in()) == 0 )
- return aModuleName._retn();
- }
+ CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent());
+ if (!CORBA::is_nil(anObject)) {
+ SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue =
+ SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject );
+ SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList();
+ for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) {
+ CORBA::String_var aModuleName = aModules[ ind ].modulename;
+ CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername;
+ if ( strcmp(componentUserName, aModuleUserName.in()) == 0 )
+ return aModuleName._retn();
}
}
return 0;
*/
const char* SALOMEGUI_Swig::getComponentUserName( const char* componentName )
{
- if ( SalomeApp_Application* anApp = getApplication() ) {
- CORBA::Object_var anObject = anApp->namingService()->Resolve("/Kernel/ModulCatalog");
- if ( !CORBA::is_nil( anObject ) ) {
- SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue =
- SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject );
- SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList();
- for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) {
- CORBA::String_var aModuleName = aModules[ ind ].modulename;
- CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername;
- if ( strcmp(componentName, aModuleName.in()) == 0 )
- return aModuleUserName._retn();
- }
+ CORBA::Object_var anObject = ProcessEvent(new TGetModulCatalogEvent());
+ if (!CORBA::is_nil(anObject)) {
+ SALOME_ModuleCatalog::ModuleCatalog_var aCatalogue =
+ SALOME_ModuleCatalog::ModuleCatalog::_narrow( anObject );
+ SALOME_ModuleCatalog::ListOfIAPP_Affich_var aModules = aCatalogue->GetComponentIconeList();
+ for ( unsigned int ind = 0; ind < aModules->length(); ind++ ) {
+ CORBA::String_var aModuleName = aModules[ ind ].modulename;
+ CORBA::String_var aModuleUserName = aModules[ ind ].moduleusername;
+ if ( strcmp(componentName, aModuleName.in()) == 0 )
+ return aModuleUserName._retn();
}
}
return 0;
}
}
};
+
+/*!
+ \return the number of selected objects.
+*/
int SALOMEGUI_Swig::SelectedCount()
{
return ProcessEvent( new TSelectedCountEvent() );
}
}
};
+
+/*!
+ \return the selected object entry by the given index.
+*/
const char* SALOMEGUI_Swig::getSelected( int index )
{
QString result = ProcessEvent( new TGetSelectedEvent( index ) );
}
}
};
+
+/*!
+ \return TRUE if the object with given entry is in the current viewer.
+ VSR: For the current moment implemented for OCC and VTK viewers only.
+*/
bool SALOMEGUI_Swig::IsInCurrentView( const char* theEntry )
{
return ProcessEvent( new TIsInViewerEvent( theEntry ) );
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
"""
"""
+++ /dev/null
-# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : salome.py
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-from omniORB import CORBA
-from LifeCycleCORBA import *
-from libSALOME_Swig import *
-import SALOMEDS
-from SALOME_NamingServicePy import *
-
-from SALOME_utilities import *
-
-#--------------------------------------------------------------------------
-
-def DumpComponent(Study, SO, offset):
- it = Study.NewChildIterator(SO)
- Builder = Study.NewBuilder()
- while it.More():
- CSO = it.Value()
- it.Next()
- anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
- AtName = anAttr._narrow(SALOMEDS.AttributeName)
- t_name = AtName.Value()
- if t_name[0] == 1:
- ofs = 1
- a = ""
- while ofs <= offset:
- a = a + "--"
- ofs = ofs +1
- MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) )
- t_RefSO = CSO.ReferencedObject()
- if t_RefSO[0] == 1:
- RefSO = t_RefSO[1]
- ofs = 1
- a = ""
- while ofs <= offset:
- a = a + " "
- ofs = ofs +1
- MESSAGE( a + ">" + str(RefSO.GetID()) )
- DumpComponent(Study, CSO, offset+2)
-
- #--------------------------------------------------------------------------
-
-def DumpStudy(Study):
- itcomp = Study.NewComponentIterator()
- while itcomp.More():
- SC = itcomp.Value()
- itcomp.Next()
- name = SC.ComponentDataType()
- MESSAGE( "-> ComponentDataType is " + name )
- DumpComponent(Study, SC, 1)
-
-
- #--------------------------------------------------------------------------
-
-def ImportComponentGUI(ComponentName):
- libName = "lib" + ComponentName + "_Swig"
- command = "from " + libName + " import *"
- exec ( command )
- constructor = ComponentName + "_Swig()"
- command = "gui = " + constructor
- exec ( command )
- return gui
-
- #--------------------------------------------------------------------------
-
-def SalomeGUIgetAllSelected(self):
- selNumber = self.SelectedCount()
- listSelected = []
- for i in range(selNumber):
- listSelected.append(self.getSelected(i))
- return listSelected
-
-class SalomeGUI(SALOMEGUI_Swig):
- getAllSelected = SalomeGUIgetAllSelected
-
- #--------------------------------------------------------------------------
-
-def IDToObject(id):
- myObj = None
- mySO = myStudy.FindObjectID(id);
- if mySO is not None:
- ok, anAttr = mySO.FindAttribute("AttributeIOR")
- if ok:
- AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
- if AtIOR.Value() != "":
- myObj = orb.string_to_object(AtIOR.Value())
- return myObj
-
-def ObjectToSObject(obj):
- mySO = None
- if obj is not None:
- ior = orb.object_to_string(obj)
- if ior != "":
- mySO = myStudy.FindObjectIOR(ior)
- return mySO
-
-def ObjectToID(obj):
- mySO = ObjectToSObject(obj)
- if mySO:
- return mySO.GetID()
- return ""
-
-def IDToSObject(id):
- mySO = myStudy.FindObjectID(id);
- return mySO
-
- #--------------------------------------------------------------------------
-
-# initialise the ORB
-orb = CORBA.ORB_init([''], CORBA.ORB_ID)
-
-# create an LifeCycleCORBA instance
-lcc = LifeCycleCORBA(orb)
-
-# create an SALOMEGUI_Swig instance
-sg = SalomeGUI()
-
-#create an naming service instance
-naming_service = SALOME_NamingServicePy_i(orb)
-
-# get active study name and id
-myStudyName = sg.getActiveStudyName()
-MESSAGE( myStudyName )
-
-myStudyId = sg.getActiveStudyId()
-MESSAGE( str(myStudyId) )
-
-# get Study Manager reference
-obj = naming_service.Resolve('myStudyManager')
-myStudyManager = obj._narrow(SALOMEDS.StudyManager)
-
-# get active study
-myStudy = myStudyManager.GetStudyByName(myStudyName)
-
+++ /dev/null
-# SALOME SALOME_SWIG : binding of C++ implementation and Python
-#
-# Copyright (C) 2003 CEA/DEN, EDF R&D
-#
-#
-#
-# File : salome_test.py
-# Module : SALOME
-
-print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some"
-print "operation within the components."
-
-import salome
-from salome import sg
-import SALOMEDS
-import os
-
-import SALOME_ModuleCatalog
-
-print "======================================================================"
-print " Get Catalog "
-print "======================================================================"
-obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
-catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
-
-print "======================================================================"
-print " Create Study "
-print "======================================================================"
-
-comp = catalog.GetComponent("GEOM")
-if comp is None:
- raise RuntimeError,"Component GEOM not found in Module Catalog."
-
-import geompy
-
-print "================================="
-print " create AttributeReal "
-print "================================="
-A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal")
-if A == None :
- raise RuntimeError, "Can't create AttributeReal attribute"
-A = A._narrow(SALOMEDS.AttributeReal)
-A.SetValue(0.0001)
-if A.Value() != 0.0001:
- raise RuntimeError, "Error : wrong value of AttributeReal"
-
-print
-print " =========== Test Geometry =========================="
-print
-
-print "==================================="
-print " define a box"
-print "==================================="
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box,"box")
-
-print
-print "============= Test SMESH ============================="
-print
-
-import StdMeshers
-
-comp = catalog.GetComponent("SMESH")
-if comp is None:
- raise RuntimeError,"Component SMESH not found in Module Catalog."
-
-comp = catalog.GetComponent("MED")
-if comp is None:
- raise RuntimeError,"Component MED not found in Module Catalog."
-
-import SMESH
-
-geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-myBuilder = salome.myStudy.NewBuilder()
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-ShapeTypeCompSolid = 1
-ShapeTypeSolid = 2
-ShapeTypeShell = 3
-ShapeTypeFace = 4
-ShapeTypeWire = 5
-ShapeTypeEdge = 6
-ShapeTypeVertex = 7
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box,"box")
-
-# ---- add first face of box in study
-
-subShapeList=geompy.SubShapeAll(box,ShapeTypeFace)
-face=subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print name
-idface=geompy.addToStudyInFather(box,face,name)
-
-# ---- add shell from box in study
-
-subShellList=geompy.SubShapeAll(box,ShapeTypeShell)
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print name
-idshell=geompy.addToStudyInFather(box,shell,name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face,ShapeTypeEdge)
-edge=edgeList[0];
-name = geompy.SubShapeName(edge, face)
-print name
-idedge=geompy.addToStudyInFather(face,edge,name)
-
-
-# ---- SMESH
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-print "-------------------------- LocalLength"
-hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" )
-hypLen1.SetLength(100)
-print hypLen1.GetName()
-print hypLen1.GetId()
-print hypLen1.GetLength()
-
-smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100")
-
-print "-------------------------- NumberOfSegments"
-hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg1.SetNumberOfSegments(7)
-print hypNbSeg1.GetName()
-print hypNbSeg1.GetId()
-print hypNbSeg1.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7")
-
-print "-------------------------- MaxElementArea"
-hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea1.SetMaxElementArea(2500)
-print hypArea1.GetName()
-print hypArea1.GetId()
-print hypArea1.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500")
-
-print "-------------------------- MaxElementArea"
-hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea2.SetMaxElementArea(500)
-print hypArea2.GetName()
-print hypArea2.GetId()
-print hypArea2.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500")
-
-print "-------------------------- Regular_1D"
-algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp=algoReg.GetCompatibleHypothesis()
-for hyp in listHyp:
- print hyp
-print algoReg.GetName()
-print algoReg.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" )
-
-print "-------------------------- MEFISTO_2D"
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp=algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
- print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" )
-
-# ---- add hypothesis to box
-
-print "-------------------------- add hypothesis to box"
-box=salome.IDToObject(idbox)
-mesh = smesh.CreateMesh(box)
-
-smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" );
-
-ret=mesh.AddHypothesis(box,algoReg)
-print ret
-ret=mesh.AddHypothesis(box,algoMef)
-print ret
-
-
-ret=mesh.AddHypothesis(box,hypNbSeg1)
-print ret
-ret=mesh.AddHypothesis(box,hypArea1)
-print ret
-
-
-# ---- add hypothesis to edge
-
-print "-------------------------- add hypothesis to edge"
-edge=salome.IDToObject(idedge)
-submesh=mesh.GetSubMesh(edge, "SubMeshEdge")
-
-ret=mesh.AddHypothesis(edge,algoReg)
-print ret
-ret=mesh.AddHypothesis(edge,hypLen1)
-print ret
-
-print "-------------------------- add hypothesis to face"
-face=salome.IDToObject(idface)
-submesh = mesh.GetSubMesh(face, "SubMeshFace")
-
-ret=mesh.AddHypothesis(face,hypArea2)
-print ret
-
-smesh.Compute(mesh, box)
-sg.updateObjBrowser(1);
-
-print
-print "============= Test Supervisor ============================="
-print
-
-comp = catalog.GetComponent("SUPERV")
-if comp is None:
- raise RuntimeError,"Component SUPERV not found in Module Catalog."
-
-from SuperV import *
-import SALOMEDS
-myStudy = salome.myStudy
-myBuilder = myStudy.NewBuilder()
-
-SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
-father = myStudy.FindComponent("SUPERV")
-if father is None:
- father = myBuilder.NewComponent("SUPERV")
- A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
- FName = A1._narrow(SALOMEDS.AttributeName)
- FName.SetValue( salome.sg.getComponentUserName("SUPERV") )
- A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
- aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
- aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
- myBuilder.DefineComponentInstance(father,SuperVision)
-
-def addStudy(ior):
- dataflow = SuperVision.getStreamGraph(ior)
- name=dataflow.Name()
- itr = myStudy.NewChildIterator(father)
- while itr.More():
- item=itr.Value()
- res,A=item.FindAttribute("AttributeName")
- if res:
- aName = A._narrow(SALOMEDS.AttributeName)
- if aName.Value() == name :
- print myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- print "A = ", A
- if A is not None :
- #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- anIOR = A._narrow(SALOMEDS.AttributeIOR);
- print "anIOR.SetValue(dataflow.getIOR())"
- anIOR.SetValue(dataflow.getIOR())
- return
- itr.Next()
- obj = myBuilder.NewObject(father)
- A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
- aName=A._narrow(SALOMEDS.AttributeName)
- aName.SetValue(name)
- A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
- anIOR = A._narrow(SALOMEDS.AttributeIOR)
- anIOR.SetValue(dataflow.getIOR())
-
-import os
-dir= os.getenv("DATA_DIR")
-if dir == None:
- raise RuntimeError, "DATA_DIR is not defined"
-xmlfile = dir +"/Superv/Graphs/GraphGeomEssai.xml"
-print "Load dataflow from the file : "
-print xmlfile
-print
-
-myGraph = StreamGraph ( xmlfile )
-
-# This DataFlow is "valid" : no loop, correct links between Nodes etc...
-print "myGraph.IsValid() = ", myGraph.IsValid()
-
-# Get Nodes
-myGraph.PrintNodes()
-
-# This DataFlow is "executable" : all pending Ports are defined with Datas
-print myGraph.IsExecutable()
-
-# Starts only execution of that DataFlow and gets control immediatly
-print myGraph.Run()
-
-# That DataFlow is running ==> 0 (false)
-print myGraph.IsDone()
-
-# Events of execution :
-aStatus,aNode,anEvent,aState = myGraph.Event()
-while aStatus :
- print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
- aStatus,aNode,anEvent,aState = myGraph.Event()
-print "myGraph.IsDone() = ",myGraph.IsDone()
-
-# Wait for Completion (but it is already done after event loop ...)
-print "Done : ",myGraph.DoneW()
-
-print " "
-#print "Type : print myGraph.IsDone()"
-#print " If execution is finished ==> 1 (true)"
-res=myGraph.IsDone()
-if res != 1:
- raise RuntimeError, "myGraph.Run() is not done"
-
-print " "
-print "Type : myGraph.PrintPorts()"
-print " to see input and output values of the graph"
-myGraph.PrintPorts()
-
-# Export will create newsupervisionexample.xml and the corresponding .py file
-tmpdir=os.getenv("TmpDir")
-if tmpdir is None:
- tmpdir="/tmp"
-file = tmpdir + "/newsupervisionexample"
-print "--------------\n"+file+"\n--------------\n"
-myGraph.Export(file)
-
-ior = salome.orb.object_to_string(myGraph.G)
-addStudy(ior)
-
-GraphName = myGraph.Name()
-print "Befor save ",
-#nodes = myGraph.Nodes()
-nodes = myGraph.G.Nodes().FNodes
-length_bs = len(nodes)
-print "ListOfNodes length = ", length_bs
-names=[]
-for node in nodes:
- names.append(node.Name())
-print names
-
-# Graph creation
-GraphInLines = StreamGraph( 'GraphInLines' )
-GraphInLines.SetName( 'GraphInLines' )
-GraphInLines.SetAuthor( '' )
-GraphInLines.SetComment( '' )
-GraphInLines.Coords( 0 , 0 )
-
-# Creation of InLine Nodes
-PyAdd = []
-PyAdd.append( 'def Add(a,b) : ' )
-PyAdd.append( ' return a+b ' )
-PyAdd.append( '' )
-Add = GraphInLines.INode( 'Add' , PyAdd )
-Add.InPort( 'a' , 'long' )
-Add.InPort( 'b' , 'long' )
-Add.OutPort( 'f' , 'long' )
-Add.SetName( 'Add' )
-Add.SetAuthor( '' )
-Add.SetComment( 'Python function' )
-Add.Coords( 351 , 77 )
-PySub = []
-PySub.append( 'def Sub(a,b) : ' )
-PySub.append( ' return a-b ' )
-PySub.append( '' )
-Sub = GraphInLines.INode( 'Sub' , PySub )
-Sub.InPort( 'a' , 'long' )
-Sub.InPort( 'b' , 'long' )
-Sub.OutPort( 'f' , 'long' )
-Sub.SetName( 'Sub' )
-Sub.SetAuthor( '' )
-Sub.SetComment( 'Python function' )
-Sub.Coords( 86 , 333 )
-PyMul = []
-PyMul.append( 'def Mul(a,b) : ' )
-PyMul.append( ' return a*b ' )
-Mul = GraphInLines.INode( 'Mul' , PyMul )
-Mul.InPort( 'a' , 'long' )
-Mul.InPort( 'b' , 'long' )
-Mul.OutPort( 'Result' , 'long' )
-Mul.SetName( 'Mul' )
-Mul.SetAuthor( '' )
-Mul.SetComment( 'Python function' )
-Mul.Coords( 616 , 247 )
-
-# Creation of intermediate Output variables and of Control Links
-Addf = Add.Port( 'f' )
-Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) )
-Mula.AddCoord( 1 , 570 , 356 )
-Mula.AddCoord( 2 , 570 , 186 )
-Subf = Sub.Port( 'f' )
-Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) )
-Mulb.AddCoord( 1 , 282 , 376 )
-Mulb.AddCoord( 2 , 282 , 442 )
-Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) )
-Addb.AddCoord( 1 , 283 , 209 )
-Addb.AddCoord( 2 , 283 , 374 )
-Addb.AddCoord( 3 , 283 , 442 )
-
-# Creation of Input datas
-Adda = Add.Input( 'a' , 1)
-Suba = Sub.Input( 'a' , 3)
-Subb = Sub.Input( 'b' , 4)
-
-# Creation of Output variables
-MulResult = Mul.Port( 'Result' )
-
-GraphInLines.Run()
-
-GraphInLines.DoneW()
-
-GraphInLines.PrintPorts()
-
-sg.updateObjBrowser(1);
-
-print
-print "============= Test VISU and MED ============================="
-print
-
-comp = catalog.GetComponent("VISU")
-if comp is None:
- raise RuntimeError,"Component VISU not found in Module Catalog."
-
-import sys
-import SALOMEDS
-import SALOME
-import SALOME_MED
-import VISU
-
-import visu_gui
-
-medFileName = "pointe.med"
-medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFileName
-print "Load ", medFile
-
-studyCurrent = salome.myStudyName
-
-med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
-myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
-
-try:
- if os.access(medFile, os.R_OK) :
- if not os.access(medFile, os.W_OK) :
- import random
- medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName
- print " -- Copy " + medFile + " to " + medFileNew
- os.system("cp "+ medFile + " " + medFileNew)
- medFile = medFileNew
- os.system("chmod 755 " + medFile)
-
- if os.access(medFile, os.W_OK) :
- med_comp.readStructFileWithFieldType(medFile,studyCurrent)
- med_obj = visu_gui.visu.getMedObjectFromStudy()
- print "med_obj - ", med_obj
-
- myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1)
- aMeshName = "maa1"
- anEntity = VISU.NODE
- aTimeStampId = -1
-
- myResult1 = myVisu.ImportMedField(myField1)
- aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity);
-
- aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId)
-
- myResult2 = myVisu.ImportFile(medFile);
- aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity);
-
- aTimeStampId = 3
- aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId)
-
- sg.updateObjBrowser(0)
- else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file";
- else : print "We have no permission to read medFile, it will not be opened";
-
-except:
- if sys.exc_type == SALOME.SALOME_Exception :
- print "There is no permission to read " + medFile
- else :
- print sys.exc_type
- print sys.exc_value
- print sys.exc_traceback
-
-sg.updateObjBrowser(1);
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
#==============================================================================
# File : supervisionexample.py
# Created : 23 nov 2001
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# Generated python file of Graph GraphGeom2Essai
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Alexander Solovyov(OCN)
# Module : SOCC
#include "SOCC_Prs.h"
using namespace std;
-//==========================================================
/*!
- * SOCC_Prs::SOCC_Prs
- * Default constructor
- */
-//==========================================================
+ Default constructor
+*/
SOCC_Prs::SOCC_Prs()
{
myToActivate = true;
}
-//==========================================================
/*!
- * SOCC_Prs::SOCC_Prs
- * Standard constructor
- */
-//==========================================================
+ Standard constructor
+*/
SOCC_Prs::SOCC_Prs( const Handle(AIS_InteractiveObject)& obj )
{
AddObject( obj );
}
-//==========================================================
/*!
- * SOCC_Prs::~SOCC_Prs
- * Destructor
- */
-//==========================================================
+ Destructor
+*/
SOCC_Prs::~SOCC_Prs()
{
myObjects.Clear();
}
-//==========================================================
/*!
- * SOCC_Prs::GetObjects
- * Get interactive objects list
- */
-//==========================================================
+ Get interactive objects list
+*/
void SOCC_Prs::GetObjects( AIS_ListOfInteractive& list ) const
{
list = myObjects;
}
-//==========================================================
/*!
- * SOCC_Prs::AddObject
- * Add interactive object
- */
-//==========================================================
+ Add interactive object
+*/
void SOCC_Prs::AddObject( const Handle(AIS_InteractiveObject)& obj )
{
myObjects.Append( obj );
}
-//==========================================================
/*!
- * SOCC_Prs::IsNull
- * Return 0 if list of the interactive objects is empty
- * [ Reimplemented from SALOME_Prs ]
- */
-//==========================================================
+ \return 0 if list of the interactive objects is empty [ Reimplemented from SALOME_Prs ]
+*/
bool SOCC_Prs::IsNull() const
{
return myObjects.IsEmpty();
}
-//=================================================================
/*!
- * GEOM_Displayer::SetToActivate
- * This method is used for activisation/deactivisation of
- * objects in the moment of displaying
+ This method is used for activisation/deactivisation of
+ objects in the moment of displaying
*/
-//=================================================================
void SOCC_Prs::SetToActivate( const bool toActivate )
{
myToActivate = toActivate;
}
+
bool SOCC_Prs::ToActivate() const
{
return myToActivate;
//
// See http://www.salome-platform.org/
//
-#include "SOCC_ViewModel.h"\r
-\r
-#include "SOCC_Prs.h"\r
-#include "SOCC_ViewWindow.h"\r
-\r
-#include "SUIT_Session.h"\r
-#include "SUIT_Application.h"\r
-\r
-//#include "ToolsGUI.h"\r
-\r
-// Temporarily commented to avoid awful dependecy on SALOMEDS\r
-// TODO: better mechanism of storing display/erse status in a study\r
-// should be provided...\r
-//#include <SALOMEconfig.h>\r
-//#include CORBA_CLIENT_HEADER(SALOMEDS)\r
-\r
-#include <AIS_ListIteratorOfListOfInteractive.hxx>\r
-#include <Visual3d_View.hxx>\r
-\r
-#include <SALOME_AISShape.hxx>\r
-#include <SALOME_AISObject.hxx>\r
-\r
-// Temporarily commented to avoid awful dependecy on SALOMEDS\r
-// TODO: better mechanism of storing display/erse status in a study\r
-// should be provided...\r
-//#include <Utils_ORB_INIT.hxx>\r
-//#include <Utils_SINGLETON.hxx>\r
-//#include <SALOME_ModuleCatalog_impl.hxx>\r
-//#include <SALOME_NamingService.hxx>\r
-\r
-//#include "SALOMEDSClient.hxx"\r
-//#include "SALOMEDS_StudyManager.hxx"\r
-\r
-#include <AIS_TypeOfIso.hxx>\r
-\r
-// in order NOT TO link with SalomeApp, here the code returns SALOMEDS_Study.\r
-// SalomeApp_Study::studyDS() does it as well, but -- here it is retrieved from \r
-// SALOMEDS::StudyManager - no linkage with SalomeApp. \r
-\r
-// Temporarily commented to avoid awful dependecy on SALOMEDS\r
-// TODO: better mechanism of storing display/erse status in a study\r
-// should be provided...\r
-//static _PTR(Study) getStudyDS() \r
-//{\r
-// SALOMEDSClient_Study* aStudy = NULL;\r
-// _PTR(StudyManager) aMgr( new SALOMEDS_StudyManager() );\r
-\r
- // get id of SUIT_Study, if it's a SalomeApp_Study, it will return\r
- // id of its underlying SALOMEDS::Study\r
-// SUIT_Application* app = SUIT_Session::session()->activeApplication();\r
-// if ( !app ) return _PTR(Study)(aStudy); \r
-// SUIT_Study* stud = app->activeStudy();\r
-// if ( !stud ) return _PTR(Study)(aStudy); \r
-// const int id = stud->id(); // virtual method, must return SALOMEDS_Study id\r
- // get SALOMEDS_Study with this id from StudyMgr\r
-// return aMgr->GetStudyByID( id );\r
-//}\r
-\r
-SOCC_Viewer::SOCC_Viewer( bool DisplayTrihedron )\r
-: OCCViewer_Viewer( DisplayTrihedron )\r
-{\r
-}\r
-\r
-SOCC_Viewer::~SOCC_Viewer()\r
-{\r
-}\r
-\r
-bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj,\r
- bool hilight, bool upd )\r
-{\r
- bool isInLocal = getAISContext()->HasOpenedContext();\r
- //SUIT_Study* ActiveStudy = SUIT_Application::getDesktop()->getActiveStudy();\r
- //SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() );\r
-\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects(List);\r
- \r
- AIS_ListIteratorOfListOfInteractive ite(List);\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- {\r
- if ( !isInLocal )\r
- OCCViewer_Viewer::highlight( ite.Value(), hilight, false );\r
- // highlight subshapes only when local selection is active\r
- else\r
- {\r
- /*if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISShape ) ) )\r
- {\r
- Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast( ite.Value() );\r
- TColStd_IndexedMapOfInteger MapIndex;\r
- Sel->GetIndex( IObject, MapIndex );\r
- aSh->highlightSubShapes( MapIndex, highlight );\r
- }*/\r
- }\r
- break;\r
- }\r
- }\r
- \r
- if( upd )\r
- update();\r
- \r
- return false;\r
-}\r
-\r
-bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj,\r
- bool onlyInViewer )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects(List);\r
-\r
- if( !onlyInViewer ) {\r
- AIS_ListOfInteractive List1;\r
- getAISContext()->ObjectsInCollector(List1);\r
- List.Append(List1);\r
- }\r
-\r
- AIS_ListIteratorOfListOfInteractive ite(List);\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- return true;\r
- }\r
- return false;\r
-}\r
-\r
-bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects( List );\r
-\r
- AIS_ListIteratorOfListOfInteractive ite( List );\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- return getAISContext()->IsDisplayed( ite.Value() );\r
- }\r
- \r
- return false;\r
-}\r
-\r
-void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj,\r
- const QColor& color, bool update )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects(List);\r
- \r
- AIS_ListIteratorOfListOfInteractive ite(List);\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- {\r
- OCCViewer_Viewer::setColor( ite.Value(), color, update );\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)& obj,\r
- int mode, bool update )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects(List);\r
- \r
- AIS_ListIteratorOfListOfInteractive ite(List);\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- {\r
- OCCViewer_Viewer::switchRepresentation( ite.Value(), mode, update );\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj,\r
- float trans, bool update )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects( List );\r
- \r
- AIS_ListIteratorOfListOfInteractive ite( List );\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )\r
- {\r
- OCCViewer_Viewer::setTransparency( ite.Value(), trans, update );\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj,\r
- const QString& name )\r
-{\r
- AIS_ListOfInteractive List;\r
- getAISContext()->DisplayedObjects(List);\r
- \r
- AIS_ListIteratorOfListOfInteractive ite(List);\r
- while (ite.More())\r
- {\r
- if (ite.Value()->IsKind(STANDARD_TYPE(SALOME_AISShape)))\r
- {\r
- Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast(ite.Value());\r
- \r
- if ( aSh->hasIO() )\r
- {\r
- Handle(SALOME_InteractiveObject) IO = aSh->getIO();\r
- if ( IO->isSame( obj ) )\r
- {\r
- aSh->setName( (char*)name.latin1() );\r
- break;\r
- }\r
- }\r
- }\r
- else if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) )\r
- {\r
- Handle(SALOME_AISObject) aSh = Handle(SALOME_AISObject)::DownCast( ite.Value() );\r
-\r
- // Add code here, if someone create a MODULE_AISObject.\r
- }\r
- ite.Next();\r
- }\r
-}\r
-\r
-//=======================================================================\r
-// name : Display\r
-// Purpose : Display presentation\r
-//=======================================================================\r
-void SOCC_Viewer::Display( const SALOME_OCCPrs* prs )\r
-{\r
- // try do downcast object\r
- const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( prs );\r
- if ( !anOCCPrs || anOCCPrs->IsNull() )\r
- return;\r
-\r
- // get SALOMEDS Study\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- // _PTR(Study) study(getStudyDS());\r
-\r
- // get context\r
- Handle (AIS_InteractiveContext) ic = getAISContext();\r
-\r
- // get all displayed objects\r
- AIS_ListOfInteractive List;\r
- ic->DisplayedObjects( List );\r
- // get objects in the collector\r
- AIS_ListOfInteractive ListCollector;\r
- ic->ObjectsInCollector( ListCollector );\r
-\r
- // get objects to be displayed\r
- AIS_ListOfInteractive anAISObjects;\r
- anOCCPrs->GetObjects( anAISObjects );\r
-\r
- AIS_ListIteratorOfListOfInteractive aIter( anAISObjects );\r
- for ( ; aIter.More(); aIter.Next() )\r
- {\r
- Handle(AIS_InteractiveObject) anAIS = aIter.Value();\r
- if ( !anAIS.IsNull() )\r
- {\r
- // try to find presentation in the viewer\r
- bool bDisplayed = false;\r
- AIS_ListIteratorOfListOfInteractive ite( List );\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- // compare presentations by handles\r
- // if the object is already displayed - nothing to do more\r
- if ( ite.Value() == anAIS )\r
- {\r
- // Deactivate object if necessary\r
- if ( !anOCCPrs->ToActivate() )\r
- ic->Deactivate( anAIS );\r
- bDisplayed = true;\r
- break;\r
- }\r
- }\r
-\r
- if ( bDisplayed )\r
- continue;\r
-\r
- // then try to find presentation in the collector\r
- bDisplayed = false;\r
- ite.Initialize( ListCollector );\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- // compare presentations by handles\r
- // if the object is in collector - display it\r
- if ( ite.Value() == anAIS )\r
- {\r
- ic->DisplayFromCollector( anAIS, false );\r
-\r
- // Deactivate object if necessary\r
- if ( !anOCCPrs->ToActivate() )\r
- ic->Deactivate( anAIS );\r
- bDisplayed = true;\r
-\r
- // Set visibility flag\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- //Handle(SALOME_InteractiveObject) anObj =\r
- // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );\r
- //if ( !anObj.IsNull() && anObj->hasEntry() )\r
- //{\r
- // if ( study )\r
- // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );\r
- //}\r
- break;\r
- }\r
- }\r
- if ( bDisplayed )\r
- continue;\r
-\r
- // if object is not displayed and not found in the collector - display it\r
- if ( anAIS->IsKind( STANDARD_TYPE(AIS_Trihedron) ) )\r
- {\r
- Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anAIS );\r
- double aNewSize = 100, aSize = 100;\r
- getTrihedronSize( aNewSize, aSize );\r
- aTrh->SetSize( aTrh == getTrihedron() ? aNewSize : 0.5 * aNewSize );\r
- }\r
-\r
- ic->Display( anAIS, false );\r
-\r
- // Set visibility flag\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- //Handle(SALOME_InteractiveObject) anObj =\r
- // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );\r
- //if ( !anObj.IsNull() && anObj->hasEntry() )\r
- //{\r
- // if ( study )\r
- // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );\r
- //}\r
-\r
- // Deactivate object if necessary\r
- if ( !anOCCPrs->ToActivate() )\r
- ic->Deactivate( anAIS );\r
- }\r
- }\r
-}\r
-\r
-//=======================================================================\r
-// name : Erase\r
-// Purpose : Erase presentation\r
-//=======================================================================\r
-void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced )\r
-{\r
- // try do downcast object\r
- const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( prs );\r
- if ( !anOCCPrs || anOCCPrs->IsNull() )\r
- return;\r
-\r
- // get SALOMEDS Study\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- // _PTR(Study) study(getStudyDS());\r
-\r
- // get context\r
- Handle(AIS_InteractiveContext) ic = getAISContext();\r
-\r
- // get objects to be erased\r
- AIS_ListOfInteractive anAISObjects;\r
- anOCCPrs->GetObjects( anAISObjects );\r
-\r
- AIS_ListIteratorOfListOfInteractive aIter( anAISObjects );\r
- for ( ; aIter.More(); aIter.Next() ) {\r
- Handle(AIS_InteractiveObject) anAIS = aIter.Value();\r
- if ( !anAIS.IsNull() ) {\r
- // erase the object from context : move it to collector\r
- ic->Erase( anAIS, false, forced ? false : true );\r
-\r
- // Set visibility flag if necessary\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- //if ( !forced )\r
- //{\r
- // Handle(SALOME_InteractiveObject) anObj =\r
- // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );\r
- // if ( !anObj.IsNull() && anObj->hasEntry() )\r
- // {\r
- // if ( study )\r
- // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );\r
- // }\r
- //}\r
- }\r
- }\r
-}\r
-\r
-//=======================================================================\r
-// name : EraseAll\r
-// Purpose : Erase all presentations\r
-//=======================================================================\r
-void SOCC_Viewer::EraseAll( const bool forced )\r
-{\r
- // get SALOMEDS Study\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- // _PTR(Study) study(getStudyDS());\r
-\r
- // get context\r
- Handle(AIS_InteractiveContext) ic = getAISContext();\r
-\r
- // check if trihedron is displayed\r
- Standard_Boolean isTrihedronDisplayed = ic->IsDisplayed( getTrihedron() );\r
-\r
- // get objects to be erased (all currently displayed objects)\r
- AIS_ListOfInteractive aList;\r
- ic->DisplayedObjects( aList );\r
- AIS_ListIteratorOfListOfInteractive anIter( aList );\r
- for ( ; anIter.More(); anIter.Next() ) {\r
- if ( isTrihedronDisplayed && anIter.Value()->DynamicType() == STANDARD_TYPE( AIS_Trihedron ) )\r
- continue;\r
-\r
- // erase an object\r
- Handle(AIS_InteractiveObject) anIO = anIter.Value();\r
- ic->Erase( anIO, false, forced ? false : true );\r
- \r
- // Set visibility flag if necessary\r
- // Temporarily commented to avoid awful dependecy on SALOMEDS\r
- // TODO: better mechanism of storing display/erse status in a study\r
- // should be provided...\r
- //if ( !forced ) {\r
- // Handle(SALOME_InteractiveObject) anObj =\r
- // Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() );\r
-\r
- // if ( !anObj.IsNull() && anObj->hasEntry() ) {\r
- // if ( study )\r
- // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );\r
- // }\r
- //}\r
- }\r
-\r
- // display trihedron if necessary\r
- if ( isTrihedronDisplayed )\r
- getAISContext()->Display( getTrihedron() );\r
- else\r
- Repaint();\r
-}\r
-\r
-//=======================================================================\r
-// name : CreatePrs\r
-// Purpose : Create presentation corresponding to the entry\r
-//=======================================================================\r
-SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry )\r
-{\r
- SOCC_Prs* prs = new SOCC_Prs();\r
- if ( entry )\r
- {\r
- // get context\r
- Handle(AIS_InteractiveContext) ic = getAISContext();\r
-\r
- // get displayed objects\r
- AIS_ListOfInteractive List;\r
- ic->DisplayedObjects( List );\r
- // get objects in the collector\r
- AIS_ListOfInteractive ListCollector;\r
- ic->ObjectsInCollector( ListCollector );\r
- List.Append( ListCollector );\r
-\r
- AIS_ListIteratorOfListOfInteractive ite( List );\r
- for ( ; ite.More(); ite.Next() )\r
- {\r
- Handle(SALOME_InteractiveObject) anObj =\r
- Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );\r
-\r
- if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), entry ) == 0 )\r
- prs->AddObject( ite.Value() );\r
- }\r
- }\r
- return prs;\r
-}\r
-\r
-//=======================================================================\r
-// name : LocalSelection\r
-// Purpose : Activates selection of sub shapes\r
-//=======================================================================\r
-void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode )\r
-{\r
- Handle(AIS_InteractiveContext) ic = getAISContext();\r
- \r
- const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( thePrs );\r
- if ( ic.IsNull() )\r
- return;\r
- \r
- // Open local context if there is no one\r
- bool allObjects = thePrs == 0 || thePrs->IsNull();\r
- if ( !ic->HasOpenedContext() ) {\r
- ic->ClearCurrents( false );\r
- ic->OpenLocalContext( allObjects, true, true );\r
- }\r
-\r
- AIS_ListOfInteractive anObjs;\r
- // Get objects to be activated\r
- if ( allObjects ) \r
- ic->DisplayedObjects( anObjs );\r
- else\r
- anOCCPrs->GetObjects( anObjs );\r
-\r
- // Activate selection of objects from prs\r
- AIS_ListIteratorOfListOfInteractive aIter( anObjs );\r
- for ( ; aIter.More(); aIter.Next() ) {\r
- Handle(AIS_InteractiveObject) anAIS = aIter.Value();\r
- if ( !anAIS.IsNull() )\r
- {\r
- if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) )\r
- {\r
- ic->Load( anAIS, -1, false );\r
- ic->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)theMode ) );\r
- }\r
- else if ( anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron) )\r
- {\r
- ic->Load( anAIS, -1, false );\r
- ic->Activate( anAIS, theMode );\r
- }\r
- }\r
- }\r
-}\r
-\r
-//=======================================================================\r
-// name : GlobalSelection\r
-// Purpose : Deactivates selection of sub shapes\r
-//=======================================================================\r
-void SOCC_Viewer::GlobalSelection( const bool update ) const\r
-{\r
- Handle(AIS_InteractiveContext) ic = getAISContext();\r
- if ( !ic.IsNull() )\r
- {\r
- ic->CloseAllContexts( false );\r
- if ( update )\r
- ic->CurrentViewer()->Redraw();\r
- }\r
-}\r
-\r
-//=======================================================================\r
-// name : BeforeDisplay\r
-// Purpose : Axiluary method called before displaying of objects\r
-//=======================================================================\r
-void SOCC_Viewer::BeforeDisplay( SALOME_Displayer* d )\r
-{\r
- d->BeforeDisplay( this, SALOME_OCCViewType() );\r
-}\r
-\r
-//=======================================================================\r
-// name : AfterDisplay\r
-// Purpose : Axiluary method called after displaying of objects\r
-//=======================================================================\r
-void SOCC_Viewer::AfterDisplay( SALOME_Displayer* d )\r
-{\r
- d->AfterDisplay( this, SALOME_OCCViewType() );\r
-}\r
-\r
-//=======================================================================\r
-// name : getTrihedronSize\r
-// Purpose : Get new and current trihedron size corresponding to the\r
-// current model size\r
-//=======================================================================\r
-bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize )\r
-{\r
- theNewSize = 100;\r
- theSize = 100;\r
-\r
- //SRN: BUG IPAL8996, a usage of method ActiveView without an initialization\r
- Handle(V3d_Viewer) viewer = getViewer3d();\r
- viewer->InitActiveViews();\r
- if(!viewer->MoreActiveViews()) return false;\r
-\r
- Handle(V3d_View) view3d = viewer->ActiveView();\r
- //SRN: END of fix\r
-\r
- if ( view3d.IsNull() )\r
- return false;\r
-\r
- double Xmin = 0, Ymin = 0, Zmin = 0, Xmax = 0, Ymax = 0, Zmax = 0;\r
- double aMaxSide;\r
-\r
- view3d->View()->MinMaxValues( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax );\r
-\r
- if ( Xmin == RealFirst() || Ymin == RealFirst() || Zmin == RealFirst() ||\r
- Xmax == RealLast() || Ymax == RealLast() || Zmax == RealLast() )\r
- return false;\r
-\r
- aMaxSide = Xmax - Xmin;\r
- if ( aMaxSide < Ymax -Ymin ) aMaxSide = Ymax -Ymin;\r
- if ( aMaxSide < Zmax -Zmin ) aMaxSide = Zmax -Zmin;\r
-\r
- float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.);\r
-\r
- static float EPS = 5.0E-3;\r
- theSize = getTrihedron()->Size();\r
- theNewSize = aMaxSide*aSizeInPercents / 100.0;\r
-\r
- return fabs( theNewSize - theSize ) > theSize * EPS ||\r
- fabs( theNewSize - theSize) > theNewSize * EPS;\r
-}\r
-\r
-//=======================================================================\r
-// name : Repaint\r
-// Purpose : \r
-//=======================================================================\r
-void SOCC_Viewer::Repaint()\r
-{\r
-// onAdjustTrihedron();\r
- getViewer3d()->Update();\r
-}\r
-\r
-//=======================================================================\r
-// name : createView\r
-// Purpose : create SOCC_ViewWindow\r
-//=======================================================================\r
-SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop )\r
-{\r
- SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this);\r
- initView( view );\r
- return view;\r
-}\r
+#include "SOCC_ViewModel.h"
+
+#include "SOCC_Prs.h"
+#include "SOCC_ViewWindow.h"
+
+#include "SUIT_Session.h"
+#include "SUIT_Application.h"
+
+//#include "ToolsGUI.h"
+
+// Temporarily commented to avoid awful dependecy on SALOMEDS
+// TODO: better mechanism of storing display/erse status in a study
+// should be provided...
+//#include <SALOMEconfig.h>
+//#include CORBA_CLIENT_HEADER(SALOMEDS)
+
+#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <Visual3d_View.hxx>
+
+#include <SALOME_AISShape.hxx>
+#include <SALOME_AISObject.hxx>
+
+// Temporarily commented to avoid awful dependecy on SALOMEDS
+// TODO: better mechanism of storing display/erse status in a study
+// should be provided...
+//#include <Utils_ORB_INIT.hxx>
+//#include <Utils_SINGLETON.hxx>
+//#include <SALOME_ModuleCatalog_impl.hxx>
+//#include <SALOME_NamingService.hxx>
+
+//#include "SALOMEDSClient.hxx"
+//#include "SALOMEDS_StudyManager.hxx"
+
+#include <AIS_TypeOfIso.hxx>
+
+// in order NOT TO link with SalomeApp, here the code returns SALOMEDS_Study.
+// SalomeApp_Study::studyDS() does it as well, but -- here it is retrieved from
+// SALOMEDS::StudyManager - no linkage with SalomeApp.
+
+// Temporarily commented to avoid awful dependecy on SALOMEDS
+// TODO: better mechanism of storing display/erse status in a study
+// should be provided...
+//static _PTR(Study) getStudyDS()
+//{
+// SALOMEDSClient_Study* aStudy = NULL;
+// _PTR(StudyManager) aMgr( new SALOMEDS_StudyManager() );
+
+ // get id of SUIT_Study, if it's a SalomeApp_Study, it will return
+ // id of its underlying SALOMEDS::Study
+// SUIT_Application* app = SUIT_Session::session()->activeApplication();
+// if ( !app ) return _PTR(Study)(aStudy);
+// SUIT_Study* stud = app->activeStudy();
+// if ( !stud ) return _PTR(Study)(aStudy);
+// const int id = stud->id(); // virtual method, must return SALOMEDS_Study id
+ // get SALOMEDS_Study with this id from StudyMgr
+// return aMgr->GetStudyByID( id );
+//}
+
+/*!
+ Constructor
+ \param DisplayTrihedron - is trihedron displayed
+*/
+SOCC_Viewer::SOCC_Viewer( bool DisplayTrihedron )
+: OCCViewer_Viewer( DisplayTrihedron )
+{
+}
+
+/*!
+ Destructor
+*/
+SOCC_Viewer::~SOCC_Viewer()
+{
+}
+
+/*!
+ Hilights/unhilights object in viewer
+ \param obj - object to be updated
+ \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted
+ \param update - update current viewer
+*/
+bool SOCC_Viewer::highlight( const Handle(SALOME_InteractiveObject)& obj,
+ bool hilight, bool upd )
+{
+ bool isInLocal = getAISContext()->HasOpenedContext();
+ //SUIT_Study* ActiveStudy = SUIT_Application::getDesktop()->getActiveStudy();
+ //SALOME_Selection* Sel = SALOME_Selection::Selection( ActiveStudy->getSelection() );
+
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects(List);
+
+ AIS_ListIteratorOfListOfInteractive ite(List);
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ {
+ if ( !isInLocal )
+ OCCViewer_Viewer::highlight( ite.Value(), hilight, false );
+ // highlight subshapes only when local selection is active
+ else
+ {
+ /*if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISShape ) ) )
+ {
+ Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast( ite.Value() );
+ TColStd_IndexedMapOfInteger MapIndex;
+ Sel->GetIndex( IObject, MapIndex );
+ aSh->highlightSubShapes( MapIndex, highlight );
+ }*/
+ }
+ break;
+ }
+ }
+
+ if( upd )
+ update();
+
+ return false;
+}
+
+/*!
+ \return true if object is in viewer or in collector
+ \param obj - object to be checked
+ \param onlyInViewer - search object only in viewer (so object must be displayed)
+*/
+bool SOCC_Viewer::isInViewer( const Handle(SALOME_InteractiveObject)& obj,
+ bool onlyInViewer )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects(List);
+
+ if( !onlyInViewer ) {
+ AIS_ListOfInteractive List1;
+ getAISContext()->ObjectsInCollector(List1);
+ List.Append(List1);
+ }
+
+ AIS_ListIteratorOfListOfInteractive ite(List);
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ return true;
+ }
+ return false;
+}
+
+/*!
+ \return true if object is displayed in viewer
+ \param obj - object to be checked
+*/
+bool SOCC_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& obj )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects( List );
+
+ AIS_ListIteratorOfListOfInteractive ite( List );
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ return getAISContext()->IsDisplayed( ite.Value() );
+ }
+
+ return false;
+}
+
+/*!
+ Sets color of object
+ \param obj - object to be updated
+ \param color - new color
+ \param update - update current viewer
+*/
+void SOCC_Viewer::setColor( const Handle(SALOME_InteractiveObject)& obj,
+ const QColor& color, bool update )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects(List);
+
+ AIS_ListIteratorOfListOfInteractive ite(List);
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ {
+ OCCViewer_Viewer::setColor( ite.Value(), color, update );
+ return;
+ }
+ }
+}
+
+/*!
+ Changes display mode of object
+ \param obj - object to be processed
+ \param mode - new display mode
+ \param update - update current viewer
+*/
+void SOCC_Viewer::switchRepresentation( const Handle(SALOME_InteractiveObject)& obj,
+ int mode, bool update )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects(List);
+
+ AIS_ListIteratorOfListOfInteractive ite(List);
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ {
+ OCCViewer_Viewer::switchRepresentation( ite.Value(), mode, update );
+ return;
+ }
+ }
+}
+
+/*!
+ Changes transparency of object
+ \param obj - object to be processed
+ \param trans - new transparency
+ \param update - update current viewer
+*/
+void SOCC_Viewer::setTransparency( const Handle(SALOME_InteractiveObject)& obj,
+ float trans, bool update )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects( List );
+
+ AIS_ListIteratorOfListOfInteractive ite( List );
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && anObj->isSame( obj ) )
+ {
+ OCCViewer_Viewer::setTransparency( ite.Value(), trans, update );
+ return;
+ }
+ }
+}
+
+/*!
+ Changes name of object
+ \param obj - object to be renamed
+ \param name - new name
+*/
+void SOCC_Viewer::rename( const Handle(SALOME_InteractiveObject)& obj,
+ const QString& name )
+{
+ AIS_ListOfInteractive List;
+ getAISContext()->DisplayedObjects(List);
+
+ AIS_ListIteratorOfListOfInteractive ite(List);
+ while (ite.More())
+ {
+ if (ite.Value()->IsKind(STANDARD_TYPE(SALOME_AISShape)))
+ {
+ Handle(SALOME_AISShape) aSh = Handle(SALOME_AISShape)::DownCast(ite.Value());
+
+ if ( aSh->hasIO() )
+ {
+ Handle(SALOME_InteractiveObject) IO = aSh->getIO();
+ if ( IO->isSame( obj ) )
+ {
+ aSh->setName( (char*)name.latin1() );
+ break;
+ }
+ }
+ }
+ else if ( ite.Value()->IsKind( STANDARD_TYPE( SALOME_AISObject ) ) )
+ {
+ Handle(SALOME_AISObject) aSh = Handle(SALOME_AISObject)::DownCast( ite.Value() );
+
+ // Add code here, if someone create a MODULE_AISObject.
+ }
+ ite.Next();
+ }
+}
+
+
+/*!
+ Display presentation
+ \param prs - presentation
+*/
+void SOCC_Viewer::Display( const SALOME_OCCPrs* prs )
+{
+ // try do downcast object
+ const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( prs );
+ if ( !anOCCPrs || anOCCPrs->IsNull() )
+ return;
+
+ // get SALOMEDS Study
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ // _PTR(Study) study(getStudyDS());
+
+ // get context
+ Handle (AIS_InteractiveContext) ic = getAISContext();
+
+ // get all displayed objects
+ AIS_ListOfInteractive List;
+ ic->DisplayedObjects( List );
+ // get objects in the collector
+ AIS_ListOfInteractive ListCollector;
+ ic->ObjectsInCollector( ListCollector );
+
+ // get objects to be displayed
+ AIS_ListOfInteractive anAISObjects;
+ anOCCPrs->GetObjects( anAISObjects );
+
+ AIS_ListIteratorOfListOfInteractive aIter( anAISObjects );
+ for ( ; aIter.More(); aIter.Next() )
+ {
+ Handle(AIS_InteractiveObject) anAIS = aIter.Value();
+ if ( !anAIS.IsNull() )
+ {
+ // try to find presentation in the viewer
+ bool bDisplayed = false;
+ AIS_ListIteratorOfListOfInteractive ite( List );
+ for ( ; ite.More(); ite.Next() )
+ {
+ // compare presentations by handles
+ // if the object is already displayed - nothing to do more
+ if ( ite.Value() == anAIS )
+ {
+ // Deactivate object if necessary
+ if ( !anOCCPrs->ToActivate() )
+ ic->Deactivate( anAIS );
+ bDisplayed = true;
+ break;
+ }
+ }
+
+ if ( bDisplayed )
+ continue;
+
+ // then try to find presentation in the collector
+ bDisplayed = false;
+ ite.Initialize( ListCollector );
+ for ( ; ite.More(); ite.Next() )
+ {
+ // compare presentations by handles
+ // if the object is in collector - display it
+ if ( ite.Value() == anAIS )
+ {
+ ic->DisplayFromCollector( anAIS, false );
+
+ // Deactivate object if necessary
+ if ( !anOCCPrs->ToActivate() )
+ ic->Deactivate( anAIS );
+ bDisplayed = true;
+
+ // Set visibility flag
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ //Handle(SALOME_InteractiveObject) anObj =
+ // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );
+ //if ( !anObj.IsNull() && anObj->hasEntry() )
+ //{
+ // if ( study )
+ // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );
+ //}
+ break;
+ }
+ }
+ if ( bDisplayed )
+ continue;
+
+ // if object is not displayed and not found in the collector - display it
+ if ( anAIS->IsKind( STANDARD_TYPE(AIS_Trihedron) ) )
+ {
+ Handle(AIS_Trihedron) aTrh = Handle(AIS_Trihedron)::DownCast( anAIS );
+ double aNewSize = 100, aSize = 100;
+ getTrihedronSize( aNewSize, aSize );
+ aTrh->SetSize( aTrh == getTrihedron() ? aNewSize : 0.5 * aNewSize );
+ }
+
+ ic->Display( anAIS, false );
+
+ // Set visibility flag
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ //Handle(SALOME_InteractiveObject) anObj =
+ // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );
+ //if ( !anObj.IsNull() && anObj->hasEntry() )
+ //{
+ // if ( study )
+ // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );
+ //}
+
+ // Deactivate object if necessary
+ if ( !anOCCPrs->ToActivate() )
+ ic->Deactivate( anAIS );
+ }
+ }
+}
+
+
+/*!
+ Erase presentation
+ \param prs - presentation
+ \param forced - removes object from context
+*/
+void SOCC_Viewer::Erase( const SALOME_OCCPrs* prs, const bool forced )
+{
+ // try do downcast object
+ const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( prs );
+ if ( !anOCCPrs || anOCCPrs->IsNull() )
+ return;
+
+ // get SALOMEDS Study
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ // _PTR(Study) study(getStudyDS());
+
+ // get context
+ Handle(AIS_InteractiveContext) ic = getAISContext();
+
+ // get objects to be erased
+ AIS_ListOfInteractive anAISObjects;
+ anOCCPrs->GetObjects( anAISObjects );
+
+ AIS_ListIteratorOfListOfInteractive aIter( anAISObjects );
+ for ( ; aIter.More(); aIter.Next() ) {
+ Handle(AIS_InteractiveObject) anAIS = aIter.Value();
+ if ( !anAIS.IsNull() ) {
+ // erase the object from context : move it to collector
+ ic->Erase( anAIS, false, forced ? false : true );
+
+ // Set visibility flag if necessary
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ //if ( !forced )
+ //{
+ // Handle(SALOME_InteractiveObject) anObj =
+ // Handle(SALOME_InteractiveObject)::DownCast( anAIS->GetOwner() );
+ // if ( !anObj.IsNull() && anObj->hasEntry() )
+ // {
+ // if ( study )
+ // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );
+ // }
+ //}
+ }
+ }
+}
+
+
+/*!
+ Erase all presentations
+ \param forced - removes all objects from context
+*/
+void SOCC_Viewer::EraseAll( const bool forced )
+{
+ // get SALOMEDS Study
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ // _PTR(Study) study(getStudyDS());
+
+ // get context
+ Handle(AIS_InteractiveContext) ic = getAISContext();
+
+ // check if trihedron is displayed
+ Standard_Boolean isTrihedronDisplayed = ic->IsDisplayed( getTrihedron() );
+
+ // get objects to be erased (all currently displayed objects)
+ AIS_ListOfInteractive aList;
+ ic->DisplayedObjects( aList );
+ AIS_ListIteratorOfListOfInteractive anIter( aList );
+ for ( ; anIter.More(); anIter.Next() ) {
+ if ( isTrihedronDisplayed && anIter.Value()->DynamicType() == STANDARD_TYPE( AIS_Trihedron ) )
+ continue;
+
+ // erase an object
+ Handle(AIS_InteractiveObject) anIO = anIter.Value();
+ ic->Erase( anIO, false, forced ? false : true );
+
+ // Set visibility flag if necessary
+ // Temporarily commented to avoid awful dependecy on SALOMEDS
+ // TODO: better mechanism of storing display/erse status in a study
+ // should be provided...
+ //if ( !forced ) {
+ // Handle(SALOME_InteractiveObject) anObj =
+ // Handle(SALOME_InteractiveObject)::DownCast( anIO->GetOwner() );
+
+ // if ( !anObj.IsNull() && anObj->hasEntry() ) {
+ // if ( study )
+ // ToolsGUI::SetVisibility( study, anObj->getEntry(), true, this );
+ // }
+ //}
+ }
+
+ // display trihedron if necessary
+ if ( isTrihedronDisplayed )
+ getAISContext()->Display( getTrihedron() );
+ else
+ Repaint();
+}
+
+/*!
+ Create presentation corresponding to the entry
+ \param entry - entry
+*/
+SALOME_Prs* SOCC_Viewer::CreatePrs( const char* entry )
+{
+ SOCC_Prs* prs = new SOCC_Prs();
+ if ( entry )
+ {
+ // get context
+ Handle(AIS_InteractiveContext) ic = getAISContext();
+
+ // get displayed objects
+ AIS_ListOfInteractive List;
+ ic->DisplayedObjects( List );
+ // get objects in the collector
+ AIS_ListOfInteractive ListCollector;
+ ic->ObjectsInCollector( ListCollector );
+ List.Append( ListCollector );
+
+ AIS_ListIteratorOfListOfInteractive ite( List );
+ for ( ; ite.More(); ite.Next() )
+ {
+ Handle(SALOME_InteractiveObject) anObj =
+ Handle(SALOME_InteractiveObject)::DownCast( ite.Value()->GetOwner() );
+
+ if ( !anObj.IsNull() && anObj->hasEntry() && strcmp( anObj->getEntry(), entry ) == 0 )
+ prs->AddObject( ite.Value() );
+ }
+ }
+ return prs;
+}
+
+/*!
+ Activates selection of sub shapes
+*/
+void SOCC_Viewer::LocalSelection( const SALOME_OCCPrs* thePrs, const int theMode )
+{
+ Handle(AIS_InteractiveContext) ic = getAISContext();
+
+ const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( thePrs );
+ if ( ic.IsNull() )
+ return;
+
+ // Open local context if there is no one
+ bool allObjects = thePrs == 0 || thePrs->IsNull();
+ if ( !ic->HasOpenedContext() ) {
+ ic->ClearCurrents( false );
+ ic->OpenLocalContext( allObjects, true, true );
+ }
+
+ AIS_ListOfInteractive anObjs;
+ // Get objects to be activated
+ if ( allObjects )
+ ic->DisplayedObjects( anObjs );
+ else
+ anOCCPrs->GetObjects( anObjs );
+
+ // Activate selection of objects from prs
+ AIS_ListIteratorOfListOfInteractive aIter( anObjs );
+ for ( ; aIter.More(); aIter.Next() ) {
+ Handle(AIS_InteractiveObject) anAIS = aIter.Value();
+ if ( !anAIS.IsNull() )
+ {
+ if ( anAIS->IsKind( STANDARD_TYPE( AIS_Shape ) ) )
+ {
+ ic->Load( anAIS, -1, false );
+ ic->Activate( anAIS, AIS_Shape::SelectionMode( (TopAbs_ShapeEnum)theMode ) );
+ }
+ else if ( anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron) )
+ {
+ ic->Load( anAIS, -1, false );
+ ic->Activate( anAIS, theMode );
+ }
+ }
+ }
+}
+
+/*!
+ Deactivates selection of sub shapes
+*/
+void SOCC_Viewer::GlobalSelection( const bool update ) const
+{
+ Handle(AIS_InteractiveContext) ic = getAISContext();
+ if ( !ic.IsNull() )
+ {
+ ic->CloseAllContexts( false );
+ if ( update )
+ ic->CurrentViewer()->Redraw();
+ }
+}
+
+/*!
+ Auxiliary method called before displaying of objects
+*/
+void SOCC_Viewer::BeforeDisplay( SALOME_Displayer* d )
+{
+ d->BeforeDisplay( this, SALOME_OCCViewType() );
+}
+
+/*!
+ Auxiliary method called after displaying of objects
+*/
+void SOCC_Viewer::AfterDisplay( SALOME_Displayer* d )
+{
+ d->AfterDisplay( this, SALOME_OCCViewType() );
+}
+
+/*!
+ Get new and current trihedron size corresponding to the current model size
+*/
+bool SOCC_Viewer::getTrihedronSize( double& theNewSize, double& theSize )
+{
+ theNewSize = 100;
+ theSize = 100;
+
+ //SRN: BUG IPAL8996, a usage of method ActiveView without an initialization
+ Handle(V3d_Viewer) viewer = getViewer3d();
+ viewer->InitActiveViews();
+ if(!viewer->MoreActiveViews()) return false;
+
+ Handle(V3d_View) view3d = viewer->ActiveView();
+ //SRN: END of fix
+
+ if ( view3d.IsNull() )
+ return false;
+
+ double Xmin = 0, Ymin = 0, Zmin = 0, Xmax = 0, Ymax = 0, Zmax = 0;
+ double aMaxSide;
+
+ view3d->View()->MinMaxValues( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax );
+
+ if ( Xmin == RealFirst() || Ymin == RealFirst() || Zmin == RealFirst() ||
+ Xmax == RealLast() || Ymax == RealLast() || Zmax == RealLast() )
+ return false;
+
+ aMaxSide = Xmax - Xmin;
+ if ( aMaxSide < Ymax -Ymin ) aMaxSide = Ymax -Ymin;
+ if ( aMaxSide < Zmax -Zmin ) aMaxSide = Zmax -Zmin;
+
+ float aSizeInPercents = SUIT_Session::session()->resourceMgr()->doubleValue("Viewer","TrihedronSize", 105.);
+
+ static float EPS = 5.0E-3;
+ theSize = getTrihedron()->Size();
+ theNewSize = aMaxSide*aSizeInPercents / 100.0;
+
+ return fabs( theNewSize - theSize ) > theSize * EPS ||
+ fabs( theNewSize - theSize) > theNewSize * EPS;
+}
+
+
+/*!
+ Updates current viewer
+*/
+void SOCC_Viewer::Repaint()
+{
+// onAdjustTrihedron();
+ getViewer3d()->Update();
+}
+
+
+/*!
+ create SOCC_ViewWindow
+*/
+SUIT_ViewWindow* SOCC_Viewer::createView( SUIT_Desktop* theDesktop )
+{
+ SOCC_ViewWindow* view = new SOCC_ViewWindow(theDesktop, this);
+ initView( view );
+ return view;
+}
#include "SUIT_Accel.h"
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SOCC_ViewWindow
::SOCC_ViewWindow( SUIT_Desktop* theDesktop,
OCCViewer_Viewer* theModel)
{
}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SOCC_ViewWindow
::~SOCC_ViewWindow()
{
}
-//----------------------------------------------------------------------------
-void
+/*!
+ Performs action
+ \param theAction - type of action
+*/
+bool
SOCC_ViewWindow
::action( const int theAction )
{
myViewPort->rotate( cx, cy + inc );
myViewPort->endRotation();
break;
- }
+ }
+ return true;
}
virtual ~SOCC_ViewWindow();
protected:
- virtual void action( const int );
+ virtual bool action( const int );
};
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# source path
top_srcdir=@top_srcdir@
top_builddir=../..
LIB_MOC = \
SPlot2d_ViewModel.h
-#LIB_CLIENT_IDL = SALOMEDS.idl \
-# SALOME_Exception.idl \
-# SALOME_GenericObj.idl
-
-#LIB_CLIENT_IDL = SALOMEDS.idl \
-# SALOME_ModuleCatalog.idl \
-# SALOME_Component.idl \
-# SALOME_ContainerManager.idl \
-# SALOME_Exception.idl \
-# SALOME_GenericObj.idl
-
-#CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome
CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS)
LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS) -lsuit -lPlot2d -lSalomePrs
return *this;
}
+/*!
+ \return corresponding SALOME_InteractiveObject
+*/
Handle(SALOME_InteractiveObject) SPlot2d_Curve::getIO() const
{
return myIO;
}
+/*!
+ Sets corresponding SALOME_InteractiveObject
+ \param io - SALOME_InteractiveObject
+*/
void SPlot2d_Curve::setIO( const Handle(SALOME_InteractiveObject)& io )
{
myIO = io;
}
+/*!
+ \return true if curve has table interactive object
+*/
bool SPlot2d_Curve::hasTableIO() const
{
return !myTableIO.IsNull();
}
+/*!
+ \return table interactive object of curve
+*/
Handle(SALOME_InteractiveObject) SPlot2d_Curve::getTableIO() const
{
return myTableIO;
}
+/*!
+ Sets table interactive object of curve
+ \param io - SALOME_InteractiveObject
+*/
void SPlot2d_Curve::setTableIO( const Handle(SALOME_InteractiveObject)& io )
{
myTableIO = io;
}
+/*!
+ \return SALOME_InteractiveObject
+*/
bool SPlot2d_Curve::hasIO() const
{
return !myIO.IsNull();
}
+/*!
+ \return table title
+*/
QString SPlot2d_Curve::getTableTitle() const
{
QString title;
using namespace std;
#endif
-//==========================================================
/*!
- * SPlot2d_Prs::SPlot2d_Prs
- * Default constructor
- */
-//==========================================================
+ Default constructor
+*/
SPlot2d_Prs::SPlot2d_Prs()
:Plot2d_Prs()
{
}
-//==========================================================
/*!
- * SPlot2d_Prs::SPlot2d_Prs
- * Standard constructor
- */
-//==========================================================
+ Standard constructor
+*/
SPlot2d_Prs::SPlot2d_Prs( const Plot2d_Curve* obj )
:Plot2d_Prs(obj)
{
}
+/*!
+ Standard constructor
+*/
SPlot2d_Prs::SPlot2d_Prs( const Plot2d_Prs* prs )
{
mySecondY = prs->isSecondY();
myCurves = prs->getCurves();
}
-//==========================================================
/*!
- * SPlot2d_Prs::~SPlot2d_Prs
- * Destructor
- */
-//==========================================================
+ Destructor
+*/
SPlot2d_Prs::~SPlot2d_Prs()
{
}
return aMgr->GetStudyByID( id );
} */
-//=================================================================================
-// SPlot2d_Viewer implementation
-//=================================================================================
-
/*!
Constructor
*/
aViewFrame->updateTitles();
}
+/*!
+ Renames all copies of object in all view windows
+ \param IObj - object to be renamed
+ \param name - new name
+*/
void SPlot2d_Viewer::renameAll( const Handle(SALOME_InteractiveObject)& IObj, const QString& name )
{
SUIT_ViewManager* vm = getViewManager();
if(aViewFrame) aViewFrame->Repaint();
}
-//==========================================================
/*!
- * SPlot2d_Viewer::Display
- * Display presentation
- */
-//==========================================================
+ Display presentation
+*/
void SPlot2d_Viewer::Display( const SALOME_Prs2d* prs )
{
Plot2d_ViewFrame* aViewFrame = getActiveViewFrame();
if(aViewFrame && aPrs) aViewFrame->Display(aPrs);
}
-//==========================================================
/*!
- * SPlot2d_Viewer::Erase
- * Erase presentation
- */
-//==========================================================
+ Erase presentation
+*/
void SPlot2d_Viewer::Erase( const SALOME_Prs2d* prs, const bool )
{
Plot2d_ViewFrame* aViewFrame = getActiveViewFrame();
if(aViewFrame && aPrs) aViewFrame->Erase(aPrs);
}
-//==========================================================
/*!
- * SPlot2d_Viewer::CreatePrs
- * Create presentation by entry
- */
-//==========================================================
+ Create presentation by entry
+*/
SALOME_Prs* SPlot2d_Viewer::CreatePrs( const char* entry )
{
Plot2d_ViewFrame* aViewFrame = getActiveViewFrame();
return NULL;
}
-//==========================================================
/*!
- * SPlot2d_Viewer::BeforeDisplay
- * Axiluary method called before displaying of objects
- */
-//==========================================================
+ Axiluary method called before displaying of objects
+*/
void SPlot2d_Viewer::BeforeDisplay( SALOME_Displayer* d )
{
d->BeforeDisplay( this, SALOME_Plot2dViewType() );
}
-//==========================================================
/*!
- * SPlot2d_Viewer::AfterDisplay
- * Axiluary method called after displaying of objects
- */
-//==========================================================
+ Axiluary method called after displaying of objects
+*/
void SPlot2d_Viewer::AfterDisplay( SALOME_Displayer* d )
{
d->AfterDisplay( this, SALOME_Plot2dViewType() );
return anIO;
}
-//==========================================================
/*!
- * SPlot2d_Viewer::getActiveViewFrame
- * Returns an active Plot2d ViewFrame or NULL
- */
-//==========================================================
+ Returns an active Plot2d ViewFrame or NULL
+*/
Plot2d_ViewFrame* SPlot2d_Viewer::getActiveViewFrame()
{
SUIT_ViewManager* aViewMgr = getViewManager();
return NULL;
}
+/*!
+ \return curve by object and viewframe
+ \param theIObject - object
+ \param fr - viewframe
+*/
SPlot2d_Curve* SPlot2d_Viewer::getCurveByIO( const Handle(SALOME_InteractiveObject)& theIObject,
Plot2d_ViewFrame* fr )
{
return NULL;
}
+/*!
+ SLOT: called when action "Clone view" is activated
+*/
void SPlot2d_Viewer::onCloneView( Plot2d_ViewFrame* clonedVF, Plot2d_ViewFrame* newVF )
{
if( !clonedVF || !newVF )
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. translating
# from French to English, "Foo::Bar" would be translated to "Pub",
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : STD
if ( !isOk )
{
putInfo( "" );
- SUIT_MessageBox::error1( desktop(), tr( "TIT_FILE_SAVEAS" ),
- tr( "MSG_CANT_SAVE" ).arg( activeStudy()->studyName() ), tr( "BUT_OK" ) );
+ // displaying a message box as SUIT_Validator in case file can't be written (the most frequent case)
+ SUIT_MessageBox::error1( desktop(),
+ tr( "ERR_ERROR" ),
+ tr( "ERR_PERMISSION_DENIED" ).arg( activeStudy()->studyName() ),
+ tr( "BUT_OK" ) );
}
else
putInfo( tr( "INF_DOC_SAVED" ).arg( "" ) );
if ( !isOk )
SUIT_MessageBox::error1( desktop(), tr( "ERROR" ),
- tr( "INF_DOC_SAVING_FAILS" ).arg( aName ), tr( "BUT_OK" ) );
+ tr( "INF_DOC_SAVING_FAILS" ).arg( aName ),
+ tr( "BUT_OK" ) );
}
studySaved( activeStudy() );
return QFileDialog::getExistingDirectory( initial, parent, 0, caption, true );
}
+/*!
+ Changes desktop
+ \param desk - new desktop
+*/
void STD_Application::setDesktop( SUIT_Desktop* desk )
{
SUIT_Desktop* prev = desktop();
{
}
+/*!
+ Custom activity after study is created
+ Updates desktop and actions
+*/
void STD_Application::studyCreated( SUIT_Study* )
{
updateDesktopTitle();
updateCommandsStatus();
}
+/*!
+ Custom activity after study is opened
+ Updates desktop and actions
+*/
void STD_Application::studyOpened( SUIT_Study* )
{
updateDesktopTitle();
updateCommandsStatus();
}
+/*!
+ Custom activity after study is opened
+ Updates desktop and actions
+*/
void STD_Application::studySaved( SUIT_Study* )
{
updateDesktopTitle();
connect( m_pb4, SIGNAL( clicked() ), this, SLOT( reject() ) );
}
-//================================================================================
/*!
* \brief reaction on clicked(pressed) button
*/
-//================================================================================
-
void STD_CloseDlg::onButtonClicked()
{
QPushButton* btn = ( QPushButton* )sender();
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgstr "Ready"
msgid "BUT_OK"
-msgstr "OK"
+msgstr "&Ok"
msgid "BUT_CANCEL"
-msgstr "Cancel"
+msgstr "&Cancel"
msgid "BUT_CLOSE"
-msgstr "Close"
+msgstr "&Close"
msgid "BUT_HELP"
-msgstr "Help"
+msgstr "&Help"
msgid "BUT_YES"
-msgstr "Yes"
+msgstr "&Yes"
msgid "BUT_NO"
-msgstr "No"
+msgstr "&No"
msgid "BUT_APPLY"
-msgstr "Apply"
+msgstr "&Apply"
msgid "ERR_ERROR"
msgstr "Error"
msgstr "&Save&&Close"
msgid "CLOSE_DLG_CLOSE"
-msgstr "&Close w/o saving"
+msgstr "C&lose w/o saving"
msgid "CLOSE_DLG_UNLOAD"
msgstr "&Unload"
msgstr "Load a document"
msgid "MEN_DESK_FILE_LOAD"
-msgstr "Conn&ect"
+msgstr "Conn&ect..."
msgid "CLOSE_DLG_CAPTION"
msgstr "Close active study"
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : suit
// See http://www.salome-platform.org/
//
// SUIT_Accel.cxx: implementation of the SUIT_Accel class.
-//
-//////////////////////////////////////////////////////////////////////
#include "SUIT_Accel.h"
#include "SUIT_ViewWindow.h"
#include <qnamespace.h>
-/*!\class SUIT_Accel
- * Class handles keyboard accelerator bindings.
- */
SUIT_Accel* SUIT_Accel::myself = 0;
/*! Constructor [private].*/
if ( myMap.contains( type ) ) {
IdActionMap idActionMap = myMap[type];
if ( idActionMap.contains( key ) ) {
- vw->onAccelAction( idActionMap[key] );
- return true;
+ return vw->onAccelAction( idActionMap[key] );
}
}
}
// See http://www.salome-platform.org/
//
// SUIT_Accel.h: interface for the SUIT_Accel class.
-//
-//////////////////////////////////////////////////////////////////////
#ifndef SUIT_Accel_h
#define SUIT_Accel_h
#include <qstring.h>
#include <qmap.h>
+/*!
+ \class SUIT_Accel
+ Manager of keyboard accelerator bindings
+*/
class SUIT_EXPORT SUIT_Accel: public QObject
{
Q_OBJECT
#include <QtxActionMenuMgr.h>
#include <QtxActionToolMgr.h>
+/*!
+ Default constructor
+*/
SUIT_Application::SUIT_Application()
: QObject( 0 ),
myStudy( 0 ),
{
}
+/*!
+ Destructor
+*/
SUIT_Application::~SUIT_Application()
{
delete myStudy;
setDesktop( 0 );
}
+/*!
+ \return main window of application (desktop)
+*/
SUIT_Desktop* SUIT_Application::desktop()
{
return myDesktop;
}
+/*!
+ \return FALSE if application can not be closed (because of non saved data for example).
+ This method called by SUIT_Session whin closing of application was requested.
+*/
bool SUIT_Application::isPossibleToClose()
{
return true;
}
+/*!
+ Performs some finalization of life cycle of this application.
+ For instance, the application can force its documents(s) to close.
+*/
void SUIT_Application::closeApplication()
{
emit applicationClosed( this );
}
+/*!
+ \return active Study. If Application supports wirking with several studies this method should be redefined
+*/
SUIT_Study* SUIT_Application::activeStudy() const
{
return myStudy;
}
+/*!
+ \return version of application
+*/
QString SUIT_Application::applicationVersion() const
{
return QString::null;
}
+/*!
+ Shows the application's main widget. For non GUI application must be redefined.
+*/
void SUIT_Application::start()
{
if ( desktop() )
desktop()->show();
}
+/*!
+ Opens document into active Study. If Study is empty - creates it.
+ \param theFileName - name of document file
+*/
bool SUIT_Application::useFile( const QString& theFileName )
{
createEmptyStudy();
return status;
}
+/*!
+ Opens other study into active Study. If Study is empty - creates it.
+ \param theName - name of study
+*/
bool SUIT_Application::useStudy( const QString& theName )
{
return false;
}
+/*!
+ Creates new empty Study if active Study = 0
+*/
void SUIT_Application::createEmptyStudy()
{
if ( !activeStudy() )
setActiveStudy( createNewStudy() );
}
+/*!
+ \return number of Studies.
+ Must be redefined in Applications which support several studies for one Application instance.
+*/
int SUIT_Application::getNbStudies() const
{
return activeStudy() ? 1 : 0;
}
+/*!
+ \return global resource manager
+*/
SUIT_ResourceMgr* SUIT_Application::resourceMgr() const
{
if ( !SUIT_Session::session() )
}
#define DEFAULT_MESSAGE_DELAY 3000
+
+/*!
+ Puts the message to the status bar
+ \param msg - text of message
+ \param msec - time in milliseconds, after that the status label will be cleared
+*/
void SUIT_Application::putInfo ( const QString& msg, const int msec )
{
if ( !desktop() )
QTimer::singleShot( msec <= 0 ? DEFAULT_MESSAGE_DELAY : msec, myStatusLabel, SLOT( clear() ) );
}
+/*!
+ Initialize with application arguments
+ \param argc - number of application arguments
+ \param argv - array of application arguments
+*/
SUIT_Application* SUIT_Application::startApplication( int argc, char** argv ) const
{
return startApplication( name(), argc, argv );
}
+/*!
+ Initialize with application name and arguments
+ \param name - name of application
+ \param argc - number of application arguments
+ \param argv - array of application arguments
+*/
SUIT_Application* SUIT_Application::startApplication( const QString& name, int argc, char** argv ) const
{
SUIT_Session* session = SUIT_Session::session();
return session->startApplication( name, argc, argv );
}
+/*!
+ Sets the main window of application
+ \param desk - new main window (desktop)
+*/
void SUIT_Application::setDesktop( SUIT_Desktop* desk )
{
if ( myDesktop == desk )
connect( myDesktop, SIGNAL( activated() ), this, SLOT( onDesktopActivated() ) );
}
+/*!
+ Creates new instance of study.
+ By default, it is called from createEmptyStudy()
+ \sa createEmptyStudy()
+*/
SUIT_Study* SUIT_Application::createNewStudy()
{
return new SUIT_Study( this );
}
+/*!
+ Sets study as active
+ \param study - instance of study to be set as active
+*/
void SUIT_Application::setActiveStudy( SUIT_Study* study )
{
if ( myStudy == study )
myStudy = study;
}
+/*!
+ Creates new toolbar
+ \return identificator of new toolbar in tool manager
+ \param name - name of new toolbar
+*/
int SUIT_Application::createTool( const QString& name )
{
if ( !desktop() || !desktop()->toolMgr() )
return desktop()->toolMgr()->createToolBar( name );
}
+/*!
+ Creates new toolbutton
+ \return SUIT identificator of new action
+ \param a - action
+ \param tBar - identificator of toolbar
+ \param id - proposed SUIT identificator of action (if it is -1, then must be use any free)
+ \param idx - index in toolbar
+*/
int SUIT_Application::createTool( QAction* a, const int tBar, const int id, const int idx )
{
if ( !desktop() || !desktop()->toolMgr() )
return intId != -1 ? regId : -1;
}
+/*!
+ Creates new toolbutton
+ \return SUIT identificator of new action
+ \param a - action
+ \param tBar - name of toolbar
+ \param id - proposed SUIT identificator of action (if it is -1, then must be use any free)
+ \param idx - index in toolbar
+*/
int SUIT_Application::createTool( QAction* a, const QString& tBar, const int id, const int idx )
{
if ( !desktop() || !desktop()->toolMgr() )
return intId != -1 ? regId : -1;
}
+/*!
+ Creates new toolbutton
+ \return "id" if all right or -1 otherwise
+ \param id - SUIT identificator of action
+ \param tBar - identificator of toolbar
+ \param idx - index in toolbar
+*/
int SUIT_Application::createTool( const int id, const int tBar, const int idx )
{
if ( !desktop() || !desktop()->toolMgr() )
return intId != -1 ? id : -1;
}
+/*!
+ Creates new toolbutton
+ \return "id" if all right or -1 otherwise
+ \param id - SUIT identificator of action
+ \param tBar - name of toolbar
+ \param idx - index in toolbar
+*/
int SUIT_Application::createTool( const int id, const QString& tBar, const int idx )
{
if ( !desktop() || !desktop()->toolMgr() )
return intId != -1 ? id : -1;
}
+/*!
+ Creates new menu item
+ \return identificator of new action in menu manager
+ \param subMenu - menu text of new item
+ \param menu - identificator of parent menu item
+ \param id - proposed identificator of action
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( const QString& subMenu, const int menu,
const int id, const int group, const int index )
{
return desktop()->menuMgr()->insert( subMenu, menu, group, id, index );
}
+/*!
+ Creates new menu item
+ \return identificator of new action in menu manager
+ \param subMenu - menu text of new item
+ \param menu - menu text of parent menu item
+ \param id - proposed identificator of action
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( const QString& subMenu, const QString& menu,
const int id, const int group, const int index )
{
return desktop()->menuMgr()->insert( subMenu, menu, group, id, index );
}
+/*!
+ Creates new menu item
+ \return SUIT identificator of new action
+ \param a - action
+ \param menu - identificator of parent menu item
+ \param id - proposed SUIT identificator of action
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( QAction* a, const int menu, const int id, const int group, const int index )
{
if ( !a || !desktop() || !desktop()->menuMgr() )
return intId != -1 ? regId : -1;
}
+/*!
+ Creates new menu item
+ \return SUIT identificator of new action
+ \param a - action
+ \param menu - menu text of parent menu item
+ \param id - proposed SUIT identificator of action
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( QAction* a, const QString& menu, const int id, const int group, const int index )
{
if ( !a || !desktop() || !desktop()->menuMgr() )
return intId != -1 ? regId : -1;
}
+/*!
+ Creates new menu item
+ \return identificator of new action in menu manager
+ \param id - SUIT identificator of action
+ \param menu - menu text of parent menu item
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( const int id, const int menu, const int group, const int index )
{
if ( !desktop() || !desktop()->menuMgr() )
return intId != -1 ? id : -1;
}
+/*!
+ Creates new menu item
+ \return identificator of new action in menu manager
+ \param id - SUIT identificator of action
+ \param menu - menu text of parent menu item
+ \param group - group in menu manager
+ \param index - index in menu
+*/
int SUIT_Application::createMenu( const int id, const QString& menu, const int group, const int index )
{
if ( !desktop() || !desktop()->menuMgr() )
return intId != -1 ? id : -1;
}
+/*!
+ Show/hide menu item corresponding to action
+ \param a - action
+ \param on - if it is true, the item will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setMenuShown( QAction* a, const bool on )
{
setMenuShown( actionId( a ), on );
}
+/*!
+ Show/hide menu item corresponding to action
+ \param id - identificator of action in menu manager
+ \param on - if it is true, the item will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setMenuShown( const int id, const bool on )
{
if ( desktop() && desktop()->menuMgr() )
desktop()->menuMgr()->setShown( id, on );
}
+/*!
+ Show/hide tool button corresponding to action
+ \param a - action
+ \param on - if it is true, the button will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setToolShown( QAction* a, const bool on )
{
setToolShown( actionId( a ), on );
}
+/*!
+ Show/hide menu item corresponding to action
+ \param id - identificator of action in tool manager
+ \param on - if it is true, the button will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setToolShown( const int id, const bool on )
{
if ( desktop() && desktop()->toolMgr() )
desktop()->toolMgr()->setShown( id, on );
}
+/*!
+ Show/hide both menu item and tool button corresponding to action
+ \param a - action
+ \param on - if it is true, the item will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setActionShown( QAction* a, const bool on )
{
setMenuShown( a, on );
setToolShown( a, on );
}
+/*!
+ Show/hide both menu item and tool button corresponding to action
+ \param id - identificator in both menu manager and tool manager
+ \param on - if it is true, the item will be shown, otherwise it will be hidden
+*/
void SUIT_Application::setActionShown( const int id, const bool on )
{
setMenuShown( id, on );
setToolShown( id, on );
}
+/*!
+ \return action by it's SUIT identificator
+ \param id - SUIT identificator
+*/
QAction* SUIT_Application::action( const int id ) const
{
QAction* a = 0;
return a;
}
+/*!
+ \return SUIT identificator of action
+ \param a - action
+*/
int SUIT_Application::actionId( const QAction* a ) const
{
int id = -1;
return id;
}
+/*!
+ Creates action and registers it both in menu manager and tool manager
+ \return new instance of action
+ \param id - proposed SUIT identificator
+ \param text - description
+ \param icon - icon for toolbar
+ \param menu - menu text
+ \param tip - tool tip
+ \param key - shortcut
+ \param parent - parent object
+ \param toggle - if it is TRUE the action will be a toggle action, otherwise it will be a command action
+ \param reciever - object that contains slot
+ \param member - slot to be called when action is activated
+*/
QAction* SUIT_Application::createAction( const int id, const QString& text, const QIconSet& icon,
const QString& menu, const QString& tip, const int key,
QObject* parent, const bool toggle, QObject* reciever, const char* member )
return a;
}
+/*!
+ Registers action both in menu manager and tool manager
+ \param id - proposed SUIT identificator (if it is -1, auto generated one is used)
+ \param a - action
+*/
int SUIT_Application::registerAction( const int id, QAction* a )
{
int ident = actionId( a );
return ident;
}
+/*!
+ \return global action used as separator
+*/
QAction* SUIT_Application::separator()
{
return QtxActionMgr::separator();
}
+/*!
+ SLOT: it is called when desktop is activated
+*/
+
void SUIT_Application::onDesktopActivated()
{
emit activated( this );
//
// SUIT_Convertor.h: interface for the SUIT_Convertor class.
//
-//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SUIT_CONVERTOR_H__4C27F4C7_DC7C_4BEF_9DC1_EFB97B387EBF__INCLUDED_)
#define AFX_SUIT_CONVERTOR_H__4C27F4C7_DC7C_4BEF_9DC1_EFB97B387EBF__INCLUDED_
myCheck = on;
}
+/*!
+ \return the opened state of the object (used in Object Browser).
+*/
bool SUIT_DataObject::isOpen() const
{
return myOpen;
}
+/*!
+ Sets the opened state of the object (used in Object Browser).
+*/
void SUIT_DataObject::setOpen( const bool on )
{
myOpen = on;
#endif
/*!
- Class provide support data object.
+ \class SUIT_DataObject
+ Data Object represents uniform data tree structure recommended to use in SUIT-based applications
+ Many of standard classes (DataModel,ObjectBrowser) deal with SUIT_DataObjects
*/
class SUIT_EXPORT SUIT_DataObject
{
friend class SUIT_DataObjectIterator;
};
+/*!
+ \class SUIT_DataObject::Signal
+ Auxiliary class providing functionality to use signals of data object state change
+ SUIT_DataObject cannot have signals, because it isn't QObject, but
+ methods connect/disconnect of SUIT_DataObject with help of this it is possible
+ to emulate Qt signal processing
+*/
class SUIT_DataObject::Signal : public QObject
{
Q_OBJECT
#include "SUIT_DataObject.h"
/*!
- Class provide data object iterator.
+ \class SUIT_DataObjectIterator
+ Provides functionality of SUIT tree detour
+ It is possible to use "to-depth" or "to-breadth" detour and
+ to control level detour (from left or from right)
*/
class SUIT_EXPORT SUIT_DataObjectIterator
{
int myDetourType, myCurrentLevel;
};
+/*!
+ \class SUIT_DataObjectIterator
+ Provides functionality of SUIT tree detour between certain levels
+ Only "to-breadth" detour is used
+*/
class SUIT_DataObjectLevelIterator : public SUIT_DataObjectIterator
{
public:
#define _typeinfo type_info
#endif
-//********************************************************************
-// SUIT_DataOwner class
-//********************************************************************
-
-
/*! Constructor*/
SUIT_DataOwner::SUIT_DataOwner()
{
return p1.isNull() && p2.isNull();
}
-//********************************************************************
-/*! \class SUIT_DataOwnerPtrList
- * implements value list with unique items (uniqueness is
- * provided by operator==())
- */
-//********************************************************************
+/*!
+ \class SUIT_DataOwnerPtrList
+ implements value list with unique items (uniqueness is
+ provided by operator==())
+*/
-//====================================================================
-//! Constructor (default)
-//====================================================================
+/*!
+ Constructor (default)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList()
: QValueList<SUIT_DataOwnerPtr>(),
mySkipEqual( true )
{
}
-//====================================================================
-//! Constructor (default)
-//====================================================================
+/*!
+ Constructor (default)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqual )
: QValueList<SUIT_DataOwnerPtr>(),
mySkipEqual( skipAllEqual )
{
}
-//====================================================================
-//! Constructor (copy)
-//====================================================================
+/*!
+ Constructor (copy)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
: QValueList<SUIT_DataOwnerPtr>( l ),
mySkipEqual( true )
{
}
-//====================================================================
-//! Constructor (copy)
-//====================================================================
+/*!
+ Constructor (copy)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual )
: QValueList<SUIT_DataOwnerPtr>(),
mySkipEqual( skipAllEqual )
}
#ifndef QT_NO_STL
-//====================================================================
-//! Constructor (from stl)
-//====================================================================
+/*!
+ Constructor (from stl)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l )
: QValueList<SUIT_DataOwnerPtr>( l ),
mySkipEqual( true )
#endif
#ifndef QT_NO_STL
-//====================================================================
-//! Constructor (from stl)
-//====================================================================
+/*!
+ Constructor (from stl)
+*/
SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqual )
: QValueList<SUIT_DataOwnerPtr>(),
mySkipEqual( skipAllEqual )
}
#endif
-//====================================================================
-//! Appends an item to the list
-//====================================================================
+/*!
+ Appends an item to the list
+*/
SUIT_DataOwnerPtrList::iterator SUIT_DataOwnerPtrList::append( const SUIT_DataOwnerPtr& x )
{
if( mySkipEqual && myMap.contains( x ) ) //contains uses SUIT_DataOwnerPtr::operator==
return it;
}
-//====================================================================
-//! Clear list
-//====================================================================
+/*!
+ Clear list
+*/
void SUIT_DataOwnerPtrList::clear()
{
if( mySkipEqual )
QValueList<SUIT_DataOwnerPtr>::clear();
}
-//====================================================================
-//! Remove an item from the list
-//====================================================================
+/*!
+ Remove an item from the list
+*/
uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x )
{
if( mySkipEqual && myMap.contains(x) )
return QValueList<SUIT_DataOwnerPtr>::remove( x );
}
-//====================================================================
-//!
-//====================================================================
+/*!
+ Operator < allows to order suit data owners for map
+*/
bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
{
return p1.get()<p2.get();
#pragma warning( disable:4275 )
#endif
+/*!
+ \class SUIT_DataOwner
+ Represents abstract selected objects.
+ Used for selection synchronizing between windows(e.g. ObjectBrowser) and viewers
+*/
+
class SUIT_EXPORT SUIT_DataOwner : public RefCount
{
public:
class QtxActionMenuMgr;
class QtxActionToolMgr;
+/*!
+ \class SUIT_Desktop
+ Provides standard desktop: main window with
+ main menu manager, toolbars manager and logo.
+*/
class SUIT_EXPORT SUIT_Desktop : public QtxMainWindow
{
Q_OBJECT
//
// See http://www.salome-platform.org/
//
-//*********************************************************************************
-// SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box.
-// To get the file/directory name(s) call static methods:
-//
-// to invoke "Open file" or "Save file" dialog box
-// static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters,
-// const QString& caption, const bool open, const bool showQuickDir = true,
-// SUIT_FileValidator* validator = 0);
-//
-// to invoke "Open files" dialog box (to get the multiple file selection)
-// static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters,
-// const QString& caption, bool showQuickDir = true,
-// SUIT_FileValidator* validator = 0);
-//
-// to invoke "Select directory" dialog box
-// static QString getExistingDirectory(QWidget* parent, const QString& initial,
-// const QString& caption, const bool showQuickDir = true);
-//
-// The parameters:
-// - parent parent widget (if 0, the current desktop is used)
-// - initial starting directory or file name (if null, last visited directory is used)
-// - filters file filters list; patterns inside the filter can be separated by ';','|' or ' '
-// symbols
-// - caption dialog box's caption: if null, the default one is used
-// - open open flag - true for "Open File" and false for "Save File" dialog box
-// - showQuickDir this flag enables/disables "Quick directory list" controls
-// - validator you can provide custom file validator with this parameter
-//
-// Examples:
-// ...
-// QStringList flist;
-// flist.append( "Image files (*.bmp *.gif *.jpg )" );
-// flist.append( "All files (*.*)" );
-// QMyFileValidator* v = new QMyFileValidator( 0 );
-// QString fileName = SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v );
-// if ( !fileName.isEmpty() ) {
-// ... writing image to the file
-// }
-// ...
-// QStringList flist;
-// flist.append( "*.cpp | *.cxx | *.c++" );
-// flist.append( "*.h | *.hpp | *.hxx" );
-// QString fileName = SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true );
-//
-//*********************************************************************************
+
+/*!
+ SUIT_FileDlg class is the extension of the Qt's Open/Save file dialog box.
+ To get the file/directory name(s) call static methods:
+
+ to invoke "Open file" or "Save file" dialog box
+ static QString getFileName(QWidget* parent, const QString& initial, const QStringList& filters,
+ const QString& caption, const bool open, const bool showQuickDir = true,
+ SUIT_FileValidator* validator = 0);
+
+ to invoke "Open files" dialog box (to get the multiple file selection)
+ static QStringList getOpenFileNames(QWidget* parent, const QString& initial, const QStringList& filters,
+ const QString& caption, bool showQuickDir = true,
+ SUIT_FileValidator* validator = 0);
+
+ to invoke "Select directory" dialog box
+ static QString getExistingDirectory(QWidget* parent, const QString& initial,
+ const QString& caption, const bool showQuickDir = true);
+
+ The parameters:
+ - parent parent widget (if 0, the current desktop is used)
+ - initial starting directory or file name (if null, last visited directory is used)
+ - filters file filters list; patterns inside the filter can be separated by ';','|' or ' '
+ symbols
+ - caption dialog box's caption: if null, the default one is used
+ - open open flag - true for "Open File" and false for "Save File" dialog box
+ - showQuickDir this flag enables/disables "Quick directory list" controls
+ - validator you can provide custom file validator with this parameter
+
+ Examples:
+ ...
+ QStringList flist;
+ flist.append( "Image files (*.bmp *.gif *.jpg )" );
+ flist.append( "All files (*.*)" );
+ QMyFileValidator* v = new QMyFileValidator( 0 );
+ QString fileName = SUIT_FileDlg::getFileName( 0, QString::null, flist, "Dump view", false, true, v );
+ if ( !fileName.isEmpty() ) {
+ ... writing image to the file
+ }
+ ...
+ QStringList flist;
+ flist.append( "*.cpp | *.cxx | *.c++" );
+ flist.append( "*.h | *.hpp | *.hxx" );
+ QString fileName = SUIT_FileDlg::getFileName( desktop(), QString::null, flist, QString::null, true, true );
+*/
#include "SUIT_FileDlg.h"
#include <qwidget.h>
#include "SUIT.h"
+/*!
+ \class SUIT_FileValidator
+ Provides functionality to check file
+*/
class SUIT_EXPORT SUIT_FileValidator
{
public:
//
// See http://www.salome-platform.org/
//
-/********************************************************************
-** Class: SUIT_MessageBox
-** Descr: Message dialog box for SUIT-based application
-** Module: SUIT
-** Created: UI team, 02.10.00
-*********************************************************************/
+
+/*!
+ \class: SUIT_MessageBox
+ Message dialog box for SUIT-based application
+ Module: SUIT
+ Created: UI team, 02.10.00
+*/
#include "SUIT_MessageBox.h"
#include "SUIT_OverrideCursor.h"
//
// See http://www.salome-platform.org/
//
-/********************************************************************
-** Class: SUIT_MessageBox
-** Descr: Message dialog box for SUIT-based application
-** Module: SUIT
-** Created: UI team, 02.10.00
-*********************************************************************/
+
#ifndef SUIT_MESSAGEBOX_H
#define SUIT_MESSAGEBOX_H
#define SUIT_NO 4
#define SUIT_HELP 5
+/*!
+ \class SUIT_MessageBox
+ \brief Message dialog box for SUIT-based application
+*/
class SUIT_EXPORT SUIT_MessageBox
{
public:
//
// See http://www.salome-platform.org/
//
-/**
-* SALOME SalomeApp
-*
-* Copyright (C) 2005 CEA/DEN, EDF R&D
-*
-*
-*
-* File : SUIT_Operation.h
-* Author : Unknown
-* Module : SALOME
+
+/*!
+ SALOME SalomeApp
+
+ Copyright (C) 2005 CEA/DEN, EDF R&D
+
+ File : SUIT_Operation.h
+ Author : Unknown
+ Module : SALOME
*/
#include "SUIT_Operation.h"
#include "SUIT_Application.h"
/*!
- * \brief Constructor
- * \param SUIT_Application - application for this operation
-*
-* Constructs an empty operation. Constructor should work very fast because many
-* operators may be created after starting application but only several from them
-* may be used. As result this constructor stores given application in myApp field
-* and set Waiting status.
+ \brief Constructor
+ \param SUIT_Application - application for this operation
+
+ Constructs an empty operation. Constructor should work very fast because many
+ operators may be created after starting application but only several from them
+ may be used. As result this constructor stores given application in myApp field
+ and set Waiting status.
*/
SUIT_Operation::SUIT_Operation( SUIT_Application* app )
: QObject(),
//
// See http://www.salome-platform.org/
//
-/**
-* SALOME SalomeApp
-*
-* Copyright (C) 2005 CEA/DEN, EDF R&D
-*
-*
-*
-* File : SUIT_Operation.h
-* Author : Unknown
-* Module : SALOME
-*/
#ifndef SUIT_OPERATION_H
#define SUIT_OPERATION_H
class SUIT_Application;
/*!
+ \class SUIT_Operation
* \brief Base class for all operations
*
* Base class for all operations. If you perform an action it is reasonable to create
//
#include "SUIT_ResourceMgr.h"
+#include <qfileinfo.h>
+#include <qdir.h>
+
/*!
Constructor
*/
return path( docSection, prefix, id );
}
+#include <unistd.h>
/*!
Returns the user file name for specified application
*/
-QString SUIT_ResourceMgr::userFileName( const QString& appName ) const
+QString SUIT_ResourceMgr::userFileName( const QString& appName, const bool for_load ) const
{
QString pathName = QtxResourceMgr::userFileName( appName );
if ( !version().isEmpty() )
pathName += QString( "." ) + version();
+ if( !QFileInfo( pathName ).exists() && for_load )
+ {
+ QString newName = findAppropriateUserFile( pathName );
+ if( !newName.isEmpty() )
+ pathName = newName;
+ }
+
return pathName;
}
+
+/*!
+ Finds other the most appropriate user file instead missing one
+*/
+QString SUIT_ResourceMgr::findAppropriateUserFile( const QString& fname ) const
+{
+ QDir d( QFileInfo( fname ).dir( true ) );
+ d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
+ QStringList l = d.entryList();
+ QString appr_file;
+ int id0 = userFileId( fname ), id, appr=-1;
+ if( id0<0 )
+ return appr_file;
+
+ for( QStringList::const_iterator anIt = l.begin(), aLast = l.end(); anIt!=aLast; anIt++ )
+ {
+ id = userFileId( *anIt );
+ if( id<0 )
+ continue;
+
+ if( abs( id-id0 ) < abs( appr-id0 ) )
+ {
+ appr = id;
+ appr_file = d.absFilePath( *anIt );
+ }
+ }
+ return appr_file;
+}
+
+/*!
+ Calculates integer extended version number by user file name for comparing
+*/
+int SUIT_ResourceMgr::userFileId( const QString& ) const
+{
+ return -1;
+}
QString loadDoc( const QString&, const QString& ) const;
protected:
- virtual QString userFileName( const QString& ) const;
+ virtual QString userFileName( const QString&, const bool = true ) const;
+ virtual QString findAppropriateUserFile( const QString& ) const;
+ virtual int userFileId( const QString& ) const;
private:
QString myVersion;
class SUIT_SelectionMgr;
class SUIT_DataOwnerPtrList;
+/*!
+ \class SUIT_Selector
+ Base class for all selectors used in SUIT-based applications.
+ Provides functionality to get/set selection from/into some widget
+ (ObjectBrowser, viewers, etc)
+ Used by selection manager for selection synhronizing
+*/
class SUIT_EXPORT SUIT_Selector : public QObject
{
Q_OBJECT
#ifdef WIN32
lib = ::LoadLibrary( (char*)libFile.latin1() );
#else
- lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY /*| RTLD_GLOBAL */ );
+ lib = dlopen( (char*)libFile.latin1(), RTLD_LAZY | RTLD_GLOBAL );
#endif
return lib;
}
*/
SUIT_ResourceMgr* SUIT_Session::createResourceMgr( const QString& appName ) const
{
- return new SUIT_ResourceMgr( appName );
+ return new SUIT_ResourceMgr( applicationName( appName ) );
}
/*!
{
}
+/*!
+ Custom document initialization to be performed \n
+ within onNewDoc() handler can be put here
+*/
void SUIT_Study::createDocument()
{
- /*! Custom document initialization to be performed \n
- * within onNewDoc() handler can be put here
- */
}
/*!
#include <qfont.h>
#include <qstring.h>
+/*!
+ \class SUIT_Tools
+ Prodives set of auxiliary static methods
+*/
class SUIT_EXPORT SUIT_Tools : public Qtx
{
public:
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef SUIT_TREE_SYNC_HEADER
#define SUIT_TREE_SYNC_HEADER
#include <qptrlist.h>
#include <qvaluelist.h>
+/*!
+ \struct DiffItem
+ \brief Struct representing difference between items
+*/
template <class SrcItem, class TrgItem>
struct DiffItem
{
- SrcItem mySrc; //if it is null, then this item is to deleted
- TrgItem myTrg; //if it is null, then this item is to added
- //if both fields aren't null, then this item is to update
+ SrcItem mySrc;
+ /*!
+ \var mySrc
+ if it is null, then this item is to deleted
+ */
+ TrgItem myTrg;
+ /*!
+ \var myTrg
+ if it is null, then this item is to added
+ if both fields aren't null, then this item is to update
+ */
};
+/*!
+ \brief synchronizes two trees
+*/
template <class SrcItem, class TrgItem, class TreeData>
TrgItem synchronize( const SrcItem&, const TrgItem&, const TreeData& );
+/*!
+ \brief compares children
+*/
template <class SrcItem, class TrgItem, class TreeData>
void diffSiblings( const SrcItem&, const TrgItem&,
QValueList < DiffItem < SrcItem,TrgItem > >&,
const TreeData& );
+/*!
+ \brief create item with children (subtree)
+*/
template <class SrcItem, class TrgItem, class TreeData>
TrgItem createSubTree( const SrcItem&, const TrgItem&, const TrgItem&, const bool, const TreeData& );
+/*!
+ \brief find equal element in list
+*/
template <class SrcItem, class TrgItem, class TreeData>
const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<TrgItem>& l,
const typename QValueList<TrgItem>::const_iterator& first,
-
-//int gSync = 0;
+/*!
+ Synchronizes two trees by comparing corresponding items
+ \param r1 - start item from first tree
+ \param r2 - start item from second tree
+ \param td - auxiliary class providing following methods:
+ <ul>
+ <li> bool isEqual( const SrcItem&, const TrgItem& ) const - returns true if items are equal
+ <li> SrcItem nullSrc() const - returns null SrcItem
+ <li> TrgItem nullTrg() const - returns null TrgItem
+ <li> TrgItem createItem(
+ <ol>
+ <li> const SrcItem& src, - corresponding SrcItem
+ <li> const TrgItem& parent, - parent TrgItem
+ <li> const TrgItem& after, - TrgItem after that new item must be added
+ <li> const bool prepend - whether new item must be added as first
+ </ol>
+ ) const - creates new TrgItem
+ <li> void updateItem( const TrgItem& ) const - updates TrgItem without recreation
+ <li> void deleteItemWithChildren( const TrgItem& ) const - deletes TrgItem with all children
+ <li> void children( const SrcItem&, QValueList<SrcItem>& ) const - fills list with children
+ <li> void children( const TrgItem&, QValueList<TrgItem>& ) const - fills list with children
+ <li> SrcItem parent( const SrcItem& ) const - return parent SrcItem
+ <li> TrgItem parent( const TrgItem& ) const - return parent SrcItem
+ </ul>
+*/
template <class SrcItem, class TrgItem, class TreeData>
TrgItem synchronize( const SrcItem& r1, const TrgItem& r2, const TreeData& td )
{
diffSiblings( r1, r2, d, td );
typename QValueList< DiffItem< SrcItem, TrgItem > >::const_iterator anIt = d.begin(), aLast = d.end();
- bool isFirst = true;
TrgItem lastItem = td.nullTrg();
// TrgItem tail = td.nullTrg();
for( ; anIt!=aLast; anIt++ )
if( item.myTrg==td.nullTrg() )
{
//to add
- lastItem = createSubTree( item.mySrc, r2, lastItem, isFirst, td );
+ TrgItem nitem = createSubTree( item.mySrc, r2, lastItem, lastItem==td.nullTrg(), td );
+ if( nitem!=td.nullTrg() )
+ lastItem = nitem;
}
else
{
synchronize( item.mySrc, item.myTrg, td );
lastItem = item.myTrg;
}
- isFirst = false;
}
}
-
+
return r2;
}
else
}
}
+/*!
+ Finds equal element in list
+ \return iterator
+ \param l - list to search
+ \param first - start iterator
+ \param it - item to be found
+ \param td - tree data object (provides auxiliary methods)
+*/
template <class SrcItem, class TrgItem, class TreeData>
const typename QValueList<TrgItem>::const_iterator findEqual( const QValueList<TrgItem>& l,
const typename QValueList<TrgItem>::const_iterator& first,
return last;
}
+/*!
+ Compares children of objects src and trg
+ \param src - SrcItem to be checked
+ \param trg - TrgItem to be checked
+ \param d - map of difference to be filled
+ \param td - tree data object (provides auxiliary methods)
+*/
template <class SrcItem, class TrgItem, class TreeData>
void diffSiblings( const SrcItem& src, const TrgItem& trg,
QValueList < DiffItem < SrcItem,TrgItem > >& d,
const TreeData& td )
{
- if( src==td.nullSrc() || trg==td.nullTrg() )
- return;
+ //if( src==td.nullSrc() || trg==td.nullTrg() )
+ // return;
QValueList<SrcItem> src_ch;
QValueList<TrgItem> trg_ch;
}
}
+/*!
+ Creates sub-tree
+ \return root of just created sub-tree
+ \param src - corresponding SrcItem
+ \param parent - parent of new TrgItem
+ \param after - TrgItem, after that new item must be added
+ \param asFirst - true if TrgItem must be added as first
+ \param td - tree data object (provides auxiliary methods)
+*/
template <class SrcItem, class TrgItem, class TreeData>
TrgItem createSubTree( const SrcItem& src, const TrgItem& parent,
const TrgItem& after, const bool asFirst,
myStudy = NULL;
}
+/*! invoke method of SUIT_PopupClient, which notifies about popup*/
void SUIT_ViewManager::onContextMenuRequested( QContextMenuEvent* e )
{
- /*! invoke method of SUIT_PopupClient, which notifies about popup*/
contextMenuRequest( e );
}
//
// SUIT_ViewModel.cxx: implementation of the SUIT_ViewModel class.
//
-//////////////////////////////////////////////////////////////////////
#include "SUIT_ViewModel.h"
//
// SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class.
//
-//////////////////////////////////////////////////////////////////////
#include "SUIT_ViewWindow.h"
#include "SUIT_Desktop.h"
{
}
+/*!
+ Sets new view manager for window
+ \param theManager - new view manager
+*/
void SUIT_ViewWindow::setViewManager( SUIT_ViewManager* theManager )
{
myManager = theManager;
}
+/*!
+ \return view manager of window
+*/
SUIT_ViewManager* SUIT_ViewWindow::getViewManager() const
{
return myManager;
}
+/*!
+ \return QImage, containing all scene rendering in window
+*/
QImage SUIT_ViewWindow::dumpView()
{
return QImage();
}
+/*!
+ Saves scene rendering in window to file
+ \param fileName - name of file
+ \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG")
+*/
bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format )
{
QImage img = dumpView();
qApp->postEvent( this, new QCustomEvent( DUMP_EVENT ) );
}
+/*!
+ \return filters for image files
+*/
QString SUIT_ViewWindow::filter() const
{
return tr( "TLT_IMAGE_FILES" );
/*! Called by SUIT_Accel::onActivated() when a key accelerator was activated and this window was active
*/
-void SUIT_ViewWindow::onAccelAction( int _action )
+bool SUIT_ViewWindow::onAccelAction( int _action )
{
- action( _action );
+ return action( _action );
}
/*! action handle standard action (zoom, pan) or custom action. to be redefined in successors.
*/
-void SUIT_ViewWindow::action( const int )
+bool SUIT_ViewWindow::action( const int )
{
+ return true;
}
+/*!
+ \return string containing visual parameters of window
+*/
QString SUIT_ViewWindow::getVisualParameters()
{
return "empty";
}
-
+
+/*!
+ Sets visual parameters of window by its string representation
+ \param parameters - string with visual parameters
+*/
void SUIT_ViewWindow::setVisualParameters( const QString& parameters )
{
}
//
// SUIT_ViewWindow.h: interface for the SUIT_ViewWindow class.
//
-//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SUIT_VIEWWINDOW_H__82C3D51A_6F10_45B0_BCFE_3CB3EF596A4D__INCLUDED_)
#define AFX_SUIT_VIEWWINDOW_H__82C3D51A_6F10_45B0_BCFE_3CB3EF596A4D__INCLUDED_
virtual QImage dumpView();
virtual bool dumpViewToFormat( const QString& fileName, const QString& format );
- void onAccelAction( int );
+ bool onAccelAction( int );
virtual QString getVisualParameters();
virtual void setVisualParameters( const QString& parameters );
void closeEvent( QCloseEvent* );
virtual void contextMenuEvent( QContextMenuEvent* );
virtual QString filter() const;
- virtual void action( const int );
+ virtual bool action( const int );
SUIT_Desktop* myDesktop;
SUIT_ViewManager* myManager;
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgid "ERR_PERMISSION_DENIED"
msgstr "Can't save file \"%1\".\nPermission denied."
-msgid "BUT_OK"
-msgstr "&OK"
-
-msgid "BUT_YES"
-msgstr "&Yes"
-
-msgid "BUT_NO"
-msgstr "&No"
-
msgid "INF_DIRECTORIES_FILTER"
msgstr "Directories"
// Module : SALOME
// $Header$
-/* --- Definition macros file to print informations if _DEBUG_ is defined --- */
+/*! --- Definition macros file to print informations if _DEBUG_ is defined --- */
#ifndef UTILITIES_H
#define UTILITIES_H
#include "LocalTraceBufferPool.hxx"
-/** \file utilities.h
+/*! \file utilities.h
* For each message to put in the trace, a specific ostingstream object is \n
* created and destroyed automatically at the end of the message macro. \n
* The insert function of LocalTraceBufferPool class gets a buffer in a \n
std::cerr << "ABORT return code= "<< code << std::endl; \
std::exit(code);}
-/* --- To print date and time of compilation of current source --- */
+/*! --- To print date and time of compilation of current source --- */
#if defined ( __GNUC__ )
#define COMPILER "g++"
<< " at " << __TIME__ << MESS_END }
#ifdef _DEBUG_
-/** @name the following MACROS are useful at debug time*/
+/*! @name the following MACROS are useful at debug time*/
//@{
#define MESSAGE(msg) {MESS_BEGIN("- Trace ") << msg << MESS_END}
#define SCRUTE(var) {MESS_BEGIN("- Trace ") << #var << "=" << var <<MESS_END}
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : suitApp
#include <SUIT_Desktop.h>
#include <SUIT_ResourceMgr.h>
+#include <QtxSplash.h>
#ifdef SUIT_ENABLE_PYTHON
#include <Python.h>
#include <qfile.h>
#include <qstring.h>
#include <qstringlist.h>
+#include <qregexp.h>
#include <stdlib.h>
SUITApp_Session( bool theIniFormat ) : SUIT_Session(), myIniFormat ( theIniFormat ) {}
virtual ~SUITApp_Session() {}
-protected:
virtual SUIT_ResourceMgr* createResourceMgr( const QString& appName ) const
{
SUIT_ResourceMgr* resMgr = 0;
QStringList argList;
bool noExceptHandling = false;
- bool iniFormat = false;
+ bool iniFormat = false;
+ bool noSplash = false;
for ( int i = 1; i < args /*&& !noExceptHandling*/; i++ )
{
- if ( !strcmp( argv[i], "/noexcepthandling" ) )
+ if ( !strcmp( argv[i], "--noexcepthandling" ) )
noExceptHandling = true;
else if ( !strcmp( argv[i], "--format=ini") )
iniFormat = true;
+ else if ( !strcmp( argv[i], "--nosplash") )
+ noSplash = true;
else
argList.append( QString( argv[i] ) );
}
if ( !argList.isEmpty() )
{
SUITApp_Session* aSession = new SUITApp_Session( iniFormat );
+ QtxSplash* splash = 0;
+ if ( !noSplash ) {
+ SUIT_ResourceMgr* resMgr = aSession->createResourceMgr( argList.first() );
+ if ( resMgr ) {
+ resMgr->loadLanguage();
+ QString splashIcon, splashInfo, splashTextColors;
+ resMgr->value( "splash", "image", splashIcon );
+ resMgr->value( "splash", "info", splashInfo, false );
+ resMgr->value( "splash", "text_colors", splashTextColors );
+ QString appName = QObject::tr( "APP_NAME" ).stripWhiteSpace();
+ QString appVersion = QObject::tr( "APP_VERSION" ).stripWhiteSpace();
+ if ( appVersion == "APP_VERSION" ) {
+ if ( appName == "APP_NAME" || appName.lower() == "salome" )
+ appVersion = salomeVersion();
+ else
+ appVersion = "";
+ }
+ QPixmap px( splashIcon );
+ if ( !px.isNull() ) {
+ splash = QtxSplash::splash( px );
+ if ( !splashTextColors.isEmpty() ) {
+ QStringList colors = QStringList::split( "|", splashTextColors );
+ QColor c1, c2;
+ if ( colors.count() > 0 ) c1 = QColor( colors[0] );
+ if ( colors.count() > 1 ) c2 = QColor( colors[1] );
+ splash->setTextColors( c1, c2 );
+ }
+ else {
+ splash->setTextColors( Qt::white, Qt::black );
+ }
+#ifdef _DEBUG_
+ splash->setHideOnClick( true );
+#endif
+ QFont f = splash->font();
+ f.setBold( true );
+ splash->setFont( f );
+ if ( !splashInfo.isEmpty() ) {
+ splashInfo.replace( QRegExp( "%A" ), appName );
+ splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( appVersion ) );
+ splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) );
+ splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) );
+ splashInfo.replace( QRegExp( "\\\\n" ), "\n" );
+ splash->message( splashInfo );
+ }
+ splash->show();
+ qApp->processEvents();
+ }
+ }
+ }
SUIT_Application* theApp = aSession->startApplication( argList.first() );
if ( theApp )
{
// if ( !app.mainWidget() )
// app.setMainWidget( theApp->desktop() );
+ if ( splash )
+ splash->finish( theApp->desktop() );
result = app.exec();
+ if ( splash )
+ delete splash;
}
delete aSession;
}
#include <unistd.h>
#endif
+/*!
+ Constructor
+*/
SUITApp_Application::SUITApp_Application( int& argc, char** argv, SUIT_ExceptionHandler* hand )
: QApplication( argc, argv ),
myExceptHandler( hand )
delete strTbl;
}
+/*!
+ Constructor
+*/
SUITApp_Application::SUITApp_Application( int& argc, char** argv, Type type, SUIT_ExceptionHandler* hand )
: QApplication( argc, argv, type ),
myExceptHandler( hand )
installTranslator( strTbl );
}
+/*!
+ Sends event to receiver
+ \return the value that is returned from the receiver's event handler
+ \param e - event
+ \param receiver - receiver
+*/
bool SUITApp_Application::notify( QObject* receiver, QEvent* e )
{
return myExceptHandler ? myExceptHandler->handle( receiver, e ) :
QApplication::notify( receiver, e );
}
+/*!
+ Changes exception handler
+ \param hand - new handler
+*/
void SUITApp_Application::setHandler( SUIT_ExceptionHandler* hand )
{
myExceptHandler = hand;
}
+/*!
+ \return exception handler
+*/
SUIT_ExceptionHandler* SUITApp_Application::handler() const
{
return myExceptHandler;
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
msgid "APP_ERROR"
msgstr "Error"
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# source path
top_srcdir=@top_srcdir@
top_builddir=../..
LIB_CLIENT_IDL =
-CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS)
LDFLAGS+=$(QT_MT_LIBS) -L$(top_builddir)/lib -lsuit
using namespace std;
+/*!
+ Creates view
+*/
SUIT_ViewWindow* SUPERVGraph::createView(SUIT_Desktop* parent)
{
return new SUPERVGraph_ViewFrame( parent/*, "vtkView"*/ );
extern "C"
{
+ /*!
+ Creates view
+ */
SUIT_ViewWindow* createView(SUIT_Desktop* parent)
{
return SUPERVGraph::createView(parent);
using namespace std;
+/*!
+ Constructor
+*/
SUPERVGraph_View::SUPERVGraph_View( QWidget* theParent ): QWidget( theParent )
{
init(theParent);
}
+/*!
+ Constructor
+*/
SUPERVGraph_View::SUPERVGraph_View( SUPERVGraph_View* theParent ): QWidget( theParent )
{
init(theParent);
}
+/*!
+ Builds popup for SUPERVGraph viewer
+*/
void SUPERVGraph_View::contextMenuPopup( QPopupMenu* )
{
// to be implemented
}
+/*!
+ Initialization
+*/
void SUPERVGraph_View::init( QWidget* theParent )
{
if ( theParent->inherits( "QMainWindow" ) ) {
createToolBar();
}
+/*!
+ Creates actions of SUPERVGraph view window
+*/
void SUPERVGraph_ViewFrame::createActions()
{
if (!myActionsMap.isEmpty()) return;
myActionsMap[ ResetId ] = aAction;
}
-//================================================================
-// Function : createToolBar
-// Purpose :
-//================================================================
+/*!
+ Creates toolbar of SUPERVGraph view window
+*/
void SUPERVGraph_ViewFrame::createToolBar()
{
myActionsMap[PanId]->addTo(myToolBar);
myActionsMap[ResetId]->addTo(myToolBar);
}
+/*!
+ Destructor
+*/
SUPERVGraph_ViewFrame::~SUPERVGraph_ViewFrame() {}
/*!
}
+/*!
+ Sets new view widget
+ \param theView - new view widget
+*/
void SUPERVGraph_ViewFrame::setViewWidget( SUPERVGraph_View* theView )
{
myView = theView;
- setFocusProxy( myView ); // mkr : IPAL11388
}
return QMainWindow::backgroundColor();
}
+/*!
+*/
void SUPERVGraph_ViewFrame::onAdjustTrihedron()
{
// MESSAGE ( "SUPERVGraph_ViewFrame::onAdjustTrihedron" )
}
+/*!
+ Changes name of object
+ \param obj - object to be renamed
+ \param name - new name
+*/
void SUPERVGraph_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject,
QString newName )
{
// MESSAGE ( "SUPERVGraph_ViewFrame::rename" )
}
+/*!
+ Unhilights all object in viewer
+ \param updateviewer - update current viewer
+*/
void SUPERVGraph_ViewFrame::unHighlightAll()
{
// MESSAGE ( "SUPERVGraph_ViewFrame::unHighlightAll" )
}
+/*!
+ Hilights/unhilights object in viewer
+ \param obj - object to be updated
+ \param hilight - if it is true, object will be hilighted, otherwise it will be unhilighted
+ \param update - update current viewer
+*/
void SUPERVGraph_ViewFrame::highlight( const Handle(SALOME_InteractiveObject)& IObject,
bool highlight, bool immediatly )
{
// MESSAGE ( "SUPERVGraph_ViewFrame::highlight" )
}
+/*!
+ \return true if object is in viewer or in collector
+ \param obj - object to be checked
+ \param onlyInViewer - search object only in viewer (so object must be displayed)
+*/
bool SUPERVGraph_ViewFrame::isInViewer( const Handle(SALOME_InteractiveObject)& IObject )
{
// MESSAGE ( "SUPERVGraph_ViewFrame::isInViewer" )
return false;
}
+/*!
+ \return true if object is displayed in viewer
+ \param obj - object to be checked
+*/
bool SUPERVGraph_ViewFrame::isVisible( const Handle(SALOME_InteractiveObject)& IObject )
{
// MESSAGE ( "SUPERVGraph_ViewFrame::isVisible" )
return false;
}
+/*!
+ Custom resize event handler
+*/
void SUPERVGraph_ViewFrame::resizeEvent( QResizeEvent* theEvent )
{
QMainWindow::resizeEvent( theEvent );
int SUPERVGraph_ViewManager::myMaxId = 0;
+/*!
+ Constructor
+*/
SUPERVGraph_ViewManager::SUPERVGraph_ViewManager( SUIT_Study* theStudy,
SUIT_Desktop* theDesktop,
SUIT_ViewModel* theViewModel )
myId = ++myMaxId;
}
+/*!
+ Destructor
+*/
SUPERVGraph_ViewManager::~SUPERVGraph_ViewManager()
{
}
+/*!
+ Sets view name
+ \param theView - view to assign name
+*/
void SUPERVGraph_ViewManager::setViewName(SUIT_ViewWindow* theView)
{
int aPos = myViews.find(theView);
theView->setCaption( QString( "SUPERVISION scene:%1 - viewer:%2" ).arg( myId ).arg(aPos+1));
}
+/*!
+ Fills popup menu with custom actions
+ \param popup - popup menu to be filled with
+*/
void SUPERVGraph_ViewManager::contextMenuPopup( QPopupMenu* thePopup)
{
SUIT_ViewManager::contextMenuPopup( thePopup );
#include "SUIT_Desktop.h"
#include "SUIT_ViewWindow.h"
+/*!
+ Constructor
+*/
SUPERVGraph_Viewer::SUPERVGraph_Viewer()
:SUIT_ViewModel()
{
}
+/*!
+ Destructor
+*/
SUPERVGraph_Viewer::~SUPERVGraph_Viewer()
{
}
+/*!
+ Creates new view window
+ \param theDesktop - main window of application
+*/
SUIT_ViewWindow* SUPERVGraph_Viewer::createView(SUIT_Desktop* theDesktop)
{
SUPERVGraph_ViewFrame* aRes = new SUPERVGraph_ViewFrame( theDesktop );
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Alexander Solovyov(OCN)
# Module : SVTK
SALOME_Actor.h \
SVTK_RectPicker.h \
SVTK_DeviceActor.h \
+ SVTK_DialogBase.h \
SVTK_FontWidget.h \
SVTK_CubeAxesActor2D.h \
SVTK_Functor.h \
SVTK_Event.h \
SVTK_ViewModelBase.h
-PO_FILES = SVTK_msg_en.po
+PO_FILES = \
+ SVTK_msg_en.po \
+ SVTK_images.po
# Libraries targets
LIB = libSVTK.la
SVTK_DeviceActor.cxx \
SVTK_CubeAxesActor2D.cxx \
SVTK_NonIsometricDlg.cxx \
+ SVTK_UpdateRateDlg.cxx \
SVTK_CubeAxesDlg.cxx \
+ SVTK_DialogBase.cxx \
SVTK_FontWidget.cxx \
SVTK_Trihedron.cxx \
SVTK_MainWindow.cxx \
SVTK_GenericRenderWindowInteractor.h \
SVTK_RenderWindowInteractor.h \
SVTK_NonIsometricDlg.h \
+ SVTK_UpdateRateDlg.h \
SVTK_CubeAxesDlg.h \
SVTK_FontWidget.h \
+ SVTK_DialogBase.h \
SVTK_ViewModelBase.h \
SVTK_ViewManager.h \
SVTK_ViewWindow.h \
$(QT_INCLUDES) \
$(OCC_INCLUDES) \
$(VTK_INCLUDES) \
+ $(QWT_INCLUDES) \
$(BOOST_CPPFLAGS)
LDFLAGS+= \
$(QT_MT_LIBS) \
$(OCC_LIBS) \
+ $(QWT_LIBS) \
$(VTK_LIBS)
LIBS+= -lqtx -lsuit -lstd -lCAM -lSalomeObject -lSalomePrs -lVTKViewer
int SALOME_POINT_SIZE = 5;
int SALOME_LINE_WIDTH = 3;
-//----------------------------------------------------------------------------
namespace
{
int
{
int anEdgeId = 0;
if (vtkCell* aPickedCell = theActor->GetElemCell(theObjId)) {
- float aPickPosition[3];
+ vtkFloatingPointType aPickPosition[3];
thePicker->GetPickPosition(aPickPosition);
- float aMinDist = 1000000.0, aDist = 0;
+ vtkFloatingPointType aMinDist = 1000000.0, aDist = 0;
for (int i = 0, iEnd = aPickedCell->GetNumberOfEdges(); i < iEnd; i++){
if(vtkLine* aLine = vtkLine::SafeDownCast(aPickedCell->GetEdge(i))){
- int subId; float pcoords[3], closestPoint[3], weights[3];
+ int subId;
+ vtkFloatingPointType pcoords[3], closestPoint[3], weights[3];
aLine->EvaluatePosition(aPickPosition,closestPoint,subId,pcoords,aDist,weights);
if (aDist < aMinDist) {
aMinDist = aDist;
}
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SALOME_Actor);
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SALOME_Actor
::SALOME_Actor():
myRenderer(NULL),
myOutlineActor->SetVisibility( false );
}
-
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SALOME_Actor
::~SALOME_Actor()
{}
-//----------------------------------------------------------------------------
+/*!
+ \return true if the SALOME_Actor has a reference to SALOME_InteractiveObject
+*/
Standard_Boolean
SALOME_Actor
::hasIO()
return !myIO.IsNull();
}
+/*!
+ \return correspoinding reference to SALOME_InteractiveObject
+*/
const Handle(SALOME_InteractiveObject)&
SALOME_Actor
::getIO()
return myIO;
}
+/*!
+ Sets reference to SALOME_InteractiveObject
+ \param theIO - new SALOME_InteractiveObject
+*/
void
SALOME_Actor
::setIO(const Handle(SALOME_InteractiveObject)& theIO)
myIO = theIO;
}
+/*!
+ Sets name the SALOME_Actor
+ \param theName - new name
+*/
void
SALOME_Actor
::setName(const char* theName)
}
-//----------------------------------------------------------------------------
+/*!
+ Publishes the actor in all its internal devices
+*/
void
SALOME_Actor
::AddToRender(vtkRenderer* theRenderer)
theRenderer->AddActor( myOutlineActor.GetPointer() );
}
+/*!
+ Removes the actor from all its internal devices
+*/
void
SALOME_Actor
::RemoveFromRender(vtkRenderer* theRenderer)
theRenderer->RemoveActor( myOutlineActor.GetPointer() );
}
+/*!
+ \return reference on renderer where it is published
+*/
vtkRenderer*
SALOME_Actor
::GetRenderer()
return myRenderer;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Sets interactor in order to use vtkInteractorObserver devices
+ \param theInteractor - new interactor
+*/
void
SALOME_Actor
::SetInteractor(vtkRenderWindowInteractor* theInteractor)
myInteractor = theInteractor;
}
+/*!
+ Put a request to redraw the view
+*/
void
SALOME_Actor
::Update()
myInteractor->CreateTimer(VTKI_TIMER_UPDATE);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Apply view transformation
+ \param theTransform - transformation
+*/
void
SALOME_Actor
::SetTransform(VTKViewer_Transform* theTransform)
myOutlineActor->SetTransform(theTransform);
}
-
+/*!
+ Apply additional position
+*/
void
SALOME_Actor
-::SetPosition(float _arg1, float _arg2, float _arg3)
+::SetPosition(vtkFloatingPointType _arg1,
+ vtkFloatingPointType _arg2,
+ vtkFloatingPointType _arg3)
{
Superclass::SetPosition(_arg1,_arg2,_arg3);
myOutlineActor->SetPosition(_arg1,_arg2,_arg3);
}
-
+/*!
+ Apply additional position
+*/
void
SALOME_Actor
-::SetPosition(float _arg[3])
+::SetPosition(vtkFloatingPointType _arg[3])
{
SetPosition(_arg[0],_arg[1],_arg[2]);
}
-
-//----------------------------------------------------------------
+/*!
+ Shows/hides actor
+ \param theVisibility - new visibility state
+*/
void
SALOME_Actor
::SetVisibility( int theVisibility )
}
}
-
-//----------------------------------------------------------------
+/*!
+ Set selector in order to the actor at any time can restore current selection
+ \param theSelector - new selector
+*/
void
SALOME_Actor
::SetSelector(SVTK_Selector* theSelector)
mySelector = theSelector;
}
+/*!
+ To map current selection to VTK representation
+*/
void
SALOME_Actor
::Highlight(bool theIsHighlight)
highlight(theIsHighlight);
}
+/*!
+ Updates visibility of the highlight devices
+*/
void
SALOME_Actor
::highlight(bool theIsHighlight)
{
- float aBounds[6];
+ vtkFloatingPointType aBounds[6];
GetInput()->GetBounds(aBounds);
myOutline->SetBounds(aBounds);
myOutlineActor->SetVisibility( GetVisibility() && theIsHighlight );
}
-//----------------------------------------------------------------
+/*!
+ To process prehighlight (called from SVTK_InteractorStyle)
+*/
bool
SALOME_Actor
::PreHighlight(vtkInteractorStyle *theInteractorStyle,
SVTK_SelectionEvent* theSelectionEvent,
bool theIsHighlight)
{
+ if ( !GetPickable() )
+ return false;
+
vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer();
//
myPreHighlightActor->SetVisibility( false );
Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode;
bool anIsChanged = (mySelectionMode != aSelectionMode);
- float x = theSelectionEvent->myX;
- float y = theSelectionEvent->myY;
- float z = 0.0;
+ vtkFloatingPointType x = theSelectionEvent->myX;
+ vtkFloatingPointType y = theSelectionEvent->myY;
+ vtkFloatingPointType z = 0.0;
if( !theIsHighlight ) {
SetPreSelected( false );
return anIsChanged;
}
-
-//----------------------------------------------------------------
+/*!
+ To process highlight (called from SVTK_InteractorStyle)
+*/
bool
SALOME_Actor
::Highlight(vtkInteractorStyle *theInteractorStyle,
SVTK_SelectionEvent* theSelectionEvent,
bool theIsHighlight)
{
+ if ( !GetPickable() )
+ return false;
+
myOutlineActor->SetVisibility( false );
myHighlightActor->SetVisibility( false );
//
Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode;
bool anIsShift = theSelectionEvent->myIsShift;
- if( !anIsShift ) {
+ if( !anIsShift || !theIsHighlight ) {
mySelector->RemoveIObject( this );
}
- float x = theSelectionEvent->myX;
- float y = theSelectionEvent->myY;
- float z = 0.0;
+ if ( !theIsHighlight )
+ return true;
+
+ vtkFloatingPointType x = theSelectionEvent->myX;
+ vtkFloatingPointType y = theSelectionEvent->myY;
+ vtkFloatingPointType z = 0.0;
if( !theSelectionEvent->myIsRectangle ) {
switch(aSelectionMode){
break;
}
}else{
- float xLast = theSelectionEvent->myLastX;
- float yLast = theSelectionEvent->myLastY;
- float zLast = 0.0;
+ vtkFloatingPointType xLast = theSelectionEvent->myLastX;
+ vtkFloatingPointType yLast = theSelectionEvent->myLastY;
+ vtkFloatingPointType zLast = 0.0;
- float x1 = x < xLast ? x : xLast;
- float y1 = y < yLast ? y : yLast;
- float z1 = z < zLast ? z : zLast;
- float x2 = x > xLast ? x : xLast;
- float y2 = y > yLast ? y : yLast;
- float z2 = z > zLast ? z : zLast;
+ vtkFloatingPointType x1 = x < xLast ? x : xLast;
+ vtkFloatingPointType y1 = y < yLast ? y : yLast;
+ vtkFloatingPointType z1 = z < zLast ? z : zLast;
+ vtkFloatingPointType x2 = x > xLast ? x : xLast;
+ vtkFloatingPointType y2 = y > yLast ? y : yLast;
+ vtkFloatingPointType z2 = z > zLast ? z : zLast;
switch(aSelectionMode){
case NodeSelection: {
if(aMapIter != aVectorIdsMap.end()){
const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second;
vtkIdType anEnd = aVectorIds.size();
- SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin();
for(vtkIdType anId = 0; anId < anEnd; anId++ ) {
int aPointId = aVectorIds[anId];
if( aPointId >= 0 && mySelector->IsValid( this, aPointId, true ) ) {
}
case ActorSelection :
{
- float aPnt[3];
- float* aBounds = GetBounds();
+ vtkFloatingPointType aPnt[3];
+ vtkFloatingPointType* aBounds = GetBounds();
bool anIsPicked = true;
for( int i = 0; i <= 1; i++ ) {
if(aMapIter != aVectorIdsMap.end()){
const SVTK_RectPicker::TVectorIds& aVectorIds = aMapIter->second;
vtkIdType anEnd = aVectorIds.size();
- SVTK_RectPicker::TVectorIds::const_iterator anIdIter = aVectorIds.begin();
for(vtkIdType anId = 0; anId < anEnd; anId++ ) {
int aCellId = aVectorIds[anId];
if ( !mySelector->IsValid( this, aCellId ) )
return true;
}
-//----------------------------------------------------------------------------
+/*!
+ To set up a picker for nodal selection (initialized by SVTK_Renderer::AddActor)
+ \param thePointPicker - new picker
+*/
void
SALOME_Actor
::SetPointPicker(vtkPointPicker* thePointPicker)
myPointPicker = thePointPicker;
}
+/*!
+ To set up a picker for cell selection (initialized by SVTK_Renderer::AddActor)
+ \param theCellPicker - new picker
+*/
void
SALOME_Actor
::SetCellPicker(vtkCellPicker* theCellPicker)
myCellPicker = theCellPicker;
}
+/*!
+ To set up a picker for point rectangle selection (initialized by SVTK_Renderer::AddActor)
+ \param theRectPicker - new picker
+*/
void
SALOME_Actor
::SetPointRectPicker(SVTK_RectPicker* theRectPicker)
myPointRectPicker = theRectPicker;
}
+/*!
+ To set up a picker for cell rectangle selection (initialized by SVTK_Renderer::AddActor)
+ \param theRectPicker - new picker
+*/
void
SALOME_Actor
::SetCellRectPicker(SVTK_RectPicker* theRectPicker)
myCellRectPicker = theRectPicker;
}
-//----------------------------------------------------------------------------
+/*!
+ To set up a prehighlight property (initialized by SVTK_Renderer::AddActor)
+*/
void
SALOME_Actor
::SetPreHighlightProperty(vtkProperty* theProperty)
myPreHighlightActor->SetProperty(theProperty);
}
+/*!
+ To set up a highlight property (initialized by SVTK_Renderer::AddActor)
+*/
void
SALOME_Actor
::SetHighlightProperty(vtkProperty* theProperty)
//! Apply additional position
virtual
void
- SetPosition(float _arg1, float _arg2, float _arg3);
+ SetPosition(vtkFloatingPointType _arg1,
+ vtkFloatingPointType _arg2,
+ vtkFloatingPointType _arg3);
//! Apply additional position
virtual
void
- SetPosition(float _arg[3]);
+ SetPosition(vtkFloatingPointType _arg[3]);
//----------------------------------------------------------------------------
//! Visibility management
//
// See http://www.salome-platform.org/
//
-#ifdef WNT\r
-#ifdef SVTK_EXPORTS\r
-#define SVTK_EXPORT __declspec(dllexport)\r
-#else\r
-#define SVTK_EXPORT __declspec(dllimport)\r
-#endif\r
-#else\r
-#define SVTK_EXPORT\r
-#endif\r
-\r
-#if defined WNT\r
-#pragma warning ( disable: 4251 )\r
-#pragma warning ( disable: 4786 )\r
-#endif\r
+#ifndef SVTK_H
+#define SVTK_H
+
+#include "VTKViewer.h"
+
+#ifdef WNT
+# ifdef SVTK_EXPORTS
+# define SVTK_EXPORT __declspec(dllexport)
+# else
+# define SVTK_EXPORT __declspec(dllimport)
+# endif
+#else
+# define SVTK_EXPORT
+#endif
+
+#if defined WNT
+#pragma warning ( disable: 4251 )
+#pragma warning ( disable: 4786 )
+#endif
+
+#endif
aPoints->Delete();
}
-//=======================================================================
-
vtkStandardNewMacro(SVTK_Actor);
+/*!
+ Constructor
+*/
SVTK_Actor
::SVTK_Actor():
myUnstructuredGrid(vtkUnstructuredGrid::New())
myUnstructuredGrid->Allocate();
}
-//----------------------------------------------------------------------------
void
SVTK_Actor
::Initialize()
SetInput(GetSource());
}
-
-//----------------------------------------------------------------------------
void
SVTK_Actor
::SetSource(vtkUnstructuredGrid* theUnstructuredGrid)
return myUnstructuredGrid.GetPointer();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_Actor
::~SVTK_Actor()
{
}
-
-//----------------------------------------------------------------------------
const TColStd_IndexedMapOfInteger&
SVTK_Actor
::GetMapIndex() const
return myMapIndex;
}
-
-//----------------------------------------------------------------------------
void
SVTK_Actor
::MapCells(SALOME_Actor* theMapActor,
myMapIndex = theMapIndex;
}
-
-//----------------------------------------------------------------------------
void
SVTK_Actor
::MapPoints(SALOME_Actor* theMapActor,
aPoints->SetNumberOfPoints(aNbOfParts);
for(int i = 0; i < aNbOfParts; i++){
int aPartId = theMapIndex( i+1 );
- if(float* aCoord = theMapActor->GetNodeCoord(aPartId)){
+ if(vtkFloatingPointType* aCoord = theMapActor->GetNodeCoord(aPartId)){
aPoints->SetPoint(i,aCoord);
myUnstructuredGrid->InsertNextCell(VTK_VERTEX,1,&i);
}
myMapIndex = theMapIndex;
}
-
-//----------------------------------------------------------------------------
void
SVTK_Actor
::MapEdge(SALOME_Actor* theMapActor,
myMapIndex = theMapIndex;
}
-
-//----------------------------------------------------------------------------
vtkCxxRevisionMacro(SVTK_CubeAxesActor2D, "$Revision$");
vtkStandardNewMacro(SVTK_CubeAxesActor2D);
-//----------------------------------------------------------------------------
// Instantiate this object.
SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D()
{
}
-//----------------------------------------------------------------------------
SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D()
{
this->wireActorXY->Delete();
this->rgridMapperXZ->Delete();
}
-//----------------------------------------------------------------------------
// Static variable describes connections in cube.
static int Conn[8][3] = {{1,2,4}, {0,3,5}, {3,0,6}, {2,1,7},
{5,6,0}, {4,7,1}, {7,4,2}, {6,5,3}};
-//----------------------------------------------------------------------------
// Project the bounding box and compute edges on the border of the bounding
// cube. Determine which parts of the edges are visible via intersection
// with the boundary of the viewport (minus borders).
return renderedSomething;
}
-static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRange2,bool theY){
- float tmp=-1000;
+static void ChangeValues(vtkFloatingPointType* aArray1,
+ vtkFloatingPointType* aArray2,
+ vtkFloatingPointType *aRange1,
+ vtkFloatingPointType* aRange2,
+ bool theY)
+{
+ vtkFloatingPointType tmp=-1000;
if (!theY){
for (int i=0; i<4; i++){
tmp = aArray1[i]; aArray1[i] = aArray2[i]; aArray2[i] = tmp;
}
}
-static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords,
- float* xRange,float* yRange,float* zRange,
- const int xAxes,const int yAxes, const int zAxes)
+static void ChangeArrays(vtkFloatingPointType* xCoords,
+ vtkFloatingPointType* yCoords,
+ vtkFloatingPointType* zCoords,
+ vtkFloatingPointType* xRange,
+ vtkFloatingPointType* yRange,
+ vtkFloatingPointType* zRange,
+ const int xAxes,
+ const int yAxes,
+ const int zAxes)
{
if ( xAxes == 0 && yAxes == 2 && zAxes == 1)
ChangeValues(yCoords,zCoords,yRange,zRange,true);
ChangeValues(zCoords,xCoords,zRange,xRange,false);
}
-//----------------------------------------------------------------------------
// Project the bounding box and compute edges on the border of the bounding
// cube. Determine which parts of the edges are visible via intersection
// with the boundary of the viewport (minus borders).
int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport)
{
- float bounds[6], slope = 0.0, minSlope, num, den;
- float pts[8][3], d2, d2Min, min;
+ vtkFloatingPointType bounds[6], slope = 0.0, minSlope, num, den;
+ vtkFloatingPointType pts[8][3], d2, d2Min, min;
int i, idx = 0;
int xIdx, yIdx = 0, zIdx = 0, zIdx2, renderedSomething=0;
int xAxes = 0, yAxes, zAxes;
}
else
{
- float e1[2], e2[2], e3[2];
+ vtkFloatingPointType e1[2], e2[2], e3[2];
// Find distance to origin
d2Min = VTK_LARGE_FLOAT;
}
// Setup the axes for plotting
- float xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2];
+ vtkFloatingPointType xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2];
this->AdjustAxes(pts, bounds, idx, xIdx, yIdx, zIdx, zIdx2,
xAxes, yAxes, zAxes,
xCoords, yCoords, zCoords, xRange, yRange, zRange);
#else
for(i=0;i<numOfLabelsX;i++){
#endif
- float val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
+ vtkFloatingPointType val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
XCoords->InsertNextValue(val);
}
// YCoords coordinates for Y grid
#else
for(i=0;i<numOfLabelsX;i++){
#endif
- float val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
+ vtkFloatingPointType val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
YCoords->InsertNextValue(val);
}
// ZCoords coordinates for Z grid
#else
for(i=0;i<numOfLabelsZ;i++){
#endif
- float val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
+ vtkFloatingPointType val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
ZCoords->InsertNextValue(val);
}
rgrid->Delete();
- float aCPosition[3];
- float aCDirection[3];
+ vtkFloatingPointType aCPosition[3];
+ vtkFloatingPointType aCDirection[3];
this->Camera->GetPosition(aCPosition);
this->Camera->GetDirectionOfProjection(aCDirection);
bool replaceXY=false;
bool replaceYZ=false;
bool replaceXZ=false;
- float p[6][3]; // centers of planes
- float vecs[6][3]; // 6 vectors from camera position to centers
+ vtkFloatingPointType p[6][3]; // centers of planes
+ vtkFloatingPointType vecs[6][3]; // 6 vectors from camera position to centers
- float aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2;
- float aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2;
- float aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2;
+ vtkFloatingPointType aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2;
+ vtkFloatingPointType aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2;
+ vtkFloatingPointType aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2;
// plane XY
p[0][0] = aMiddleX; // plane X=0.5 Y=0.5 Z=0
YCoords->Delete();
ZCoords->Delete();
- float color[3];
+ vtkFloatingPointType color[3];
this->GetProperty()->GetColor(color);
this->wireActorXY->GetProperty()->SetColor(color);
return renderedSomething;
}
-//----------------------------------------------------------------------------
// Release any graphics resources that are being consumed by this actor.
// The parameter window could be used to determine which graphic
// resources to release.
class vtkRectilinearGridGeometryFilter;
class VTKViewer_Transform;
-#include <SVTK.h>
+#include "SVTK.h"
+#include "VTKViewer.h"
#ifndef WNT
class VTK_HYBRID_EXPORT SVTK_CubeAxesActor2D : public vtkCubeAxesActor2D
* Description : Tab of dialog
*/
-//=======================================================================
-// name : SVTK_AxisWidget::AxisWg
-// Purpose : Constructor
-//=======================================================================
+/*!
+ Constructor
+*/
SVTK_AxisWidget::SVTK_AxisWidget (QWidget* theParent)
: QFrame(theParent)
{
connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked()));
}
+/*!
+ Destructor
+*/
SVTK_AxisWidget::~SVTK_AxisWidget()
{
}
onTicksChecked();
}
-//=======================================================================
-// name : SVTK_AxisWidget::onNameChecked
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::setEnabled(QGroupBox* theGrp, const bool theState)
{
QObjectList aChildren(*theGrp->children());
((QHBox*)anObj)->setEnabled(theState);
}
-//=======================================================================
-// Labels : SVTK_AxisWidget::onLabelsChecked
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::onLabelsChecked()
{
setEnabled(myLabelsGrp, myIsLabelsVisible->isChecked());
}
-//=======================================================================
-// Labels : SVTK_AxisWidget::onTicksChecked
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::onTicksChecked()
{
setEnabled(myTicksGrp, myIsTicksVisible->isChecked());
}
-//=======================================================================
-// name : SVTK_AxisWidget::onNameChecked
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::onNameChecked()
{
setEnabled(myNameGrp, myIsNameVisible->isChecked());
}
-//=======================================================================
-// name : SVTK_AxisWidget::UseName
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::UseName(const bool toUse)
{
myIsNameVisible->setChecked(toUse);
}
-//=======================================================================
-// name : SVTK_AxisWidget::SetName
-// Purpose :
-//================================================== =====================
void SVTK_AxisWidget::SetName(const QString& theName)
{
myAxisName->setText(theName);
}
-//=======================================================================
-// name : SVTK_AxisWidget::SetNameFont
-// Purpose :
-//=======================================================================
void SVTK_AxisWidget::SetNameFont(const QColor& theColor,
const int theFont,
const bool theIsBold,
myNameFont->SetData(theColor, theFont, theIsBold, theIsItalic, theIsShadow);
}
-//=======================================================================
-// name : SVTK_AxisWidget::SetNameFont
-// Purpose :
-//=======================================================================
bool SVTK_AxisWidget::ReadData(vtkAxisActor2D* theActor)
{
if (theActor == 0)
vtkTextProperty* aTitleProp = theActor->GetTitleTextProperty();
if (aTitleProp !=0)
{
- float c[ 3 ];
+ vtkFloatingPointType c[ 3 ];
aTitleProp->GetColor(c);
aTitleColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255));
aTitleFontFamily = aTitleProp->GetFontFamily();
vtkTextProperty* aLabelsProp = theActor->GetLabelTextProperty();
if (aLabelsProp !=0)
{
- float c[ 3 ];
+ vtkFloatingPointType c[ 3 ];
aLabelsProp->GetColor(c);
aLabelsColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255));
aLabelsFontFamily = aLabelsProp->GetFontFamily();
return true;
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::Apply
-// Purpose :
-//=======================================================================
bool SVTK_AxisWidget::Apply(vtkAxisActor2D* theActor)
{
if (theActor == 0)
Description : Dialog for specifynig cube axes properties
*/
-//=======================================================================
-// name : SVTK_CubeAxesDlg::SVTK_CubeAxesDlg
-// Purpose : Constructor
-//=======================================================================
-SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(SVTK_MainWindow* theParent,
- const char* theName,
- QtxAction* theAction):
- QDialog(theParent,
- theName,
- false,
- WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
- myMainWindow(theParent),
- myAction(theAction)
+/*!
+ Constructor
+*/
+SVTK_CubeAxesDlg::SVTK_CubeAxesDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName):
+ SVTK_DialogBase(theAction,
+ theParent,
+ theName),
+ myMainWindow(theParent)
{
setCaption(tr("CAPTION"));
QVBoxLayout* aLay = new QVBoxLayout(this, 5, 5);
aLay->addWidget(createMainFrame(this));
aLay->addWidget(createButtonFrame(this));
+
+ connect(theParent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow()));
+ connect(theParent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide()));
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::createMainFrame
-// Purpose : Create frame containing dialog's input fields
-//=======================================================================
+/*!
+ Create frame containing dialog's input fields
+*/
QWidget* SVTK_CubeAxesDlg::createMainFrame(QWidget* theParent)
{
QFrame* aFrame = new QFrame(theParent);
return aFrame;
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::createButtonFrame
-// Purpose : Create frame containing buttons
-//=======================================================================
+/*!
+ Create frame containing buttons
+*/
QWidget* SVTK_CubeAxesDlg::createButtonFrame(QWidget* theParent)
{
QFrame* aFrame = new QFrame(theParent);
return aFrame;
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg
-// Purpose : Destructor
-//=======================================================================
+/*!
+ Destructor
+*/
SVTK_CubeAxesDlg::~SVTK_CubeAxesDlg()
{
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::Update
-// Purpose : Update dialog fields, connect signals and slots, show dialog
-//=======================================================================
+/*!
+ Update dialog fields, connect signals and slots, show dialog
+*/
void SVTK_CubeAxesDlg::Update()
{
myActor = myMainWindow->GetCubeAxes();
myIsVisible->setChecked(myActor->GetVisibility() ? true : false);
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::isValid
-// Purpose : Verify validity of entry data
-//=======================================================================
+/*!
+ Verify validity of entry data
+*/
bool SVTK_CubeAxesDlg::isValid() const
{
return true;
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::onApply
-// Purpose : Verify validity of entry data
-//=======================================================================
+/*!
+ Verify validity of entry data
+*/
bool SVTK_CubeAxesDlg::onApply()
{
bool isOk = true;
return isOk;
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::onOk
-// Purpose : SLOT called when "Ok" button pressed.
-//=======================================================================
+/*!
+ SLOT called when "Ok" button pressed.
+*/
void SVTK_CubeAxesDlg::onOk()
{
if (onApply())
onClose();
}
-//=======================================================================
-// name : SVTK_CubeAxesDlg::onClose
-// Purpose : SLOT called when "Close" button pressed. Close dialog
-//=======================================================================
+/*!
+ SLOT: called when "Close" button pressed. Close dialog
+*/
void SVTK_CubeAxesDlg::onClose()
{
reject();
-
- myAction->setOn( false );
-}
-
-void SVTK_CubeAxesDlg::done( int r )
-{
- myAction->setOn( false );
- QDialog::done( r );
}
#ifndef SVTK_CubeAxesDlg_H
#define SVTK_CubeAxesDlg_H
-#include <qdialog.h>
+#include "SVTK_DialogBase.h"
+
#include <qframe.h>
class QWidget;
* Class : SVTK_CubeAxesDlg
* Description : Dialog for specifynig cube axes properties
*/
-class SVTK_CubeAxesDlg : public QDialog
+class SVTK_CubeAxesDlg : public SVTK_DialogBase
{
Q_OBJECT
public:
- SVTK_CubeAxesDlg(SVTK_MainWindow* theParent,
- const char* theName,
- QtxAction* theAction);
+ SVTK_CubeAxesDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName);
virtual ~SVTK_CubeAxesDlg();
void Update();
bool onApply();
void onClose();
- virtual void done( int );
-
private:
QWidget* createButtonFrame( QWidget* );
QWidget* createMainFrame ( QWidget* );
private:
SVTK_MainWindow *myMainWindow;
SVTK_CubeAxesActor2D* myActor;
- QtxAction* myAction;
QTabWidget* myTabWg;
QCheckBox* myIsVisible;
using namespace std;
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SVTK_DeviceActor);
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_DeviceActor
::SVTK_DeviceActor()
{
myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
}
-
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_DeviceActor
::~SVTK_DeviceActor()
{
myPassFilter[i]->Delete();
}
-
-//----------------------------------------------------------------------------
+/*!
+ To insert some additional filters and then sets the given vtkMapper
+*/
void
SVTK_DeviceActor
::SetMapper(vtkMapper* theMapper)
InitPipeLine(theMapper);
}
+/*!
+ To initialize internal pipeline
+*/
void
SVTK_DeviceActor
::InitPipeLine(vtkMapper* theMapper)
Superclass::SetMapper(theMapper);
}
-//----------------------------------------------------------------------------
+/*!
+ Allows to get initial vtkDataSet
+*/
vtkDataSet*
SVTK_DeviceActor
::GetInput()
return myPassFilter.front()->GetOutput();
}
+/*!
+ Allows to set initial vtkDataSet
+*/
void
SVTK_DeviceActor
::SetInput(vtkDataSet* theDataSet)
InitPipeLine(myMapper);
}
-//----------------------------------------------------------------------------
+/*!
+ To provide VTK to Object and backward mapping
+*/
void
SVTK_DeviceActor::
SetStoreMapping(bool theStoreMapping)
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return time of modification
+*/
unsigned long int
SVTK_DeviceActor
::GetMTime()
return mTime;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Apply a view transformation
+ \param theTransform - transformation
+*/
void
SVTK_DeviceActor
::SetTransform(VTKViewer_Transform* theTransform)
myTransformFilter->SetTransform(theTransform);
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return true if actor is shrinkable
+*/
bool
SVTK_DeviceActor
::IsShrunkable()
{
return myIsShrinkable;
}
-
+
+/*!
+ Changes shrinkable state of actor
+ theIsShrinkable - new shrinkable state
+*/
void
SVTK_DeviceActor
::SetShrinkable(bool theIsShrinkable)
myIsShrinkable = theIsShrinkable;
}
+/*!
+ \return true if actor is shrunkable
+*/
bool
SVTK_DeviceActor
::IsShrunk()
return myIsShrunk;
}
+/*!
+ Insert shrink filter into pipeline
+*/
void
SVTK_DeviceActor
::SetShrink()
}
}
+/*!
+ Remove shrink filter from pipeline
+*/
void
SVTK_DeviceActor
::UnShrink()
}
}
-float
+/*!
+ \return shrink factor
+*/
+vtkFloatingPointType
SVTK_DeviceActor
::GetShrinkFactor()
{
return myShrinkFilter->GetShrinkFactor();
}
+/*!
+ Changes shrink factor
+ \param theValue - new shrink factor
+*/
void
SVTK_DeviceActor
-::SetShrinkFactor(float theValue)
+::SetShrinkFactor(vtkFloatingPointType theValue)
{
myShrinkFilter->SetShrinkFactor(theValue);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on)
+ param theMode - new mode
+*/
void
SVTK_DeviceActor
::SetRepresentation(SVTK::Representation::Type theMode)
myRepresentation = theMode;
}
+/*!
+ \return current representation mode
+*/
SVTK::Representation::Type
SVTK_DeviceActor
::GetRepresentation()
return myRepresentation;
}
-float
+/*!
+ \return default point size
+*/
+vtkFloatingPointType
SVTK_DeviceActor
::GetDefaultPointSize()
{
return 5;
}
-float
+/*!
+ \return default line width
+*/
+vtkFloatingPointType
SVTK_DeviceActor
::GetDefaultLineWidth()
{
return 3;
}
-
+/*!
+ \return true if actor is shaded
+*/
bool
SVTK_DeviceActor
::IsShaded()
return myIsShaded;
}
+/*!
+ Sets shaded state of actor
+ \param theShaded - new shaded state
+*/
void
SVTK_DeviceActor
::SetShaded(bool theShaded)
myIsShaded = theShaded;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Maps VTK index of a node to corresponding object index
+*/
int
SVTK_DeviceActor
::GetNodeObjId(int theVtkID)
return theVtkID;
}
-float*
+/*!
+ Get coordinates of a node for given object index
+*/
+vtkFloatingPointType*
SVTK_DeviceActor
::GetNodeCoord(int theObjID)
{
}
+/*!
+ Get corresponding #vtkCell for given object index
+*/
vtkCell*
SVTK_DeviceActor
::GetElemCell(int theObjID)
return GetInput()->GetCell(theObjID);
}
+/*!
+ Maps VTK index of a cell to corresponding object index
+*/
int
SVTK_DeviceActor
::GetElemObjId(int theVtkID)
return theVtkID;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Renders actor
+*/
void
SVTK_DeviceActor
::Render(vtkRenderer *ren, vtkMapper* m)
{
if(myIsResolveCoincidentTopology){
int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
- float aFactor, aUnit;
+ vtkFloatingPointType aFactor, aUnit;
vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
}
}
-
+/*!
+ Set polygon offset parameters
+ \param factor, units - Opengl polygon offset parameters
+*/
void
SVTK_DeviceActor
-::SetPolygonOffsetParameters(float factor, float units)
+::SetPolygonOffsetParameters(vtkFloatingPointType factor,
+ vtkFloatingPointType units)
{
myPolygonOffsetFactor = factor;
myPolygonOffsetUnits = units;
}
+/*!
+ Get polygon offset parameters
+ \param factor, units - Opengl polygon offset parameters
+*/
void
SVTK_DeviceActor
-::GetPolygonOffsetParameters(float& factor, float& units)
+::GetPolygonOffsetParameters(vtkFloatingPointType& factor,
+ vtkFloatingPointType& units)
{
factor = myPolygonOffsetFactor;
units = myPolygonOffsetUnits;
#ifndef SVTK_DEVICE_ACTOR_H
#define SVTK_DEVICE_ACTOR_H
+#include "SVTK.h"
+#include "VTKViewer.h"
+
#include <vector>
#include <vtkLODActor.h>
class vtkShrinkFilter;
class vtkDataSetMapper;
-//----------------------------------------------------------------------------
namespace SVTK
{
namespace Representation
}
-//----------------------------------------------------------------------------
-class SVTK_DeviceActor: public vtkLODActor
+class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
{
public:
vtkTypeMacro(SVTK_DeviceActor,vtkLODActor);
GetNodeObjId(int theVtkID);
virtual
- float*
+ vtkFloatingPointType*
GetNodeCoord(int theObjID);
virtual
/** @name For shrink mamnagement purpose */
//@{
- float
+ vtkFloatingPointType
GetShrinkFactor();
virtual
void
- SetShrinkFactor(float value);
+ SetShrinkFactor(vtkFloatingPointType value);
virtual
void
GetRepresentation();
virtual
- float
+ vtkFloatingPointType
GetDefaultPointSize();
virtual
- float
+ vtkFloatingPointType
GetDefaultLineWidth();
bool
bool myIsShrunk;
bool myIsResolveCoincidentTopology;
- float myPolygonOffsetFactor;
- float myPolygonOffsetUnits;
+ vtkFloatingPointType myPolygonOffsetFactor;
+ vtkFloatingPointType myPolygonOffsetUnits;
- void SetPolygonOffsetParameters(float factor, float units);
- void GetPolygonOffsetParameters(float& factor, float& units);
+ void SetPolygonOffsetParameters(vtkFloatingPointType factor,
+ vtkFloatingPointType units);
+ void GetPolygonOffsetParameters(vtkFloatingPointType& factor,
+ vtkFloatingPointType& units);
SVTK_DeviceActor();
~SVTK_DeviceActor();
--- /dev/null
+// SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author :
+// Module : SALOME
+// $Header$
+
+#include "SVTK_DialogBase.h"
+
+#include "QtxAction.h"
+
+/*!
+ Constructor
+*/
+SVTK_DialogBase
+::SVTK_DialogBase(QtxAction* theAction,
+ QWidget* theParent,
+ const char* theName,
+ bool theModal,
+ WFlags theWFalgs):
+ QDialog(theParent,
+ theName,
+ theModal,
+ theWFalgs | WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+ myAction(theAction)
+{
+ connect(theParent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow()));
+ connect(theParent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide()));
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+SVTK_DialogBase
+::~SVTK_DialogBase()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+void
+SVTK_DialogBase
+::onParentShow()
+{
+ if(myAction->isOn())
+ show();
+ else
+ hide();
+}
+
+void
+SVTK_DialogBase
+::onParentHide()
+{
+ hide();
+}
+
+void
+SVTK_DialogBase
+::done( int r )
+{
+ myAction->setOn( false );
+ QDialog::done( r );
+}
--- /dev/null
+// SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author :
+// Module : SALOME
+// $Header$
+
+#ifndef SVTK_DIALOGBASE_H
+#define SVTK_DIALOGBASE_H
+
+#include "SVTK.h"
+
+#include <qdialog.h>
+
+class QtxAction;
+
+class SVTK_EXPORT SVTK_DialogBase : public QDialog
+{
+ Q_OBJECT;
+
+public:
+ SVTK_DialogBase(QtxAction* theAction,
+ QWidget* theParent,
+ const char* theName = "",
+ bool theModal = FALSE,
+ WFlags theWFalgs = 0);
+
+ ~SVTK_DialogBase();
+
+protected slots:
+ void onParentShow();
+ void onParentHide();
+ virtual void done( int );
+
+protected:
+ QtxAction* myAction;
+};
+
+#endif // SVTK_DIALOGBASE_H
* Description : Dialog for specifynig font
*/
-//=======================================================================
-// name : SVTK_FontWidget
-// Purpose : Constructor
-//=======================================================================
+/*!
+ Constructor
+*/
SVTK_FontWidget::SVTK_FontWidget( QWidget* theParent )
: QHBox( theParent )
{
connect( myColorBtn, SIGNAL( clicked() ), SLOT( onColor() ) );
}
-//=======================================================================
-// name : ~SVTK_FontWidget
-// Purpose : Destructor
-//=======================================================================
+/*!
+ Destructor
+*/
SVTK_FontWidget::~SVTK_FontWidget()
{
}
-//=======================================================================
-// name : SetColor
-// Purpose :
-//=======================================================================
void SVTK_FontWidget::SetColor( const QColor& theColor )
{
myColorBtn->setPaletteBackgroundColor( theColor );
}
-//=======================================================================
-// name : GetColor
-// Purpose :
-//=======================================================================
QColor SVTK_FontWidget::GetColor() const
{
return myColorBtn->paletteBackgroundColor();
}
-//=======================================================================
-// name : onColor
-// Purpose :
-//=======================================================================
void SVTK_FontWidget::onColor()
{
QColor aColor = QColorDialog::getColor( GetColor(), this );
SetColor( aColor );
}
-//=======================================================================
-// name : SetData
-// Purpose :
-//=======================================================================
void SVTK_FontWidget::SetData( const QColor& theColor,
const int theFamily,
const bool theBold,
myShadow->setChecked( theShadow );
}
-//=======================================================================
-// name : GetData
-// Purpose :
-//=======================================================================
void SVTK_FontWidget::GetData( QColor& theColor,
int& theFamily,
bool& theBold,
using namespace std;
-//----------------------------------------------------------------------------
vtkStandardNewMacro(QVTK_GenericRenderWindowInteractor);
+/*!
+ Constructor
+*/
QVTK_GenericRenderWindowInteractor
::QVTK_GenericRenderWindowInteractor()
{
connect(myTimer, SIGNAL(timeout()), this, SLOT(OnTimeOut())) ;
}
+/*!
+ Destructor
+*/
QVTK_GenericRenderWindowInteractor
::~QVTK_GenericRenderWindowInteractor()
{
delete myTimer;
}
-
-//----------------------------------------------------------------------------
+/*!
+ The slot connects to QTimer::timeout signal to invoke vtkCommand::TimerEvent
+*/
void
QVTK_GenericRenderWindowInteractor
::OnTimeOut()
}
}
+/*!
+ Starts the QTimer instance on defined microseconds
+*/
int
QVTK_GenericRenderWindowInteractor
::CreateTimer(int vtkNotUsed(timertype))
return 1;
}
+/*!
+ Stops the QTimer instance
+*/
int
QVTK_GenericRenderWindowInteractor
::DestroyTimer(void)
}
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SVTK_GenericRenderWindowInteractor);
+/*!
+ Constructor
+*/
SVTK_GenericRenderWindowInteractor
::SVTK_GenericRenderWindowInteractor():
myRenderWidget(NULL)
{
}
+/*!
+ Destructor
+*/
SVTK_GenericRenderWindowInteractor
::~SVTK_GenericRenderWindowInteractor()
{
}
+/*!
+ To get access to SVTK_Selector
+*/
SVTK_Selector*
SVTK_GenericRenderWindowInteractor
::GetSelector()
return mySelector.GetPointer();
}
+/*!
+ To initialize mySelector field
+ \param theSelector - new selector
+*/
void
SVTK_GenericRenderWindowInteractor
::SetSelector(SVTK_Selector* theSelector)
mySelector = theSelector;
}
+/*!
+ To get access to QWidget, where vtkRenderWindow maps to.
+*/
QWidget*
SVTK_GenericRenderWindowInteractor
::GetRenderWidget()
return myRenderWidget;
}
+/*!
+ To initialize myRenderWidget field.
+*/
void
SVTK_GenericRenderWindowInteractor
::SetRenderWidget(QWidget* theRenderWidget)
class SVTK_Renderer;
-//============================================================================
-//! Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality.
/*!
+ \class QVTK_GenericRenderWindowInteractor
+ Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality.
The class intendes to implement platform indepenedant subclass of vtkRenderWindowInteractor.
This is done by usage of Qt library.
\note
};
-//============================================================================
-//! This class introduce SALOME specific to the base one
/*!
+ \class SVTK_GenericRenderWindowInteractor
+ This class introduce SALOME specific to the base one
In this class new members is added (#mySelector and #myRenderWidget).
They are used for initialization of #SVTK_InteractorStyle by redefinition of
#SVTK_InteractorStyle::SetInteractor method
}
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SVTK_InteractorStyle);
-//----------------------------------------------------------------------------
+
+/*!
+ Constructor
+*/
SVTK_InteractorStyle
::SVTK_InteractorStyle():
mySelectionEvent(new SVTK_SelectionEvent()),
myControllerOnKeyDown->Delete();
}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_InteractorStyle
::~SVTK_InteractorStyle()
{
}
-//----------------------------------------------------------------------------
+/*!
+ \return widget for rendering
+*/
QWidget*
SVTK_InteractorStyle
::GetRenderWidget()
return myInteractor->GetRenderWidget();
}
+/*!
+ \return selector
+*/
SVTK_Selector*
SVTK_InteractorStyle
::GetSelector()
return myInteractor->GetSelector();
}
-//----------------------------------------------------------------------------
+/*!
+ Generate special SVTK_SelectionEvent
+*/
SVTK_SelectionEvent*
SVTK_InteractorStyle
::GetSelectionEvent()
return mySelectionEvent.get();
}
-//----------------------------------------------------------------------------
+/*!
+ Generate special SVTK_SelectionEvent with flipped Y coordinate
+*/
SVTK_SelectionEvent*
SVTK_InteractorStyle
::GetSelectionEventFlipY()
return mySelectionEvent.get();
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::RotateXY(int dx, int dy)
this->Render();
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::PanXY(int x, int y, int oldX, int oldY)
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::DollyXY(int dx, int dy)
this->Render();
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::SpinXY(int x, int y, int oldX, int oldY)
}
-//----------------------------------------------------------------------------
+/*!
+ To reset reset view
+*/
void
SVTK_InteractorStyle
::OnConfigure()
this->GetCurrentRenderer()->InvokeEvent(vtkCommand::ConfigureEvent,NULL);
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle mouse move event
+*/
void
SVTK_InteractorStyle
::OnMouseMove()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle left mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnLeftButtonDown()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle left mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnLeftButtonUp()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle middle mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnMiddleButtonDown()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle middle mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnMiddleButtonUp()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle right mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnRightButtonDown()
x, y );
}
-//----------------------------------------------------------------------------
+/*!
+ To handle right mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnRightButtonUp()
x, y );
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle mouse move event
+*/
void
SVTK_InteractorStyle
::OnMouseMove(int vtkNotUsed(ctrl),
onCursorMove(QPoint(x, y));
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle left mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnLeftButtonDown(int ctrl, int shift,
return;
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle left mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnLeftButtonUp(int vtkNotUsed(ctrl),
}
}
-
-//----------------------------------------------------------------------------
+/*!
+ To handle middle mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnMiddleButtonDown(int ctrl,
}
-//----------------------------------------------------------------------------
+/*!
+ To handle middle mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnMiddleButtonUp(int vtkNotUsed(ctrl),
}
-//----------------------------------------------------------------------------
+/*!
+ To handle right mouse button down event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnRightButtonDown(int ctrl,
}
}
-//----------------------------------------------------------------------------
+/*!
+ To handle right mouse button up event (reimplemented from vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::OnRightButtonUp(int vtkNotUsed(ctrl),
}
}
-//----------------------------------------------------------------------------
/* XPM */
const char* imageZoomCursor[] = {
"32 32 3 1",
"................................"};
-//----------------------------------------------------------------------------
-// loads cursors for viewer operations - zoom, pan, etc...
+/*!
+ loads cursors for viewer operations - zoom, pan, etc...
+*/
void
SVTK_InteractorStyle
::loadCursors()
}
-//----------------------------------------------------------------------------
-// starts Zoom operation (e.g. through menu command)
+/*!
+ Starts Zoom operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startZoom()
}
-//----------------------------------------------------------------------------
-// starts Pan operation (e.g. through menu command)
+/*!
+ Starts Pan operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startPan()
ForcedState = VTK_INTERACTOR_STYLE_CAMERA_PAN;
}
-//----------------------------------------------------------------------------
-// starts Rotate operation (e.g. through menu command)
+/*!
+ Starts Rotate operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startRotate()
}
-//----------------------------------------------------------------------------
-// starts Spin operation (e.g. through menu command)
+/*!
+ Starts Spin operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startSpin()
-//----------------------------------------------------------------------------
-// starts Fit Area operation (e.g. through menu command)
+/*!
+ Starts Fit Area operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startFitArea()
}
-//----------------------------------------------------------------------------
-// starts Global Panning operation (e.g. through menu command)
+/*!
+ Starts Global Panning operation (e.g. through menu command)
+*/
void
SVTK_InteractorStyle
::startGlobalPan()
}
-//----------------------------------------------------------------------------
-// fits viewer contents to rect
+/*!
+ Fits viewer contents to rect
+*/
void
SVTK_InteractorStyle
::fitRect(const int left,
}
-//----------------------------------------------------------------------------
-// starts viewer operation (!internal usage!)
+/*!
+ Starts viewer operation (!internal usage!)
+*/
void
SVTK_InteractorStyle
::startOperation(int operation)
}
-//----------------------------------------------------------------------------
-// sets proper cursor for window when viewer operation is activated
+/*!
+ Sets proper cursor for window when viewer operation is activated
+*/
void
SVTK_InteractorStyle
::setCursor(const int operation)
}
-//----------------------------------------------------------------------------
-// called when viewer operation started (!put necessary initialization here!)
+/*!
+ Called when viewer operation started (!put necessary initialization here!)
+*/
void
SVTK_InteractorStyle
::onStartOperation()
{
- if (!GetRenderWidget()) return;
- // VSV: LOD actor activisation
- // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate());
+ if (!GetRenderWidget())
+ return;
+
+ vtkRenderWindowInteractor *aRWI = this->Interactor;
+ vtkRenderWindow *aRenWin = aRWI->GetRenderWindow();
+ aRenWin->SetDesiredUpdateRate(aRWI->GetDesiredUpdateRate());
+
switch (State) {
case VTK_INTERACTOR_STYLE_CAMERA_SELECT:
case VTK_INTERACTOR_STYLE_CAMERA_FIT:
}
-//----------------------------------------------------------------------------
-// called when viewer operation finished (!put necessary post-processing here!)
+/*!
+ Called when viewer operation finished (!put necessary post-processing here!)
+*/
void
SVTK_InteractorStyle
::onFinishOperation()
if (!GetRenderWidget())
return;
- // VSV: LOD actor activisation
- // rwi->GetRenderWindow()->SetDesiredUpdateRate(rwi->GetStillUpdateRate());
+ vtkRenderWindowInteractor *aRWI = this->Interactor;
+ vtkRenderWindow *aRenWin = aRWI->GetRenderWindow();
+ aRenWin->SetDesiredUpdateRate(aRWI->GetStillUpdateRate());
SVTK_SelectionEvent* aSelectionEvent = GetSelectionEventFlipY();
//
SALOME_Actor* anActor = GetFirstSALOMEActor(myPicker.GetPointer());
aSelectionEvent->myIsRectangle = false;
+
+ if(!myShiftState)
+ GetSelector()->ClearIObjects();
+
if(anActor){
anActor->Highlight( this, aSelectionEvent, true );
}else{
if(myLastHighlitedActor.GetPointer() && myLastHighlitedActor.GetPointer() != anActor)
myLastHighlitedActor->Highlight( this, aSelectionEvent, false );
- if(!myShiftState)
- GetSelector()->ClearIObjects();
}
myLastHighlitedActor = anActor;
}
}
-// called during viewer operation when user moves mouse (!put necessary processing here!)
-//----------------------------------------------------------------------------
+/*!
+ Called during viewer operation when user moves mouse (!put necessary processing here!)
+*/
void
SVTK_InteractorStyle
::onOperation(QPoint mousePos)
}
}
-// called when user moves mouse inside viewer window and there is no active viewer operation
-// (!put necessary processing here!)
-//----------------------------------------------------------------------------
+/*!
+ Called when user moves mouse inside viewer window and there is no active viewer operation
+ (!put necessary processing here!)
+*/
void
SVTK_InteractorStyle
::onCursorMove(QPoint mousePos)
this->Render();
}
-// called on finsh GlobalPan operation
-//----------------------------------------------------------------------------
+/*!
+ Called on finsh GlobalPan operation
+*/
void
SVTK_InteractorStyle
::Place(const int theX, const int theY)
-// Translates view from Point to Point
-//----------------------------------------------------------------------------
+/*!
+ Translates view from Point to Point
+*/
void
SVTK_InteractorStyle
::TranslateView(int toX, int toY, int fromX, int fromY)
{
vtkCamera *cam = GetCurrentRenderer()->GetActiveCamera();
double viewFocus[4], focalDepth, viewPoint[3];
- float newPickPoint[4], oldPickPoint[4], motionVector[3];
+ vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3];
cam->GetFocalPoint(viewFocus);
this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1],
motionVector[2] + viewPoint[2]);
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::IncrementalPan( const int incrX, const int incrY )
this->PanXY( incrX, incrY, 0, 0 );
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::IncrementalZoom( const int incr )
this->DollyXY( incr, incr );
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::IncrementalRotate( const int incrX, const int incrY )
this->RotateXY( incrX, -incrY );
}
-//----------------------------------------------------------------------------
+/*!
+ Redefined in order to add an observer (callback) for custorm event (space mouse event)
+*/
void
SVTK_InteractorStyle
::SetInteractor( vtkRenderWindowInteractor* theInteractor )
}
}
-
-//----------------------------------------------------------------------------
+/*!
+ To implement cached rendering
+*/
void
SVTK_InteractorStyle
::OnTimer()
this->Interactor->Render();
}
-//----------------------------------------------------------------------------
+/*!
+ To invoke #vtkRenderWindowInteractor::CreateTimer
+*/
void
SVTK_InteractorStyle
::Render()
this->Interactor->CreateTimer(VTKI_TIMER_FIRST);
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::onSpaceMouseMove( double* data )
IncrementalRotate( (int)data[3], 0 ); // 5. tilt the control forward/backward = rotate around X axis (Z axis of local coordinate system of space mouse)
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::onSpaceMouseButton( int button )
DominantCombinedSwitch();
}
-//----------------------------------------------------------------------------
void
SVTK_InteractorStyle
::DominantCombinedSwitch()
printf( "\n--DominantCombinedSwitch() NOT IMPLEMENTED--\n" );
}
-//----------------------------------------------------------------------------
+/*!
+ Main process event method (reimplemented from #vtkInteractorStyle)
+*/
void
SVTK_InteractorStyle
::ProcessEvents( vtkObject* object,
Superclass::ProcessEvents( object, event, clientData, callData );
}
-//----------------------------------------------------------------------------
+
+/*!
+ To handle keyboard event (reimplemented from #vtkInteractorStyle)
+*/
void SVTK_InteractorStyle::OnChar()
{
}
-//----------------------------------------------------------------------------
+
+/*!
+ Redefined vtkInteractorStyle::OnKeyDown
+*/
void SVTK_InteractorStyle::OnKeyDown()
{
bool bInvokeSuperclass=myControllerOnKeyDown->OnKeyDown(this);
Superclass::OnKeyDown();
}
}
-//----------------------------------------------------------------------------
+
+/*!
+ Provide instructions for Picking
+*/
void SVTK_InteractorStyle::ActionPicking()
{
int x, y;
onFinishOperation();
startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE);
}
-//----------------------------------------------------------------------------
+
+/*!
+ To set current increment controller
+*/
void SVTK_InteractorStyle::SetControllerOnKeyDown(SVTK_ControllerOnKeyDown* theController)
{
myControllerOnKeyDown=theController;
}
-//----------------------------------------------------------------------------
+
+/*!
+ To get current OnKeyDown controller
+*/
SVTK_ControllerOnKeyDown* SVTK_InteractorStyle::ControllerOnKeyDown()
{
return myControllerOnKeyDown.GetPointer();
}
-//----------------------------------------------------------------------------
+
+/*!
+ To get current increment controller
+*/
void SVTK_InteractorStyle::SetControllerIncrement(SVTK_ControllerIncrement* theController)
{
myControllerIncrement=theController;
}
-//----------------------------------------------------------------------------
+
+/*!
+ To get current increment controller
+*/
SVTK_ControllerIncrement* SVTK_InteractorStyle::ControllerIncrement()
{
return myControllerIncrement.GetPointer();
}
vtkStandardNewMacro(SVTK_ControllerIncrement);
-//----------------------------------------------------------------------------
SVTK_ControllerIncrement::SVTK_ControllerIncrement()
{
myIncrement=10;
}
-//----------------------------------------------------------------------------
SVTK_ControllerIncrement::~SVTK_ControllerIncrement()
{
}
-//----------------------------------------------------------------------------
void SVTK_ControllerIncrement::SetStartValue(const int theValue)
{
myIncrement=theValue;
}
-//----------------------------------------------------------------------------
int SVTK_ControllerIncrement::Current()const
{
return myIncrement;
}
-//----------------------------------------------------------------------------
int SVTK_ControllerIncrement::Increase()
{
++myIncrement;
return myIncrement;
}
-//----------------------------------------------------------------------------
int SVTK_ControllerIncrement::Decrease()
{
if (myIncrement>1){
}
vtkStandardNewMacro(SVTK_ControllerOnKeyDown);
-//----------------------------------------------------------------------------
+
+/*!
+ Constructor
+*/
SVTK_ControllerOnKeyDown::SVTK_ControllerOnKeyDown()
{
}
-//----------------------------------------------------------------------------
+
+/*!
+ Destructor
+*/
SVTK_ControllerOnKeyDown::~SVTK_ControllerOnKeyDown()
{
}
-//----------------------------------------------------------------------------
+
bool SVTK_ControllerOnKeyDown::OnKeyDown(vtkInteractorStyle* theIS)
{
return true;
#include <vtkObject.h>
//
-//-------------------------------------------
//! Control the value of increment in SALOME way.
/*!
This class controls of value of increment,
void operator=(const SVTK_ControllerIncrement&); //Not implemented
};
//
-//-------------------------------------------
//! Control the behaviour of KeyDown event in SALOME way.
/*!
This class controls the behaviour of KeyDown event
SVTK_ControllerOnKeyDown(const SVTK_ControllerOnKeyDown&);//Not implemented
void operator=(const SVTK_ControllerOnKeyDown&); //Not implemented
};
-//-------------------------------------------
class vtkCell;
class vtkPicker;
SVTK_SelectionEvent*
GetSelectionEventFlipY();
- //! Redefined in order to add an observer (callback) for custorm event (space mouse event)
+ //! Redefined in order to add an observer (callback) for custom event (space mouse event)
virtual
void
SetInteractor( vtkRenderWindowInteractor* );
#include "SUIT_Tools.h"
#include "SUIT_ResourceMgr.h"
#include "SVTK_NonIsometricDlg.h"
+#include "SVTK_UpdateRateDlg.h"
#include "SVTK_CubeAxesDlg.h"
#include "SVTK_MainWindow.h"
#include <qimage.h>
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_MainWindow
::SVTK_MainWindow(QWidget* theParent,
const char* theName,
createToolBar();
}
+/*!
+ To initialize the class
+*/
void
SVTK_MainWindow
::Initialize(SVTK_RenderWindowInteractor* theInteractor)
myInteractor->setFocusPolicy(StrongFocus);
myInteractor->setFocus();
setFocusProxy(myInteractor);
-}
+ myUpdateRateDlg = new SVTK_UpdateRateDlg(myActionsMap[UpdateRate],this,"SVTK_UpdateRateDlg");
+ myNonIsometricDlg = new SVTK_NonIsometricDlg(myActionsMap[NonIsometric],this,"SVTK_NonIsometricDlg");
+ myCubeAxesDlg = new SVTK_CubeAxesDlg(myActionsMap[GraduatedAxes],this,"SVTK_CubeAxesDlg");
+}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_MainWindow
::~SVTK_MainWindow()
{
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return used SVTK_RenderWindowInteractor
+*/
SVTK_RenderWindowInteractor*
SVTK_MainWindow
::GetInteractor()
return myInteractor;
}
+/*!
+ \return used #vtkRenderWindowInteractor (obsolete)
+*/
vtkRenderWindowInteractor*
SVTK_MainWindow
::getInteractor()
return GetInteractor()->GetDevice();
}
+/*!
+ \return used vtkRenderWindow (obsolete)
+*/
vtkRenderWindow*
SVTK_MainWindow
::getRenderWindow()
return GetInteractor()->getRenderWindow();
}
-//----------------------------------------------------------------------------
+/*!
+ To repaint the view
+ \param theUpdateTrihedron - adjust trihedron
+*/
void
SVTK_MainWindow
::Repaint(bool theUpdateTrihedron)
GetInteractor()->update();
}
-//----------------------------------------------------------------------------
+/*!
+ To invoke a VTK event on SVTK_RenderWindowInteractor instance
+*/
void
SVTK_MainWindow
::InvokeEvent(unsigned long theEvent, void* theCallData)
GetInteractor()->InvokeEvent(theEvent,theCallData);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::GetInteractorStyle
+*/
vtkInteractorStyle*
SVTK_MainWindow
::GetInteractorStyle()
return GetInteractor()->GetInteractorStyle();
}
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::PushInteractorStyle
+*/
void
SVTK_MainWindow
::PushInteractorStyle(vtkInteractorStyle* theStyle)
GetInteractor()->PushInteractorStyle(theStyle);
}
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::PopInteractorStyle
+*/
void
SVTK_MainWindow
::PopInteractorStyle()
GetInteractor()->PopInteractorStyle();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::GetSelector
+*/
SVTK_Selector*
SVTK_MainWindow
::GetSelector()
return GetInteractor()->GetSelector();
}
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::SelectionMode
+*/
Selection_Mode
SVTK_MainWindow
::SelectionMode()
return GetSelector()->SelectionMode();
}
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::SetSelectionMode
+*/
void
SVTK_MainWindow
::SetSelectionMode(Selection_Mode theMode)
GetSelector()->SetSelectionMode(theMode);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::GetRenderer
+*/
SVTK_Renderer*
SVTK_MainWindow
::GetRenderer()
return GetInteractor()->GetRenderer();
}
+/*!
+ Redirect the request to SVTK_RenderWindowInteractor::getRenderer
+*/
vtkRenderer*
SVTK_MainWindow
::getRenderer()
return GetInteractor()->getRenderer();
}
-//----------------------------------------------------------------------------
+/*!
+ Sets background color of the view
+ \param theColor - new background color
+*/
void
SVTK_MainWindow
::SetBackgroundColor(const QColor& theColor)
theColor.blue()/255.0);
}
+/*!
+ \return background color of the view
+*/
QColor
SVTK_MainWindow
::BackgroundColor()
{
- float aBackgroundColor[3];
+ vtkFloatingPointType aBackgroundColor[3];
getRenderer()->GetBackground(aBackgroundColor);
return QColor(int(aBackgroundColor[0]*255),
int(aBackgroundColor[1]*255),
int(aBackgroundColor[2]*255));
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::GetScale
+*/
void
SVTK_MainWindow
::GetScale( double theScale[3] )
GetRenderer()->GetScale( theScale );
}
+/*!
+ Redirect the request to SVTK_Renderer::SetScale
+*/
void
SVTK_MainWindow
::SetScale( double theScale[3] )
Repaint();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::AddActor
+*/
void
SVTK_MainWindow
::AddActor(VTKViewer_Actor* theActor,
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::RemoveActor
+*/
void
SVTK_MainWindow
::RemoveActor(VTKViewer_Actor* theActor,
Repaint();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::GetTrihedronSize
+*/
int
SVTK_MainWindow
::GetTrihedronSize()
return GetRenderer()->GetTrihedronSize();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::SetTrihedronSize
+*/
void
SVTK_MainWindow
::SetTrihedronSize( const int theSize, const bool theRelative )
}
-//----------------------------------------------------------------------------
/*! If parameter theIsForcedUpdate is true, recalculate parameters for
* trihedron and cube axes, even if trihedron and cube axes is invisible.
*/
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::IsTrihedronDisplayed
+*/
bool
SVTK_MainWindow
::IsTrihedronDisplayed()
return GetRenderer()->IsTrihedronDisplayed();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::IsCubeAxesDisplayed
+*/
bool
SVTK_MainWindow
::IsCubeAxesDisplayed()
return GetRenderer()->IsCubeAxesDisplayed();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::GetTrihedron
+*/
VTKViewer_Trihedron*
SVTK_MainWindow
::GetTrihedron()
return GetRenderer()->GetTrihedron();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to SVTK_Renderer::GetCubeAxes
+*/
SVTK_CubeAxesActor2D*
SVTK_MainWindow
::GetCubeAxes()
return GetRenderer()->GetCubeAxes();
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return toolbar of svtk main window
+*/
QToolBar*
SVTK_MainWindow
::getToolBar()
return myToolBar;
}
-//----------------------------------------------------------------------------
void
SVTK_MainWindow
::SetEventDispatcher(vtkObject* theDispatcher)
myEventDispatcher = theDispatcher;
}
-//----------------------------------------------------------------------------
#if defined(WIN32) && !defined(_DEBUG)
#pragma optimize( "", off )
#endif
+/*!
+ Creates all actions of svtk main window
+*/
void
SVTK_MainWindow
::createActions(SUIT_ResourceMgr* theResourceMgr)
connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onNonIsometric(bool)));
myActionsMap[ NonIsometric ] = anAction;
- myNonIsometricDlg = new SVTK_NonIsometricDlg(this,"SVTK_NonIsometricDlg",anAction);
-
// onGraduatedAxes: Manage graduated axes params
anAction = new QtxAction(tr("MNU_SVTK_GRADUATED_AXES"),
theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_GRADUATED_AXES" ) ),
connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onGraduatedAxes(bool)));
myActionsMap[ GraduatedAxes ] = anAction;
- myCubeAxesDlg = new SVTK_CubeAxesDlg(this,"SVTK_CubeAxesDlg",anAction);
+ // onGraduatedAxes: Manage graduated axes params
+ anAction = new QtxAction(tr("MNU_SVTK_UPDATE_RATE"),
+ theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_UPDATE_RATE" ) ),
+ tr( "MNU_SVTK_UPDATE_RATE" ), 0, this);
+ anAction->setStatusTip(tr("DSC_SVTK_UPDATE_RATE"));
+ anAction->setToggleAction(true);
+ connect(anAction, SIGNAL(toggled(bool)), this, SLOT(onUpdateRate(bool)));
+ myActionsMap[ UpdateRate ] = anAction;
}
#if defined(WIN32) && !defined(_DEBUG)
#pragma optimize( "", on )
#endif
-//----------------------------------------------------------------------------
+/*!
+ Creates toolbar of svtk main window
+*/
void
SVTK_MainWindow
::createToolBar()
myActionsMap[ResetId]->addTo(myToolBar);
+ myActionsMap[UpdateRate]->addTo(myToolBar);
myActionsMap[NonIsometric]->addTo(myToolBar);
myActionsMap[GraduatedAxes]->addTo(myToolBar);
}
-//----------------------------------------------------------------------------
+/*!
+ Custom show event handler
+*/
+void
+SVTK_MainWindow
+::showEvent( QShowEvent * theEvent )
+{
+ emit Show( theEvent );
+}
+
+/*!
+ Custom hide event handler
+*/
+void
+SVTK_MainWindow
+::hideEvent( QHideEvent * theEvent )
+{
+ emit Hide( theEvent );
+}
+
+/*!
+ Starts zoom transformation
+*/
void
SVTK_MainWindow
::activateZoom()
myEventDispatcher->InvokeEvent(SVTK::StartZoom,0);
}
-//----------------------------------------------------------------------------
+/*!
+ Starts panning transformation
+*/
void
SVTK_MainWindow
::activatePanning()
myEventDispatcher->InvokeEvent(SVTK::StartPan,0);
}
-//----------------------------------------------------------------------------
+/*!
+ Starts rotation transformation
+*/
void
SVTK_MainWindow
::activateRotation()
myEventDispatcher->InvokeEvent(SVTK::StartRotate,0);
}
-//----------------------------------------------------------------------------
+/*!
+ Starts global panning transformation
+*/
void
SVTK_MainWindow
::activateGlobalPanning()
myEventDispatcher->InvokeEvent(SVTK::StartGlobalPan,0);
}
-//----------------------------------------------------------------------------
+/*!
+ Starts window fit transformation
+*/
void
SVTK_MainWindow
::activateWindowFit()
myEventDispatcher->InvokeEvent(SVTK::StartFitArea,0);
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "front view"
+*/
void
SVTK_MainWindow
::onFrontView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "back view"
+*/
void
SVTK_MainWindow
::onBackView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "top view"
+*/
void
SVTK_MainWindow
::onTopView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "bottom view"
+*/
void
SVTK_MainWindow
::onBottomView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "left view"
+*/
void
SVTK_MainWindow
::onLeftView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "right view"
+*/
void
SVTK_MainWindow
::onRightView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "reset view": sets default orientation of viewport camera
+*/
void
SVTK_MainWindow
::onResetView()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "fit all"
+*/
void
SVTK_MainWindow
::onFitAll()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Shows trihedron
+*/
void
SVTK_MainWindow
::onViewTrihedron()
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Shows cube axes
+*/
void
SVTK_MainWindow
::onViewCubeAxes()
Repaint();
}
-//----------------------------------------------------------------------------
+void
+SVTK_MainWindow
+::onUpdateRate(bool theIsActivate)
+{
+ if(theIsActivate){
+ myUpdateRateDlg->Update();
+ myUpdateRateDlg->show();
+ }else
+ myUpdateRateDlg->hide();
+}
+
void
SVTK_MainWindow
::onNonIsometric(bool theIsActivate)
myCubeAxesDlg->hide();
}
-//----------------------------------------------------------------------------
void
SVTK_MainWindow
::onAdjustTrihedron()
GetRenderer()->OnAdjustTrihedron();
}
-//----------------------------------------------------------------------------
void
SVTK_MainWindow
::onAdjustCubeAxes()
GetRenderer()->OnAdjustCubeAxes();
}
-//----------------------------------------------------------------------------
+/*!
+ \return QImage, containing all scene rendering in window
+*/
QImage
SVTK_MainWindow
::dumpView()
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef SVTK_MAINWINDOW_H
#define SVTK_MAINWINDOW_H
class SVTK_RenderWindowInteractor;
class SVTK_NonIsometricDlg;
+class SVTK_UpdateRateDlg;
class SVTK_CubeAxesActor2D;
class SVTK_CubeAxesDlg;
class SVTK_Selector;
-//----------------------------------------------------------------------------
//! The class is a container for #SVTK_RenderWindowInteractor.
/*!
The class contains #SVTK_RenderWindowInteractor instance and
//----------------------------------------------------------------------------
QToolBar* getToolBar();
+ signals:
+ void Show( QShowEvent * );
+ void Hide( QHideEvent * );
+
public slots:
+ virtual void showEvent( QShowEvent * );
+ virtual void hideEvent( QHideEvent * );
+
void activateZoom();
void activateWindowFit();
void activateRotation();
void onViewTrihedron();
void onViewCubeAxes();
+ void onUpdateRate(bool theIsActivate);
void onNonIsometric(bool theIsActivate);
void onGraduatedAxes(bool theIsActivate);
enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId,
- ViewTrihedronId, NonIsometric, GraduatedAxes};
+ ViewTrihedronId, NonIsometric, GraduatedAxes, UpdateRate};
typedef QMap<int, QtxAction*> TActionsMap;
SUIT_ViewWindow* myViewWindow;
SVTK_NonIsometricDlg* myNonIsometricDlg;
+ SVTK_UpdateRateDlg* myUpdateRateDlg;
SVTK_CubeAxesDlg* myCubeAxesDlg;
vtkSmartPointer<vtkObject> myEventDispatcher;
Constructor
*/
SVTK_NonIsometricDlg
-::SVTK_NonIsometricDlg(SVTK_MainWindow* theParent,
- const char* theName,
- QtxAction* theAction):
- QDialog(theParent,
- theName,
- false,
- WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
- m_MainWindow(theParent),
- m_Action(theAction)
+::SVTK_NonIsometricDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName):
+ SVTK_DialogBase(theAction,
+ theParent,
+ theName),
+ m_MainWindow(theParent)
{
setCaption(tr("DLG_TITLE"));
setSizeGripEnabled(TRUE);
layoutDlg->setMargin(11);
// Create croup box with grid layout
- QGroupBox* GroupBox = new QGroupBox(this, "GroupBox");
- QGridLayout* glGroupBox = new QGridLayout(GroupBox);
- glGroupBox->setMargin(11);
- glGroupBox->setSpacing(6);
+ QGroupBox* aGroupBox = new QGroupBox(this, "GroupBox");
+ QHBoxLayout* aHBoxLayout = new QHBoxLayout(aGroupBox);
+ aHBoxLayout->setMargin(11);
+ aHBoxLayout->setSpacing(6);
// "X" scaling
- QLabel* TextLabelX = new QLabel (tr("LBL_X"), GroupBox, "TextLabelX");
- m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox);
+ QLabel* TextLabelX = new QLabel (tr("LBL_X"), aGroupBox, "TextLabelX");
+ TextLabelX->setFixedWidth(15);
+ m_sbXcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox);
m_sbXcoeff->setMinimumWidth(80);
m_sbXcoeff->setValue(1.0);
// "Y" scaling
- QLabel* TextLabelY = new QLabel (tr("LBL_Y"), GroupBox, "TextLabelY");
- m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox);
+ QLabel* TextLabelY = new QLabel (tr("LBL_Y"), aGroupBox, "TextLabelY");
+ TextLabelY->setFixedWidth(15);
+ m_sbYcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox);
m_sbYcoeff->setMinimumWidth(80);
m_sbYcoeff->setValue(1.0);
// "Z" scaling
- QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), GroupBox, "TextLabelZ");
- m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, GroupBox);
+ QLabel* TextLabelZ = new QLabel (tr("LBL_Z"), aGroupBox, "TextLabelZ");
+ TextLabelZ->setFixedWidth(15);
+ m_sbZcoeff = new QtxDblSpinBox(-VTK_LARGE_FLOAT, VTK_LARGE_FLOAT, 0.1, aGroupBox);
m_sbZcoeff->setMinimumWidth(80);
m_sbZcoeff->setValue(1.0);
// Create <Reset> button
- m_bReset = new QPushButton(tr("&Reset"), GroupBox, "m_bReset");
+ m_bReset = new QPushButton(tr("&Reset"), aGroupBox, "m_bReset");
// Layout widgets in the group box
- glGroupBox->addWidget(TextLabelX, 0, 0);
- glGroupBox->addWidget(m_sbXcoeff, 0, 1);
- glGroupBox->addWidget(TextLabelY, 0, 2);
- glGroupBox->addWidget(m_sbYcoeff, 0, 3);
- glGroupBox->addWidget(TextLabelZ, 0, 4);
- glGroupBox->addWidget(m_sbZcoeff, 0, 5);
- glGroupBox->addWidget(m_bReset, 0, 6);
+ aHBoxLayout->addWidget(TextLabelX);
+ aHBoxLayout->addWidget(m_sbXcoeff);
+ aHBoxLayout->addWidget(TextLabelY);
+ aHBoxLayout->addWidget(m_sbYcoeff);
+ aHBoxLayout->addWidget(TextLabelZ);
+ aHBoxLayout->addWidget(m_sbZcoeff);
+ //aHBoxLayout->addStretch();
+ aHBoxLayout->addWidget(m_bReset);
// OK, CANCEL, Apply button
- QGroupBox* aWgt = new QGroupBox(this);
- QHBoxLayout* aHBoxLayout = new QHBoxLayout(aWgt);
- aHBoxLayout->setMargin(11);
- aHBoxLayout->setSpacing(6);
+ QGroupBox* aGroupBox2 = new QGroupBox(this);
+ QHBoxLayout* aHBoxLayout2 = new QHBoxLayout(aGroupBox2);
+ aHBoxLayout2->setMargin(11);
+ aHBoxLayout2->setSpacing(6);
// Create <OK> button
- QPushButton* m_bOk = new QPushButton(tr("O&K"), aWgt, "m_bOk");
+ QPushButton* m_bOk = new QPushButton(tr("O&K"), aGroupBox2, "m_bOk");
m_bOk->setDefault(TRUE);
m_bOk->setAutoDefault(TRUE);
// Create <Apply> button
- QPushButton* m_bApply = new QPushButton(tr("&Apply"), aWgt, "m_bApply");
+ QPushButton* m_bApply = new QPushButton(tr("&Apply"), aGroupBox2, "m_bApply");
m_bApply->setAutoDefault(TRUE);
// Create <Cancel> button
- QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aWgt, "m_bCancel");
+ QPushButton* m_bCancel = new QPushButton(tr("&Cancel"), aGroupBox2, "m_bCancel");
m_bCancel->setAutoDefault(TRUE);
// Layout buttons
- aHBoxLayout->addWidget(m_bOk);
- aHBoxLayout->addWidget(m_bApply);
- aHBoxLayout->addStretch();
- aHBoxLayout->addWidget(m_bCancel);
+ aHBoxLayout2->addWidget(m_bOk);
+ aHBoxLayout2->addWidget(m_bApply);
+ aHBoxLayout2->addStretch();
+ aHBoxLayout2->addWidget(m_bCancel);
// Layout top level widgets
- layoutDlg->addWidget(GroupBox,0,0);
- layoutDlg->addWidget(aWgt,1,0);
+ layoutDlg->addWidget(aGroupBox,0,0);
+ layoutDlg->addWidget(aGroupBox2,1,0);
// signals and slots connections
connect(m_bCancel, SIGNAL(clicked()), this, SLOT(onClickClose()));
::onClickClose()
{
reject();
-
- m_Action->setOn( false );
-}
-
-void
-SVTK_NonIsometricDlg
-::done( int r )
-{
- m_Action->setOn( false );
- QDialog::done( r );
}
#ifndef SVTK_NONISOMETRICDLG_H
#define SVTK_NONISOMETRICDLG_H
-#include <qdialog.h>
+#include "SVTK_DialogBase.h"
class SVTK_MainWindow;
class QPushButton;
-class SVTK_NonIsometricDlg : public QDialog
+class SVTK_NonIsometricDlg : public SVTK_DialogBase
{
Q_OBJECT;
public:
- SVTK_NonIsometricDlg(SVTK_MainWindow* theParent,
- const char* theName,
- QtxAction* theAction);
+ SVTK_NonIsometricDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName);
~SVTK_NonIsometricDlg();
protected:
SVTK_MainWindow *m_MainWindow;
- QtxAction* m_Action;
QtxDblSpinBox* m_sbXcoeff;
QtxDblSpinBox* m_sbYcoeff;
void onClickReset();
void onClickOk();
void onClickClose();
-
- virtual void done( int );
};
#endif // SVTK_NONISOMETRICDLG_H
#include "SVTK_Prs.h"
using namespace std;
-//==========================================================
/*!
- * SVTK_Prs::SVTK_Prs
- * Default constructor
- */
-//==========================================================
+ Default constructor
+*/
SVTK_Prs::SVTK_Prs() : myObjects( 0 )
{
}
-//==========================================================
/*!
- * SVTK_Prs::SVTK_Prs
- * tandard constructora
- */
-//==========================================================
+ Standard constructor
+*/
SVTK_Prs::SVTK_Prs( const vtkActor* obj )
{
AddObject( obj );
}
-//==========================================================
/*!
- * SVTK_Prs::~SVTK_Prs
- * Destructor
- */
-//==========================================================
+ Destructor
+*/
SVTK_Prs:: ~SVTK_Prs()
{
if ( myObjects ) myObjects->Delete();
}
-//==========================================================
/*!
- * SVTK_Prs::GetObjects
- * Get actors list
- */
-//==========================================================
+ \return actors list
+*/
vtkActorCollection* SVTK_Prs::GetObjects() const
{
return myObjects;
}
-//==========================================================
/*!
- * SVTK_Prs::AddObject
- * Add actor
- */
-//==========================================================
+ Add actor
+*/
void SVTK_Prs::AddObject( const vtkActor* obj )
{
if ( !myObjects)
myObjects->AddItem( (vtkActor*)obj );
}
-//==========================================================
/*!
- * SVTK_Prs::IsNull
- * Return 0 if list of the actors is empty
- * [ Reimplemented from SALOME_Prs ]
- */
-//==========================================================
+ \return 0 if list of the actors is empty [ Reimplemented from SALOME_Prs ]
+*/
bool SVTK_Prs::IsNull() const
{
return !myObjects || myObjects->GetNumberOfItems() <= 0;
#include <vtkCamera.h>
#include <vtkCell.h>
-//----------------------------------------------------------------------------
namespace
{
//----------------------------------------------------------------------------
inline
- float
+ vtkFloatingPointType
GetZ(float* theZPtr,
int theSelection[4],
int theDX,
int
Check(float* theZPtr,
int theSelection[4],
- float theTolerance,
- float theDZ,
+ vtkFloatingPointType theTolerance,
+ vtkFloatingPointType theDZ,
int theDX,
int theDY)
{
int aRet = 0;
- float aZ = -1.0;
+ vtkFloatingPointType aZ = -1.0;
if(theDX >= theSelection[0] && theDX <= theSelection[2] &&
theDY >= theSelection[1] && theDY <= theSelection[3])
{
vtkDataSet *theInput,
SVTK_RectPicker::TVectorIds& theVisibleIds,
SVTK_RectPicker::TVectorIds& theInVisibleIds,
- float theTolerance)
+ vtkFloatingPointType theTolerance)
{
theVisibleIds.clear();
theInVisibleIds.clear();
*/
for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
// perform conversion
- float aX[4] = {1.0, 1.0, 1.0, 1.0};
+ vtkFloatingPointType aX[4] = {1.0, 1.0, 1.0, 1.0};
theInput->GetPoint(aPntId,aX);
- float aView[4];
+ vtkFloatingPointType aView[4];
aMatrix->MultiplyPoint(aX,aView);
if(aView[3] == 0.0)
continue;
aView[2]/aView[3]);
theRenderer->ViewToDisplay();
- float aDX[3];
+ vtkFloatingPointType aDX[3];
theRenderer->GetDisplayPoint(aDX);
// check whether visible and in selection window
//----------------------------------------------------------------------------
inline
void
- GetCenter(const float theBounds[6],
- float theCenter[3])
+ GetCenter(const vtkFloatingPointType theBounds[6],
+ vtkFloatingPointType theCenter[3])
{
theCenter[0] = (theBounds[1] + theBounds[0]) / 2.0;
theCenter[1] = (theBounds[3] + theBounds[2]) / 2.0;
vtkRenderer *theRenderer,
vtkDataSet *theInput,
SVTK_RectPicker::TVectorIds& theVectorIds,
- float theTolerance)
+ vtkFloatingPointType theTolerance)
{
theVectorIds.clear();
for(vtkIdType aCellId = 0; aCellId < aNumCells; aCellId++){
vtkCell* aCell = theInput->GetCell(aCellId);
- float aBounds[6];
+ vtkFloatingPointType aBounds[6];
aCell->GetBounds(aBounds);
- float aCenter[3];
+ vtkFloatingPointType aCenter[3];
GetCenter(aBounds,aCenter);
- float aView[4];
- float aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0};
+ vtkFloatingPointType aView[4];
+ vtkFloatingPointType aX[4] = {aCenter[0], aCenter[1], aCenter[2], 1.0};
aMatrix->MultiplyPoint(aX,aView);
if(aView[3] == 0.0)
aView[2]/aView[3]);
theRenderer->ViewToDisplay();
- float aDX[3];
+ vtkFloatingPointType aDX[3];
theRenderer->GetDisplayPoint(aDX);
// check whether visible and in selection window
//----------------------------------------------------------------------------
void
CalculatePickPosition(vtkRenderer *theRenderer,
- float theSelectionX,
- float theSelectionY,
- float theSelectionZ,
- float thePickPosition[3])
+ vtkFloatingPointType theSelectionX,
+ vtkFloatingPointType theSelectionY,
+ vtkFloatingPointType theSelectionZ,
+ vtkFloatingPointType thePickPosition[3])
{
// Convert the selection point into world coordinates.
//
theRenderer->SetDisplayPoint(theSelectionX, theSelectionY, theSelectionZ);
theRenderer->DisplayToWorld();
- float* aWorldCoords = theRenderer->GetWorldPoint();
+ vtkFloatingPointType* aWorldCoords = theRenderer->GetWorldPoint();
if ( aWorldCoords[3] != 0.0 ) {
for (int i=0; i < 3; i++) {
thePickPosition[i] = aWorldCoords[i] / aWorldCoords[3];
}
}
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SVTK_RectPicker);
-//----------------------------------------------------------------------------
SVTK_RectPicker
::SVTK_RectPicker()
{
int
SVTK_RectPicker
-::Pick(float, float, float, vtkRenderer*)
+::Pick(vtkFloatingPointType,
+ vtkFloatingPointType,
+ vtkFloatingPointType,
+ vtkRenderer*)
{
return 0;
}
-//----------------------------------------------------------------------------
int
SVTK_RectPicker
-::Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer)
+::Pick(vtkFloatingPointType theSelection[3],
+ vtkFloatingPointType theSelection2[3],
+ vtkRenderer *theRenderer)
{
return Pick(theSelection[0], theSelection[1], theSelection[2],
theSelection2[0], theSelection2[1], theSelection2[2],
theRenderer);
}
-//----------------------------------------------------------------------------
int
SVTK_RectPicker
-::Pick(float theSelectionX, float theSelectionY, float theSelectionZ,
- float theSelectionX2, float theSelectionY2, float theSelectionZ2,
+::Pick(vtkFloatingPointType theSelectionX,
+ vtkFloatingPointType theSelectionY,
+ vtkFloatingPointType theSelectionZ,
+ vtkFloatingPointType theSelectionX2,
+ vtkFloatingPointType theSelectionY2,
+ vtkFloatingPointType theSelectionZ2,
vtkRenderer *theRenderer)
{
// Initialize picking process
//
vtkCamera* aCamera = theRenderer->GetActiveCamera();
- float aCameraFP[4];
+ vtkFloatingPointType aCameraFP[4];
aCamera->GetFocalPoint(aCameraFP);
aCameraFP[3] = 1.0;
theRenderer->SetWorldPoint(aCameraFP);
theRenderer->WorldToDisplay();
- float* aDisplayCoords = theRenderer->GetDisplayPoint();
- float aSelectionZ = aDisplayCoords[2];
+ vtkFloatingPointType* aDisplayCoords = theRenderer->GetDisplayPoint();
+ vtkFloatingPointType aSelectionZ = aDisplayCoords[2];
this->SelectionPoint[0] = theSelectionX;
this->SelectionPoint[1] = theSelectionY;
}
-//----------------------------------------------------------------------------
const SVTK_RectPicker::TVectorIdsMap&
SVTK_RectPicker
::GetPointIdsMap() const
#define __SVTK_RectPicker_h
#include "SVTK.h"
+#include "VTKViewer.h"
#include <map>
#include <vector>
/*! \class vtkAbstractPropPicker
* \brief For more information see <a href="http://www.vtk.org/">VTK documentation
*/
-/*! \class VTKViewer_RectPicker
+/*! \class SVTK_RectPicker
* \brief Rectangular picker class.
*/
class SVTK_EXPORT SVTK_RectPicker : public vtkAbstractPropPicker
as fraction of rendering window size. (Rendering window size is measured
across diagonal.)
*/
- vtkSetMacro(Tolerance,float);
- vtkGetMacro(Tolerance,float);
+ vtkSetMacro(Tolerance,vtkFloatingPointType);
+ vtkGetMacro(Tolerance,vtkFloatingPointType);
//! Use these methods to pick points or points and cells
vtkSetMacro(PickPoints,int);
virtual
int
- Pick(float theSelectionX, float theSelectionY, float theSelectionZ,
- float theSelectionX2, float theSelectionY2, float theSelectionZ2,
+ Pick(vtkFloatingPointType theSelectionX,
+ vtkFloatingPointType theSelectionY,
+ vtkFloatingPointType theSelectionZ,
+ vtkFloatingPointType theSelectionX2,
+ vtkFloatingPointType theSelectionY2,
+ vtkFloatingPointType theSelectionZ2,
vtkRenderer *theRenderer);
int
- Pick(float theSelection[3], float theSelection2[3], vtkRenderer *theRenderer);
+ Pick(vtkFloatingPointType theSelection[3],
+ vtkFloatingPointType theSelection2[3],
+ vtkRenderer *theRenderer);
typedef std::vector<vtkIdType> TVectorIds;
typedef std::map<vtkActor*,TVectorIds> TVectorIdsMap;
~SVTK_RectPicker();
//! tolerance for computation (% of window)
- float Tolerance;
+ vtkFloatingPointType Tolerance;
//! use the following to control picking mode
int PickPoints;
//! second rectangle selection point in window (pixel) coordinates
- float SelectionPoint2[3];
+ vtkFloatingPointType SelectionPoint2[3];
//! second rectangle selection point in world coordinates
- float PickPosition2[3];
+ vtkFloatingPointType PickPosition2[3];
TVectorIdsMap myPointIdsMap;
TVectorIdsMap myCellIdsMap;
private:
virtual
int
- Pick(float, float, float, vtkRenderer*);
+ Pick(vtkFloatingPointType,
+ vtkFloatingPointType,
+ vtkFloatingPointType,
+ vtkRenderer*);
};
#endif
static bool FOCUS_UNDER_MOUSE = false;
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
QVTK_RenderWindowInteractor
::QVTK_RenderWindowInteractor(QWidget* theParent,
const char* theName):
myRenderWindow->SetWindowId((void*)winId());
}
-
+/*!
+ To initialize by vtkGenericRenderWindowInteractor instance
+*/
void
QVTK_RenderWindowInteractor
::Initialize(vtkGenericRenderWindowInteractor* theDevice)
theDevice->SetRenderWindow(getRenderWindow());
}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
QVTK_RenderWindowInteractor
::~QVTK_RenderWindowInteractor()
{
}
-//----------------------------------------------------------------------------
+/*!
+ \return corresponding render window interactor
+*/
vtkGenericRenderWindowInteractor*
QVTK_RenderWindowInteractor
::GetDevice()
return myDevice.GetPointer();
}
-//----------------------------------------------------------------------------
+/*!
+ \return corresponding render window
+*/
vtkRenderWindow*
QVTK_RenderWindowInteractor
::getRenderWindow()
return myRenderWindow.GetPointer();
}
-//----------------------------------------------------------------------------
+/*!
+ Just to simplify usage of its device (vtkGenericRenderWindowInteractor)
+*/
void
QVTK_RenderWindowInteractor
::InvokeEvent(unsigned long theEvent, void* theCallData)
GetDevice()->InvokeEvent(theEvent,theCallData);
}
-//----------------------------------------------------------------------------
+/*!
+ Need for initial contents display on Win32
+*/
void
QVTK_RenderWindowInteractor
::show()
update(); // needed for initial contents display on Win32
}
-//----------------------------------------------------------------------------
+/*!
+ To implement final initialization, just before the widget is displayed
+*/
void
QVTK_RenderWindowInteractor
::polish()
}
}
-//----------------------------------------------------------------------------
+/*!
+ To adjust widget and vtkRenderWindow size
+*/
void
QVTK_RenderWindowInteractor
::resize(int w, int h)
GetDevice()->UpdateSize(w,h);
}
-//----------------------------------------------------------------------------
+/*!
+ Custom paint event handler
+*/
void
QVTK_RenderWindowInteractor
::paintEvent( QPaintEvent* theEvent )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom resize event handler
+*/
void
QVTK_RenderWindowInteractor
::resizeEvent( QResizeEvent* theEvent )
}
-//----------------------------------------------------------------------------
+
+/*!
+ Custom context menu event handler
+*/
void
QVTK_RenderWindowInteractor
::contextMenuEvent( QContextMenuEvent* event )
{}
-
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse move event handler
+*/
void
QVTK_RenderWindowInteractor
::mouseMoveEvent( QMouseEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse press event handler
+*/
void
QVTK_RenderWindowInteractor
::mousePressEvent( QMouseEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse release event handler
+*/
void
QVTK_RenderWindowInteractor
::mouseReleaseEvent( QMouseEvent *event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse double click event handler
+*/
void
QVTK_RenderWindowInteractor
::mouseDoubleClickEvent( QMouseEvent* event )
{}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse wheel event handler
+*/
void
QVTK_RenderWindowInteractor
::wheelEvent( QWheelEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom key press event handler
+*/
void
QVTK_RenderWindowInteractor
::keyPressEvent( QKeyEvent* event )
GetDevice()->CharEvent();
}
-//----------------------------------------------------------------------------
+/*!
+ Custom key release event handler
+*/
void
QVTK_RenderWindowInteractor
::keyReleaseEvent( QKeyEvent * event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom enter event handler
+*/
void
QVTK_RenderWindowInteractor
::enterEvent( QEvent* event )
GetDevice()->EnterEvent();
}
-//----------------------------------------------------------------------------
+/*!
+ Custom leave event handler
+*/
void
QVTK_RenderWindowInteractor
::leaveEvent( QEvent * )
GetDevice()->LeaveEvent();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Reimplemented from QWidget in order to set window - receiver
+ of space mouse events.
+*/
void
QVTK_RenderWindowInteractor
::focusInEvent( QFocusEvent* event )
}
}
-//----------------------------------------------------------------------------
+/*!
+ Reimplemented from QWidget in order to set window - receiver
+ of space mouse events.
+*/
void
QVTK_RenderWindowInteractor
::focusOutEvent ( QFocusEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ To handle native X11 events (from such devices as SpaceMouse)
+*/
bool
QVTK_RenderWindowInteractor
::x11Event( XEvent *xEvent )
return QWidget::x11Event( xEvent );
}
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_RenderWindowInteractor
::SVTK_RenderWindowInteractor(QWidget* theParent,
const char* theName):
myEventCallbackCommand->SetCallback(SVTK_RenderWindowInteractor::ProcessEvents);
}
+/*!
+ To initialize properly the class
+*/
void
SVTK_RenderWindowInteractor
::Initialize(vtkGenericRenderWindowInteractor* theDevice,
SetSelector(theSelector);
}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_RenderWindowInteractor
::~SVTK_RenderWindowInteractor()
{
GetDevice()->SetRenderWindow(NULL);
}
-//----------------------------------------------------------------------------
+/*!
+ To get corresponding SVTK_Renderer instance
+*/
SVTK_Renderer*
SVTK_RenderWindowInteractor
::GetRenderer()
return myRenderer.GetPointer();
}
+/*!
+ To get corresponding SVTK_Renderer device (just to simplify collobaration with SVTK_Renderer)
+*/
vtkRenderer*
SVTK_RenderWindowInteractor
::getRenderer()
return GetRenderer()->GetDevice();
}
+/*!
+ Changes renderer
+ \param theRenderer - new renderer
+*/
void
SVTK_RenderWindowInteractor
::SetRenderer(SVTK_Renderer* theRenderer)
}
-//----------------------------------------------------------------------------
+/*!
+ Changes interactor style
+ \param theStyle - new interactor style
+*/
void
SVTK_RenderWindowInteractor
::InitInteractorStyle(vtkInteractorStyle* theStyle)
GetDevice()->SetInteractorStyle(theStyle);
}
-
-//----------------------------------------------------------------------------
+/*!
+ To change current interactor style by pushing the new one into the container
+*/
void
SVTK_RenderWindowInteractor
::PushInteractorStyle(vtkInteractorStyle* theStyle)
InitInteractorStyle(theStyle);
}
-
-//----------------------------------------------------------------------------
+/*!
+ To restore previous interactor style
+*/
void
SVTK_RenderWindowInteractor
::PopInteractorStyle()
InitInteractorStyle(GetInteractorStyle());
}
-
-//----------------------------------------------------------------------------
+/*!
+ To get current interactor style
+*/
vtkInteractorStyle*
SVTK_RenderWindowInteractor
::GetInteractorStyle()
}
-//----------------------------------------------------------------------------
+/*!
+ To get current selector
+*/
SVTK_Selector*
SVTK_RenderWindowInteractor
::GetSelector()
}
+/*!
+ Changes selector
+ \param theSelector - new selector
+*/
void
SVTK_RenderWindowInteractor
::SetSelector(SVTK_Selector* theSelector)
myPriority);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Main process VTK event method
+*/
void
SVTK_RenderWindowInteractor
::ProcessEvents(vtkObject* vtkNotUsed(theObject),
}
}
-
-//----------------------------------------------------------------
+/*!
+ To change selection mode (just to simplify collobaration with SVTK_Selector)
+*/
void
SVTK_RenderWindowInteractor
::SetSelectionMode(Selection_Mode theMode)
mySelector->SetSelectionMode(theMode);
}
-
-//----------------------------------------------------------------
+/*!
+ To get current selection mode (just to simplify collobaration with SVTK_Selector)
+*/
Selection_Mode
SVTK_RenderWindowInteractor
::SelectionMode() const
}
-//----------------------------------------------------------------
+/*!
+ Emits signal selectionChanged()
+*/
void
SVTK_RenderWindowInteractor
::onEmitSelectionChanged()
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse move event handler
+*/
void
SVTK_RenderWindowInteractor
::mouseMoveEvent( QMouseEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse press event handler
+*/
void
SVTK_RenderWindowInteractor
::mousePressEvent( QMouseEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse release event handler
+*/
void
SVTK_RenderWindowInteractor
::mouseReleaseEvent( QMouseEvent *event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse double click event handler
+*/
void
SVTK_RenderWindowInteractor
::mouseDoubleClickEvent( QMouseEvent* event )
}
-//----------------------------------------------------------------------------
+/*!
+ Custom mouse wheel event handler
+*/
void
SVTK_RenderWindowInteractor
::wheelEvent( QWheelEvent* event )
emit WheelMoved( event );
}
-
-//----------------------------------------------------------------------------
+/*!
+ Custom key press event handler
+*/
void
SVTK_RenderWindowInteractor
::keyPressEvent( QKeyEvent* event )
emit KeyPressed( event );
}
-//----------------------------------------------------------------------------
+/*!
+ Custom key release event handler
+*/
void
SVTK_RenderWindowInteractor
::keyReleaseEvent( QKeyEvent * event )
emit KeyReleased( event );
}
-//----------------------------------------------------------------------------
+/*!
+ Custom context menu event handler
+*/
void
SVTK_RenderWindowInteractor
::contextMenuEvent( QContextMenuEvent* event )
class SVTK_Selector;
class SVTK_Renderer;
-//============================================================================
-//! Implemements Qt based vtkRenderWindowInteractor.
/*!
+ \class QVTK_RenderWindowInteractor
+ Implements Qt based vtkRenderWindowInteractor.
The class inherits #QWidget class in order to be possible process Qt events.
It invokes corresponding VTK events through usage of its device - a #vtkGenericRenderWindowInteractor.
Also, it creates, initialize and holds vtkRenderWindow instance.
};
-//============================================================================
//! Extends QVTK_RenderWindowInteractor functionality.
/*!
+ \class SVTK_RenderWindowInteractor
Implements such features as
support of selection,
run-time interactor style management,
#undef max
-//----------------------------------------------------------------------------
vtkStandardNewMacro(SVTK_Renderer);
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_Renderer
::SVTK_Renderer():
myDevice(vtkRenderer::New()),
myPriority);
}
+/*!
+ Destructor
+*/
SVTK_Renderer
::~SVTK_Renderer()
{
}
+/*!
+ Main process event method
+*/
void
SVTK_Renderer
::ProcessEvents(vtkObject* vtkNotUsed(theObject),
}
}
-//----------------------------------------------------------------------------
+/*!
+ \return renderer's device
+*/
vtkRenderer*
SVTK_Renderer
::GetDevice()
return myDevice.GetPointer();
}
+/*!
+ Initialize renderer
+*/
void
SVTK_Renderer
::Initialize(vtkRenderWindowInteractor* theInteractor,
mySelector = theSelector;
}
-//----------------------------------------------------------------------------
+/*!
+ Publishes pointed actor into the renderer
+*/
void
SVTK_Renderer
::AddActor(VTKViewer_Actor* theActor)
}
}
+/*!
+ Removes pointed actor from the renderer
+*/
void
SVTK_Renderer
::RemoveActor(VTKViewer_Actor* theActor)
}
}
+/*!
+ Get special container that keeps scaling of the scene
+*/
VTKViewer_Transform*
SVTK_Renderer
::GetTransform()
return myTransform.GetPointer();
}
+/*!
+ Allows to get a scale that is applied on the whole scene
+*/
void
SVTK_Renderer
::GetScale( double theScale[3] )
myTransform->GetMatrixScale( theScale );
}
+/*!
+ Allows to apply a scale on the whole scene
+*/
void
SVTK_Renderer
::SetScale( double theScale[3] )
AdjustActors();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Applies color and size (PointSize and LineWidth) of primitives in selection mode
+*/
void
SVTK_Renderer
::SetSelectionProp(const double& theRed,
myHighlightProperty->SetPointSize( theWidth );
}
-//----------------------------------------------------------------------------
+/*!
+ Applies color and size (PointSize and LineWidth) of primitives in preselection mode
+*/
void
SVTK_Renderer
::SetPreselectionProp(const double& theRed,
myPreHighlightProperty->SetPointSize( theWidth );
}
-//----------------------------------------------------------------------------
+/*!
+ Setup requested tolerance for the picking
+*/
void
SVTK_Renderer
::SetSelectionTolerance(const double& theTolNodes,
}
-//----------------------------------------------------------------------------
/*! If parameter theIsForcedUpdate is true, recalculate parameters for
* trihedron and cube axes, even if trihedron and cube axes is invisible.
*/
inline
bool
-CheckBndBox(const float theBounds[6])
+CheckBndBox(const vtkFloatingPointType theBounds[6])
{
if(theBounds[0] > -VTK_LARGE_FLOAT && theBounds[1] < VTK_LARGE_FLOAT &&
theBounds[2] > -VTK_LARGE_FLOAT && theBounds[3] < VTK_LARGE_FLOAT &&
return false;
}
+/*!
+ Adjusts size of actors
+*/
bool
SVTK_Renderer
::OnAdjustActors()
bool aTDisplayed = IsTrihedronDisplayed();
bool aCDisplayed = IsCubeAxesDisplayed();
- float aNewBndBox[6];
+ vtkFloatingPointType aNewBndBox[6];
aNewBndBox[ 0 ] = aNewBndBox[ 2 ] = aNewBndBox[ 4 ] = VTK_LARGE_FLOAT;
aNewBndBox[ 1 ] = aNewBndBox[ 3 ] = aNewBndBox[ 5 ] = -VTK_LARGE_FLOAT;
myCubeAxes->VisibilityOff();
// if the new trihedron size have sufficient difference, then apply the value
- double aSize = myTrihedron->GetSize();
+ vtkFloatingPointType aSize = myTrihedron->GetSize();
if ( IsTrihedronRelative() )
{
ComputeTrihedronSize(GetDevice(),aSize,aSize,myTrihedronSize);
if(anActor->IsResizable())
anActor->SetSize(0.5*aSize);
if(anActor->GetVisibility() && !anActor->IsInfinitive()){
- float *aBounds = anActor->GetBounds();
+ vtkFloatingPointType *aBounds = anActor->GetBounds();
if(CheckBndBox(aBounds))
for(int i = 0; i < 5; i = i + 2){
if(aBounds[i] < aNewBndBox[i])
return false;
}
+/*!
+ Adjusts size of actors
+*/
void
SVTK_Renderer
::AdjustActors()
::ResetCameraClippingRange(GetDevice());
}
+/*!
+ Set size of the trihedron
+ \param theSize - new size
+ \param theRelative - if it is true, then size is mesured in percents from bounding box of the scene,
+ otherwise - in viewer units
+*/
void
SVTK_Renderer
::SetTrihedronSize(int theSize, const bool theRelative)
}
}
+/*!
+ \return size of the trihedron in percents from bounding box of the scene
+*/
int
SVTK_Renderer
::GetTrihedronSize() const
return myTrihedronSize;
}
+/*!
+ \return true if the size of the trihedron is relative
+*/
bool
SVTK_Renderer
::IsTrihedronRelative() const
return myIsTrihedronRelative;
}
-//----------------------------------------------------------------------------
+/*!
+ \return trihedron control
+*/
VTKViewer_Trihedron*
SVTK_Renderer
::GetTrihedron()
return myTrihedron.GetPointer();
}
+/*!
+ \return true if trihedron is displayed
+*/
bool
SVTK_Renderer
::IsTrihedronDisplayed()
return myTrihedron->GetVisibility() == VTKViewer_Trihedron::eOn;
}
+/*!
+ Toggle trihedron visibility
+*/
void
SVTK_Renderer
::OnViewTrihedron()
myTrihedron->VisibilityOn();
}
+/*!
+ Adjust size of the trihedron to the bounding box of the scene
+*/
void
SVTK_Renderer
::OnAdjustTrihedron()
AdjustActors();
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return graduated rules control
+*/
SVTK_CubeAxesActor2D*
SVTK_Renderer
::GetCubeAxes()
return myCubeAxes.GetPointer();
}
+/*!
+ \return true if graduated rules displayed
+*/
bool
SVTK_Renderer
::IsCubeAxesDisplayed()
return myCubeAxes->GetVisibility() == 1;
}
+/*!
+ Toggle graduated rules visibility
+*/
void
SVTK_Renderer
::OnViewCubeAxes()
myCubeAxes->VisibilityOn();
}
+/*!
+ Adjust size of the graduated rules to the bounding box of the scene
+*/
void
SVTK_Renderer
::OnAdjustCubeAxes()
AdjustActors();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Sets camera into predefined state
+*/
void
SVTK_Renderer
::OnResetView()
else
myCubeAxes->VisibilityOff();
- static float aCoeff = 3.0;
+ static vtkFloatingPointType aCoeff = 3.0;
aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale());
}
-
-//----------------------------------------------------------------------------
+/*!
+ Fit all presentation in the scene into the window
+*/
void
SVTK_Renderer
::OnFitAll()
::ResetCameraClippingRange(GetDevice());
}
-
-//----------------------------------------------------------------------------
+/*!
+ Reset camera clipping range to adjust the range to the bounding box of the scene
+*/
void
SVTK_Renderer
::OnResetClippingRange()
::ResetCameraClippingRange(GetDevice());
}
-
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to front view
+*/
void
SVTK_Renderer
::OnFrontView()
this->OnFitAll();
}
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to back view
+*/
void
SVTK_Renderer
::OnBackView()
this->OnFitAll();
}
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to top view
+*/
void
SVTK_Renderer
::OnTopView()
this->OnFitAll();
}
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to bottom view
+*/
void
SVTK_Renderer
::OnBottomView()
this->OnFitAll();
}
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to left view
+*/
void
SVTK_Renderer
::OnLeftView()
this->OnFitAll();
}
-//----------------------------------------------------------------------------
+/*!
+ To reset direction of the camera to right view
+*/
void
SVTK_Renderer
::OnRightView()
#define SVTK_Renderer_h
#include "SVTK.h"
+#include "VTKViewer.h"
#include <vtkObject.h>
#include <vtkSmartPointer.h>
class SVTK_Selector;
-//! The class is a container for #vtkRenderer instance.
-/*!
+/*!
+ \class SVTK_Renderer
+ The class is a container for #vtkRenderer instance.
Main goal of the class is to apply common behaviour to all #SALOME_Actor, like
selection and preselection colors.
Also, the class is responsible for management of internal actors like trihedron an so on.
*/
-//============================================================================
class SVTK_EXPORT SVTK_Renderer : public vtkObject
{
public:
SVTK_Selector* theSelector);
//----------------------------------------------------------------------------
- //! This method publishes pointed actor into the renderer
+ //! Publishes pointed actor into the renderer
virtual
void
AddActor(VTKViewer_Actor* theActor);
- //! This method removes pointed actor from the renderer
+ //! Removes pointed actor from the renderer
virtual
void
RemoveActor(VTKViewer_Actor* theActor);
VTKViewer_Transform*
GetTransform();
- //! This method allow to apply a scale on the whole scene
+ //! Allows to apply a scale on the whole scene
virtual
void
SetScale( double theScale[3] );
- //! This method allow to get a scale that is applied on the whole scene
+ //! Allows to get a scale that is applied on the whole scene
void
GetScale( double theScale[3] );
const double& theBlue = 1,
const int& theWidth = 5);
- //! Setup requested tollerance for the picking
+ //! Setup requested tolerance for the picking
void
SetSelectionTolerance(const double& theTolNodes = 0.025,
const double& theTolCell = 0.001);
//----------------------------------------------------------------------------
// Priority at which events are processed
- float myPriority;
+ vtkFloatingPointType myPriority;
// Used to process events
vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
vtkSmartPointer<VTKViewer_Trihedron> myTrihedron;
int myTrihedronSize;
bool myIsTrihedronRelative;
- float myBndBox[6];
+ vtkFloatingPointType myBndBox[6];
};
#endif
#include <vtkCallbackCommand.h>
+/*!
+ \return new SVTK_Selector
+*/
SVTK_Selector*
SVTK_Selector
::New()
return new SVTK_SelectorDef();
}
-//----------------------------------------------------------------------------
+/*!
+ Default constructor
+*/
SVTK_SelectorDef
::SVTK_SelectorDef()
{
mySelectionMode = ActorSelection;
}
+/*!
+ Destructor
+*/
SVTK_SelectorDef
::~SVTK_SelectorDef()
{
}
-//----------------------------------------------------------------------------
+/*!
+ To invoke selectionChanged signals
+*/
void
SVTK_SelectorDef
::StartPickCallback()
this->InvokeEvent(vtkCommand::StartPickEvent,NULL);
}
-//----------------------------------------------------------------------------
+/*!
+ To invoke selectionChanged signals
+*/
void
SVTK_SelectorDef
::EndPickCallback()
this->InvokeEvent(vtkCommand::EndPickEvent,NULL);
}
-//----------------------------------------------------------------------------
+/*!
+ To change current Selection_Mode (as outside effect, it invokes selectionChange signal)
+*/
void
SVTK_SelectorDef
::SetSelectionMode(Selection_Mode theMode)
}
}
+/*!
+ Clear selection
+*/
void
SVTK_SelectorDef
::ClearIObjects()
myMapIOSubIndex.clear();
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if the SALOME_InteractiveObject presents into selection
+*/
bool
SVTK_SelectorDef
::IsSelected(const Handle(SALOME_InteractiveObject)& theIO) const
return !theIO.IsNull() && (myIObjects.find(theIO) != myIObjects.end());
}
+/*!
+ \return true if the SALOME_Actor presents into selection
+*/
bool
SVTK_SelectorDef
::IsSelected(SALOME_Actor* theActor) const
return IsSelected(anIO) && myIO2Actors.find(anIO) != myIO2Actors.end();
}
+/*!
+ \return corresponding SALOME_Actor for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+*/
SALOME_Actor*
SVTK_SelectorDef
::GetActor(const Handle(SALOME_InteractiveObject)& theIO) const
return NULL;
}
-//----------------------------------------------------------------------------
+/*!
+ Adds SALOME_InteractiveObject into selection
+ \param theIO - SALOME_InteractiveObject
+*/
bool
SVTK_SelectorDef
::AddIObject(const Handle(SALOME_InteractiveObject)& theIO)
return false;
}
+/*!
+ Adds SALOME_Actor into selection
+ \param theActor - SALOME_Actor
+*/
bool
SVTK_SelectorDef
::AddIObject(SALOME_Actor* theActor)
return !anIsIOBound || !anIsActorBound;
}
-//----------------------------------------------------------------------------
+/*!
+ Removes SALOME_InteractiveObject from selection
+ \param theIO - SALOME_InteractiveObject
+*/
bool
SVTK_SelectorDef
::RemoveIObject(const Handle(SALOME_InteractiveObject)& theIO)
return anIsIOBound;
}
+/*!
+ Removes SALOME_Actor from selection
+ \param theActor - SALOME_Actor
+*/
bool
SVTK_SelectorDef
::RemoveIObject(SALOME_Actor* theActor)
return RemoveIObject(anIO) || anIsActorBound;
}
-//----------------------------------------------------------------------------
+/*!
+ \return list of all SALOME_InteractiveObject presenting in selection
+*/
const SALOME_ListIO&
SVTK_SelectorDef
::StoredIObjects() const
return myIObjectList;
}
+/*!
+ \return number of selected objects
+*/
int
SVTK_SelectorDef
::IObjectCount() const
return myIObjects.size();
}
+/*!
+ \return true if the SALOME_InteractiveObject has a subselection
+ \param theIO - SALOME_InteractiveObject
+*/
bool
SVTK_SelectorDef
::HasIndex( const Handle(SALOME_InteractiveObject)& theIO) const
return myMapIOSubIndex.find(theIO) != myMapIOSubIndex.end();
}
+/*!
+ Gets indices of subselection for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+*/
void
SVTK_SelectorDef
::GetIndex( const Handle(SALOME_InteractiveObject)& theIO,
theIndex.Clear();
}
+/*!
+ \return true if the index presents in subselection
+ \param theIO - SALOME_InteractiveObject
+ \param theIndex - index
+*/
bool
SVTK_SelectorDef
::IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO,
return anId;
}
-
+/*!
+ Changes indices of subselection for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+ \param theIndices - indices
+ \param theIsModeShift - if it is false, then map will be cleared before indices are added
+*/
bool
SVTK_SelectorDef
::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
}
+/*!
+ Changes indices of subselection for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+ \param theIndices - indices
+ \param theIsModeShift - if it is false, then map will be cleared before indices are added
+*/
bool
SVTK_SelectorDef
::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
}
+/*!
+ Changes indices of subselection for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+ \param theIndex - index
+ \param theIsModeShift - if it is false, then map will be cleared before indices are added
+*/
bool
SVTK_SelectorDef
::AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
}
+/*!
+ Removes index of subselection for SALOME_InteractiveObject
+ \param theIO - SALOME_InteractiveObject
+ \param theIndex - index
+*/
void
SVTK_SelectorDef
::RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
}
}
+/*!
+ Clears all indices of subselection
+*/
void
SVTK_SelectorDef
::ClearIndex()
myMapIOSubIndex.clear();
}
-//----------------------------------------------------------------------------
+/*!
+ To apply a filter on the selection
+ \param theFilter - new filter
+*/
void
SVTK_SelectorDef
::SetFilter(const Handle(VTKViewer_Filter)& theFilter)
myFilters.insert(TFilters::value_type(theFilter->GetId(),theFilter));
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if filter with given number is applyed
+ \param theId - filter id
+*/
bool
SVTK_SelectorDef
::IsFilterPresent(const TFilterID theId) const
return myFilters.find(theId) != myFilters.end();
}
-//----------------------------------------------------------------------------
+/*!
+ To remove a filter from the selection
+ \param theId - filter id
+*/
void
SVTK_SelectorDef
::RemoveFilter(const TFilterID theId)
myFilters.erase(theId);
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if the index satisfy installed filters
+ \param theActor - actor
+ \param theId - filter id
+ \param theIsNode - whether it is node
+*/
bool
SVTK_SelectorDef
::IsValid(SALOME_Actor* theActor,
return true;
}
-//----------------------------------------------------------------------------
+/*!
+ \return filter by it's id
+ \param theId - filter id
+*/
Handle(VTKViewer_Filter)
SVTK_SelectorDef
::GetFilter(const TFilterID theId) const
GetIndex( const Handle(SALOME_InteractiveObject)& theIO,
TColStd_IndexedMapOfInteger& theIndex ) = 0;
- //! Change indexes of subslection for given #SALOME_InteractiveObject
+ //! Change indices of subselection for given #SALOME_InteractiveObject
virtual
bool
AddOrRemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
RemoveIndex( const Handle(SALOME_InteractiveObject)& theIO,
int theIndex) = 0;
- //! Check, if the given index is present in subslection
+ //! Check, if the given index is present in subselection
virtual
bool
IsIndexSelected(const Handle(SALOME_InteractiveObject)& theIO,
#include "SVTK_SpaceMouse.h"
-//---------------------------------------------
SVTK_SpaceMouse* SVTK_SpaceMouse::myInstance = 0;
-//---------------------------------------------
+/*!
+ \return shared instance of object (creates if there is no one)
+*/
SVTK_SpaceMouse* SVTK_SpaceMouse::getInstance()
{
if ( !myInstance )
return myInstance;
}
-//---------------------------------------------
+/*!
+ Constructor
+*/
SVTK_SpaceMouse::SVTK_SpaceMouse()
{
win = InputFocus;
spaceMouseOn = 0;
}
-//---------------------------------------------
+/*!
+ Initialization
+*/
int SVTK_SpaceMouse::initialize( Display *display, Window window )
{
XMotionEvent = XInternAtom( display, "MotionEvent", 1 );
return spaceMouseOn;
}
-//---------------------------------------------
static int errorCallback( Display *display, XErrorEvent *Error )
{
char msg[ 128 ];
return 0;
}
-//---------------------------------------------
+/*!
+ Initialize by window
+*/
int SVTK_SpaceMouse::setWindow( Display *display, Window window )
{
XTextProperty winName;
return result;
}
-//---------------------------------------------
+/*!
+ Close
+*/
int SVTK_SpaceMouse::close(Display *display)
{
initialize( display, (Window)InputFocus );
return 1;
}
-//---------------------------------------------
+/*!
+ Custom event handler
+*/
int SVTK_SpaceMouse::translateEvent( Display* display, XEvent* xEvent, MoveEvent* spaceMouseEvent,
double scale, double rScale )
{
#include <vtkActorCollection.h>
#include <vtkRenderer.h>
-//****************************************************************
vtkStandardNewMacro(SVTK_Trihedron);
-//****************************************************************
+/*!
+ Constructor
+*/
SVTK_Trihedron
::SVTK_Trihedron()
{
}
-//****************************************************************
+/*!
+ \return count of visible actors
+ \param theRenderer - renderer to be checked
+*/
int
SVTK_Trihedron
::GetVisibleActorCount(vtkRenderer* theRenderer)
--- /dev/null
+// SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author :
+// Module : SALOME
+// $Header$
+
+#include "SVTK_UpdateRateDlg.h"
+
+#include "SVTK_MainWindow.h"
+#include "SVTK_RenderWindowInteractor.h"
+#include "VTKViewer_Algorithm.h"
+#include "SALOME_Actor.h"
+
+#include "QtxDblSpinBox.h"
+#include "QtxAction.h"
+
+#include <sstream>
+
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkCallbackCommand.h>
+#include <vtkRenderWindow.h>
+#include <vtkRenderer.h>
+#include <vtkMapper.h>
+#include <vtkDataSet.h>
+
+static vtkFloatingPointType OFF_UPDATE_RATE = 0.00001;
+static vtkFloatingPointType FLOAT_TOLERANCE = 1.0 / VTK_LARGE_FLOAT;
+
+using namespace std;
+
+namespace
+{
+ //----------------------------------------------------------------------------
+ inline
+ QString
+ GetUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor)
+ {
+ if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){
+ vtkFloatingPointType aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds();
+ if(aLastRenderTimeInSeconds > FLOAT_TOLERANCE){
+ std::ostringstream aStr;
+ vtkFloatingPointType aFPS = 1.0 / aLastRenderTimeInSeconds;
+ aStr<<aFPS;
+ return QString(aStr.str().c_str());
+ }
+ }
+ return "Inf";
+ }
+
+
+ //----------------------------------------------------------------------------
+ struct TRenderTimeMultiplier
+ {
+ vtkFloatingPointType myVTKMultiplier;
+ vtkFloatingPointType mySALOMEMultiplier;
+
+ TRenderTimeMultiplier():
+ myVTKMultiplier(0.0),
+ mySALOMEMultiplier(0.0)
+ {}
+
+ void
+ operator()(vtkActor* theActor)
+ {
+ if(theActor->GetVisibility()){
+ myVTKMultiplier += theActor->GetAllocatedRenderTime();
+ if(dynamic_cast<SALOME_Actor*>(theActor))
+ mySALOMEMultiplier += theActor->GetAllocatedRenderTime();
+ }
+ }
+ };
+
+
+ //----------------------------------------------------------------------------
+ inline
+ vtkFloatingPointType
+ AdjustUpdateRate(SVTK_RenderWindowInteractor* theRWInteractor,
+ vtkFloatingPointType theUpdateRate)
+ {
+ if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){
+ if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){
+ TRenderTimeMultiplier aMultiplier;
+ using namespace VTK;
+ aMultiplier = ForEach<vtkActor>(anActorCollection,
+ aMultiplier);
+ if(aMultiplier.mySALOMEMultiplier > FLOAT_TOLERANCE)
+ theUpdateRate *= aMultiplier.mySALOMEMultiplier / aMultiplier.myVTKMultiplier;
+ }
+ }
+ return theUpdateRate;
+ }
+
+
+ //----------------------------------------------------------------------------
+ struct TCellsCounter
+ {
+ vtkIdType myCounter;
+ TCellsCounter():
+ myCounter(0)
+ {}
+
+ void
+ operator()(SALOME_Actor* theActor)
+ {
+ if(theActor->GetVisibility()){
+ if(vtkMapper *aMapper = theActor->GetMapper()){
+ if(vtkDataSet *aDataSet = aMapper->GetInput()){
+ myCounter += aDataSet->GetNumberOfCells();
+ }
+ }
+ }
+ }
+ };
+
+
+ //----------------------------------------------------------------------------
+ inline
+ QString
+ GetNumberOfCells(SVTK_RenderWindowInteractor* theRWInteractor)
+ {
+ if(vtkRenderer *aRenderer = theRWInteractor->getRenderer()){
+ if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){
+ TCellsCounter aCounter;
+ using namespace VTK;
+ aCounter = ForEach<SALOME_Actor>(anActorCollection,
+ aCounter);
+ return QString::number(aCounter.myCounter);
+ }
+ }
+
+ return QString::number(0);
+ }
+}
+
+/*!
+ Constructor
+*/
+SVTK_UpdateRateDlg
+::SVTK_UpdateRateDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName):
+ SVTK_DialogBase(theAction,
+ theParent,
+ theName),
+ myPriority(0.0),
+ myEventCallbackCommand(vtkCallbackCommand::New()),
+ myRWInteractor(theParent->GetInteractor()),
+ myAction(theAction)
+{
+ vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice();
+ bool anIsEnabledUpdateRate = false;
+
+ setCaption(tr("DLG_TITLE"));
+ QVBoxLayout* aVBoxLayout = new QVBoxLayout(this, 5, 5);
+ {
+ QGroupBox* aGroupBox = new QGroupBox(tr("INPUT_FRAME_TITLE"), this);
+ aGroupBox->setColumnLayout(0, Qt::Vertical );
+ aGroupBox->layout()->setSpacing( 6 );
+ aGroupBox->layout()->setMargin( 11 );
+
+ aGroupBox->setCheckable(true);
+ aGroupBox->setChecked(anIsEnabledUpdateRate);
+ myIsEnableUpdateRateGroupBox = aGroupBox;
+
+ QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout());
+ {
+ QLabel* aLabel = new QLabel(tr("DESIRED"), aGroupBox);
+ aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aLabel, 0, 0);
+
+ QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox);
+ aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aDblSpinBox, 0, 1);
+
+ aDblSpinBox->setValue(aRWI->GetDesiredUpdateRate());
+ aDblSpinBox->setEnabled(anIsEnabledUpdateRate);
+ connect(aGroupBox, SIGNAL(toggled(bool)), aDblSpinBox, SLOT(setEnabled(bool)));
+ myDesiredUpdateRateSblSpinBox = aDblSpinBox;
+ }
+ {
+ QLabel* aLabel = new QLabel(tr("STILL"), aGroupBox);
+ aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aLabel, 1, 0);
+
+ QtxDblSpinBox* aDblSpinBox = new QtxDblSpinBox(OFF_UPDATE_RATE, VTK_LARGE_FLOAT, 2, aGroupBox);
+ aDblSpinBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aDblSpinBox, 1, 1);
+
+ aDblSpinBox->setValue(aRWI->GetStillUpdateRate());
+ aDblSpinBox->setEnabled(anIsEnabledUpdateRate);
+ connect(aGroupBox, SIGNAL(toggled(bool)), aDblSpinBox, SLOT(setEnabled(bool)));
+ myStillUpdateRateSblSpinBox = aDblSpinBox;
+ }
+ aVBoxLayout->addWidget(aGroupBox);
+ }
+ {
+ QGroupBox* aGroupBox = new QGroupBox(tr("INFORMATION_FRAME_TITLE"), this);
+ aGroupBox->setColumnLayout(0, Qt::Vertical );
+ aGroupBox->layout()->setSpacing( 6 );
+ aGroupBox->layout()->setMargin( 11 );
+
+ QGridLayout* aGridLayout = new QGridLayout(aGroupBox->layout());
+ {
+ QLabel* aLabel = new QLabel(tr("CURRENT_FPS"), aGroupBox);
+ aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aLabel, 0, 0);
+
+ QLineEdit* aLineEdit = new QLineEdit( aGroupBox );
+ aLineEdit->setReadOnly( TRUE );
+ aGridLayout->addWidget(aLineEdit, 0, 1);
+
+ myCurrentUpdateRateLineEdit = aLineEdit;
+ myCurrentUpdateRateLineEdit->setText( GetUpdateRate(myRWInteractor) );
+ }
+ {
+ QLabel* aLabel = new QLabel(tr("NUMBER_CELLS"), aGroupBox);
+ aLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+ aGridLayout->addWidget(aLabel, 1, 0);
+
+ QLineEdit* aLineEdit = new QLineEdit( aGroupBox );
+ aLineEdit->setReadOnly( TRUE );
+ aGridLayout->addWidget(aLineEdit, 1, 1);
+
+ myNumberOfCellsLineEdit = aLineEdit;
+ myNumberOfCellsLineEdit->setText( GetNumberOfCells(myRWInteractor) );
+ }
+ aVBoxLayout->addWidget(aGroupBox);
+ }
+ {
+ QGroupBox* aGroupBox = new QGroupBox(this);
+ QHBoxLayout* aHBoxLayout = new QHBoxLayout(aGroupBox);
+ aHBoxLayout->setMargin(11);
+ aHBoxLayout->setSpacing(6);
+ {
+ QPushButton* aPushButton = new QPushButton(tr("OK"), aGroupBox);
+ aPushButton->setDefault(TRUE);
+ aPushButton->setAutoDefault(TRUE);
+ aHBoxLayout->addWidget(aPushButton);
+ connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickOk()));
+ }
+ {
+ QPushButton* aPushButton = new QPushButton(tr("Apply"), aGroupBox);
+ aPushButton->setDefault(TRUE);
+ aPushButton->setAutoDefault(TRUE);
+ aHBoxLayout->addWidget(aPushButton);
+ connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickApply()));
+ }
+ aHBoxLayout->addStretch();
+ {
+ QPushButton* aPushButton = new QPushButton(tr("Close"), aGroupBox);
+ aPushButton->setDefault(TRUE);
+ aPushButton->setAutoDefault(TRUE);
+ aHBoxLayout->addWidget(aPushButton);
+ connect(aPushButton, SIGNAL(clicked()), this, SLOT(onClickClose()));
+ }
+ aVBoxLayout->addWidget(aGroupBox);
+ }
+
+ if(!anIsEnabledUpdateRate){
+ aRWI->SetDesiredUpdateRate(OFF_UPDATE_RATE);
+ aRWI->SetStillUpdateRate(OFF_UPDATE_RATE);
+ }
+
+ myEventCallbackCommand->Delete();
+ myEventCallbackCommand->SetClientData(this);
+ myEventCallbackCommand->SetCallback(SVTK_UpdateRateDlg::ProcessEvents);
+ vtkRenderer *aRenderer = myRWInteractor->getRenderer();
+ aRenderer->AddObserver(vtkCommand::EndEvent,
+ myEventCallbackCommand.GetPointer(),
+ myPriority);
+}
+
+/*!
+ Destroys the object and frees any allocated resources
+ */
+SVTK_UpdateRateDlg
+::~SVTK_UpdateRateDlg()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+/*!
+ Processes events
+*/
+void
+SVTK_UpdateRateDlg
+::ProcessEvents(vtkObject* vtkNotUsed(theObject),
+ unsigned long theEvent,
+ void* theClientData,
+ void* vtkNotUsed(theCallData))
+{
+ SVTK_UpdateRateDlg* self = reinterpret_cast<SVTK_UpdateRateDlg*>(theClientData);
+
+ if(theEvent == vtkCommand::EndEvent){
+ self->myCurrentUpdateRateLineEdit->setText( GetUpdateRate(self->myRWInteractor) );
+ self->myNumberOfCellsLineEdit->setText( GetNumberOfCells(self->myRWInteractor) );
+ }
+}
+
+/*!
+ Update
+*/
+void
+SVTK_UpdateRateDlg
+::Update()
+{
+ vtkRenderWindowInteractor* aRWI = myRWInteractor->GetDevice();
+
+ vtkFloatingPointType anUpdateRate;
+ if(myIsEnableUpdateRateGroupBox->isChecked()){
+ anUpdateRate = AdjustUpdateRate(myRWInteractor,myDesiredUpdateRateSblSpinBox->value());
+ aRWI->SetDesiredUpdateRate(anUpdateRate);
+ anUpdateRate = AdjustUpdateRate(myRWInteractor,myStillUpdateRateSblSpinBox->value());
+ aRWI->SetStillUpdateRate(anUpdateRate);
+ }else{
+ aRWI->SetDesiredUpdateRate(OFF_UPDATE_RATE);
+ aRWI->SetStillUpdateRate(OFF_UPDATE_RATE);
+ }
+
+ myRWInteractor->getRenderWindow()->Render();
+}
+
+/*!
+ SLOT on OK clicked
+*/
+void
+SVTK_UpdateRateDlg
+::onClickOk()
+{
+ Update();
+ onClickClose();
+}
+
+/*!
+ SLOT on Apply clicked
+*/
+void
+SVTK_UpdateRateDlg
+::onClickApply()
+{
+ Update();
+}
+
+/*!
+ SLOT on Close clicked
+*/
+void
+SVTK_UpdateRateDlg
+::onClickClose()
+{
+ reject();
+}
--- /dev/null
+// SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author :
+// Module : SALOME
+// $Header$
+
+#ifndef SVTK_UPDATERATEDLG_H
+#define SVTK_UPDATERATEDLG_H
+
+#include "SVTK_DialogBase.h"
+
+#include <vtkSmartPointer.h>
+
+class SVTK_MainWindow;
+class SVTK_RenderWindowInteractor;
+
+class QtxDblSpinBox;
+class QtxAction;
+
+class QGroupBox;
+class QLineEdit;
+
+class vtkCallbackCommand;
+class vtkObject;
+
+
+class SVTK_UpdateRateDlg : public SVTK_DialogBase
+{
+ Q_OBJECT;
+
+public:
+ SVTK_UpdateRateDlg(QtxAction* theAction,
+ SVTK_MainWindow* theParent,
+ const char* theName);
+
+ ~SVTK_UpdateRateDlg();
+
+ void Update();
+
+protected:
+ SVTK_RenderWindowInteractor* myRWInteractor;
+ QtxDblSpinBox* myDesiredUpdateRateSblSpinBox;
+ QtxDblSpinBox* myStillUpdateRateSblSpinBox;
+ QGroupBox* myIsEnableUpdateRateGroupBox;
+
+ QLineEdit* myCurrentUpdateRateLineEdit;
+ QLineEdit* myNumberOfCellsLineEdit;
+
+ QtxAction* myAction;
+
+ //----------------------------------------------------------------------------
+ // Priority at which events are processed
+ vtkFloatingPointType myPriority;
+
+ // Used to process events
+ vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+
+ // Description:
+ // Main process event method
+ static void ProcessEvents(vtkObject* object,
+ unsigned long event,
+ void* clientdata,
+ void* calldata);
+
+protected slots:
+ void onClickOk();
+ void onClickApply();
+ void onClickClose();
+};
+
+#endif // SVTK_UPDATERATEDLG_H
#include <vtkActorCollection.h>
#include <vtkRenderer.h>
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_SignalHandler
::SVTK_SignalHandler(SVTK_MainWindow* theMainWindow):
QObject(theMainWindow),
this,SIGNAL(selectionChanged()));
}
+/*!
+ Destructor
+*/
SVTK_SignalHandler
::~SVTK_SignalHandler()
{
}
+/*!
+ \return corresponding svtk main window
+*/
SVTK_MainWindow*
SVTK_SignalHandler
::GetMainWindow()
}
-//----------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_MainWindow::Repaint (just for flexibility)
+*/
void
SVTK_SignalHandler
::Repaint(bool theUpdateTrihedron)
myMainWindow->Repaint(theUpdateTrihedron);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_MainWindow::GetRenderer (just for flexibility)
+*/
SVTK_Renderer*
SVTK_SignalHandler
::GetRenderer()
return myMainWindow->GetRenderer();
}
+/*!
+ Redirect the request to #SVTK_MainWindow::getRenderer (just for flexibility)
+*/
vtkRenderer*
SVTK_SignalHandler
::getRenderer()
return myMainWindow->getRenderer();
}
-//----------------------------------------------------------------
namespace SVTK
{
struct THighlightAction
};
}
+/*!
+ SLOT: called on selection change
+*/
void
SVTK_SignalHandler
::onSelectionChanged()
myMainWindow->Repaint(false);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_View
::SVTK_View(SVTK_MainWindow* theMainWindow) :
SVTK_SignalHandler(theMainWindow)
{
}
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
SVTK_View
::~SVTK_View()
{
}
-//----------------------------------------------------------------
+/*!
+ Unhilights all objects in viewer
+*/
void
SVTK_View
::unHighlightAll()
Repaint();
}
-//----------------------------------------------------------------
+/*!
+ Hilights/unhilights object in viewer
+ \param theIO - object to be updated
+ \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted
+ \param theIsUpdate - update current viewer
+*/
void
SVTK_View
::highlight( const Handle(SALOME_InteractiveObject)& theIO,
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ Display object
+ \param theEntry - entry that corresponds to intractive objects
+*/
+Handle(SALOME_InteractiveObject)
+SVTK_View
+::FindIObject(const char* theEntry)
+{
+ using namespace SVTK;
+ SALOME_Actor* anActor =
+ Find<SALOME_Actor>(getRenderer()->GetActors(),
+ TIsSameEntry<SALOME_Actor>(theEntry));
+ if(anActor != NULL)
+ return anActor->getIO();
+
+ return NULL;
+}
+
+/*!
+ Redirect the request to #SVTK_Renderer::SetPreselectionProp
+*/
void
SVTK_View
::SetSelectionProp(const double& theRed,
GetRenderer()->SetSelectionProp(theRed,theGreen,theBlue,theWidth);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetPreselectionProp
+*/
void
SVTK_View
::SetPreselectionProp(const double& theRed,
GetRenderer()->SetPreselectionProp(theRed,theGreen,theBlue,theWidth);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetPreselectionProp
+*/
void
SVTK_View
::SetSelectionTolerance(const double& theTolNodes,
GetRenderer()->SetSelectionTolerance(theTolNodes,theTolCell);
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if object is in viewer or in collector
+ \param theIO - object to be checked
+*/
bool
SVTK_View
::isInViewer(const Handle(SALOME_InteractiveObject)& theIObject)
return anActor != NULL;
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if object is displayed in viewer
+ \param theIO - object to be checked
+*/
bool
SVTK_View
::isVisible(const Handle(SALOME_InteractiveObject)& theIObject)
return anActor != NULL && anActor->GetVisibility();
}
-//----------------------------------------------------------------------------
+/*!
+ Changes name of object
+ \param theIObject - object to be renamed
+ \param theName - new name
+*/
void
SVTK_View
::rename(const Handle(SALOME_InteractiveObject)& theIObject,
(&SALOME_Actor::setName,theName.latin1()));
}
-//----------------------------------------------------------------------------
+/*!
+ \return current display mode (obsolete)
+*/
int
SVTK_View
::GetDisplayMode()
return myDisplayMode;
}
+/*!
+ Set current display mode
+ \param theMode - new display mode
+*/
void
SVTK_View
::SetDisplayMode(int theMode)
myDisplayMode = theMode;
}
+/*!
+ Set current display mode
+ \param theIObject - object
+ \param theMode - new display mode
+*/
void
SVTK_View
::SetDisplayMode(const Handle(SALOME_InteractiveObject)& theIObject,
(&SALOME_Actor::setDisplayMode,theMode));
}
-//----------------------------------------------------------------------------
+/*!
+ Change all actors to wireframe
+*/
void
SVTK_View
::ChangeRepresentationToWireframe()
ChangeRepresentationToWireframe(getRenderer()->GetActors());
}
+/*!
+ Change all actors to shading
+*/
void
SVTK_View
::ChangeRepresentationToSurface()
ChangeRepresentationToSurface(getRenderer()->GetActors());
}
-
+/*!
+ Change to wireframe a list of vtkactor
+ theCollection - list of vtkactor
+*/
void
SVTK_View
::ChangeRepresentationToWireframe(vtkActorCollection* theCollection)
Repaint();
}
+/*!
+ Change to shading a list of vtkactor
+ theCollection - list of vtkactor
+*/
void
SVTK_View
::ChangeRepresentationToSurface(vtkActorCollection* theCollection)
Repaint();
}
-//----------------------------------------------------------------------------
namespace SVTK
{
struct TErase
};
}
+/*!
+ To erase all existing VTK presentations
+*/
void
SVTK_View
::EraseAll()
Repaint();
}
+/*!
+ To display all existing VTK presentations
+*/
void
SVTK_View
::DisplayAll()
Repaint();
}
-
+/*!
+ To erase VTK presentation
+ \param theActor - actor
+ \param theIsUpdate - updates current viewer
+*/
void
SVTK_View
::Erase(SALOME_Actor* theActor,
}
+/*!
+ To erase VTK presentation
+ \param theIObject - object
+ \param theIsUpdate - updates current viewer
+*/
void
SVTK_View
::Erase(const Handle(SALOME_InteractiveObject)& theIObject,
Repaint();
}
-//----------------------------------------------------------------------------
+/*!
+ To display the VTK presentation
+*/
void
SVTK_View
::Display(SALOME_Actor* theActor,
Repaint();
}
+/*!
+ To display the VTK presentation
+*/
void
SVTK_View
::Display(const Handle(SALOME_InteractiveObject)& theIObject,
Repaint();
}
+/*!
+ To display VTK presentation with defined #SALOME_InteractiveObject and erase all others
+*/
void
SVTK_View
::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIObject)
}
-//----------------------------------------------------------------------------
namespace SVTK
{
struct TRemoveAction
};
}
+/*!
+ To remove the VTK presentation
+*/
void
SVTK_View
::Remove(const Handle(SALOME_InteractiveObject)& theIObject,
Repaint();
}
+/*!
+ To remove the VTK presentation
+*/
void
SVTK_View
::Remove(SALOME_Actor* theActor,
Repaint();
}
+/*!
+ To remove all VTK presentations
+*/
void
SVTK_View
::RemoveAll(bool theIsUpdate)
}
}
-//----------------------------------------------------------------------------
+/*!
+ \return current transparency
+ \param theIObject - object
+*/
float
SVTK_View
::GetTransparency(const Handle(SALOME_InteractiveObject)& theIObject)
}
+/*!
+ Sets current transparency
+ \param theIObject - object
+ \param theTrans - new transparency
+*/
void
SVTK_View
::SetTransparency(const Handle(SALOME_InteractiveObject)& theIObject,
float theTrans)
{
- float anOpacity = 1.0 - theTrans;
+ vtkFloatingPointType anOpacity = 1.0 - theTrans;
using namespace SVTK;
ForEachIf<SALOME_Actor>(getRenderer()->GetActors(),
TIsSameIObject<SALOME_Actor>(theIObject),
- TSetFunction<SALOME_Actor,float>
+ TSetFunction<SALOME_Actor,vtkFloatingPointType>
(&SALOME_Actor::SetOpacity,anOpacity));
}
-//----------------------------------------------------------------------------
+/*!
+ Change color
+ \param theIObject - object
+ \param theColor - new color
+*/
void
SVTK_View
::SetColor(const Handle(SALOME_InteractiveObject)& theIObject,
const QColor& theColor)
{
- float aColor[3] = {theColor.red()/255., theColor.green()/255., theColor.blue()/255.};
+ vtkFloatingPointType aColor[3] = {theColor.red()/255., theColor.green()/255., theColor.blue()/255.};
using namespace SVTK;
ForEachIf<SALOME_Actor>(getRenderer()->GetActors(),
TIsSameIObject<SALOME_Actor>(theIObject),
- TSetFunction<SALOME_Actor,const float*>
+ TSetFunction<SALOME_Actor,const vtkFloatingPointType*>
(&SALOME_Actor::SetColor,aColor));
}
+/*!
+ \return object color
+ \param theIObject - object
+*/
QColor
SVTK_View
::GetColor(const Handle(SALOME_InteractiveObject)& theIObject)
Find<SALOME_Actor>(getRenderer()->GetActors(),
TIsSameIObject<SALOME_Actor>(theIObject));
if(anActor){
- float r,g,b;
+ vtkFloatingPointType r,g,b;
anActor->GetColor(r,g,b);
return QColor(int(r*255),int(g*255),int(b*255));
}
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef SVTK_VIEW_H
#define SVTK_VIEW_H
class SALOME_Actor;
-//----------------------------------------------------------------------------
//! Main purpose of the class is to provide a way to customize #SVTK_MainWindow.
/*!
This class is initialized by #SVTK_MainWindow and just pass Qt signals from
};
-//----------------------------------------------------------------------------
//! This class is introduced just for compatibility with old code.
/*!
This class contains frequantly used functionality in old code.
void
unHighlightAll();
- /* Selection Management */
+ //! Try to find a SALOME_InteractiveObject in the view that corresponds to the entry
Handle(SALOME_InteractiveObject)
FindIObject(const char* Entry);
int SVTK_ViewManager::_SVTKViewMgr_Id = 0;
-//***************************************************************
+/*!
+ Constructor
+*/
SVTK_ViewManager::SVTK_ViewManager( SUIT_Study* study,
SUIT_Desktop* theDesktop )
: SUIT_ViewManager( study, theDesktop )
setViewModel( new SVTK_Viewer() );
}
-//***************************************************************
+/*!
+ Destructor
+*/
SVTK_ViewManager::~SVTK_ViewManager()
{
}
-//***************************************************************
+/*!
+ \return corresponding main window
+*/
+SUIT_Desktop* SVTK_ViewManager::getDesktop()
+{
+ return myDesktop;
+}
+
+/*!
+ Sets default name of view
+*/
void SVTK_ViewManager::setViewName(SUIT_ViewWindow* theView)
{
int aPos = myViews.find(theView);
//! Destroy the view manager
virtual ~SVTK_ViewManager();
+ SUIT_Desktop* getDesktop();
+
protected:
void setViewName( SUIT_ViewWindow* theView );
// return aMgr->GetStudyByID( id );
//}
-//==========================================================
+/*!
+ Constructor
+*/
SVTK_Viewer::SVTK_Viewer()
{
myTrihedronSize = 105;
myTrihedronRelative = true;
}
-//==========================================================
+/*!
+ Destructor
+*/
SVTK_Viewer::~SVTK_Viewer()
{
}
+/*!
+ \return background color
+*/
QColor
SVTK_Viewer
::backgroundColor() const
return myBgColor;
}
+/*!
+ Changes background color
+ \param theColor - new background color
+*/
void
SVTK_Viewer
::setBackgroundColor( const QColor& theColor )
myBgColor = theColor;
}
-//==========================================================
+/*!Create new instance of view window on desktop \a theDesktop.
+ *\retval SUIT_ViewWindow* - created view window pointer.
+ */
SUIT_ViewWindow*
SVTK_Viewer::
createView( SUIT_Desktop* theDesktop )
return aViewWindow;
}
+/*!
+ \return trihedron size
+*/
int SVTK_Viewer::trihedronSize() const
{
return myTrihedronSize;
}
+/*!
+ \return true if thihedron changes size in accordance with bounding box
+*/
bool SVTK_Viewer::trihedronRelative() const
{
return myTrihedronRelative;
}
+/*!
+ Sets trihedron size and relativeness( whether thihedron changes size in accordance with bounding box)
+ \param theSize - new size
+ \param theRelative - new relativeness
+*/
void SVTK_Viewer::setTrihedronSize( const int theSize, const bool theRelative )
{
myTrihedronSize = theSize;
}
}
-//==========================================================
+/*!
+ Sets new view manager
+ \param theViewManager - new view manager
+*/
void SVTK_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
{
SUIT_ViewModel::setViewManager(theViewManager);
this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
}
-//==========================================================
+/*!
+ Builds popup for vtk viewer
+*/
void
SVTK_Viewer
::contextMenuPopup( QPopupMenu* thePopup )
}
}
-//==========================================================
+/*!
+ SLOT: called on mouse button press, empty implementation
+*/
void
SVTK_Viewer
::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event)
{}
-//==========================================================
+/*!
+ SLOT: called on mouse move, empty implementation
+*/
void
SVTK_Viewer
::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event)
{}
-//==========================================================
+/*!
+ SLOT: called on mouse button release, empty implementation
+*/
void
SVTK_Viewer
::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event)
{}
-//==========================================================
+/*!
+ Enables/disables selection
+ \param isEnabled - new state
+*/
void
SVTK_Viewer
::enableSelection(bool isEnabled)
//!! To be done for view windows
}
-//==========================================================
+/*!
+ Enables/disables selection of many object
+ \param isEnabled - new state
+*/
void
SVTK_Viewer
::enableMultiselection(bool isEnable)
//!! To be done for view windows
}
+/*!
+ SLOT: called on dump view operation is activated, stores scene to raster file
+*/
void
SVTK_Viewer
::onDumpView()
aView->onDumpView();
}
-//==========================================================
+/*!
+ SLOT: called if background color is to be changed changed, passes new color to view port
+*/
void
SVTK_Viewer
::onChangeBgColor()
}
}
-//==========================================================
+/*!
+ SLOT: called when popup item "Show toolbar" is activated, shows toolbar of active view window
+*/
void
SVTK_Viewer
::onShowToolbar()
}
}
-//==========================================================
+/*!
+ Display presentation
+ \param prs - presentation
+*/
void
SVTK_Viewer
::Display( const SALOME_VTKPrs* prs )
}
}
-//==========================================================
+/*!
+ Erase presentation
+ \param prs - presentation
+ \param forced - removes object from view
+*/
void
SVTK_Viewer
::Erase( const SALOME_VTKPrs* prs, const bool forced )
}
}
}
-
-//==========================================================
+
+/*!
+ Erase all presentations
+ \param forced - removes all objects from view
+*/
void
SVTK_Viewer
::EraseAll( const bool forced )
Repaint();
}
-//==========================================================
+/*!
+ Create presentation corresponding to the entry
+ \param entry - entry
+*/
SALOME_Prs*
SVTK_Viewer
::CreatePrs( const char* entry )
return prs;
}
-//==========================================================
+/*!
+ Auxiliary method called before displaying of objects
+*/
void
SVTK_Viewer
::BeforeDisplay( SALOME_Displayer* d )
d->BeforeDisplay( this, SALOME_VTKViewType() );
}
-//==========================================================
+/*!
+ Auxiliary method called after displaying of objects
+*/
void
SVTK_Viewer::AfterDisplay( SALOME_Displayer* d )
{
d->AfterDisplay( this, SALOME_VTKViewType() );
}
-//==========================================================
+/*!
+ \return true if object is displayed in viewer
+ \param obj - object to be checked
+*/
bool
SVTK_Viewer
::isVisible( const Handle(SALOME_InteractiveObject)& io )
return true;
}
-//==========================================================
+/*!
+ Updates current viewer
+*/
void
SVTK_Viewer
::Repaint()
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef SVTK_SELECTIONCHANGED_H
#define SVTK_SELECTIONCHANGED_H
#include <vtkCamera.h>
#include <vtkPointPicker.h>
#include <vtkCellPicker.h>
+#include <vtkAxisActor2D.h>
#include "QtxAction.h"
#include "SVTK_InteractorStyle.h"
#include "SVTK_RenderWindowInteractor.h"
#include "SVTK_GenericRenderWindowInteractor.h"
+#include "SVTK_CubeAxesActor2D.h"
#include "SALOME_ListIteratorOfListIO.hxx"
#include "VTKViewer_Algorithm.h"
#include "SVTK_Functor.h"
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
SVTK_ViewWindow
::SVTK_ViewWindow(SUIT_Desktop* theDesktop):
SUIT_ViewWindow(theDesktop),
myView(NULL)
{}
+/*!
+ To initialize #SVTK_ViewWindow instance
+*/
void
SVTK_ViewWindow
::Initialize(SVTK_ViewModelBase* theModel)
}
}
+/*!
+ To initialize #SVTK_ViewWindow instance
+*/
void
SVTK_ViewWindow
::Initialize(SVTK_View* theView,
theModel,SLOT(onSelectionChanged()));
}
+/*!
+ Destructor
+*/
SVTK_ViewWindow
::~SVTK_ViewWindow()
{}
-//----------------------------------------------------------------------------
+/*!
+ \return corresponding view
+*/
SVTK_View*
SVTK_ViewWindow
::getView()
return myView;
}
+/*!
+ \return corresponding vtk main window
+*/
SVTK_MainWindow*
SVTK_ViewWindow
::getMainWindow()
return myMainWindow;
}
+/*!
+ \return corresponding vtk render window
+*/
vtkRenderWindow*
SVTK_ViewWindow
::getRenderWindow()
return getMainWindow()->getRenderWindow();
}
+/*!
+ \return corresponding vtk render window interactor
+*/
vtkRenderWindowInteractor*
SVTK_ViewWindow
::getInteractor()
return getMainWindow()->getInteractor();
}
+/*!
+ \return corresponding vtk renderer
+*/
vtkRenderer*
SVTK_ViewWindow
::getRenderer()
return myMainWindow->getRenderer();
}
+/*!
+ \return corresponding vtk selector
+*/
SVTK_Selector*
SVTK_ViewWindow
::GetSelector()
return myMainWindow->GetSelector();
}
-
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "front view"
+*/
void
SVTK_ViewWindow
::onFrontView()
myMainWindow->onFrontView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "back view"
+*/
void
SVTK_ViewWindow
::onBackView()
myMainWindow->onBackView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "top view"
+*/
void
SVTK_ViewWindow
::onTopView()
myMainWindow->onTopView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "bottom view"
+*/
void
SVTK_ViewWindow
::onBottomView()
myMainWindow->onBottomView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "left view"
+*/
void
SVTK_ViewWindow
::onLeftView()
myMainWindow->onLeftView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "right view"
+*/
void
SVTK_ViewWindow
::onRightView()
myMainWindow->onRightView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "reset view": sets default orientation of viewport camera
+*/
void
SVTK_ViewWindow
::onResetView()
myMainWindow->onResetView();
}
-//----------------------------------------------------------------------------
+/*!
+ Processes transformation "fit all"
+*/
void
SVTK_ViewWindow
::onFitAll()
myMainWindow->onFitAll();
}
-//----------------------------------------------------------------
+/*!
+ SLOT: called if selection is changed
+*/
void
SVTK_ViewWindow
::onSelectionChanged()
myView->onSelectionChanged();
}
-//----------------------------------------------------------------
+/*!
+ Change selection mode
+ \param theMode - new selection mode
+*/
void
SVTK_ViewWindow
::SetSelectionMode(Selection_Mode theMode)
myMainWindow->SetSelectionMode( theMode );
}
-//----------------------------------------------------------------
+/*!
+ \return selection mode
+*/
Selection_Mode
SVTK_ViewWindow
::SelectionMode() const
return myMainWindow->SelectionMode();
}
-//----------------------------------------------------------------
+/*!
+ Unhilights all objects in viewer
+*/
void
SVTK_ViewWindow
::unHighlightAll()
myView->unHighlightAll();
}
-//----------------------------------------------------------------
+/*!
+ Hilights/unhilights object in viewer
+ \param theIO - object to be updated
+ \param theIsHighlight - if it is true, object will be hilighted, otherwise it will be unhilighted
+ \param theIsUpdate - update current viewer
+*/
void
SVTK_ViewWindow
::highlight(const Handle(SALOME_InteractiveObject)& theIO,
myView->highlight( theIO, theIsHighlight, theIsUpdate );
}
-//----------------------------------------------------------------
+/*!
+ \return true if object is in viewer or in collector
+ \param theIO - object to be checked
+*/
bool
SVTK_ViewWindow
::isInViewer( const Handle(SALOME_InteractiveObject)& theIO )
return myView->isInViewer( theIO );
}
-//----------------------------------------------------------------
+/*!
+ \return true if object is displayed in viewer
+ \param theIO - object to be checked
+*/
bool
SVTK_ViewWindow
::isVisible( const Handle(SALOME_InteractiveObject)& theIO )
return myView->isVisible( theIO );
}
-//----------------------------------------------------------------
+/*!
+ Display object
+ \param theEntry - entry that corresponds to intractive objects
+*/
+Handle(SALOME_InteractiveObject)
+SVTK_ViewWindow
+::FindIObject(const char* theEntry)
+{
+ return myView->FindIObject(theEntry);
+}
+
+/*!
+ Display object
+ \param theIO - object
+ \param theImmediatly - update viewer
+*/
void
SVTK_ViewWindow
::Display(const Handle(SALOME_InteractiveObject)& theIO,
myView->Display(theIO,theImmediatly);
}
+/*!
+ Erase object
+ \param theIO - object
+ \param theImmediatly - update viewer
+*/
void
SVTK_ViewWindow
::Erase(const Handle(SALOME_InteractiveObject)& theIO,
myView->Erase(theIO,theImmediatly);
}
+/*!
+ Display only passed object
+ \param theIO - object
+*/
void
SVTK_ViewWindow
::DisplayOnly(const Handle(SALOME_InteractiveObject)& theIO)
myView->DisplayOnly(theIO);
}
+/*!
+ Display all objects in view
+*/
void
SVTK_ViewWindow
::DisplayAll()
myView->DisplayAll();
}
+/*!
+ Erase all objects in view
+*/
void
SVTK_ViewWindow
::EraseAll()
myView->EraseAll();
}
-//----------------------------------------------------------------------------
+/*!
+ Sets background color
+ \param color - new background color
+*/
void
SVTK_ViewWindow
::setBackgroundColor( const QColor& color )
myMainWindow->SetBackgroundColor( color );
}
-//----------------------------------------------------------------------------
+/*!
+ \return background color of viewer
+*/
QColor
SVTK_ViewWindow
::backgroundColor() const
return myMainWindow->BackgroundColor();
}
-//----------------------------------------------------------------------------
+/*!
+ Updates current viewer
+*/
void
SVTK_ViewWindow
::Repaint(bool theUpdateTrihedron)
myMainWindow->Repaint( theUpdateTrihedron );
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::GetScale
+*/
void
SVTK_ViewWindow
::GetScale( double theScale[3] )
myMainWindow->GetScale( theScale );
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetScale
+*/
void
SVTK_ViewWindow
::SetScale( double theScale[3] )
myMainWindow->SetScale( theScale );
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::IsTrihedronDisplayed
+*/
bool
SVTK_ViewWindow
::isTrihedronDisplayed()
return myMainWindow->IsTrihedronDisplayed();
}
+/*!
+ Redirect the request to #SVTK_Renderer::IsCubeAxesDisplayed
+*/
bool
SVTK_ViewWindow
::isCubeAxesDisplayed()
return myMainWindow->IsCubeAxesDisplayed();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::OnViewTrihedron
+*/
void
SVTK_ViewWindow
::onViewTrihedron()
myMainWindow->onViewTrihedron();
}
+/*!
+ Redirect the request to #SVTK_Renderer::OnViewCubeAxes
+*/
void
SVTK_ViewWindow
::onViewCubeAxes()
myMainWindow->onViewCubeAxes();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::GetTrihedron
+*/
VTKViewer_Trihedron*
SVTK_ViewWindow::
GetTrihedron()
return myMainWindow->GetTrihedron();
}
+/*!
+ Redirect the request to #SVTK_Renderer::GetCubeAxes
+*/
SVTK_CubeAxesActor2D*
SVTK_ViewWindow
::GetCubeAxes()
return myMainWindow->GetCubeAxes();
}
+/*!
+ \return trihedron size
+*/
int
SVTK_ViewWindow
::GetTrihedronSize() const
return myMainWindow->GetTrihedronSize();
}
+/*!
+ Sets trihedron size
+ \param theSize - new trihedron size
+ \param theRelative - trihedron relativeness
+*/
void
SVTK_ViewWindow
::SetTrihedronSize(const int theSize, const bool theRelative)
myMainWindow->AdjustActors();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::OnAdjustTrihedron
+*/
void
SVTK_ViewWindow
::onAdjustTrihedron()
myMainWindow->onAdjustTrihedron();
}
+/*!
+ Redirect the request to #SVTK_Renderer::OnAdjustCubeAxes
+*/
void
SVTK_ViewWindow
::onAdjustCubeAxes()
myMainWindow->onAdjustCubeAxes();
}
-//=======================================================================
+/*!
+ Emits key pressed
+*/
void
SVTK_ViewWindow
::onKeyPressed(QKeyEvent* event)
emit keyPressed( this, event );
}
-//=======================================================================
+/*!
+ Emits key released
+*/
void
SVTK_ViewWindow
::onKeyReleased(QKeyEvent* event)
emit keyReleased( this, event );
}
-//=======================================================================
+/*!
+ Emits mouse pressed
+*/
void
SVTK_ViewWindow
::onMousePressed(QMouseEvent* event)
emit mousePressed(this, event);
}
-//=======================================================================
+/*!
+ Emits mouse released
+*/
void
SVTK_ViewWindow
::onMouseReleased(QMouseEvent* event)
emit mouseReleased( this, event );
}
-//=======================================================================
+/*!
+ Emits mouse moving
+*/
void
SVTK_ViewWindow
::onMouseMoving(QMouseEvent* event)
emit mouseMoving( this, event );
}
-//=======================================================================
+/*!
+ Emits mouse double clicked
+*/
void
SVTK_ViewWindow
::onMouseDoubleClicked( QMouseEvent* event )
emit mouseDoubleClicked( this, event );
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::AddActor
+*/
void
SVTK_ViewWindow
::AddActor( VTKViewer_Actor* theActor,
myMainWindow->AddActor( theActor, theUpdate );
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::RemoveActor
+*/
void
SVTK_ViewWindow
::RemoveActor( VTKViewer_Actor* theActor,
myMainWindow->RemoveActor( theActor, theUpdate );
}
-//----------------------------------------------------------------------------
+/*!
+ \return QImage, containing all scene rendering in window
+*/
QImage
SVTK_ViewWindow
::dumpView()
return myMainWindow->dumpView();
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetSelectionProp
+*/
void
SVTK_ViewWindow
::SetSelectionProp(const double& theRed,
myView->SetSelectionProp(theRed,theGreen,theBlue,theWidth);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetSelectionProp
+*/
void
SVTK_ViewWindow
::SetPreselectionProp(const double& theRed,
myView->SetPreselectionProp(theRed,theGreen,theBlue,theWidth);
}
-//----------------------------------------------------------------------------
+/*!
+ Redirect the request to #SVTK_Renderer::SetSelectionTolerance
+*/
void
SVTK_ViewWindow
::SetSelectionTolerance(const double& theTolNodes,
myView->SetSelectionTolerance(theTolNodes,theTolItems);
}
-//----------------------------------------------------------------------------
int convertAction( const int accelAction )
{
switch ( accelAction ) {
return accelAction;
}
-//----------------------------------------------------------------------------
-void
+/*!
+ Performs action
+ \param accelAction - action
+*/
+bool
SVTK_ViewWindow
::action( const int accelAction )
{
+ if ( !myMainWindow->hasFocus() )
+ return false;
if ( accelAction == SUIT_Accel::ZoomFit )
onFitAll();
else {
int anEvent = convertAction( accelAction );
myMainWindow->InvokeEvent( anEvent, 0 );
}
+ return true;
+}
+
+// old visual parameters had 13 values. New format added additional
+// 76 values for graduated axes, so both numbers are processed.
+const int nNormalParams = 13; // number of view windows parameters excluding graduated axes params
+const int nGradAxisParams = 25; // number of parameters of ONE graduated axis (X, Y, or Z)
+const int nAllParams = nNormalParams + 3*nGradAxisParams + 1; // number of all visual parameters
+
+/*! The method returns visual parameters of a graduated axis actor (x,y,z axis of graduated axes)
+ */
+QString getGradAxisVisualParams( vtkAxisActor2D* actor )
+{
+ QString params;
+ if ( !actor )
+ return params;
+
+ // Name
+ bool isVisible = actor->GetTitleVisibility();
+ QString title ( actor->GetTitle() );
+ vtkFloatingPointType color[ 3 ];
+ int font = VTK_ARIAL;
+ int bold = 0;
+ int italic = 0;
+ int shadow = 0;
+
+ vtkTextProperty* txtProp = actor->GetTitleTextProperty();
+ if ( txtProp )
+ {
+ txtProp->GetColor( color );
+ font = txtProp->GetFontFamily();
+ bold = txtProp->GetBold();
+ italic = txtProp->GetItalic();
+ shadow = txtProp->GetShadow();
+ }
+ params.sprintf( "* Graduated Axis: * Name *%u*%s*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible,
+ title.latin1(), color[0], color[1], color[2], font, bold, italic, shadow );
+
+ // Labels
+ isVisible = actor->GetLabelVisibility();
+ int labels = actor->GetNumberOfLabels();
+ int offset = actor->GetTickOffset();
+ font = VTK_ARIAL;
+ bold = false;
+ italic = false;
+ shadow = false;
+
+ txtProp = actor->GetLabelTextProperty();
+ if ( txtProp )
+ {
+ txtProp->GetColor( color );
+ font = txtProp->GetFontFamily();
+ bold = txtProp->GetBold();
+ italic = txtProp->GetItalic();
+ shadow = txtProp->GetShadow();
+ }
+ params += QString().sprintf( "* Labels *%u*%u*%u*%.2f*%.2f*%.2f*%u*%u*%u*%u", isVisible, labels, offset,
+ color[0], color[1], color[2], font, bold, italic, shadow );
+
+ // Tick marks
+ isVisible = actor->GetTickVisibility();
+ int length = actor->GetTickLength();
+
+ params += QString().sprintf( "* Tick marks *%u*%u", isVisible, length );
+
+ return params;
+}
+
+/*! The method restores visual parameters of a graduated axis actor (x,y,z axis)
+ */
+void setGradAxisVisualParams( vtkAxisActor2D* actor, const QString& params )
+{
+ if ( !actor )
+ return;
+
+ QStringList paramsLst = QStringList::split( '*', params, true );
+
+ if ( paramsLst.size() == nGradAxisParams ) { // altogether name, lable, ticks parameters make up 25 values
+
+ // retrieve and set name parameters
+ bool isVisible = paramsLst[2].toUShort();
+ QString title = paramsLst[3];
+ vtkFloatingPointType color[3];
+ color[0] = paramsLst[4].toDouble();
+ color[1] = paramsLst[5].toDouble();
+ color[2] = paramsLst[6].toDouble();
+ int font = paramsLst[7].toInt();
+ int bold = paramsLst[8].toInt();
+ int italic = paramsLst[9].toInt();
+ int shadow = paramsLst[10].toInt();
+
+ actor->SetTitleVisibility( isVisible );
+ actor->SetTitle( title.latin1() );
+ vtkTextProperty* txtProp = actor->GetTitleTextProperty();
+ if ( txtProp ) {
+ txtProp->SetColor( color );
+ txtProp->SetFontFamily( font );
+ txtProp->SetBold( bold );
+ txtProp->SetItalic( italic );
+ txtProp->SetShadow( shadow );
+ }
+
+ // retrieve and set lable parameters
+ isVisible = paramsLst[12].toUShort();
+ int labels = paramsLst[13].toInt();
+ int offset = paramsLst[14].toInt();
+ color[0] = paramsLst[15].toDouble();
+ color[1] = paramsLst[16].toDouble();
+ color[2] = paramsLst[17].toDouble();
+ font = paramsLst[18].toInt();
+ bold = paramsLst[19].toInt();
+ italic = paramsLst[20].toInt();
+ shadow = paramsLst[21].toInt();
+
+ actor->SetLabelVisibility( isVisible );
+ actor->SetNumberOfLabels( labels );
+ actor->SetTickOffset( offset );
+ txtProp = actor->GetLabelTextProperty();
+ if ( txtProp ) {
+ txtProp->SetColor( color );
+ txtProp->SetFontFamily( font );
+ txtProp->SetBold( bold );
+ txtProp->SetItalic( italic );
+ txtProp->SetShadow( shadow );
+ }
+
+ // retrieve and set tick marks properties
+ isVisible = paramsLst[23].toUShort();
+ int length = paramsLst[24].toInt();
+
+ actor->SetTickVisibility( isVisible );
+ actor->SetTickLength( length );
+ }
}
/*! The method returns the visual parameters of this view as a formated string
::getVisualParameters()
{
double pos[3], focalPnt[3], viewUp[3], parScale, scale[3];
-
+
+ // save position, focal point, viewUp, scale
vtkCamera* camera = getRenderer()->GetActiveCamera();
camera->GetPosition( pos );
camera->GetFocalPoint( focalPnt );
parScale = camera->GetParallelScale();
GetScale( scale );
+ // Parameters are given in the following format:view position (3 digits), focal point position (3 digits)
+ // view up values (3 digits), parallel scale (1 digit), scale (3 digits,
+ // Graduated axes parameters (X, Y, Z axes parameters)
QString retStr;
retStr.sprintf( "%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e*%.12e",
- pos[0], pos[1], pos[2], focalPnt[0], focalPnt[1], focalPnt[2], viewUp[0], viewUp[1],
- viewUp[2], parScale, scale[0], scale[1], scale[2] );
+ pos[0], pos[1], pos[2], focalPnt[0], focalPnt[1], focalPnt[2],
+ viewUp[0], viewUp[1], viewUp[2], parScale, scale[0], scale[1], scale[2] );
+
+ // save graduated axes parameters
+ if ( SVTK_CubeAxesActor2D* gradAxesActor = GetCubeAxes() ) {
+ retStr += QString( "*%1" ).arg( getMainWindow()->IsCubeAxesDisplayed() );
+ retStr += ::getGradAxisVisualParams( gradAxesActor->GetXAxisActor2D() );
+ retStr += ::getGradAxisVisualParams( gradAxesActor->GetYAxisActor2D() );
+ retStr += ::getGradAxisVisualParams( gradAxesActor->GetZAxisActor2D() );
+ }
+
return retStr;
}
-/* The method restores visual parameters of this view or postpones it untill the view is shown
- */
+/*!
+ The method restores visual parameters of this view or postpones it untill the view is shown
+*/
void
SVTK_ViewWindow
::setVisualParameters( const QString& parameters )
}
}
-/* The method restores visual parameters of this view from a formated string
- */
+/*!
+ The method restores visual parameters of this view from a formated string
+*/
void
SVTK_ViewWindow
::doSetVisualParameters( const QString& parameters )
{
QStringList paramsLst = QStringList::split( '*', parameters, true );
- if ( paramsLst.size() == 13 ) {
+ if ( paramsLst.size() >= nNormalParams ) {
// 'reading' list of parameters
double pos[3], focalPnt[3], viewUp[3], parScale, scale[3];
pos[0] = paramsLst[0].toDouble();
camera->SetParallelScale( parScale );
SetScale( scale );
- // resize( size() );
-
- // getRenderer()->ResetCameraClippingRange();
- // Repaint();
- // getMainWindow()->GetRenderer()->GetTransform()->SetMatrixScale( scale[0], scale[1], scale[2] );
+ // apply graduated axes parameters
+ SVTK_CubeAxesActor2D* gradAxesActor = GetCubeAxes();
+ if ( gradAxesActor && paramsLst.size() == nAllParams ) {
+
+ int i = nNormalParams+1, j = i + nGradAxisParams - 1;
+ ::setGradAxisVisualParams( gradAxesActor->GetXAxisActor2D(), parameters.section( '*', i, j ) );
+ i = j + 1; j += nGradAxisParams;
+ ::setGradAxisVisualParams( gradAxesActor->GetYAxisActor2D(), parameters.section( '*', i, j ) );
+ i = j + 1; j += nGradAxisParams;
+ ::setGradAxisVisualParams( gradAxesActor->GetZAxisActor2D(), parameters.section( '*', i, j ) );
+
+ if ( paramsLst[13].toUShort() )
+ gradAxesActor->VisibilityOn();
+ else
+ gradAxesActor->VisibilityOff();
+ }
}
}
-//================================================================
-// Function : eventFilter
-/*! Purpose : delayed setVisualParameters
+/*!
+ Delayed setVisualParameters
*/
-//================================================================
bool SVTK_ViewWindow::eventFilter( QObject* theWatched, QEvent* theEvent )
{
if ( theEvent->type() == QEvent::Show && theWatched->inherits( "SVTK_RenderWindowInteractor" ) ) {
bool
isVisible(const Handle(SALOME_InteractiveObject)& theIObject);
- /* selection */
+ //! Redirect the request to #SVTK_View::FindIObject (to support old code)
//----------------------------------------------------------------------------
Handle(SALOME_InteractiveObject)
FindIObject(const char* theEntry);
doSetVisualParameters( const QString& );
QImage dumpView();
- virtual void action( const int );
+ virtual bool action( const int );
SVTK_View* myView;
SVTK_MainWindow* myMainWindow;
--- /dev/null
+# VISU VISUGUI : GUI of VISU component
+#
+# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+#
+#
+#
+# File :
+# Module :
+
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
+"PO-Revision-Date: 2005-05-10 15:20+0400\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
+
+msgid "ICON_SVTK_SCALING"
+msgstr "view_scaling.png"
+
+msgid "ICON_GRADUATED_AXES"
+msgstr "view_graduated_axes.png"
+
+msgid "ICON_UPDATE_RATE"
+msgstr "view_update_rate.png"
msgid "ERROR"
msgstr "Error"
-msgid "BUT_OK"
-msgstr "Ok"
-
msgid "SVTK_Viewer::MEN_DUMP_VIEW"
msgstr "Dump view..."
msgid "DSC_SHOW_TRIHEDRON"
msgstr "Show/Hide trihedron in the current view"
+
+msgid "SVTK_NonIsometricDlg::MEN_SCALING"
+msgstr "Scaling"
+
+msgid "SVTK_NonIsometricDlg::O&K"
+msgstr ""
+
+msgid "SVTK_NonIsometricDlg::&Apply"
+msgstr ""
+
+msgid "SVTK_NonIsometricDlg::&Cancel"
+msgstr ""
+
+msgid "SVTK_NonIsometricDlg::&Reset"
+msgstr ""
+
+msgid "SVTK_NonIsometricDlg::DLG_TITLE"
+msgstr "Scaling"
+
+msgid "SVTK_NonIsometricDlg::LBL_X"
+msgstr "X :"
+
+msgid "SVTK_NonIsometricDlg::LBL_Y"
+msgstr "Y :"
+
+msgid "SVTK_NonIsometricDlg::LBL_Z"
+msgstr "Z :"
+
+msgid "SVTK_MainWindow::MNU_SVTK_SCALING"
+msgstr "Scaling"
+
+msgid "SVTK_MainWindow::DSC_SVTK_SCALING"
+msgstr "Scaling"
+
+msgid "SVTK_FontWidget::ARIAL"
+msgstr "Arial"
+
+msgid "SVTK_FontWidget::COURIER"
+msgstr "Courier"
+
+msgid "SVTK_FontWidget::TIMES"
+msgstr "Times"
+
+msgid "SVTK_FontWidget::BOLD"
+msgstr "Bold"
+
+msgid "SVTK_FontWidget::ITALIC"
+msgstr "Italic"
+
+msgid "SVTK_FontWidget::SHADOW"
+msgstr "Shadow"
+
+msgid "SVTK_CubeAxesDlg::CAPTION"
+msgstr "Graduated axes"
+
+msgid "SVTK_CubeAxesDlg::X_AXIS"
+msgstr "X axis"
+
+msgid "SVTK_CubeAxesDlg::Y_AXIS"
+msgstr "Y axis"
+
+msgid "SVTK_CubeAxesDlg::Z_AXIS"
+msgstr "Z axis"
+
+msgid "SVTK_CubeAxesDlg::IS_VISIBLE"
+msgstr "Is visible"
+
+msgid "SVTK_AxisWidget::AXIS_NAME"
+msgstr "Axis name"
+
+msgid "SVTK_AxisWidget::IS_VISIBLE"
+msgstr "Is visible"
+
+msgid "SVTK_AxisWidget::NAME"
+msgstr "Name"
+
+msgid "SVTK_AxisWidget::FONT"
+msgstr "Font"
+
+msgid "SVTK_AxisWidget::LABELS"
+msgstr "Labels"
+
+msgid "SVTK_AxisWidget::NUMBER"
+msgstr "Number"
+
+msgid "SVTK_AxisWidget::OFFSET"
+msgstr "Offset"
+
+msgid "SVTK_AxisWidget::TICK_MARKS"
+msgstr "Tick marks"
+
+msgid "SVTK_AxisWidget::LENGTH"
+msgstr "Length"
+
+msgid "SVTK_MainWindow::MNU_SVTK_GRADUATED_AXES"
+msgstr "Graduated axes"
+
+msgid "SVTK_MainWindow::DSC_SVTK_GRADUATED_AXES"
+msgstr "Graduated axes"
+
+msgid "SVTK_MainWindow::MNU_SVTK_UPDATE_RATE"
+msgstr "Update rate"
+
+msgid "SVTK_MainWindow::DSC_SVTK_UPDATE_RATE"
+msgstr "Update rate"
+
+msgid "SVTK_UpdateRateDlg::DLG_TITLE"
+msgstr "Update Rate"
+
+msgid "SVTK_UpdateRateDlg::INPUT_FRAME_TITLE"
+msgstr "Enable"
+
+msgid "SVTK_UpdateRateDlg::DESIRED"
+msgstr "Desired Update Rate, FPS"
+
+msgid "SVTK_UpdateRateDlg::STILL"
+msgstr "Still Update Rate, FPS"
+
+msgid "SVTK_UpdateRateDlg::INFORMATION_FRAME_TITLE"
+msgstr "Rendering Metrics"
+
+msgid "SVTK_UpdateRateDlg::CURRENT_FPS"
+msgstr "Current Update Rate, FPS"
+
+msgid "SVTK_UpdateRateDlg::NUMBER_CELLS"
+msgstr "Number of Cells, -"
+
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : SalomeApp
RESOURCES_FILES = SalomeApp.ini \
SalomeApp.xml
-CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS)
LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS)
-LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lSalomePrs -L$(KERNEL_ROOT_DIR)/lib/salome -lOpUtil -lSALOMELocalTrace -lSalomeDSClient $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI
+LIBS+= -lsuit -lstd -lCAM -lObjBrowser -lSalomePrs $(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSalomeDSClient $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI
@CONCLUDE@
#include <qpushbutton.h>
#include <qlabel.h>
-#include "SALOMEDS_StudyManager.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDS_IParameters.hxx"
+#include "SALOMEDSClient_ClientFactory.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
#include "SALOME_ListIteratorOfListIO.hxx"
#include "SALOME_ListIO.hxx"
return new SalomeApp_Application();
}
-/*
- Class : SalomeApp_Application
- Description : Application containing SalomeApp module or LightApp module
-*/
-
/*!Constructor.*/
SalomeApp_Application::SalomeApp_Application()
: LightApp_Application()
SUIT_Desktop* desk = desktop();
//! Save GUI state
- createAction( SaveGUIStateId, tr( "TOT_DESK_FILE_SAVE_GUI_STATE" ), QIconSet(),
- tr( "MEN_DESK_FILE_SAVE_GUI_STATE" ), tr( "PRP_DESK_FILE_SAVE_GUI_STATE" ),
- 0, desk, false, this, SLOT( onSaveGUIState() ) );
-
+ // "Save GUI State" command is moved to VISU module
+ // createAction( SaveGUIStateId, tr( "TOT_DESK_FILE_SAVE_GUI_STATE" ), QIconSet(),
+ // tr( "MEN_DESK_FILE_SAVE_GUI_STATE" ), tr( "PRP_DESK_FILE_SAVE_GUI_STATE" ),
+ // 0, desk, false, this, SLOT( onSaveGUIState() ) );
+
//! Dump study
createAction( DumpStudyId, tr( "TOT_DESK_FILE_DUMP_STUDY" ), QIconSet(),
tr( "MEN_DESK_FILE_DUMP_STUDY" ), tr( "PRP_DESK_FILE_DUMP_STUDY" ),
int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 );
- createMenu( SaveGUIStateId, fileMenu, 10, -1 );
+ // "Save GUI State" command is renamed to "Save VISU State" and
+ // creation of menu item is moved to VISU
+ // createMenu( SaveGUIStateId, fileMenu, 10, -1 );
+
createMenu( DumpStudyId, fileMenu, 10, -1 );
createMenu( separator(), fileMenu, -1, 15, -1 );
createMenu( LoadScriptId, fileMenu, 10, -1 );
_PTR(Study) stdDS = study->studyDS();
if(!stdDS) return;
+ if ( stdDS->GetProperties()->IsLocked() ) {
+ SUIT_MessageBox::warn1 ( desktop(),
+ QObject::tr("WRN_WARNING"),
+ QObject::tr("WRN_STUDY_LOCKED"),
+ QObject::tr("BUT_OK") );
+ return;
+ }
+
SALOME_ListIteratorOfListIO it( list );
if(it.More())
{
_PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry());
if ( so ) {
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(so.get());
-
- if ( aSO ) {
canCopy = studyMgr()->CanCopy(so);
canPaste = studyMgr()->CanPaste(so);
- }
}
}
}
QApplication::restoreOverrideCursor();
}
-//=======================================================================
-// name : createNewStudy
-/*! Purpose : Create new study*/
-//=======================================================================
+/*!
+ Creates new study
+*/
SUIT_Study* SalomeApp_Application::createNewStudy()
{
SalomeApp_Study* aStudy = new SalomeApp_Study( this );
return aStudy;
}
-//=======================================================================
-// name : updateCommandsStatus
-/*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/
-//=======================================================================
+/*!
+ Enable/Disable menu items and toolbar buttons. Rebuild menu
+*/
void SalomeApp_Application::updateCommandsStatus()
{
LightApp_Application::updateCommandsStatus();
onSelectionChanged();
}
-/*
- Class : DumpStudyFileDlg
- Description : Private class used in Dump Study operation. Consists 2 check boxes:
- "Publish in study" and "Save GUI parameters"
+/*!
+ \class DumpStudyFileDlg
+ Private class used in Dump Study operation. Consists 2 check boxes:
+ "Publish in study" and "Save GUI parameters"
*/
class DumpStudyFileDlg : public SUIT_FileDlg
{
if ( !aFileName.isEmpty() ) {
QFileInfo aFileInfo(aFileName);
int savePoint;
+ _PTR(AttributeParameter) ap;
+ _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
+ if(ip->isDumpPython(appStudy->studyDS())) ip->setDumpPython(appStudy->studyDS()); //Unset DumpPython flag.
if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method
- SALOMEDS_IParameters::setDumpPython(appStudy->studyDS());
- savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point
- //prefix = SALOMEDS_IParameters::getStudyScript(appStudy->studyDS(), appStudy->getVisualComponentName(), savePoint);
-
+ ip->setDumpPython(appStudy->studyDS());
+ savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point
}
bool res = aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish);
if ( toSaveGUI )
updateSavePointDataObjects( study );
objectBrowser()->updateTree( study->root() );
}
+ updateActions();
}
/*!Gets file filter.
//SalomeApp_DataModel::BuildTree( aComponent, study->root(), study, /*skipExisitng=*/true );
}
}
- // create data objects that correspond to GUI state save points
- updateSavePointDataObjects( study );
}
+ // create data objects that correspond to GUI state save points
+ if ( study ) updateSavePointDataObjects( study );
+
// update existing data models (already loaded SComponents)
LightApp_Application::updateObjectBrowser( updateModels );
-
- // -- debug --
- // if ( study && study->root() )
- // study->root()->dump();
}
/*!Display Catalog Genenerator dialog */
}
}
+/*!
+ Creates new view manager
+ \param type - type of view manager
+*/
SUIT_ViewManager* SalomeApp_Application::newViewManager(const QString& type)
{
return createViewManager(type);
if ( !newName.isNull() && !newName.isEmpty() ) {
study->setNameOfSavePoint( savePoint, newName );
updateSavePointDataObjects( study );
+ objectBrowser()->updateTree( study->root() );
}
}
// case 4: everything already exists.. here may be a problem: we want "GUI states" root object
// to be always the last one in the tree. Here we check - if it is not the last one - remove and
// re-create it.
- bool isOpen( false );
if ( guiRootObj->nextBrother() ) {
- isOpen = isListViewItemOpen( ob->listView(), guiRootObj );
- delete guiRootObj;
- guiRootObj = new SalomeApp_SavePointRootObject( study->root() );
+ study->root()->removeChild(guiRootObj);
+ study->root()->appendChild(guiRootObj);
+ //study->root()->dump();
}
// store data objects in a map id-to-DataObject
for ( int i = 0; i < savePoints.size(); i++ )
if ( !mapDO.contains( savePoints[i] ) )
new SalomeApp_SavePointObject( guiRootObj, savePoints[i], study );
- else {
- ob->updateTree( mapDO[ savePoints[i] ] );
+ else
mapDO.remove( savePoints[i] );
- }
+
// delete DataObjects that are still in the map -- their IDs were not found in data model
for ( QMap<int,SalomeApp_SavePointObject*>::Iterator it = mapDO.begin(); it != mapDO.end(); ++it )
delete it.data();
-
- if ( isOpen ) // set open if we recreated guiRootObj and it was previously open..
- guiRootObj->setOpen( true );
}
#endif
/*!
- Description : Application containing SalomeApp module or LightApp module
+ \class SalomeApp_Application
+ \brief Application containing SalomeApp module or LightApp module
*/
class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application
virtual bool onLoadDoc( const QString& );
virtual void onCopy();
virtual void onPaste();
+ void onSaveGUIState();// called from VISU
protected slots:
void onStudySaved( SUIT_Study* );
void onProperties();
void onDumpStudy();
void onLoadScript();
- void onSaveGUIState();
+
void onDeleteGUIState();
+ void onRestoreGUIState();
+ void onRenameGUIState();
void onCatalogGen();
void onRegDisplay();
void onOpenWith();
- void onRestoreGUIState();
- void onRenameGUIState();
};
#ifdef WIN32
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SALOME_Exception)
-//=======================================================================
-// name : SalomeApp_DataModelSync
-/*!Purpose : Auxiliary class for synchronizing tree of kernel objects and SUIT_DataObjects */
-//=======================================================================
-
typedef _PTR(SObject) kerPtr;
typedef SUIT_DataObject* suitPtr;
+/*!
+ \class SalomeApp_DataModelSync
+ Auxiliary class for synchronizing tree of kernel objects and SUIT_DataObjects
+*/
class SalomeApp_DataModelSync
{
public:
SUIT_DataObject* myRoot;
};
-
+/*!
+ Constructor
+*/
SalomeApp_DataModelSync::SalomeApp_DataModelSync( _PTR( Study ) aStudy, SUIT_DataObject* aRoot )
: myStudy( aStudy ),
myRoot( aRoot )
{
}
+/*!
+ \return true if kernel object is correct (has non empty name or is reference)
+*/
bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const
{
kerPtr refObj;
return res;
}
+/*!
+ Creates SUIT object by KERNEL object
+ \param so - corresponding KERNEL object
+ \param parent - parent for SUIT object
+ \param after - previous sibling for SUIT object
+ \param prepend - SUIT object must be added to start of children list
+*/
suitPtr SalomeApp_DataModelSync::createItem( const kerPtr& so,
const suitPtr& parent,
const suitPtr& after,
return nitem;
}
+/*!
+ Deletes object with all children
+ \param p - SUIT object
+*/
void SalomeApp_DataModelSync::deleteItemWithChildren( const suitPtr& p ) const
{
if( !p )
delete p;
}
+/*!
+ \return true if objects correspond each other at all
+ \param p - kernel object
+ \param q - suit object
+*/
bool SalomeApp_DataModelSync::isEqual( const kerPtr& p, const suitPtr& q ) const
{
- LightApp_DataObject* obj = dynamic_cast<LightApp_DataObject*>( q );
- return ( !p && !q ) || ( obj && isCorrect( p ) && p->GetID().c_str()==obj->entry() );
+ LightApp_ModuleObject* lobj = dynamic_cast<LightApp_ModuleObject*>( q );
+ SalomeApp_DataObject* sobj = dynamic_cast<SalomeApp_DataObject*>( q );
+ _PTR( SComponent ) aComp( p );
+ bool res = ( !p && !q ) ||
+ ( lobj && !sobj && aComp ) ||
+ ( sobj && isCorrect( p ) && p->GetID().c_str()==sobj->entry() );
+ return res;
}
+/*!
+ \return null kernel object
+*/
kerPtr SalomeApp_DataModelSync::nullSrc() const
{
return kerPtr();
}
+/*!
+ \return null suit object
+*/
suitPtr SalomeApp_DataModelSync::nullTrg() const
{
return suitPtr( 0 );
}
+/*!
+ Fills list with children of kernel object
+ \param obj - kernel object
+ \param ch - list to be filled
+*/
void SalomeApp_DataModelSync::children( const kerPtr& obj, QValueList<kerPtr>& ch ) const
{
ch.clear();
ch.append( it->Value() );
}
+/*!
+ Fills list with children of SUIT object
+ \param p - SUIT object
+ \param ch - list to be filled
+*/
void SalomeApp_DataModelSync::children( const suitPtr& p, QValueList<suitPtr>& ch ) const
{
DataObjectList l;
}
}
+/*!
+ \return parent of SUIT object
+ \param p - SUIT object
+*/
suitPtr SalomeApp_DataModelSync::parent( const suitPtr& p ) const
{
return p ? p->parent(): 0;
}
+/*!
+ Updates SUIT object
+ \param p - SUIT object
+*/
void SalomeApp_DataModelSync::updateItem( const suitPtr& ) const
{
}
+/*!
+ Auxiliary function, shows SUIT tree
+*/
void showTree( SUIT_DataObject* root )
{
qDebug( root ? "<tree>" : "<empty tree>" );
}
}
-//=======================================================================
-// name : SalomeApp_DataModel::SalomeApp_DataModel
-/*!Purpose : Constructor*/
-//=======================================================================
+/*!
+ Constructor
+*/
SalomeApp_DataModel::SalomeApp_DataModel( CAM_Module* theModule )
: LightApp_DataModel( theModule )
{
}
-//=======================================================================
-// name : SalomeApp_DataModel::~SalomeApp_DataModel
-/*! Purpose : Destructor*/
-//=======================================================================
+/*!
+ Destructor
+*/
SalomeApp_DataModel::~SalomeApp_DataModel()
{
}
-//================================================================
-// Function : open
-/*! Purpose : Open data model*/
-//================================================================
+/*!
+ Opens data model
+*/
bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringList )
{
SalomeApp_Study* aDoc = dynamic_cast<SalomeApp_Study*>( study );
return true;
}
-//================================================================
-// Function : create
-/*! Purpose : Create data model*/
-//================================================================
+/*!
+ Creates data model
+*/
bool SalomeApp_DataModel::create( CAM_Study* theStudy )
{
update(NULL, (LightApp_Study*)theStudy);
return true;
}
-//================================================================
-// Function : update
-/*! Purpose : Update application.*/
-//================================================================
+/*!
+ Updates application.
+*/
void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study )
{
SalomeApp_Study* aSStudy = dynamic_cast<SalomeApp_Study*>(study);
updateTree( sobj, aSStudy );
}
-//================================================================
-// Function : synchronize
-/*! Purpose : synchronizes kernel tree and suit data tree starting from component 'sobj' */
-//================================================================
+/*!
+ Synchronizes kernel tree and suit data tree starting from component 'sobj'
+*/
SUIT_DataObject* SalomeApp_DataModel::synchronize( const _PTR( SComponent )& sobj, SalomeApp_Study* study )
{
if( !study || !study->root() || !sobj )
DataObjectList ch; study->root()->children( ch );
DataObjectList::const_iterator anIt = ch.begin(), aLast = ch.end();
- SalomeApp_DataObject* suitObj = 0;
+ SUIT_DataObject* suitObj = 0;
for( ; anIt!=aLast; anIt++ )
{
- SalomeApp_DataObject* dobj = dynamic_cast<SalomeApp_DataObject*>( *anIt );
- if( dobj && dobj->name()==sobj->GetName().c_str() )
+ LightApp_DataObject* dobj = dynamic_cast<LightApp_DataObject*>( *anIt );
+ if( dobj && dobj->name() == sobj->GetName().c_str() )
{
suitObj = dobj;
break;
SalomeApp_DataModelSync sync( study->studyDS(), study->root() );
- return ::synchronize<kerPtr,suitPtr,SalomeApp_DataModelSync>( sobj, suitObj, sync );
+ if( !suitObj || dynamic_cast<SalomeApp_DataObject*>( suitObj ) )
+ return ::synchronize<kerPtr,suitPtr,SalomeApp_DataModelSync>( sobj, suitObj, sync );
+ else
+ return 0;
}
-//================================================================
-// Function : updateTree
-/*! Purpose : updates tree.*/
-//================================================================
+/*!
+ Updates tree.
+*/
void SalomeApp_DataModel::updateTree( const _PTR( SComponent )& comp, SalomeApp_Study* study )
{
SalomeApp_ModuleObject* aNewRoot = dynamic_cast<SalomeApp_ModuleObject*>( synchronize( comp, study ) );
}
}
-//================================================================
-// Function : getModule
-/*! Purpose : gets module*/
-//================================================================
-
+/*!
+ \return module
+*/
SalomeApp_Module* SalomeApp_DataModel::getModule() const
{
return dynamic_cast<SalomeApp_Module*>( module() );
}
-//================================================================
-// Function : getStudy
-/*! Purpose : gets study */
-//================================================================
+/*!
+ \return study
+*/
SalomeApp_Study* SalomeApp_DataModel::getStudy() const
{
if(!root()) return 0;
return aStudy;
}
-//================================================================
-// Function : getRootEntry
-/*! Purpose : returns study entry corresponding to this data model*/
-//================================================================
+/*!
+ \return study entry corresponding to this data model
+*/
QString SalomeApp_DataModel::getRootEntry( SalomeApp_Study* study ) const
{
QString anEntry;
#include <SALOMEDSClient_AttributeTableOfReal.hxx>
#include <SALOMEDSClient_AttributeTableOfInteger.hxx>
-/*
- Class: SalomeApp_DataObject
- Level: Public
-*/
/*!Constructor. Initialize by \a parent*/
SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent )
: LightApp_DataObject( parent ),
return val;
}
-/*
- Class: SalomeApp_ModuleObject
- Level: Public
-*/
+
+
+
/*!Constructor.Initialize by \a parent.*/
SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent )
return SalomeApp_DataObject::name();
}
-/*
- Class: SalomeApp_SavePointObject
- Level: Public
-*/
+
+
/*!Constructor.Initialize by \a parent.*/
SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* _parent, const int id, SalomeApp_Study* study )
return myStudy->getNameOfSavePoint( myId );
}
+/*!Gets icon picture of object.*/
QPixmap SalomeApp_SavePointObject::icon() const
{
return QPixmap();
}
+/*!Gets tooltip.*/
QString SalomeApp_SavePointObject::toolTip() const
{
return QObject::tr( "SAVE_POINT_OBJECT_TOOLTIP" ).arg( name() );
#include <qstring.h>
+/*!
+ Default constructor
+*/
SalomeApp_Displayer::SalomeApp_Displayer()
{
}
+/*!
+ Destructor
+*/
SalomeApp_Displayer::~SalomeApp_Displayer()
{
}
+/*!
+ Displays object in view
+ \param entry - object entry
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void SalomeApp_Displayer::Display( const QString& entry, const bool updateViewer, SALOME_View* theViewFrame )
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
}
}
+/*!
+ Redisplays object in view
+ \param entry - object entry
+ \param updateViewer - is it necessary to update viewer
+*/
void SalomeApp_Displayer::Redisplay( const QString& entry, const bool updateViewer )
{
// Remove the object permanently (<forced> == true)
}
}
+/*!
+ Erases object in view
+ \param entry - object entry
+ \param forced - deletes object from viewer (otherwise it will be erased, but cached)
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void SalomeApp_Displayer::Erase( const QString& entry, const bool forced,
const bool updateViewer, SALOME_View* theViewFrame )
{
}
}
+/*!
+ Erases all objects in view
+ \param forced - deletes objects from viewer
+ \param updateViewer - is it necessary to update viewer
+ \param theViewFrame - view
+*/
void SalomeApp_Displayer::EraseAll( const bool forced, const bool updateViewer, SALOME_View* theViewFrame ) const
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
}
}
+/*!
+ \return true if object is displayed in viewer
+ \param entry - object entry
+ \param theViewFrame - view
+*/
bool SalomeApp_Displayer::IsDisplayed( const QString& entry, SALOME_View* theViewFrame ) const
{
SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView();
return false;
}
+/*!
+ Updates active view
+*/
void SalomeApp_Displayer::UpdateViewer() const
{
SALOME_View* vf = GetActiveView();
vf->Repaint();
}
+/*!
+ \return presentation of object, built with help of CreatePrs method
+ \param entry - object entry
+ \param theViewFrame - view
+ \sa CreatePrs()
+*/
SALOME_Prs* SalomeApp_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame )
{
SALOME_Prs* prs = 0;
return prs;
}
+/*!
+ \return active view
+*/
SALOME_View* SalomeApp_Displayer::GetActiveView()
{
SUIT_Session* session = SUIT_Session::session();
qApp->removeEventFilter( this );
}
+/*!
+ Custom event filter
+*/
bool SalomeApp_EventFilter::eventFilter( QObject* o, QEvent* e )
{
if ( e->type() == SALOME_EVENT )
/*!Create new SUIT_ExceptionHandler*/
extern "C" SALOMEAPP_EXPORT SUIT_ExceptionHandler* getExceptionHandler()
{
- return new SalomeApp_ExceptionHandler( true );
+ // MSV 2006-04-26: work around PAL12004 "VTK window => SIGFPE Arithmetic Exception Detected"
+ // We disable FPE signal as it was in earlier versions of SALOME. It is enabled
+ // only in debug mode if the environment variable DISABLE_FPE is not set to 1.
+ bool raiseFPE;
+#ifdef _DEBUG_
+ raiseFPE = true;
+ char* envDisableFPE = getenv("DISABLE_FPE");
+ if (envDisableFPE && atoi(envDisableFPE))
+ raiseFPE = false;
+#else
+ raiseFPE = false;
+#endif
+ return new SalomeApp_ExceptionHandler( raiseFPE );
}
using namespace std;
-//////////////////////////////////////////////////////////////////////
-// SalomeApp_ListView class implementation
-//////////////////////////////////////////////////////////////////////
-
-//================================================================
-// Function : computeEditGeometry
-/*! Purpose : static function - used for resizing editing widget*/
-//================================================================
+/*!
+ Used for resizing editing widget
+*/
void computeEditGeometry(SalomeApp_ListViewItem* theItem,
SalomeApp_EntityEdit* theWidget)
{
theWidget->setGeometry(aX, aY, aW, aH);
}
-//================================================================
-// Function : SalomeApp_ListView::SalomeApp_ListView
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListView::SalomeApp_ListView( QWidget* parent )
: QtxListView( parent )
{
this, SLOT(onHeaderSizeChange(int, int, int)));
}
-//================================================================
-// Function : SalomeApp_ListView::~SalomeApp_ListView
-/*! Purpose : destructor*/
-//================================================================
+/*!
+ Destructor
+*/
SalomeApp_ListView::~SalomeApp_ListView()
{
if (myEdit) {
myEditedItem = 0;
}
-//================================================================
-// Function : SalomeApp_ListView::updateViewer
-/*! Purpose : updates all data viewer*/
-//================================================================
+/*!
+ Updates all data viewer
+*/
void SalomeApp_ListView::updateViewer()
{
// temporary disconnecting selection changed SIGNAL
emit selectionChanged();
}
-//================================================================
-// Function : SalomeApp_ListView::updateSelected
-/*! Purpose : updates currently selected item(s)*/
-//================================================================
+/*!
+ Updates currently selected item(s)
+*/
void SalomeApp_ListView::updateSelected()
{
// temporary disconnecting selection changed SIGNAL
emit selectionChanged();
}
-//================================================================
-// Function : SalomeApp_ListView::popupClientType
-/*! Purpose : returns popup client type*/
-//================================================================
+/*!
+ Returns popup client type
+*/
QString SalomeApp_ListView::popupClientType() const
{
return "SalomeApp_ListView";
}
-//================================================================
-// Function : SalomeApp_ListView::contextMenuPopup
-/*! Purpose : fills popup menu with items*/
-//================================================================
+/*!
+ Fills popup menu with items
+*/
void SalomeApp_ListView::contextMenuPopup( QPopupMenu* aPopup )
{
if (aPopup) {
}
}
-//================================================================
-// Function : SalomeApp_ListView::clear
-/*! Purpose : clears view*/
-//================================================================
+/*!
+ Clears view
+*/
void SalomeApp_ListView::clear()
{
if (myEdit) {
QListView::clear();
}
-//================================================================
-// Function : SalomeApp_ListView::isMouseEnabled
-/*! Purpose : returms true if mouse events are enabled*/
-//================================================================
+/*!
+ \return true if mouse events are enabled
+*/
bool SalomeApp_ListView::isMouseEnabled()
{
return myMouseEnabled;
}
-//================================================================
-// Function : SalomeApp_ListView::enableMouse
-// Purpose : enabled/disables mouse events (excluding MouseMove)
-//================================================================
+/*!
+ Enables/disables mouse events (excluding MouseMove)
+*/
void SalomeApp_ListView::enableMouse(bool enable)
{
myMouseEnabled = enable;
}
-//================================================================
-// Function : SalomeApp_ListView::eventFilter
-/*! Purpose : event filter*/
-//================================================================
+/*!
+ Event filter
+*/
bool SalomeApp_ListView::eventFilter(QObject* object, QEvent* event)
{
if (object == viewport() &&
return QListView::eventFilter(object, event);
}
-//================================================================
-// Function : SalomeApp_ListView::enableEditing
-/*! Purpose : setting editing of items availbale/not available*/
-//================================================================
+/*!
+ Setting editing of items availbale/not available
+*/
void SalomeApp_ListView::enableEditing(bool theFlag)
{
myEditingEnabled = theFlag;
}
}
-//================================================================
-// Function : SalomeApp_ListView::isEnableEditing
-/*! Purpose : says if editing is enabled*/
-//================================================================
+/*!
+ Says if editing is enabled
+*/
bool SalomeApp_ListView::isEnableEditing()
{
return myEditingEnabled;
}
-//================================================================
-// Function : SalomeApp_ListView::accept
-/*! Purpose : calls finishEditing(true)...*/
-//================================================================
+/*!
+ Calls finishEditing(true)...
+*/
void SalomeApp_ListView::accept()
{
finishEditing(true);
}
-//================================================================
-// Function : QAD_ListView::onSelectionChanged
-/*! Purpose : slot, called when selection changed in List Viewer*/
-//================================================================
+/*!
+ Slot, called when selection changed in List Viewer
+*/
void SalomeApp_ListView::onSelectionChanged()
{
if (myEdit) {
}
}
-//================================================================
-// Function : SalomeApp_ListView::resizeEvent
-/*! Purpose : called when Data Viewer is resized*/
-//================================================================
+/*!
+ Called when Data Viewer is resized
+*/
void SalomeApp_ListView::resizeEvent( QResizeEvent * e)
{
QListView::resizeEvent(e);
updateContents();
}
-//================================================================
-// Function : SalomeApp_ListView::onHeaderSizeChange
-/*! Purpose : slot, called when columns sizes are changed*/
-//================================================================
+/*!
+ Slot, called when columns sizes are changed
+*/
void SalomeApp_ListView::onHeaderSizeChange(int, int, int)
{
int aW = columnWidth(columns()-1);
setColumnWidth(columns()-1, width() - frameWidth() * 2 - aX - 1);
}
-//================================================================
-// Function : SalomeApp_ListView::viewportPaintEvent
-/*! Purpose : handler for paint event*/
-//================================================================
+/*!
+ Handler for paint event
+*/
void SalomeApp_ListView::viewportPaintEvent(QPaintEvent* e)
{
QListView::viewportPaintEvent(e);
}
}
-//================================================================
-// Function : SalomeApp_ListView::onEditOk
-/*! Purpose : called when user finishes in editing of item*/
-//================================================================
+/*!
+ Called when user finishes in editing of item
+*/
void SalomeApp_ListView::onEditOk()
{
finishEditing(true);
}
-//================================================================
-// Function : SalomeApp_ListView::onEditCancel
-/*! Purpose : called when user cancels item editing*/
-//================================================================
+/*!
+ Called when user cancels item editing
+*/
void SalomeApp_ListView::onEditCancel()
{
finishEditing(false);
}
-//================================================================
-// Function : SalomeApp_ListView::finishEditing
-/*! Purpose : finishes editing of entity*/
-//================================================================
+/*!
+ Finishes editing of entity
+*/
UpdateType SalomeApp_ListView::finishEditing(bool ok)
{
UpdateType aNeedsUpdate = utCancel;
return aNeedsUpdate;
}
-//================================================================
-// Function : SalomeApp_ListView::tip
-/*! Purpose : gets current tooltip for list view
- * \retval valid rect in success
- */
-//================================================================
+/*!
+ \return current tooltip for list view
+ \retval valid rect in success
+*/
QRect SalomeApp_ListView::tip(QPoint aPos,
QString& aText,
QRect& dspRect,
return result;
}
-//////////////////////////////////////////////////////////////////////
-// SalomeApp_ListViewItem Class Implementation
-//////////////////////////////////////////////////////////////////////
-
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent) :
QListViewItem( parent )
{
init();
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent,
SalomeApp_ListViewItem* after) :
QListViewItem( parent, after )
init();
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent,
const QString& theName,
const bool theEditable) :
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent,
const QString& theName,
const QString& theValue,
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent,
const QString& theName,
const bool theEditable) :
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent,
SalomeApp_ListViewItem* after,
const QString& theName,
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent,
SalomeApp_ListViewItem* after,
const QString& theName,
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent,
const QString& theName,
const QString& theValue,
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListViewItem* parent,
SalomeApp_ListViewItem* after,
const QString& theName,
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::SalomeApp_ListViewItem
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ListViewItem::SalomeApp_ListViewItem(SalomeApp_ListView* parent,
SalomeApp_ListViewItem* after,
const QString& theName,
setEditable(theEditable);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::~SalomeApp_ListViewItem
-/*! Purpose : destructor*/
-//================================================================
+/*!
+ Destructor
+*/
SalomeApp_ListViewItem::~SalomeApp_ListViewItem()
{
}
-//================================================================
-// Function : SalomeApp_ListViewItem::init
-/*! Purpose : initialization*/
-//================================================================
+/*!
+ Initialization
+*/
void SalomeApp_ListViewItem::init()
{
myEditable = false;
myUserType = -1;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getName
-/*! Purpose : as default returns text in the first column*/
-//================================================================
+/*!
+ \return text in the first column
+*/
QString SalomeApp_ListViewItem::getName() const
{
return ( listView()->columns() > 0 ) ? text(0) : QString("");
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setName
-/*! Purpose : as default sets text in the first column*/
-//================================================================
+/*!
+ Sets text in the first column
+*/
UpdateType SalomeApp_ListViewItem::setName(const QString& theName)
{
UpdateType aNeedsUpdate = utCancel;
return aNeedsUpdate;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getValue
-/*! Purpose : as default returns text in the second column*/
-//================================================================
+/*!
+ \return text in the second column
+*/
QString SalomeApp_ListViewItem::getValue() const
{
return ( listView()->columns() > 1 ) ? text(1) : QString("");
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setValue
-/*! Purpose : as default sets text in the second column*/
-//================================================================
+/*!
+ Sets text in the second column
+*/
UpdateType SalomeApp_ListViewItem::setValue(const QString& theValue)
{
UpdateType aNeedsUpdate = utCancel;
return aNeedsUpdate;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::fullName
-/*! Purpose : returns full path to the entity from the root*/
-//================================================================
+/*!
+ \return full path to the entity from the root
+*/
QString SalomeApp_ListViewItem::fullName()
{
QString aFullName = getName();
return aFullName;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::openAllLevels
-/*! Purpose : expands all entities beginning from this level*/
-//================================================================
+/*!
+ expands all entities beginning from this level
+*/
void SalomeApp_ListViewItem::openAllLevels()
{
setOpen(true);
}
}
-//================================================================
-// Function : SalomeApp_ListViewItem::updateAllLevels
-/*! Purpose : update all entites beginning from this level*/
-//================================================================
+/*!
+ update all entites beginning from this level
+*/
void SalomeApp_ListViewItem::updateAllLevels()
{
SalomeApp_ListViewItem* aChild = (SalomeApp_ListViewItem*)firstChild();
}
}
-//================================================================
-// Function : SalomeApp_EditBox::isEditable
-/*! Purpose : return true if entity is editable*/
-//================================================================
+/*!
+ \return true if entity is editable
+*/
bool SalomeApp_ListViewItem::isEditable() const
{
return myEditable;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setEditable
-/*! Purpose : sets editable flag fo the entity*/
-//================================================================
+/*!
+ Sets editable flag fo the entity
+*/
void SalomeApp_ListViewItem::setEditable(bool theEditable)
{
myEditable = theEditable;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::isAccepted
-/*! Purpose : returns true if entitiy is accepted after editing*/
-//================================================================
+/*!
+ \return true if entitiy is accepted after editing
+*/
bool SalomeApp_ListViewItem::isAccepted() const
{
return myAccepted;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setAccepted
-/*! Purpose : set entitiy accepted or not after editing*/
-//================================================================
+/*!
+ Sets entitiy accepted or not after editing
+*/
void SalomeApp_ListViewItem::setAccepted(bool theAccepted)
{
myAccepted = theAccepted;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getEditingType
-/*! Purpose :
- * \retval type of edit control (default is edit box)
- * \li 0 - edit box
- * \li 1 - combo box
- * \li 2 - editable combo box
- */
-//================================================================
+/*!
+ \retval type of edit control (default is edit box)
+ \li 0 - edit box
+ \li 1 - combo box
+ \li 2 - editable combo box
+*/
int SalomeApp_ListViewItem::getEditingType()
{
return myEditingType;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setEditingType
-/*! Purpose :
- * \retval type of edit control (negative value means none)
- * \li 0 - edit box
- * \li 1 - combo box
- * \li 2 - editable combo box
- */
-//================================================================
+/*!
+ \retval type of edit control (negative value means none)
+ \li 0 - edit box
+ \li 1 - combo box
+ \li 2 - editable combo box
+*/
void SalomeApp_ListViewItem::setEditingType(const int type)
{
myEditingType = type;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getEditedColumn
-// Purpose :
/*! \retval edited column, default is last column
- * negative value means there are no editable columns
- */
-//================================================================
+ negative value means there are no editable columns
+*/
int SalomeApp_ListViewItem::getEditedColumn()
{
return listView()->columns()-1;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getValueType
-// Purpose :
-/*!\retval type of edited value (string, int, double)
- * default is string
- */
-//================================================================
+/*!
+ \retval type of edited value (string, int, double)
+ default is string
+*/
int SalomeApp_ListViewItem::getValueType()
{
return myValueType;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setValueType
-/*! Purpose : sets type of edited value*/
-//================================================================
+/*!
+ Sets type of edited value
+*/
void SalomeApp_ListViewItem::setValueType(const int valueType)
{
myValueType = valueType;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getUserType
-/*! Purpose : sets type of edited value*/
-//================================================================
+/*!
+ Sets type of edited value
+*/
int SalomeApp_ListViewItem::getUserType()
{
return myUserType;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::setUserType
-/*! Purpose : sets type of edited value*/
-//================================================================
+/*!
+ Sets type of edited value
+*/
void SalomeApp_ListViewItem::setUserType(const int userType)
{
myUserType = userType;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getButtons
-/*! Purpose : returns buttons for editing widget (Apply (V), Cancel (X))
- * default is both buttons
- */
-//================================================================
+/*!
+ \return buttons for editing widget (Apply (V), Cancel (X))
+ default is both buttons
+*/
int SalomeApp_ListViewItem::getButtons()
{
return myButtons;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::getButtons
-/*! Purpose : sets buttons for editing widget (Apply (V), Cancel (X))*/
-//================================================================
+/*!
+ Sets buttons for editing widget (Apply (V), Cancel (X))
+*/
void SalomeApp_ListViewItem::setButtons(const int buttons)
{
myButtons = buttons;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::startEditing
-/*! Purpose : creates control for editing and fills it with values*/
-//================================================================
+/*!
+ Creates control for editing and fills it with values
+*/
SalomeApp_EntityEdit* SalomeApp_ListViewItem::startEditing()
{
SalomeApp_EntityEdit* aWidget = 0;
return aWidget;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::fillWidgetWithValues
-/*! Purpose : fills widget with initial values (list or single value)*/
-//================================================================
+/*!
+ Fills widget with initial values (list or single value)
+*/
void SalomeApp_ListViewItem::fillWidgetWithValues(SalomeApp_EntityEdit* theWidget)
{
int anEditColumn = getEditedColumn();
theWidget->insertItem(text(anEditColumn), true);
}
-//================================================================
-// Function : SalomeApp_ListViewItem::finishEditing
-/*! Purpose : finishes editing of entity*/
-//================================================================
+/*!
+ Finishes editing of entity
+*/
UpdateType SalomeApp_ListViewItem::finishEditing(SalomeApp_EntityEdit* theWidget)
{
UpdateType aNeedsUpdate = utCancel;
return aNeedsUpdate;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::tipRect
-/*! Purpose : calculates rectangle which should contain item's tip*/
-//================================================================
+/*!
+ Calculates rectangle which should contain item's tip
+*/
QRect SalomeApp_ListViewItem::tipRect()
{
QRect aRect = QRect(-1, -1, -1, -1);
return aRect;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::tipText
-/*! Purpose : returns text for tooltip*/
-//================================================================
+/*!
+ \return text for tooltip
+*/
QString SalomeApp_ListViewItem::tipText()
{
QString aText = getName();
return aText;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::textRect
-/*! Purpose : calculates rect of item text in viewport coordinates*/
-//================================================================
+/*!
+ Calculates rect of item text in viewport coordinates
+*/
QRect SalomeApp_ListViewItem::textRect(const int column) const
{
QRect aItemRect = listView()->itemRect( this );
return theResult;
}
-//================================================================
-// Function : SalomeApp_ListViewItem::itemRect
-/*! Purpose : calculates rect of item data in viewport coordinates*/
-//================================================================
+/*!
+ Calculates rect of item data in viewport coordinates
+*/
QRect SalomeApp_ListViewItem::itemRect(const int column) const
{
QRect aItemRect = listView()->itemRect( this );
return theResult;
}
-//////////////////////////////////////////////////////////////////////
-// SalomeApp_EditBox class implementation
-//////////////////////////////////////////////////////////////////////
-
-//================================================================
-// Function : SalomeApp_EditBox::SalomeApp_EditBox
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_EditBox::SalomeApp_EditBox(QWidget* parent) :
QLineEdit(parent)
{
}
-//================================================================
-// Function : SalomeApp_EditBox::keyPressEvent
-/*! Purpose : event filter for key pressing*/
-//================================================================
+/*!
+ Event filter for key pressing
+*/
void SalomeApp_EditBox::keyPressEvent( QKeyEvent *e )
{
if ( e->key() == Key_Escape )
e->accept();
}
-//////////////////////////////////////////////////////////////////////
-// SalomeApp_ComboBox class implementation
-//////////////////////////////////////////////////////////////////////
-//================================================================
-// Function : SalomeApp_ComboBox::SalomeApp_ComboBox
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_ComboBox::SalomeApp_ComboBox(bool rw, QWidget* parent, const char* name) :
QComboBox(rw, parent, name)
{
}
-//================================================================
-// Function : SalomeApp_ComboBox::findItem
-/*! Purpose : searches item in list and returns its index*/
-//================================================================
+/*!
+ Searches item in list and returns its index
+*/
int SalomeApp_ComboBox::findItem(const QString& theText)
{
for (int i = 0; i < count(); i++)
return -1;
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertItem
-/*! Purpose : adds item in combo box*/
-//================================================================
+/*!
+ Adds item in combo box
+*/
void SalomeApp_ComboBox::insertItem(const QString& theValue,
int theIndex)
{
QComboBox::insertItem(theValue, theIndex);
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertList
-/*! Purpose : adds list of items in combo box*/
-//================================================================
+/*!
+ Adds list of items in combo box
+*/
void SalomeApp_ComboBox::insertList(const QStringList& theList)
{
for (unsigned i = 0; i < theList.count(); i++)
insertItem(theList[i]);
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertItem
-/*! Purpose : adds item in combo box*/
-//================================================================
+/*!
+ Adds item in combo box
+*/
void SalomeApp_ComboBox::insertItem(const int theValue)
{
int aNum;
insertItem(QString::number(theValue));
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertList
-/*! Purpose : adds list of items in combo box*/
-//================================================================
+/*!
+ Adds list of items in combo box
+*/
void SalomeApp_ComboBox::insertList(const TColStd_ListOfInteger& theList)
{
for (TColStd_ListIteratorOfListOfInteger aIter(theList); aIter.More(); aIter.Next())
insertItem(aIter.Value());
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertItem
-/*! Purpose : adds item in combo box*/
-//================================================================
+/*!
+ Adds item in combo box
+*/
void SalomeApp_ComboBox::insertItem(const double theValue)
{
double aNum;
insertItem(QString::number(theValue));
}
-//================================================================
-// Function : SalomeApp_ComboBox::insertList
-/*! Purpose : adds list of items in combo box*/
-//================================================================
+/*!
+ Adds list of items in combo box
+*/
void SalomeApp_ComboBox::insertList(const TColStd_ListOfReal& theList)
{
for (TColStd_ListIteratorOfListOfReal aIter(theList); aIter.More(); aIter.Next())
insertItem(aIter.Value());
}
-//////////////////////////////////////////////////////////////////////
-// SalomeApp_EntityEdit class implementation
-//////////////////////////////////////////////////////////////////////
-
#include <qlayout.h>
#define MIN_COMBO_WIDTH 1
#define MIN_EDIT_WIDTH 1
-//================================================================
-// Function : SalomeApp_EntityEdit::SalomeApp_EntityEdit
-/*! Purpose : constructor*/
-//================================================================
+/*!
+ Constructor
+*/
SalomeApp_EntityEdit::SalomeApp_EntityEdit(QWidget* parent,
int controlType,
int valueType,
}
}
-//================================================================
-// Function : SalomeApp_EntityEdit::~SalomeApp_EntityEdit
-/*! Purpose : destructor*/
-//================================================================
+/*!
+ Destructor
+*/
SalomeApp_EntityEdit::~SalomeApp_EntityEdit()
{
}
-//================================================================
-// Function : SalomeApp_EntityEdit::clear
-/*! Purpose : clears edit/combo box*/
-//================================================================
+/*!
+ Clears edit/combo box
+*/
void SalomeApp_EntityEdit::clear()
{
if (myEdit)
myCombo->clear();
}
-//================================================================
-// Function : SalomeApp_EntityEdit::getText
-/*! Purpose : returns current text in edit box or combo box*/
-//================================================================
+/*!
+ \return current text in edit box or combo box
+*/
QString SalomeApp_EntityEdit::getText()
{
if (myEdit)
return "";
}
-//================================================================
-// Function : SalomeApp_EntityEdit::setText
-/*! Purpose : sets text*/
-//================================================================
+/*!
+ Sets text
+*/
void SalomeApp_EntityEdit::setText(const QString& theText)
{
myString = theText;
}
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertItem
-/*! Purpose : adds item in combo box,
- * sets it current if theSetCurrent is true
- */
-//================================================================
+/*!
+ Adds item in combo box, sets it current if theSetCurrent is true
+*/
void SalomeApp_EntityEdit::insertItem(const QString& theValue,
bool theSetCurrent,
int theOrder)
setText(theValue);
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertList
-/*! Purpose : adds items in combo box,
- * sets item theCurrent as current
- */
-//================================================================
+/*!
+ Adds items in combo box, sets item theCurrent as current
+*/
void SalomeApp_EntityEdit::insertList(const QStringList& theList,
const int theCurrent)
{
setText(theList[theCurrent]);
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertItem
-/*! Purpose : adds item in combo box,
- * sets it current if theSetCurrent is true
- */
-//================================================================
+/*!
+ Adds item in combo box, sets it current if theSetCurrent is true
+*/
void SalomeApp_EntityEdit::insertItem(const int theValue,
bool theSetCurrent)
{
setText(QString::number(theValue));
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertList
-/*! Purpose : adds items in combo box,
- * sets item theCurrent as current
- */
-//================================================================
+/*!
+ Adds items in combo box, sets item theCurrent as current
+*/
void SalomeApp_EntityEdit::insertList(const TColStd_ListOfInteger& theList,
const int theCurrent)
{
}
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertItem
-// Purpose : adds item in combo box,
-// sets it current if theSetCurrent is true
-//================================================================
+/*!
+ Adds item in combo box, sets it current if theSetCurrent is true
+*/
void SalomeApp_EntityEdit::insertItem(const double theValue,
bool theSetCurrent)
{
setText(QString::number(theValue));
}
-//================================================================
-// Function : SalomeApp_EntityEdit::insertList
-/*! Purpose : adds items in combo box,
- * sets item theCurrent as current
- */
-//================================================================
+/*!
+ Adds items in combo box, sets item theCurrent as current
+*/
void SalomeApp_EntityEdit::insertList(const TColStd_ListOfReal& theList,
const int theCurrent)
{
}
}
-//================================================================
-// Function : SalomeApp_EntityEdit::getControl
-/*! Purpose : gets actual widget*/
-//================================================================
+/*!
+ \return actual widget
+*/
QWidget* SalomeApp_EntityEdit::getControl()
{
if (myEdit)
return 0;
}
-//================================================================
-// Function : SalomeApp_EntityEdit::setFocus
-/*! Purpose : redirect focus to corresponding widget*/
-//================================================================
+/*!
+ redirect focus to corresponding widget
+*/
void SalomeApp_EntityEdit::setFocus()
{
if (myEdit) {
}
}
-//================================================================
-// Function : SalomeApp_EntityEdit::setValidator
-/*! Purpose : sets validator for the control*/
-//================================================================
+/*!
+ Sets validator for the control
+*/
void SalomeApp_EntityEdit::setValidator(const QValidator* theValidator)
{
if (myEdit)
myCombo->setValidator(theValidator);
}
-//================================================================
-// Function : SalomeApp_EntityEdit::keyPressEvent
-/*! Purpose : event filter for KeyPress event*/
-//================================================================
+/*!
+ Event filter for KeyPress event
+*/
void SalomeApp_EntityEdit::keyPressEvent( QKeyEvent * e)
{
if ( (e->key() == Key_Enter ||
onCancel();
}
-//================================================================
-// Function : SalomeApp_EntityEdit::onComboActivated
-/*! Purpose : called when item activated in combo box*/
-//================================================================
+/*!
+ Called when item activated in combo box
+*/
void SalomeApp_EntityEdit::onComboActivated(const QString& theText)
{
onTextChanged(theText);
}
-//================================================================
-// Function : SalomeApp_EntityEdit::onTextChanged
-/*! Purpose : slot, called when text changed in line edit*/
-//================================================================
+/*!
+ Slot, called when text changed in line edit
+*/
void SalomeApp_EntityEdit::onTextChanged(const QString& theText)
{
if (myApplyBtn)
myCancelBtn->setEnabled(!(theText == myString));
}
-//================================================================
-// Function : SalomeApp_EntityEdit::onCancel
-/*! Purpose : slot, called when user presses Cancel button*/
-//================================================================
+/*!
+ Slot, called when user presses Cancel button
+*/
void SalomeApp_EntityEdit::onCancel()
{
setText(myString);
emit escapePressed();
}
-//================================================================
-// Function : SalomeApp_EntityEdit::onApply
-/*! Purpose : slot, called when user presses Apply button*/
-//================================================================
+/*!
+ Slot, called when user presses Apply button
+*/
void SalomeApp_EntityEdit::onApply()
{
myString = getText();
emit returnPressed();
}
-//================================================================
-// Function : SalomeApp_EntityEdit::showButtons
-/*! Purpose : shows/hides buttons*/
-//================================================================
+/*!
+ Shows/hides buttons
+*/
void SalomeApp_EntityEdit::showButtons(bool show)
{
if (myApplyBtn)
show ? myCancelBtn->show() : myCancelBtn->hide();
}
-//================================================================
-// Function : SalomeApp_EntityEdit::setDuplicatesEnabled
-/*! Purpose : enables/disables data duplication (for combo box)*/
-//================================================================
+/*!
+ Enables/disables data duplication (for combo box)
+*/
void SalomeApp_EntityEdit::setDuplicatesEnabled(bool enabled)
{
if (myCombo)
class SalomeApp_ListViewItem;
class SalomeApp_EntityEdit;
-//================================================================
-// Class : SalomeApp_ListView
-// Description : parent class for Data Viewer and Properties Viewer
-//================================================================
+/*!
+ \class SalomeApp_ListView
+ parent class for Data Viewer and Properties Viewer
+*/
class SalomeApp_ListView : public QtxListView , public SUIT_PopupClient {
Q_OBJECT
#include <SALOME_InteractiveObject.hxx>
//#include <SALOME_Actor.h>
-//#include "SALOMEDS_IParameters.hxx"
-
#include <SUIT_Session.h>
#include <SUIT_ViewModel.h>
return LightApp_Module::createSelection();
}
+/*!
+ Converts objects-containers to list of objects, those are contained
+ Other objects must be added without conversion
+ \param source - source list of objects
+ \param dest - list of converted objects
+*/
void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_ListIO& dest ) const
{
SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
return true;
}
+/*!
+ Do nothing
+ The initialization has been done in main
+ */
void SalomeApp_PyInterp::init_python()
{
- /*
- * Do nothing
- * The initialization has been done in main
- */
MESSAGE("PyInterp_base::init_python");
ASSERT(KERNEL_PYTHON::_gtstate); // initialisation in main
SCRUTE(KERNEL_PYTHON::_gtstate);
#include "SALOMEDS_Tool.hxx"
-#include "SALOMEDS_IParameters.hxx"
+#include "SALOMEDSClient_ClientFactory.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SALOME_Exception)
emit created( this );
}
-//=======================================================================
-// name : openDocument
-/*! Purpose : Open document*/
-//=======================================================================
+/*!
+ Opens document
+ \param theFileName - name of file
+*/
bool SalomeApp_Study::openDocument( const QString& theFileName )
{
MESSAGE( "openDocument" );
return res;
}
-//=======================================================================
-// name : loadDocument
-/*! Purpose : Connects GUI study to SALOMEDS one already loaded into StudyManager*/
-//=======================================================================
+/*!
+ Connects GUI study to SALOMEDS one already loaded into StudyManager
+ \param theStudyName - name of study
+*/
bool SalomeApp_Study::loadDocument( const QString& theStudyName )
{
MESSAGE( "loadDocument" );
return res;
}
-//=======================================================================
-// name : saveDocumentAs
-/*! Purpose : Save document*/
-//=======================================================================
+/*!
+ Saves document
+ \param theFileName - name of file
+*/
bool SalomeApp_Study::saveDocumentAs( const QString& theFileName )
{
bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
if( !resMgr )
return false;
- bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ),
- isAscii = resMgr->booleanValue( "Study", "ascii_file", false ),
- res = isAscii ?
- SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) :
- SalomeApp_Application::studyMgr()->SaveAs ( theFileName.latin1(), studyDS(), isMultiFile ) &&
- CAM_Study::saveDocumentAs( theFileName ) && //SRN: BugID IPAL9377, removed usage of uninitialized variable <res>
- saveStudyData(theFileName);
+ bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false );
+ bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false );
+ bool res = (isAscii ?
+ SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) :
+ SalomeApp_Application::studyMgr()->SaveAs ( theFileName.latin1(), studyDS(), isMultiFile ))
+ && CAM_Study::saveDocumentAs( theFileName );
+
+ res = res && saveStudyData(theFileName);
if ( res )
emit saved( this );
return res;
}
-//=======================================================================
-// name : saveDocument
-/*! Purpose : Save document*/
-//=======================================================================
+/*!
+ Saves previously opened document
+*/
bool SalomeApp_Study::saveDocument()
{
bool store = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
if( !resMgr )
return false;
- bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ),
- isAscii = resMgr->booleanValue( "Study", "ascii_file", false ),
- res = isAscii ?
- SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) :
- SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile ) && CAM_Study::saveDocument();
+ bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false );
+ bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false );
+ bool res = (isAscii ?
+ SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) :
+ SalomeApp_Application::studyMgr()->Save ( studyDS(), isMultiFile )) && CAM_Study::saveDocument();
res = res && saveStudyData(studyName());
if ( res )
return res;
}
-//================================================================
-// Function : closeDocument
-/*! Purpose : Close document*/
-//================================================================
+/*!
+ Closes document
+*/
void SalomeApp_Study::closeDocument(bool permanently)
{
LightApp_Study::closeDocument(permanently);
}
}
-//================================================================
-// Function : isModified
-// Purpose :
-//================================================================
+/*!
+ \return true, if study is modified in comparison with last open/save
+*/
bool SalomeApp_Study::isModified() const
{
bool isAnyChanged = studyDS() && studyDS()->IsModified();
return isAnyChanged;
}
-//================================================================
-// Function : isSaved
-/*! Purpose : Check: data model is saved?*/
-//================================================================
+/*!
+ \return if data model is saved
+*/
bool SalomeApp_Study::isSaved() const
{
bool isAllSaved = studyDS() && studyDS()->GetPersistentReference().size();
if (!isAllSaved)
- isAllSaved = LightApp_Study::isModified();
+ isAllSaved = LightApp_Study::isSaved();
return isAllSaved;
}
-//=======================================================================
-// name : saveModuleData
-/*! Purpose : save list file for module 'theModuleName' */
-//=======================================================================
+/*!
+ Saves data of module
+ \param theModuleName - name of module
+ \param theListOfFiles - list of files to be saved
+*/
void SalomeApp_Study::saveModuleData( QString theModuleName, QStringList theListOfFiles )
{
int aNb = theListOfFiles.count();
SetListOfFiles(theModuleName, aListOfFiles);
}
-//=======================================================================
-// name : openModuleData
-/*! Purpose : gets list of file for module 'theModuleNam' */
-//=======================================================================
+/*!
+ Loads data of module
+ \param theModuleName - name of module
+ \param theListOfFiles - list of files to be loaded
+*/
void SalomeApp_Study::openModuleData( QString theModuleName, QStringList& theListOfFiles )
{
std::vector<std::string> aListOfFiles = GetListOfFiles( theModuleName );
theListOfFiles.append(aListOfFiles[i+1].c_str());
}
-//=======================================================================
-// name : saveStudyData
-/*! Purpose : save data from study */
-//=======================================================================
+/*!
+ Saves data from study
+*/
bool SalomeApp_Study::saveStudyData( const QString& theFileName )
{
ModelList list; dataModels( list );
return true;
}
-//=======================================================================
-// name : openStudyData
-/*! Purpose : open data for study */
-//=======================================================================
+/*!
+ Loads data for study
+*/
bool SalomeApp_Study::openStudyData( const QString& theFileName )
{
return true;
}
/*!
- Create SComponent for module, using default engine (CORBAless)
+ Create SComponent for module, using default engine (CORBAless)
*/
void SalomeApp_Study::addComponent(const CAM_DataModel* dm)
{
return newName;
}
-//================================================================
-// Function : GetListOfFiles
-/*! Purpose : to be used by CORBAless modules*/
-//================================================================
+/*!
+ \return list of files used by module: to be used by CORBAless modules
+ \param theModuleName - name of module
+*/
std::vector<std::string> SalomeApp_Study::GetListOfFiles( const char* theModuleName ) const
{
SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
return aListOfFiles;
}
-//================================================================
-// Function : SetListOfFiles
-/*! Purpose : to be used by CORBAless modules*/
-//================================================================
+/*!
+ Sets list of files used by module: to be used by CORBAless modules
+ \param theModuleName - name of module
+ \param theListOfFiles - list of files
+*/
void SalomeApp_Study::SetListOfFiles ( const char* theModuleName,
const std::vector<std::string> theListOfFiles )
{
aDefaultEngine->SetListOfFiles(theListOfFiles, id(), theModuleName);
}
-//================================================================
-// Function : GetTmpDir
-/*! Purpose : to be used by CORBAless modules*/
-//================================================================
+/*!
+ \return temporary directory for saving files of modules
+*/
std::string SalomeApp_Study::GetTmpDir ( const char* theURL, const bool isMultiFile )
{
std::string anURLDir = SALOMEDS_Tool::GetDirFromPath(theURL);
return aTmpDir;
}
-//================================================================
-// Function : RemoveTemporaryFiles
-/*! Purpose : to be used by CORBAless modules*/
-//================================================================
+/*!
+ Removes temporary files
+*/
void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, const bool isMultiFile ) const
{
if (isMultiFile)
}
}
-// END: methods to be used by CORBAless modules
-
+/*!
+ Deletes all references to object
+ \param obj - object
+*/
void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj )
{
_PTR(StudyBuilder) sb = studyDS()->NewBuilder();
}
}
-//================================================================
-// Function : referencedToEntry
-/*! Purpose : Return referenced entry from entry*/
-//================================================================
+/*!
+ \return real entry by entry of reference
+ \param entry - entry of reference object
+*/
QString SalomeApp_Study::referencedToEntry( const QString& entry ) const
{
_PTR(SObject) obj = studyDS()->FindObjectID( entry.latin1() );
return LightApp_Study::referencedToEntry( entry );
}
-//================================================================
-// Function : componentDataType
-/*! Purpose : Return component data type from entry*/
-//================================================================
+/*!
+ \return component data type for entry
+*/
QString SalomeApp_Study::componentDataType( const QString& entry ) const
{
_PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) );
return obj->GetFatherComponent()->ComponentDataType().c_str();
}
-//================================================================
-// Function : componentDataType
-/*! Purpose : Return component data type from entry*/
-//================================================================
+/*!
+ \return true if entry corresponds to component
+*/
bool SalomeApp_Study::isComponent( const QString& entry ) const
{
_PTR(SObject) obj( studyDS()->FindObjectID( entry.latin1() ) );
return obj && QString( obj->GetID().c_str() ) == obj->GetFatherComponent()->GetID().c_str();
}
-//================================================================
-// Function : children
-/*! Purpose : Return entries of children of object*/
-//================================================================
+/*!
+ \return entries of object children
+*/
void SalomeApp_Study::children( const QString& entry, QStringList& child_entries ) const
{
_PTR(SObject) SO = studyDS()->FindObjectID( entry.latin1() );
}
}
+/*!
+ Fills list with components names
+ \param comp - list to be filled
+*/
void SalomeApp_Study::components( QStringList& comps ) const
{
for( _PTR(SComponentIterator) it ( studyDS()->NewComponentIterator() ); it->More(); it->Next() )
}
}
-//================================================================
-// Function : getSavePoints
-/*! Purpose : returns a list of saved points' IDs
+/*!
+ \return a list of saved points' IDs
*/
-//================================================================
std::vector<int> SalomeApp_Study::getSavePoints()
{
std::vector<int> v;
return v;
}
-//================================================================
-// Function :removeSavePoint
-/*! Purpose : remove a given save point
+/*!
+ Removes a given save point
*/
-//================================================================
void SalomeApp_Study::removeSavePoint(int savePoint)
{
if(savePoint <= 0) return;
builder->RemoveObjectWithChildren(so);
}
-//================================================================
-// Function : getNameOfSavePoint
-/*! Purpose : returns a name of save point
+/*!
+ \return a name of save point
*/
-//================================================================
QString SalomeApp_Study::getNameOfSavePoint(int savePoint)
{
_PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint);
- SALOMEDS_IParameters ip(AP);
- return ip.getProperty("AP_SAVEPOINT_NAME").c_str();
+ _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+ return ip->getProperty("AP_SAVEPOINT_NAME");
}
-//================================================================
-// Function : setNameOfSavePoint
-/*! Purpose : sets a name of save point
+/*!
+ Sets a name of save point
*/
-//================================================================
void SalomeApp_Study::setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint)
{
_PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName(), savePoint);
- SALOMEDS_IParameters ip(AP);
- ip.setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1());
+ _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+ ip->setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.latin1());
}
-//================================================================
-// Function : getVisualComponentName
-/*! Purpose : returns a name of the component where visual
- * parameters are stored
+/*!
+ \return a name of the component where visual parameters are stored
*/
-//================================================================
std::string SalomeApp_Study::getVisualComponentName()
{
return "Interface Applicative";
}
-//================================================================
-// Function : updateModelRoot
-/*! Purpose : slot called on change of a root of a data model. redefined from CAM_Study*/
-//================================================================
+/*!
+ Slot: called on change of a root of a data model. Redefined from CAM_Study
+*/
void SalomeApp_Study::updateModelRoot( const CAM_DataModel* dm )
{
LightApp_Study::updateModelRoot( dm );
#include <qapplication.h>
#include <qdict.h>
-#include <SALOMEDS_IParameters.hxx>
+#include <SALOMEDSClient_ClientFactory.hxx>
+#include <SALOMEDSClient_IParameters.hxx>
#include <vector>
#include <string>
{
}
-//================================================================
-// Function : nameViewWindows
-/*! Purpose : set names of all view windows in given list. This is used
-// in order to apply the same naming algorithm when saving and restoring
-// view windows. Names of view windows must be the same before saving
-// workstack (splitters) information, and before its restoring!
-// Naming rule: ViewerType_IndexOfViewerOfThisType_IndexOfViewInThisViewer
-// VTKViewer_0_0
-// OCCViewer_0_0 OCCViewer_0_1 OCCViewer_0_2
-// VTKViewer_1_0
+/*!
+ Sets names of all view windows in given list. This is used
+ in order to apply the same naming algorithm when saving and restoring
+ view windows. Names of view windows must be the same before saving
+ workstack (splitters) information, and before its restoring!
+ Naming rule: ViewerType_IndexOfViewerOfThisType_IndexOfViewInThisViewer
+ VTKViewer_0_0
+ OCCViewer_0_0 OCCViewer_0_1 OCCViewer_0_2
+ VTKViewer_1_0
*/
-//================================================================
void nameViewWindows( const ViewManagerList& lst )
{
QDict<int> viewersCounter; // map viewerType - to - index_of_this_viewer_type
}
}
-//================================================================
-// Function : storeState
-/*! Purpose : store the visual parameters of the viewers
+/*!
+ Stores the visual parameters of the viewers
*/
-//================================================================
int SalomeApp_VisualState::storeState()
{
SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( myApp->activeStudy() );
savePoint = savePoints[savePoints.size()-1] + 1;
_PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName(), savePoint );
- SALOMEDS_IParameters ip( ap );
+ _PTR(IParameters) ip = ClientFactory::getIParameters( ap );
ViewManagerList lst;
myApp->viewManagers( lst );
// store active window's name
SUIT_ViewWindow* win = myApp->desktop()->activeWindow();
if ( win )
- ip.setProperty("AP_ACTIVE_VIEW", win->name() );
+ ip->setProperty("AP_ACTIVE_VIEW", win->name() );
int viewerID = 0;
SUIT_ViewManager* vm = 0;
continue; //No views is opened in the viewer
std::string viewerEntry = QString( "%1_%2" ).arg( vm->getType() ).arg( ++viewerID ).latin1();
- ip.append("AP_VIEWERS_LIST", viewerEntry);
+ ip->append("AP_VIEWERS_LIST", viewerEntry);
QPtrVector<SUIT_ViewWindow> views = vm->getViews();
for(int i = 0; i<view_count; i++) {
- ip.append( viewerEntry, views[i]->caption().latin1() );
- ip.append( viewerEntry, views[i]->getVisualParameters().latin1() );
+ ip->append( viewerEntry, views[i]->caption().latin1() );
+ ip->append( viewerEntry, views[i]->getVisualParameters().latin1() );
}
}
QtxWorkstack* workstack = ((STD_TabDesktop*)myApp->desktop())->workstack();
QString workstackInfo;
(*workstack) >> workstackInfo;
- ip.setProperty( "AP_WORKSTACK_INFO", workstackInfo.latin1() );
+ ip->setProperty( "AP_WORKSTACK_INFO", workstackInfo.latin1() );
}
//Save a name of the active module
if ( CAM_Module* activeModule = myApp->activeModule() )
- ip.setProperty( "AP_ACTIVE_MODULE", activeModule->moduleName().latin1() );
+ ip->setProperty( "AP_ACTIVE_MODULE", activeModule->moduleName().latin1() );
//Store visual parameters of the modules
QPtrList<CAM_Module> mlist;
CAM_Module* module = 0;
for ( module = mlist.first(); module; module = mlist.next() ) {
if ( SalomeApp_Module* sModule = dynamic_cast<SalomeApp_Module*>( module ) ) {
- ip.append( "AP_MODULES_LIST", sModule->moduleName().latin1() );
+ ip->append( "AP_MODULES_LIST", sModule->moduleName().latin1() );
sModule->storeVisualParameters( savePoint );
}
}
return savePoint;
}
-//================================================================
-// Function : restoreState
-/*! Purpose : restore the visual parameters of the viewers
+/*!
+ Restores the visual parameters of the viewers
*/
-//================================================================
void SalomeApp_VisualState::restoreState(int savePoint)
{
SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( myApp->activeStudy() );
return;
_PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName(), savePoint );
- SALOMEDS_IParameters ip(ap);
+ _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
//Remove all already existent veiwers and their views
ViewManagerList lst;
myApp->viewManagers( lst );
- for ( QPtrListIterator<SUIT_ViewManager> it(lst); it.current(); ++it )
+ for ( QPtrListIterator<SUIT_ViewManager> it(lst); it.current(); ++it ) {
myApp->removeViewManager( it.current() );
-
+ qApp->processEvents();
+ }
//Restore the viewers and view windows
- int nbViewers = ip.nbValues( "AP_VIEWERS_LIST" );
+ int nbViewers = ip->nbValues( "AP_VIEWERS_LIST" );
SUIT_ViewWindow* viewWin = 0;
+ // parameters of view windows are stored in a map for restoring after restoring of the workstack
+ QMap<SUIT_ViewWindow*, QString> viewersParameters;
+
for ( int i = 0; i < nbViewers; i++ ) {
- std::string viewerEntry = ip.getValue( "AP_VIEWERS_LIST", i );
- std::vector<std::string> veiewerParams = ip.parseValue(viewerEntry,'_');
+ std::string viewerEntry = ip->getValue( "AP_VIEWERS_LIST", i );
+ std::vector<std::string> veiewerParams = ip->parseValue(viewerEntry,'_');
std::string type = veiewerParams[0];
std::string viewerID = veiewerParams[1];
SUIT_ViewManager* vm = myApp->newViewManager( type.c_str() );
if ( !vm )
continue; //Unknown viewer
- int nbViews = (ip.nbValues(viewerEntry))/2;
+ int nbViews = (ip->nbValues(viewerEntry))/2;
//Create nbViews-1 view (-1 because 1 view is created by createViewManager)
for ( int i = 1; i< nbViews; i++ ) {
while ( !viewWin->isVisible() )
qApp->processEvents();
- viewWin->setCaption(ip.getValue(viewerEntry, j).c_str());
- viewWin->setVisualParameters(ip.getValue(viewerEntry, j+1).c_str());
+ viewWin->setCaption(ip->getValue(viewerEntry, j).c_str());
+
+ // printf ( "VP for viewWin \"%s\": %s\n", viewerEntry.c_str(), ip->getValue(viewerEntry, j+1).c_str() );
+ viewersParameters[ viewWin ] = ip->getValue(viewerEntry, j+1).c_str();
+ //viewWin->setVisualParameters(ip->getValue(viewerEntry, j+1).c_str());
}
}
// restore modules' visual parameters
- std::vector<std::string> v = ip.getValues("AP_MODULES_LIST");
+ std::vector<std::string> v = ip->getValues("AP_MODULES_LIST");
for ( int i = 0; i < v.size(); i++ ) {
myApp->activateModule( v[i].c_str() );
if ( SalomeApp_Module* module = dynamic_cast<SalomeApp_Module*>( myApp->activeModule() ) )
module->restoreVisualParameters( savePoint );
}
+ // new view windows may have been created in module->restoreVisualParameters() [GAUSS]
+ // so here we store their visual parameters for later restoring..
+ lst.clear();
+ myApp->viewManagers(lst);
+ QPtrListIterator<SUIT_ViewManager> it( lst );
+ for ( ; it.current(); ++it ) {
+ int view_count = it.current()->getViewsCount();
+ QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
+ for ( int i = 0; i < view_count; i++ ) {
+ if ( !viewersParameters.contains( views[i] ) ) {
+ viewersParameters[ views[i] ] = views[i]->getVisualParameters();
+ // printf ( "store VP for viewWin \"%s\": %s\n", views[i]->name(), views[i]->getVisualParameters().latin1() );
+ }
+ }
+ }
+
// activate module that was active on save
- QString activeModuleName( ip.getProperty("AP_ACTIVE_MODULE" ).c_str() );
+ QString activeModuleName( ip->getProperty("AP_ACTIVE_MODULE" ).c_str() );
if ( !activeModuleName.isEmpty() )
myApp->activateModule( activeModuleName );
// setting unique names for view windows in order to restore positions of view windows inside
// workstack's structure (see below). During save the same naming algorithm was used,
// so the same views will get the same names.
- lst.clear();
- myApp->viewManagers(lst);
nameViewWindows( lst );
- // work-around to bug of setting visual parameters of views: all view windows now have
- // correct visual parameters, bug after restoring the workstack the visual parameters
- // are messted, and must be re-set again. So here we store them in a map and set them
- // later back again. why we don't store these parameters in a map on views creation?
- // because 1) names of view windows are not set at that time 2) some view windows
- // are created by modules' restoreVisualParameters (like Gauss Viewers), which is NOT here..
- QMap<QString, QString> viewersParameters;
- QPtrListIterator<SUIT_ViewManager> it( lst );
- for ( ; it.current(); ++it ) {
- int view_count = it.current()->getViewsCount();
- QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
- for ( int i = 0; i < view_count; i++ )
- viewersParameters[ views[i]->name() ] = views[i]->getVisualParameters();
- }
-
// restore workstack parameters. should be done after module's restoreVisualParameters(), because
// some modules can create their own viewers (like VISU creates GaussViewers)
if ( myApp->desktop()->inherits( "STD_TabDesktop" ) ) {
QtxWorkstack* workstack = ((STD_TabDesktop*)myApp->desktop())->workstack();
- (*workstack) << ip.getProperty( "AP_WORKSTACK_INFO" ).c_str();
+ (*workstack) << ip->getProperty( "AP_WORKSTACK_INFO" ).c_str();
}
// restore visual parameters of view windows. it must be done AFTER restoring workstack.
- for ( it.toFirst(); it.current(); ++it ) {
- int view_count = it.current()->getViewsCount();
- QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
- for ( int i = 0; i < view_count; i++ )
- views[i]->setVisualParameters( viewersParameters[ views[i]->name() ] );
+ // also set active view
+ std::string activeViewName = ip->getProperty("AP_ACTIVE_VIEW");
+ QMap<SUIT_ViewWindow*, QString>::Iterator mapIt;
+ for ( mapIt = viewersParameters.begin(); mapIt != viewersParameters.end(); ++mapIt ) {
+ mapIt.key()->setVisualParameters( mapIt.data() );
+ if ( activeViewName == mapIt.key()->name() )
+ mapIt.key()->setFocus();
}
+
+ // for ( it.toFirst(); it.current(); ++it ) {
+ // int view_count = it.current()->getViewsCount();
+ // QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
+ // for ( int i = 0; i < view_count; i++ )
+ // views[i]->setVisualParameters( viewersParameters[ views[i]->name() ] );
+ // }
// set focus to previously saved active view window
- std::string activeViewName = ip.getProperty("AP_ACTIVE_VIEW");
- for ( it.toFirst(); it.current(); ++it ) {
- int view_count = it.current()->getViewsCount();
- QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
- for ( int i = 0; i < view_count; i++ ) {
- if ( activeViewName == views[i]->name() )
- views[i]->setFocus();
- }
- }
+ // std::string activeViewName = ip->getProperty("AP_ACTIVE_VIEW");
+ // for ( it.toFirst(); it.current(); ++it ) {
+ // int view_count = it.current()->getViewsCount();
+ // QPtrVector<SUIT_ViewWindow> views = it.current()->getViews();
+ // for ( int i = 0; i < view_count; i++ ) {
+ // if ( activeViewName == views[i]->name() )
+ // views[i]->setFocus();
+ // }
+ // }
}
BIN_CLIENT_IDL =
-CXXFLAGS += $ @CPPUNIT_INCLUDES@ -I${KERNEL_ROOT_DIR}/include/salome
-CPPFLAGS += $ @CPPUNIT_INCLUDES@ -I${KERNEL_ROOT_DIR}/include/salome
+CXXFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS)
+CPPFLAGS += $ @CPPUNIT_INCLUDES@ $(KERNEL_CXXFLAGS)
LIBS= @LIBS@ @CPPUNIT_LIBS@
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
import sys, os,signal,string,commands
import runSalome
<document>
- <section name="desktop" >
- <parameter name="state" value="normal"/>
- <parameter name="pos_x" value="center"/>
- <parameter name="pos_y" value="center"/>
- <parameter name="width" value="800"/>
- <parameter name="height" value="600"/>
- </section>
<section name="launch">
+ <!-- SALOME launching parameters -->
<parameter name="gui" value="yes"/>
<parameter name="splash" value="yes"/>
<parameter name="file" value="no"/>
<parameter name="standalone" value="pyContainer,supervContainer"/>
</section>
<section name="language">
+ <!-- Language settings (resource manager)-->
<parameter name="language" value="en"/>
<parameter name="translators" value="%P_msg_%L.qm|%PM_msg_%L.qm|%P_icons.qm|%P_images.qm|%PM_images.qm"/>
</section>
+ <section name="splash" >
+ <!-- Splash screen settings -->
+ <parameter name="image" value="${SUITRoot}/resources/icon_about.png" />
+ <parameter name="info" value="%V" />
+ <parameter name="text_colors" value="#F0CC6D|#7F7138" />
+ <parameter name="progress_colors" value="#FF0000|#FFFFFF|0" />
+ </section>
<section name="resources">
+ <!-- Resource directories (resource manager)-->
<parameter name="SUIT" value="${SUITRoot}/resources"/>
<parameter name="STD" value="${SUITRoot}/resources"/>
<parameter name="Plot2d" value="${SUITRoot}/resources"/>
<parameter name="OB" value="${SUITRoot}/resources"/>
<parameter name="CAM" value="${SUITRoot}/resources"/>
<parameter name="SUPERVGraph" value="${SUITRoot}/resources"/>
- <parameter name="GEOM" value="${GEOM_ROOT_DIR}/share/salome/resources"/>
- <parameter name="LIGHT" value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
- <parameter name="SMESH" value="${SMESH_ROOT_DIR}/share/salome/resources"/>
- <parameter name="VISU" value="${VISU_ROOT_DIR}/share/salome/resources"/>
- <parameter name="SUPERV" value="${SUPERV_ROOT_DIR}/share/salome/resources"/>
- <parameter name="MED" value="${MED_ROOT_DIR}/share/salome/resources"/>
- <parameter name="StdMeshers" value="${SMESH_ROOT_DIR}/share/salome/resources"/>
- <parameter name="COMPONENT" value="${COMPONENT_ROOT_DIR}/share/salome/resources"/>
- <parameter name="PYCALCULATOR" value="${PYCALCULATOR_ROOT_DIR}/share/salome/resources"/>
- <parameter name="HELLO" value="${HELLO_ROOT_DIR}/share/salome/resources"/>
- <parameter name="PYHELLO" value="${PYHELLO_ROOT_DIR}/share/salome/resources"/>
+ <parameter name="ToolsGUI" value="${SUITRoot}/resources"/>
<parameter name="NETGENPlugin" value="${NETGENPLUGIN_ROOT_DIR}/share/salome/resources"/>
<parameter name="GHS3DPlugin" value="${GHS3DPLUGIN_ROOT_DIR}/share/salome/resources"/>
- <parameter name="ToolsGUI" value="${SUITRoot}/resources"/>
- </section>
- <section name="PyConsole">
- <parameter name="font" value="Helvetic,12" />
- </section>
- <section name="Study">
- <parameter name="store_positions" value="false" />
- <parameter name="store_visual_state" value="false" />
- </section>
- <section name="GEOM">
- <parameter name="name" value="Geometry"/>
- <parameter name="icon" value="ModuleGeom.png"/>
- </section>
- <section name="LIGHT">
- <parameter name="name" value="Light"/>
- <parameter name="icon" value="LIGHT.png"/>
</section>
<section name="SMESH">
- <parameter name="name" value="Mesh"/>
- <parameter name="icon" value="ModuleMesh.png"/>
- </section>
- <section name="VISU">
- <parameter name="name" value="Post-Pro"/>
- <parameter name="icon" value="ModuleVisu.png"/>
- </section>
- <section name="SUPERV">
- <parameter name="name" value="Supervisor"/>
- <parameter name="icon" value="ModuleSupervision.png"/>
- </section>
- <section name="MED">
- <parameter name="name" value="Med"/>
- <parameter name="icon" value="ModuleMed.png"/>
- </section>
- <section name="HELLO">
- <parameter name="name" value="Hello"/>
- <parameter name="icon" value="HELLO.png"/>
- </section>
- <section name="PYHELLO">
- <parameter name="name" value="PyHello"/>
- <parameter name="icon" value="PYHELLO.png"/>
- <parameter name="library" value="SalomePyQtGUI"/>
+ <!-- Default SMESH module plugins -->
+ <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
</section>
-
-<!-- values below this line are just an example, they are not used -->
- <section name="application">
- <parameter name="QuickDirList" value=""/>
- <!-- Here go other common user preferences -->
+ <section name="desktop" >
+ <!-- Default GUI desktop state, position, size -->
+ <parameter name="state" value="normal"/>
+ <parameter name="pos_x" value="center"/>
+ <parameter name="pos_y" value="center"/>
+ <parameter name="width" value="800"/>
+ <parameter name="height" value="600"/>
</section>
<section name="ObjectBrowser" >
- <parameter value="false" name="auto_size" />
- <parameter value="true" name="auto_size_first" />
- <parameter value="true" name="visibility_column_0" />
- <parameter value="false" name="visibility_column_1" />
- <parameter value="false" name="visibility_column_2" />
- <parameter value="false" name="visibility_column_3" />
+ <!-- Object Browser preferences -->
+ <parameter name="auto_size" value="false" />
+ <parameter name="auto_size_first" value="true" />
+ <parameter name="visibility_column_0" value="true" />
+ <parameter name="visibility_column_1" value="false" />
+ <parameter name="visibility_column_2" value="false" />
+ <parameter name="visibility_column_3" value="false" />
+ </section>
+ <section name="PyConsole">
+ <!-- Python console preferences -->
+ <parameter name="font" value="Helvetic,12" />
+ <parameter name="additional_families" value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida"/>
</section>
<section name="OCCViewer" >
- <parameter value="35, 136, 145" name="background" />
- <parameter value="1" name="iso_number_u" />
- <parameter value="1" name="iso_number_v" />
- <parameter value="100" name="trihedron_size" />
+ <!-- OCC viewer preferences -->
+ <parameter name="background" value="35, 136, 145" />
+ <parameter name="iso_number_u" value="1" />
+ <parameter name="iso_number_v" value="1" />
+ <parameter name="trihedron_size" value="100" />
</section>
<section name="VTKViewer" >
- <parameter value="0, 0, 0" name="background" />
- <parameter value="105" name="trihedron_size" />
- <parameter value="true" name="relative_size" />
+ <!-- VTK viewer preferences -->
+ <parameter name="background" value="0, 0, 0" />
+ <parameter name="trihedron_size" value="105" />
+ <parameter name="relative_size" value="true" />
</section>
- <section name="ExternalBrowser" >
- <parameter value="/usr/bin/mozilla" name="application" />
- </section>
<section name="Plot2d" >
- <parameter value="255, 255, 255" name="Background" />
- <parameter value="1" name="CurveType" />
- <parameter value="0" name="HorScaleMode" />
- <parameter value="1" name="LegendPos" />
- <parameter value="9" name="MarkerSize" />
- <parameter value="true" name="ShowLegend" />
- <parameter value="0" name="VerScaleMode" />
+ <!-- Plot2d viewer preferences -->
+ <parameter name="Background" value="255, 255, 255"/>
+ <parameter name="CurveType" value="1" />
+ <parameter name="HorScaleMode" value="0" />
+ <parameter name="LegendPos" value="1" />
+ <parameter name="MarkerSize" value="9" />
+ <parameter name="ShowLegend" value="true" />
+ <parameter name="VerScaleMode" value="0" />
</section>
<section name="SUPERVGraph" >
- <parameter value="144, 208, 211" name="Background" />
- <parameter value="63, 213, 255" name="Title" />
- <parameter value="255, 249, 147" name="NodeBody" />
+ <!-- Supervision viewer preferences -->
+ <parameter name="Background" value="144, 208, 211" />
+ <parameter name="Title" value="63, 213, 255" />
+ <parameter name="NodeBody" value="255, 249, 147" />
</section>
- <section name="Geometry" >
- <parameter value="10" name="SettingsGeomStep" />
- <parameter value="0" name="display_mode" />
- <parameter value="255, 255, 0" name="shading_color" />
+ <section name="FileDlg" >
+ <!-- "Open/Save File" dialog box preferences-->
+ <parameter name="QuickDirList" value="${DATA_DIR}" />
</section>
- <section name="SMESH">
- <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
- <parameter value="255, 0, 0" name="node_color" />
- <parameter value="0, 170, 255" name="fill_color" />
- <parameter value="0, 170, 255" name="outline_color" />
- <parameter value="0, 0, 255" name="backface_color" />
- <parameter value="3" name="node_size" />
- <parameter value="1" name="element_width" />
- <parameter value="75" name="shrink_coeff" />
- <parameter value="0, 255, 255" name="highlight_color" />
- <parameter value="255, 255, 0" name="selection_element_color" />
- <parameter value="255, 255, 255" name="selection_object_color" />
- <parameter value="0.005" name="selection_precision_element" />
- <parameter value="0.005" name="selection_precision_node" />
- <parameter value="5" name="selection_width" />
- <parameter value="5" name="highlight_width" />
- <parameter value="0" name="controls_precision" />
- <parameter value="0.05" name="scalar_bar_horizontal_height" />
- <parameter value="0.5" name="scalar_bar_horizontal_width" />
- <parameter value="0.01" name="scalar_bar_horizontal_x" />
- <parameter value="0.01" name="scalar_bar_horizontal_y" />
- <parameter value="255, 255, 255" name="scalar_bar_label_color" />
- <parameter value="Arial,12" name="scalar_bar_label_font" />
- <parameter value="64" name="scalar_bar_num_colors" />
- <parameter value="5" name="scalar_bar_num_labels" />
- <parameter value="0" name="scalar_bar_orientation" />
- <parameter value="255, 255, 255" name="scalar_bar_title_color" />
- <parameter value="Arial,12" name="scalar_bar_title_font" />
- <parameter value="0.5" name="scalar_bar_vertical_height" />
- <parameter value="0.05" name="scalar_bar_vertical_width" />
- <parameter value="0.01" name="scalar_bar_vertical_x" />
- <parameter value="0.01" name="scalar_bar_vertical_y" />
- <parameter value="true" name="DisplayMode" />
- <parameter value="true" name="auto_update" />
- <parameter value="1" name="display_mode" />
- <parameter value="false" name="auto_groups" />
- </section>
- <section name="VISU" >
- <parameter value="false" name="use_build_progress" />
- <parameter value="false" name="full_med_loading" />
- <parameter value="false" name="represent_shading" />
- <parameter value="0.05" name="scalar_bar_horizontal_height" />
- <parameter value="0.5" name="scalar_bar_horizontal_width" />
- <parameter value="0.01" name="scalar_bar_horizontal_x" />
- <parameter value="0.01" name="scalar_bar_horizontal_y" />
- <parameter value="255, 255, 255" name="scalar_bar_label_color" />
- <parameter value="Arial,Bold,Italic,Underline,12" name="scalar_bar_label_font" />
- <parameter value="false" name="scalar_bar_logarithmic" />
- <parameter value="0" name="scalar_bar_mode" />
- <parameter value="64" name="scalar_bar_num_colors" />
- <parameter value="5" name="scalar_bar_num_labels" />
- <parameter value="0" name="scalar_bar_orientation" />
- <parameter value="255, 255, 255" name="scalar_bar_title_color" />
- <parameter value="Arial,Bold,Italic,Underline,12" name="scalar_bar_title_font" />
- <parameter value="0.5" name="scalar_bar_vertical_height" />
- <parameter value="0.05" name="scalar_bar_vertical_width" />
- <parameter value="0.01" name="scalar_bar_vertical_x" />
- <parameter value="0.01" name="scalar_bar_vertical_y" />
- <parameter value="0" name="scalar_range_max" />
- <parameter value="0" name="scalar_range_min" />
- <parameter value="0" name="scalar_range_type" />
- <parameter value="1" name="sweeping_number_cycles" />
- <parameter value="20" name="sweeping_number_steps" />
- <parameter value="0.2" name="sweeping_time_step" />
- <parameter value="0" name="mouse_behaviour" />
- <parameter value="10" name="speed_increment" />
- <parameter value="1" name="spacemouse_func1_btn" />
- <parameter value="2" name="spacemouse_func2_btn" />
- <parameter value="10" name="spacemouse_func3_btn" />
- <parameter value="11" name="spacemouse_func4_btn" />
- <parameter value="9" name="spacemouse_func5_btn" />
- <parameter value="10" name="camera_movement_steps" />
- <parameter value="true" name="point_sprite_results" />
- <parameter value="0" name="point_sprite_primitive_type" />
- <parameter value="256" name="point_sprite_clamp" />
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="point_sprite_main_texture"/>
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="point_sprite_alpha_texture"/>
- <parameter value="0.5" name="point_sprite_alpha_threshold" />
- <parameter value="10" name="point_sprite_min_size" />
- <parameter value="33" name="point_sprite_max_size" />
- <parameter value="100" name="point_sprite_magnification" />
- <parameter value="2" name="point_sprite_increment" />
- <parameter value="15" name="point_sprite_size" />
- <parameter value="0, 0, 255" name="point_sprite_color" />
- <parameter value="8" name="geom_sphere_resolution" />
- <parameter value="50000" name="geom_sphere_face_limit" />
- <parameter value="true" name="scalar_bar_display_global" />
- <parameter value="0" name="scalar_bar_active_local" />
- <parameter value="1" name="scalar_bar_bicolor" />
- <parameter value="0.01" name="scalar_bar_spacing" />
- <parameter value="0" name="inside_point_sprite_primitive_type" />
- <parameter value="256" name="inside_point_sprite_clamp" />
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="inside_point_sprite_main_texture"/>
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="inside_point_sprite_alpha_texture"/>
- <parameter value="0.5" name="inside_point_sprite_alpha_threshold" />
- <parameter value="10" name="inside_point_sprite_min_size" />
- <parameter value="33" name="inside_point_sprite_max_size" />
- <parameter value="100" name="inside_point_sprite_magnification" />
- <parameter value="2" name="inside_point_sprite_increment" />
- <parameter value="8" name="inside_geom_sphere_resolution" />
- <parameter value="50000" name="inside_geom_sphere_face_limit" />
- <parameter value="0" name="outside_point_sprite_primitive_type" />
- <parameter value="256" name="outside_point_sprite_clamp" />
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_texture.bmp" name="outside_point_sprite_main_texture"/>
- <parameter value="${VISU_ROOT_DIR}/share/salome/resources/sprite_alpha.bmp" name="outside_point_sprite_alpha_texture"/>
- <parameter value="0.5" name="outside_point_sprite_alpha_threshold" />
- <parameter value="25" name="outside_point_sprite_size" />
- <parameter value="true" name="outside_point_sprite_uniform" />
- <parameter value="85, 0, 127" name="outside_point_sprite_color" />
- <parameter value="8" name="outside_geom_sphere_resolution" />
- <parameter value="50000" name="outside_geom_sphere_face_limit" />
- <parameter value="0.5" name="picking_cursor_size" />
- <parameter value="1.0" name="picking_pyramid_height" />
- <parameter value="255, 255, 0" name="picking_selection_color" />
- <parameter value="0.01" name="picking_point_tolerance" />
- <parameter value="50" name="picking_transparency" />
- <parameter value="0" name="picking_position" />
- <parameter value="1.5" name="picking_zoom_factor" />
- <parameter value="10" name="picking_step_number" />
- <parameter value="false" name="picking_display_parent_mesh" />
- <parameter value="false" name="build_at_once" />
- <parameter value="true" name="build_fields" />
- <parameter value="true" name="build_min_max" />
- <parameter value="true" name="build_groups" />
- <parameter value="true" name="close_at_finish" />
- <parameter value="1" name="recorder_mode" />
- <parameter value="17.3" name="recorder_fps" />
- <parameter value="100" name="recorder_quality" />
- <parameter value="true" name="recorder_progressive" />
+ <section name="Study">
+ <!-- General study settings -->
+ <parameter name="store_positions" value="false" />
+ <parameter name="store_visual_state" value="false" />
</section>
- <!-- Here go optional sections for other modules -->
- <section name="resources">
- <parameter name="salome" value="${KERNEL_ROOT_DIR}/share/salome/res"/>
- <!-- Here go resource directories for other modules -->
+ <section name="ExternalBrowser" >
+ <!-- External HELP browser settings -->
+ <parameter value="/usr/bin/mozilla" name="application" />
</section>
</document>
//=======================================================================================
-msgid "BUT_OK"
-msgstr "&OK"
-
msgid "BUT_NEW"
msgstr "&New"
msgid "BUT_LOAD"
msgstr "&Load"
-msgid "BUT_CANCEL"
-msgstr "&Cancel"
-
//=======================================================================================
msgid "SalomeApp_Application::PYTHON_CONSOLE"
msgstr "Save GUI state"
msgid "SalomeApp_Application::MEN_DESK_FILE_SAVE_GUI_STATE"
-msgstr "Save GUI state..."
+msgstr "Save GUI state"
msgid "SalomeApp_Application::PRP_DESK_FILE_SAVE_GUI_STATE"
msgstr "Saves current state of viewers, displayed objects, etc."
#define MARGIN_SIZE 5
#define SPACING_SIZE 3
+/*!
+ Constructor
+*/
InquireServersGUI::InquireServersGUI()
: QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder | WType_TopLevel | WStyle_StaysOnTop | WX11BypassWM )
{
myThread->start();
}
+/*!
+ Sets pixmap of splash screen
+ \param pix - new pixmap
+*/
void InquireServersGUI::setPixmap( QPixmap pix )
{
if ( !pix.isNull() )
}
}
+/*!
+ Destructor
+*/
InquireServersGUI::~InquireServersGUI()
{
delete myThread;
}
+/*!
+ Gets parameters from qApp
+ \param _argc - variable to return number of arguments
+ \param _argv - variable to return array of arguments
+*/
void InquireServersGUI::getArgs( int& _argc, char *** _argv)
{
_argc = qApp->argc();
*_argv = qApp->argv();
}
-//=================================================================================
-// function : ClickOnCancel()
-// purpose : cancel loading of SALOME
-//=================================================================================
+/*!
+ Cancel loading of SALOME
+*/
void InquireServersGUI::ClickOnCancel()
{
myThread->stop(); //it's necessary to stop asking servers
qApp->exit( 1 );
}
+/*!
+ Custom event filter
+*/
void InquireServersGUI::customEvent( QCustomEvent* pe )
{
switch( pe->type() )
}
}
+/*!
+ \return status of thread exit
+*/
int InquireServersGUI::getExitStatus()
{
return myThread->getExitStatus();
}
+/*!
+ Constructor
+*/
InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
: receiver(r), myExitStatus(0)
{
}
}
+/*!
+ The main loop of this thread
+*/
void InquireServersQThread::run()
{
while ( IsChecking && receiver )
qApp->exit( myExitStatus );
}
+/*!
+ Stops this thread
+*/
void InquireServersQThread::stop()
{
IsChecking = false;
myExitStatus = 1;
}
+/*!
+ Destructor
+*/
InquireServersQThread::~InquireServersQThread()
{
}
#define SALOME_WNT_EXPORT
#endif
-/**********************************************************
-** Class: InquireEvent
-** Descr: Contains QCustomEvents for posting to InquireServersQThread
-** Level: Private
-***********************************************************/
+/*!
+ \class InquireEvent
+ Contains QCustomEvents for posting to InquireServersQThread
+*/
class SALOME_WNT_EXPORT InquireEvent : public QCustomEvent
{
public:
EXPORT_HEADERS= Session_Session_i.hxx \
Session_ServerLauncher.hxx \
Session_ServerThread.hxx \
+ Session_ServerCheck.hxx \
SalomeApp_Engine_i.hxx
# Libraries targets
LIB_SRC=Session_Session_i.cxx \
Session_ServerThread.cxx \
Session_ServerLauncher.cxx \
+ Session_ServerCheck.cxx \
SalomeApp_Engine_i.cxx \
- InquireServersQThread.cxx
-LIB_MOC = InquireServersQThread.h
+LIB_MOC =
# Executables targets
BIN = SALOME_Session_Server
BIN_SERVER_IDL =
BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOME_Registry.idl SALOME_ModuleCatalog.idl SALOME_Exception.idl SALOME_GenericObj.idl
-CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(OCC_INCLUDES)
+CPPFLAGS += $(QT_MT_INCLUDES) $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS) -I$(OCC_INCLUDES)
CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS)
-LDFLAGS += $(QT_MT_LIBS) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lsuit -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lwith_loggerTraceCollector -lEvent -lSalomeCatalog -lSalomeDSClient $(CAS_KERNEL)
+LDFLAGS += $(QT_MT_LIBS) $(KERNEL_LDFLAGS) -lSalomeNS -lsuit -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace -lwith_loggerTraceCollector -lEvent -lSalomeCatalog -lSalomeDSClient $(CAS_KERNEL)
LDFLAGSFORBIN= $(LDFLAGS) $(OMNIORB_LIBS) $(HDF5_LIBS) -lqtx -lSalomeContainer -lSalomeResourcesManager -lTOOLSDS -lSalomeHDFPersist -lSalomeDSImpl -lSalomeGenericObj -lRegistry -lSalomeNotification -lSALOMEBasics
#include "SALOME_NamingService.hxx"
#include "SALOMETraceCollector.hxx"
-#include "InquireServersQThread.h" // splash
-
#include <iostream>
#ifndef WNT
#include <unistd.h>
#include <qfile.h>
#include <qapplication.h>
#include <qwaitcondition.h>
+#include <qregexp.h>
#include "Utils_SALOME_Exception.hxx"
#include "Utils_CorbaException.hxx"
#include <utilities.h>
#include "Session_Session_i.hxx"
#include "Session_ServerLauncher.hxx"
+#include "Session_ServerCheck.hxx"
+#include <QtxSplash.h>
#include "SUIT_Tools.h"
#include "SUIT_Session.h"
#include "SUIT_Application.h"
+#include "SUIT_Desktop.h"
#include "SUIT_MessageBox.h"
#include "SUIT_ResourceMgr.h"
-
#include "SUIT_ExceptionHandler.h"
/*! - read arguments, define list of server to launch with their arguments.
QString version() const { return myExtAppVersion; }
protected:
- QString userFileName( const QString& appName ) const
+ QString userFileName( const QString& appName, const bool for_load ) const
{
if ( version().isNull() ) return "";
- return SUIT_ResourceMgr::userFileName( myExtAppName );
+ return SUIT_ResourceMgr::userFileName( myExtAppName, for_load );
+ }
+
+ virtual int userFileId( const QString& _fname ) const
+ {
+ QRegExp exp( "\\.SalomeApprc\\.([a-zA-Z0-9.]+)$" );
+ QRegExp vers_exp( "^([0-9]+)([A-Za-z]?)([0-9]*)$" );
+
+ QString fname = QFileInfo( _fname ).fileName();
+ if( exp.exactMatch( fname ) )
+ {
+ QStringList vers = QStringList::split( ".", exp.cap( 1 ) );
+ int major=0, minor=0;
+ major = vers[0].toInt();
+ minor = vers[1].toInt();
+ if( vers_exp.search( vers[2] )==-1 )
+ return -1;
+ int release = 0, dev1 = 0, dev2 = 0;
+ release = vers_exp.cap( 1 ).toInt();
+ dev1 = vers_exp.cap( 2 )[ 0 ].latin1();
+ dev2 = vers_exp.cap( 3 ).toInt();
+
+ int dev = dev1*100+dev2, id = major;
+ id*=100; id+=minor;
+ id*=100; id+=release;
+ id*=10000; id+=dev;
+ return id;
+ }
+
+ return -1;
}
public:
class GetInterfaceThread : public QThread
{
public:
- GetInterfaceThread( SALOME::Session_var s ) : session ( s ) {}
+ GetInterfaceThread( SALOME::Session_var s ) : session ( s )
+ {
+ start();
+ }
protected:
virtual void run()
{
// ---------------------------- MAIN -----------------------
int main( int argc, char **argv )
{
+ // Install Qt debug messages handler
qInstallMsgHandler( MessageOutput );
-
- // QApplication should be create before all other operations
- // When uses QApplication::libraryPaths() ( example, QFile::encodeName() )
- // qApp used for detection of the executable dir path.
+
+ // Create Qt application instance;
+ // this should be done the very first!
SALOME_QApplication _qappl( argc, argv );
ASSERT( QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) ) );
+ // Add application library path (to search style plugin etc...)
QString path = QDir::convertSeparators( SUIT_Tools::addSlash( QString( ::getenv( "GUI_ROOT_DIR" ) ) ) + QString( "bin/salome" ) );
_qappl.addLibraryPath( path );
+ // Set SALOME style to the application
_qappl.setStyle( "salome" );
+ bool isGUI = isFound( "GUI", argc, argv );
+ bool isSplash = isFound( "SPLASH", argc, argv );
+ // Show splash screen (only if both the "GUI" and "SPLASH" parameters are set)
+ QtxSplash* splash = 0;
+ if ( isGUI && isSplash ) {
+ // ...create resource manager
+ SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) );
+ resMgr.setCurrentFormat( "xml" );
+ resMgr.loadLanguage( "LightApp", "en" );
+ // ...get splash preferences
+ QString splashIcon, splashInfo, splashTextColors, splashProgressColors;
+ resMgr.value( "splash", "image", splashIcon );
+ resMgr.value( "splash", "info", splashInfo, false );
+ resMgr.value( "splash", "text_colors", splashTextColors );
+ resMgr.value( "splash", "progress_colors", splashProgressColors );
+ QPixmap px( splashIcon );
+ if ( px.isNull() ) // try to get splash pixmap from resources
+ px = resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) );
+ if ( !px.isNull() ) {
+ // ...set splash pixmap
+ splash = QtxSplash::splash( px );
+ // ...set splash text colors
+ if ( !splashTextColors.isEmpty() ) {
+ QStringList colors = QStringList::split( "|", splashTextColors );
+ QColor c1, c2;
+ if ( colors.count() > 0 ) c1 = QColor( colors[0] );
+ if ( colors.count() > 1 ) c2 = QColor( colors[1] );
+ splash->setTextColors( c1, c2 );
+ }
+ else {
+ splash->setTextColors( Qt::white, Qt::black );
+ }
+ // ...set splash progress colors
+ if ( !splashProgressColors.isEmpty() ) {
+ QStringList colors = QStringList::split( "|", splashProgressColors );
+ QColor c1, c2;
+ int gradType = QtxSplash::Vertical;
+ if ( colors.count() > 0 ) c1 = QColor( colors[0] );
+ if ( colors.count() > 1 ) c2 = QColor( colors[1] );
+ if ( colors.count() > 2 ) gradType = colors[2].toInt();
+ splash->setProgressColors( c1, c2, gradType );
+ }
+ // ...set splash text font
+ QFont f = splash->font();
+ f.setBold( true );
+ splash->setFont( f );
+ // ...show splash initial status
+ if ( !splashInfo.isEmpty() ) {
+ splashInfo.replace( QRegExp( "%A" ), QObject::tr( "APP_NAME" ) );
+ splashInfo.replace( QRegExp( "%V" ), QObject::tr( "ABOUT_VERSION" ).arg( salomeVersion() ) );
+ splashInfo.replace( QRegExp( "%L" ), QObject::tr( "ABOUT_LICENSE" ) );
+ splashInfo.replace( QRegExp( "%C" ), QObject::tr( "ABOUT_COPYRIGHT" ) );
+ splashInfo.replace( QRegExp( "\\\\n" ), "\n" );
+ splash->message( splashInfo );
+ }
+ // ...set 'hide on click' flag
+#ifdef _DEBUG_
+ splash->setHideOnClick( true );
+#endif
+ // ...show splash
+ splash->show();
+ qApp->processEvents();
+ }
+ }
+
+ // Initialization
int result = -1;
CORBA::ORB_var orb;
Session_ServerLauncher* myServerLauncher = 0;
try {
-
- // Python initialisation : only once
-
- int _argc = 1;
+ // ...initialize Python (only once)
+ int _argc = 1;
char* _argv[] = {""};
KERNEL_PYTHON::init_python( _argc,_argv );
PyEval_RestoreThread( KERNEL_PYTHON::_gtstate );
if ( !KERNEL_PYTHON::salome_shared_modules_module ) // import only once
KERNEL_PYTHON::salome_shared_modules_module = PyImport_ImportModule( "salome_shared_modules" );
- if ( !KERNEL_PYTHON::salome_shared_modules_module )
- {
+ if ( !KERNEL_PYTHON::salome_shared_modules_module ) {
INFOS( "salome_shared_modules_module == NULL" );
PyErr_Print();
}
PyEval_ReleaseThread( KERNEL_PYTHON::_gtstate );
- // Create ORB, get RootPOA object, NamingService, etc.
+ // ...create ORB, get RootPOA object, NamingService, etc.
ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
ASSERT( SINGLETON_<ORB_INIT>::IsAlreadyExisting() );
int orbArgc = 1;
orb = init( orbArgc, argv );
- // Install SALOME thread event handler
+ // ...install SALOME thread event handler
SALOME_Event::GetSessionThread();
CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" );
INFOS( "Caught unknown exception." );
}
- // CORBA Servant Launcher
- QMutex _GUIMutex;
- QWaitCondition _ServerLaunch, _SessionStarted;
-
- if ( !result )
- {
- _GUIMutex.lock(); // to block Launch server thread until wait( mutex )
-
- // Activate embedded CORBA servers: Registry, SALOMEDS, etc.
- myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionStarted );
- myServerLauncher->start();
-
- _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready:
+ QMutex _GUIMutex, _SessionMutex, _SplashMutex;
+ QWaitCondition _ServerLaunch, _SessionStarted, _SplashStarted;
+
+ // lock session mutex to ensure that GetInterface is not called
+ // until all initialization is done
+ _SessionMutex.lock();
+
+ if ( !result ) {
+ // Start embedded servers launcher (Registry, SALOMEDS, etc.)
+ // ...lock mutex to block embedded servers launching thread until wait( mutex )
+ _GUIMutex.lock();
+ // ...create launcher
+ myServerLauncher = new Session_ServerLauncher( argc, argv, orb, poa, &_GUIMutex, &_ServerLaunch, &_SessionMutex, &_SessionStarted );
+ // ...block this thread until launcher is ready
+ _ServerLaunch.wait( &_GUIMutex );
- // show splash screen if "SPLASH" parameter was passed ( default )
- if ( isFound( "SPLASH", argc, argv ) )
- {
- // create temporary resource manager just to load splash icon
- SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) );
- resMgr.setCurrentFormat( "xml" );
- resMgr.loadLanguage( "LightApp", "en" );
-
- // create splash object: widget ( splash with progress bar ) and "pinging" thread
- InquireServersGUI splash;
- splash.setPixmap( resMgr.loadPixmap( "LightApp", QObject::tr( "ABOUT_SPLASH" ) ) );
- SUIT_Tools::centerWidget( &splash, _qappl.desktop() );
-
- _qappl.setMainWidget( &splash );
- QObject::connect( &_qappl, SIGNAL( lastWindowClosed() ), &_qappl, SLOT( quit() ) );
- splash.show(); // display splash with running progress bar
- _qappl.exec(); // wait untill splash closes ( progress runs till end or Cancel is pressed )
-
- result = splash.getExitStatus(); // 1 is error
+ // Start servers check thread (splash)
+ if ( splash ) {
+ // ...lock mutex to block splash thread until wait( mutex )
+ _SplashMutex.lock();
+ // ...create servers checking thread
+ Session_ServerCheck sc( &_SplashMutex, &_SplashStarted );
+ // ...block this thread until servers checking is finished
+ _SplashStarted.wait( &_SplashMutex );
+ // ...unlock mutex 'cause it is no more needed
+ _SplashMutex.unlock();
+ // get servers checking thread status
+ result = splash->error();
+ QString info = splash->message().isEmpty() ? "%1" : QString( "%1\n%2" ).arg( splash->message() );
+ splash->setStatus( info.arg( "Activating desktop..." ) );
}
- else
- _SessionStarted.wait();
- }
- // call Session::GetInterface() if "GUI" parameter was passed ( default )
- if ( !result && isFound( "GUI", argc, argv ) )
- {
- CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" );
- SALOME::Session_var session = SALOME::Session::_narrow( obj ) ;
- ASSERT ( ! CORBA::is_nil( session ) );
-
- INFOS( "Session activated, Launch IAPP..." );
- guiThread = new GetInterfaceThread( session );
- guiThread->start();
+ // Finalize embedded servers launcher
+ // ...block this thread until launcher is finished
+ _ServerLaunch.wait( &_GUIMutex );
+ // ...unlock mutex 'cause it is no more needed
+ _GUIMutex.unlock();
}
- if ( !result )
- {
+ if ( !result ) {
+ // Launch GUI activator
+ if ( isGUI ) {
+ // ...retrieve Session interface reference
+ CORBA::Object_var obj = _NS->Resolve( "/Kernel/Session" );
+ SALOME::Session_var session = SALOME::Session::_narrow( obj ) ;
+ ASSERT ( ! CORBA::is_nil( session ) );
+ // ...create GUI launcher
+ INFOS( "Session activated, Launch IAPP..." );
+ guiThread = new GetInterfaceThread( session );
+ }
// GUI activation
// Allow multiple activation/deactivation of GUI
- while ( true )
- {
+ while ( true ) {
MESSAGE( "waiting wakeAll()" );
- _ServerLaunch.wait( &_GUIMutex ); // to be reseased by Launch server thread when ready:
+ _SessionStarted.wait( &_SessionMutex ); // to be reseased by Launch server thread when ready:
// atomic operation lock - unlock on mutex
// unlock mutex: serverThread runs, calls _ServerLaunch->wakeAll()
// this thread wakes up, and lock mutex
- _GUIMutex.unlock();
+ _SessionMutex.unlock();
// SUIT_Session creation
aGUISession = new SALOME_Session();
// aGUISession contains SalomeApp_ExceptionHandler
// Run GUI loop
MESSAGE( "run(): starting the main event loop" );
+
+ if ( splash )
+ splash->finish( aGUIApp->desktop() );
+
result = _qappl.exec();
+
+ if ( splash )
+ delete splash;
+ splash = 0;
if ( result == SUIT_Session::FROM_GUI ) // desktop is closed by user from GUI
break;
aGUISession = 0;
// Prepare _GUIMutex for a new GUI activation
- _GUIMutex.lock();
+ _SessionMutex.lock();
}
}
+ // unlock Session mutex
+ _SessionMutex.unlock();
+
if ( myServerLauncher )
myServerLauncher->KillAll(); // kill embedded servers
SalomeApp_Engine_i* SalomeApp_Engine_i::myInstance = NULL;
+/*!
+ Constructor
+*/
SalomeApp_Engine_i::SalomeApp_Engine_i()
{
myInstance = this;
}
+/*!
+ Destructor
+*/
SalomeApp_Engine_i::~SalomeApp_Engine_i()
{
}
mapOfListOfFiles[componentName] = theListOfFiles;
}
+/*!
+ \return shared instance of engine
+*/
SalomeApp_Engine_i* SalomeApp_Engine_i::GetInstance()
{
return myInstance;
--- /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/
+//
+// File: Session_ServerCheck.cxx
+// Author: Vadim SANDLER
+
+#include "Session_ServerCheck.hxx"
+#include <QtxSplash.h>
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOME_Session)
+#include CORBA_CLIENT_HEADER(SALOME_Registry)
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
+#include CORBA_CLIENT_HEADER(SALOME_Component)
+
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "SALOME_NamingService.hxx"
+#include "utilities.h"
+#include "OpUtil.hxx"
+
+// Default settings
+const int __DEFAULT__ATTEMPTS__ = 300; // number of checks attemtps
+ // can be overrided by CSF_RepeatServerRequest
+ // environment variable
+const int __DEFAULT__DELAY__ = 100000; // delay between attempts (microseconds)
+ // can be overrided by CSF_DelayServerRequest
+ // environment variable
+
+/*!
+ Constructor
+*/
+Session_ServerCheck::Session_ServerCheck( QMutex* mutex, QWaitCondition* wc )
+ : QThread(),
+ myMutex( mutex ),
+ myWC( wc ),
+ myCheckCppContainer( false ),
+ myCheckPyContainer( false ),
+ myCheckSVContainer( false ),
+ myAttempts( __DEFAULT__ATTEMPTS__ ),
+ myDelay ( __DEFAULT__DELAY__ )
+{
+ char* cenv;
+ // try to get nb of attempts from environment variable
+ if ( ( cenv = getenv( "CSF_RepeatServerRequest" ) ) && atoi( cenv ) > 0 )
+ myAttempts = atoi( cenv );
+ // try to get delay between attempts from environment variable
+ if ( ( cenv = getenv( "CSF_DelayServerRequest" ) ) && atoi( cenv ) > 0 )
+ myDelay = atoi( cenv );
+
+ // check if it is necessary to wait containers
+ for ( int i = 1; i < qApp->argc(); i++ ) {
+ if ( !strcmp( qApp->argv()[i], "CPP" ) )
+ myCheckCppContainer = true;
+ if ( !strcmp( qApp->argv()[i], "PY" ) )
+ myCheckPyContainer = true;
+ if ( !strcmp( qApp->argv()[i], "SUPERV" ) )
+ myCheckSVContainer = true;
+ }
+
+ // start thread
+ start();
+}
+
+/*!
+ Destructor
+*/
+Session_ServerCheck::~Session_ServerCheck()
+{
+}
+
+/*!
+ Thread loop. Checnk SALOME servers and shows status message
+ in the splash screen.
+*/
+void Session_ServerCheck::run()
+{
+ // automatic locker
+ class Locker
+ {
+ public:
+ QMutex* _m;
+ QWaitCondition* _wc;
+ Locker( QMutex* m, QWaitCondition* wc ) : _m( m ), _wc( wc )
+ {
+ _m->lock();
+ _m->unlock();
+ }
+ ~Locker()
+ {
+ _wc->wakeAll();
+ }
+ };
+
+ // lock mutex (ensure splash is shown)
+ Locker locker( myMutex, myWC );
+
+ // set initial splash status
+ QtxSplash* splash = QtxSplash::splash();
+
+ int cnt = 5; // base servers
+ if ( myCheckCppContainer ) cnt++; // + C++ container
+ if ( myCheckPyContainer ) cnt++; // + Python container
+ if ( myCheckSVContainer ) cnt++; // + supervision container
+
+ splash->setProgress( 0, cnt * myAttempts );
+ QString initialInfo = splash->message();
+ QString info = initialInfo.isEmpty() ? "%1" : QString( "%1\n%2" ).arg( initialInfo );
+
+ // start check servers
+ int i;
+ int current = 0;
+ bool bOk;
+ QString error;
+ int argc = qApp->argc();
+ char** argv = qApp->argv();
+
+ // 1. Check naming service
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for naming service..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ CORBA::Object_var obj = orb->resolve_initial_references( "NameService" );
+ CosNaming::NamingContext_var _root_context = CosNaming::NamingContext::_narrow( obj );
+ if ( !CORBA::is_nil( _root_context ) ) {
+ bOk = true;
+ break;
+ }
+ }
+ catch( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "CORBA::COMM_FAILURE: unable to contact the naming service" );
+ }
+ catch( ... ) {
+ MESSAGE( "Unknown Exception: unable to contact the naming service" );
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( "Unable to contact the naming service.\n%1" );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for naming service...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+
+ // 2. Check registry server
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for registry server..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ CORBA::Object_var obj = NS.Resolve( "/Registry" );
+ Registry::Components_var registry = Registry::Components::_narrow( obj );
+ if ( !CORBA::is_nil( registry ) ) {
+ MESSAGE( "/Registry is found" );
+ registry->ping();
+ MESSAGE( "Registry was activated" );
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Registry server is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for registry server...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+
+ // 3. Check data server
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for study server..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ CORBA::Object_var obj = NS.Resolve( "/myStudyManager" );
+ SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow( obj );
+ if ( !CORBA::is_nil( studyManager ) ) {
+ MESSAGE( "/myStudyManager is found" );
+ studyManager->ping();
+ MESSAGE( "StudyManager was activated" );
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Study server is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for study server...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+
+ // 4. Check module catalogue server
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for module catalogue server..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ CORBA::Object_var obj = NS.Resolve( "/Kernel/ModulCatalog" );
+ SALOME_ModuleCatalog::ModuleCatalog_var catalog = SALOME_ModuleCatalog::ModuleCatalog::_narrow( obj );
+ if ( !CORBA::is_nil( catalog ) ){
+ MESSAGE( "/Kernel/ModulCatalog is found" );
+ catalog->ping();
+ MESSAGE( "ModuleCatalog was activated" );
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Module catalogue server is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for module catalogue server...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+
+ // 5. Check data server
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for session server..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ CORBA::Object_var obj = NS.Resolve( "/Kernel/Session" );
+ SALOME::Session_var session = SALOME::Session::_narrow( obj );
+ if ( !CORBA::is_nil( session ) ) {
+ MESSAGE( "/Kernel/Session is found" );
+ session->ping();
+ MESSAGE( "SALOME_Session was activated" );
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Session server is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for session server...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+
+ // 6. Check C++ container
+ if ( myCheckCppContainer ) {
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for C++ container..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ QString containerName = QString( "/Containers/%1/FactoryServer" ).arg( GetHostname() );
+ CORBA::Object_var obj = NS.Resolve( containerName.latin1() );
+ Engines::Container_var FScontainer = Engines::Container::_narrow( obj );
+ if ( !CORBA::is_nil( FScontainer ) ) {
+ MESSAGE( containerName.latin1() << " is found" );
+ FScontainer->ping();
+ MESSAGE( "FactoryServer container was activated" );
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "C++ container is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for C++ container...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+ }
+
+ // 7. Check Python container
+ if ( myCheckPyContainer ) {
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for Python container..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ QString containerName = QString( "/Containers/%1/FactoryServerPy" ).arg( GetHostname() );
+ CORBA::Object_var obj = NS.Resolve( containerName.latin1() );
+ Engines::Container_var FSPcontainer = Engines::Container::_narrow( obj );
+ if ( !CORBA::is_nil( FSPcontainer ) ) {
+ MESSAGE( containerName.latin1() << " is found" );
+ FSPcontainer->ping();
+ MESSAGE("FactoryServerPy container was activated");
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Python container is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for Python container...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+ }
+
+ // 8. Check supervision container
+ if ( myCheckSVContainer ) {
+ bOk = false;
+ for ( i = 0; i < myAttempts ; i++ ) {
+ QtxSplash::setStatus( info.arg( "Waiting for Supervision container..." ), current * myAttempts + i );
+ QThread::usleep( i == 0 ? 500000 : myDelay );
+ try {
+ CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
+ SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance();
+ ASSERT( SINGLETON_<SALOME_NamingService>::IsAlreadyExisting() );
+ NS.init_orb( orb );
+ QString containerName = QString( "/Containers/%1/SuperVisionContainer" ).arg( GetHostname() );
+ CORBA::Object_var obj = NS.Resolve( containerName.latin1() );
+ Engines::Container_var SVcontainer = Engines::Container::_narrow( obj );
+ if ( !CORBA::is_nil( SVcontainer ) ) {
+ MESSAGE( containerName.latin1() << " is found" );
+ SVcontainer->ping();
+ MESSAGE("SuperVisionContainer container was activated");
+ bOk = true;
+ break;
+ }
+ }
+ catch ( ServiceUnreachable& ) {
+ MESSAGE( "Caught exception: Naming Service unreachable." );
+ error = "Naming service unreachable";
+ }
+ catch ( CORBA::COMM_FAILURE& ) {
+ MESSAGE( "Caught CORBA::SystemException CommFailure." );
+ error = "Caught CORBA::SystemException CommFailure.";
+ }
+ catch ( CORBA::SystemException& ) {
+ MESSAGE( "Caught CORBA::SystemException." );
+ error = "Caught CORBA::SystemException.";
+ }
+ catch ( CORBA::Exception& ) {
+ MESSAGE( "Caught CORBA::Exception." );
+ error = "Caught CORBA::Exception.";
+ }
+ catch (...) {
+ MESSAGE( "Caught unknown exception." );
+ error = "Caught unknown exception.";
+ }
+ }
+ if ( !bOk ) {
+ QtxSplash::error( QString( "Supervision container is not found.\n%1" ).arg ( error ) );
+ return;
+ }
+ QtxSplash::setStatus( info.arg( "Waiting for Supervision container...OK" ), ++current * myAttempts );
+ QThread::usleep( 300000 );
+ }
+ // clear splash status
+ splash->setProgress( 0, 0 );
+ splash->setStatus( initialInfo );
+}
--- /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/
+//
+// File: Session_ServerCheck.hxx
+// Author: Vadim SANDLER
+
+#if !defined(SESSION_SERVERCHECK_HXX)
+#define SESSION_SERVERCHECK_HXX
+
+#ifdef WNT
+#include <SALOME_WNT.hxx>
+#else
+#define SALOME_WNT_EXPORT
+#endif
+
+#include <qthread.h>
+#include <qapplication.h>
+
+class QMutex;
+class QWaitCondition;
+
+/*!
+ Class Session_ServerCheck : check SALOME servers
+*/
+class SALOME_WNT_EXPORT Session_ServerCheck : public QThread
+{
+public:
+ // constructor
+ Session_ServerCheck( QMutex*, QWaitCondition* );
+ // destructor
+ virtual ~Session_ServerCheck();
+
+ // thread loop
+ virtual void run() ;
+
+private:
+ QMutex* myMutex; // splash mutex
+ QWaitCondition* myWC; // splash wait condition
+
+ bool myCheckCppContainer; // flag : check C++ container ?
+ bool myCheckPyContainer; // flag : check Python container ?
+ bool myCheckSVContainer; // flag : check supervision container ?
+ int myAttempts; // number of checks attemtps to get response from server
+ int myDelay; // delay between two attempts in microseconds
+};
+
+#endif
#include "Utils_SALOME_Exception.hxx"
#include "utilities.h"
using namespace std;
-//=============================================================================
/*!
- * default constructor not for use
+ default constructor not for use
*/
-//=============================================================================
-
Session_ServerLauncher::Session_ServerLauncher()
{
ASSERT(0); // must not be called
}
-//=============================================================================
/*!
- * constructor
- */
-//=============================================================================
-
+ constructor
+*/
Session_ServerLauncher::Session_ServerLauncher(int argc,
char ** argv,
CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
QMutex *GUIMutex,
QWaitCondition *ServerLaunch,
+ QMutex *SessionMutex,
QWaitCondition *SessionStarted)
{
_argc = argc;
_root_poa = PortableServer::POA::_duplicate(poa);
_GUIMutex = GUIMutex;
_ServerLaunch = ServerLaunch;
+ _SessionMutex = SessionMutex;
_SessionStarted = SessionStarted;
+
+ // start thread
+ start();
}
-//=============================================================================
/*!
- * destructor
- */
-//=============================================================================
-
+ destructor
+*/
Session_ServerLauncher::~Session_ServerLauncher()
{
}
-//=============================================================================
/*!
- * Check args and activate servers
- */
-//=============================================================================
-
+ Check args and activate servers
+*/
void Session_ServerLauncher::run()
{
- _GUIMutex->lock(); // lock released by calling thread when ready: wait(mutex)
- _GUIMutex->unlock();
+ // wait until main thread is ready
+ _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread
+ // wait condition's wait(mutex)
+ _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed
+
+ // wake main thread
_ServerLaunch->wakeAll();
CheckArgs();
ActivateAll();
- _SessionStarted->wakeAll(); // wake main thread
+ // wait until main thread is ready
+ _GUIMutex->lock(); // ... lock mutex (it is unlocked my calling thread
+ // wait condition's wait(mutex)
+ _GUIMutex->unlock(); // ... and unlock it 'cause it is not more needed
- _orb->run(); // this thread wait, during omniORB process events
+ // wake main thread
+ _ServerLaunch->wakeAll();
+
+ // run ORB
+ _orb->run(); // this thread waits, during omniORB process events
}
-//=============================================================================
/*!
- * controls and dispatchs arguments given with command
- */
-//=============================================================================
-
+ controls and dispatchs arguments given with command
+*/
void Session_ServerLauncher::CheckArgs()
{
int argState = 0;
throw SALOME_Exception(LOCALIZED("Error in command arguments, missing parenthesis ')'"));
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerLauncher::ActivateAll()
{
list<ServArg>::iterator itServ;
std::cout << "*** activating [" << argc << "] : " << argv[0] << std::endl;
Session_ServerThread* aServerThread
- = new Session_ServerThread(argc, argv, _orb,_root_poa,_GUIMutex);
+ = new Session_ServerThread(argc, argv, _orb,_root_poa);
_serverThreads.push_front(aServerThread);
aServerThread->Init();
char** argv = new char*[argc];
argv[0] = "Session";
Session_SessionThread* aServerThread
- = new Session_SessionThread(argc, argv, _orb,_root_poa,_GUIMutex,_ServerLaunch);
+ = new Session_SessionThread(argc, argv, _orb,_root_poa,_SessionMutex,_SessionStarted);
_serverThreads.push_front(aServerThread);
aServerThread->Init();
}
-//=============================================================================
/*!
- * Destruction des classes serveur dans l'ordre inverse de creation
- */
-//=============================================================================
-
+ Destruction des classes serveur dans l'ordre inverse de creation
+*/
void Session_ServerLauncher::KillAll()
{
MESSAGE("Session_ServerLauncher::KillAll()");
PortableServer::POA_ptr poa,
QMutex *GUIMutex,
QWaitCondition *ServerLaunch,
+ QMutex *SessionMutex,
QWaitCondition *SessionStarted);
virtual ~Session_ServerLauncher();
void run();
private:
int _argc;
char ** _argv;
- CORBA::ORB_var _orb;
- PortableServer::POA_var _root_poa;
- QMutex* _GUIMutex;
- QWaitCondition *_ServerLaunch;
- QWaitCondition *_SessionStarted;
- list<ServArg> _argServToLaunch;
- vector<string> _argCopy;
+ CORBA::ORB_var _orb;
+ PortableServer::POA_var _root_poa;
+ QMutex* _GUIMutex;
+ QWaitCondition* _ServerLaunch;
+ QMutex* _SessionMutex;
+ QWaitCondition* _SessionStarted;
+ list<ServArg> _argServToLaunch;
+ vector<string> _argCopy;
list<Session_ServerThread*> _serverThreads;
};
"SalomeAppEngine",
"ContainerManager"};
-//=============================================================================
/*!
- * default constructor not for use
- */
-//=============================================================================
-
+ default constructor not for use
+*/
Session_ServerThread::Session_ServerThread()
{
ASSERT(0); // must not be called
}
-//=============================================================================
/*!
- * constructor
- */
-//=============================================================================
-
+ constructor
+*/
Session_ServerThread::Session_ServerThread(int argc,
char ** argv,
CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- QMutex *GUIMutex)
+ PortableServer::POA_ptr poa)
{
//MESSAGE("Session_ServerThread Constructor " << argv[0]);
_argc = argc;
_argv = argv;
_orb = CORBA::ORB::_duplicate(orb);
_root_poa = PortableServer::POA::_duplicate(poa);
- _GUIMutex = GUIMutex;
_servType =-1;
_NS = new SALOME_NamingService(_orb); // one instance per server to limit
// multi thread coherence problems
}
-//=============================================================================
/*!
- * destructor
- */
-//=============================================================================
-
+ destructor
+*/
Session_ServerThread::~Session_ServerThread()
{
//MESSAGE("~Session_ServerThread "<< _argv[0]);
}
-//=============================================================================
/*!
- * run the thread : activate one servant, the servant type is given by
- * argument _argv[0]
- */
-//=============================================================================
-
+ run the thread : activate one servant, the servant type is given by
+ argument _argv[0]
+*/
void Session_ServerThread::Init()
{
MESSAGE("Session_ServerThread::Init "<< _argv[0]);
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateModuleCatalog(int argc,
char ** argv)
{
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateSALOMEDS(int argc,
char ** argv)
{
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateRegistry(int argc,
char ** argv)
{
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateContainerManager(int argc,
char ** argv)
{
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateContainer(int argc,
char ** argv)
{
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateEngine(int /*argc*/, char ** /*argv*/)
{
try
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
void Session_ServerThread::ActivateSession(int argc,
char ** argv)
{
MESSAGE("Session_ServerThread::ActivateSession() not implemented!");
}
+/*!
+ constructor
+*/
Session_SessionThread::Session_SessionThread(int argc,
char** argv,
CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
QMutex* GUIMutex,
QWaitCondition* GUILauncher)
-: Session_ServerThread(argc, argv, orb, poa, GUIMutex),
+: Session_ServerThread(argc, argv, orb, poa),
+ _GUIMutex( GUIMutex ),
_GUILauncher( GUILauncher )
{
}
+/*!
+ destructor
+*/
Session_SessionThread::~Session_SessionThread()
{
}
Session_ServerThread(int argc,
char ** argv,
CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- QMutex *GUIMutex);
+ PortableServer::POA_ptr poa);
virtual ~Session_ServerThread();
void Init();
protected:
int _servType;
CORBA::ORB_var _orb;
PortableServer::POA_var _root_poa;
- QMutex* _GUIMutex;
SALOME_NamingService * _NS;
};
protected:
virtual void ActivateSession ( int argc, char ** argv );
private:
+ QMutex* _GUIMutex;
QWaitCondition* _GUILauncher;
};
using namespace std;
-//=============================================================================
-/*! SALOME_Session_i
- * constructor
- */
-//=============================================================================
-
+/*!
+ constructor
+*/
SALOME_Session_i::SALOME_Session_i(int argc,
char ** argv,
CORBA::ORB_ptr orb,
//MESSAGE("constructor end");
}
-//=============================================================================
-/*! GetVisuComponent
- * returns Visu component
- */
-//=============================================================================
-
+/*!
+ returns Visu component
+*/
Engines::Component_ptr SALOME_Session_i::GetComponent(const char* theLibraryName)
{
typedef Engines::Component_ptr TGetImpl(CORBA::ORB_ptr,
return Engines::Component::_nil();
}
-//=============================================================================
-/*! ~SALOME_Session_i
- * destructor
- */
-//=============================================================================
-
+/*!
+ destructor
+*/
SALOME_Session_i::~SALOME_Session_i()
{
//MESSAGE("destructor end");
}
-//=============================================================================
-/*! NSregister
- * tries to find the Corba Naming Service and to register the session,
- * gives naming service interface to _IAPPThread
- */
-//=============================================================================
-
+/*!
+ tries to find the Corba Naming Service and to register the session,
+ gives naming service interface to _IAPPThread
+*/
void SALOME_Session_i::NSregister()
{
SALOME::Session_ptr pSession = SALOME::Session::_narrow(_this());
//MESSAGE("Session registered in Naming Service");
}
-//=============================================================================
-/*! GetInterface
- * Launches the GUI if there is none.
- * The Corba method is oneway (corba client does'nt wait for GUI completion)
- */
-//=============================================================================
-
+/*!
+ Launches the GUI if there is none.
+ The Corba method is oneway (corba client does'nt wait for GUI completion)
+*/
void SALOME_Session_i::GetInterface()
{
_GUIMutex->lock();
}
}
-//=============================================================================
-/*! StopSession
- * Kills the session if there are no active studies nore GUI
- */
-//=============================================================================
+/*!
+ Kills the session if there are no active studies nore GUI
+*/
class CloseEvent : public SALOME_Event
{
public:
}
};
+/*!
+ Processes event to close session
+*/
void SALOME_Session_i::StopSession()
{
ProcessVoidEvent( new CloseEvent() );
}
-//=============================================================================
-/*! StatSession
- * Send a SALOME::StatSession structure (see idl) to the client
- * (number of running studies and presence of GUI)
- */
-//=============================================================================
-
+/*!
+ Send a SALOME::StatSession structure (see idl) to the client
+ (number of running studies and presence of GUI)
+*/
class QtLock
{
public:
{
long aStudyId=-1;
if ( SUIT_Session::session() && SUIT_Session::session()->activeApplication() ) {
- aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id();
+ if ( SUIT_Session::session()->activeApplication()->activeStudy() ) // mkr : IPAL12128
+ aStudyId = SUIT_Session::session()->activeApplication()->activeStudy()->id();
}
return aStudyId;
}
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : SalomeApp
mkdir -p $@
$(INSTALL_COPYLIB):
- (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib/salome/%.so, $(filter %.la, $(LIB))) $@) || true
+ (cd $(bindir)/styles; ln -sf $(patsubst %.la, ../../../lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.la, $(LIB))) $@) || true
@CONCLUDE@
Descr: Style for SALOME platform
*/
+/*!
+ Constructor
+*/
SalomeStyle::SalomeStyle()
: myTitleParent( 0 )
{
qApp->installEventFilter( this );
}
+/*!
+ Destructor
+*/
SalomeStyle::~SalomeStyle()
{
}
+/*!
+ Delayed initialization of style
+*/
void SalomeStyle::polish( QWidget* w )
{
if ( !w )
PARENT_STYLE::polish( w );
}
+/*!
+ Custom event filter
+*/
bool SalomeStyle::eventFilter( QObject* o, QEvent* e )
{
if ( e->type() == QEvent::FocusIn || e->type() == QEvent::FocusOut )
return x;
}
+/*!
+ Mixes two colors, part of first is 1-t, part of second is t
+ \param t - part parameter
+ \param c1, c2 - colors
+ \param res - result color
+*/
void SalomeStyle::mix( const double t, const QColor& c1, const QColor& c2, QColor& res )
{
if( t<0.0 || t>1.0 )
res.setRgb( r, g, b );
}
+/*!
+ Mixes two colors, part of first is 1-t, part of second is t
+ \param t - part parameter
+ \param rgb1, rgb2 - colors (result is stored in rgb1)
+*/
void SalomeStyle::mix( const double t, QRgb& rgb1, const QRgb& rgb2 )
{
if( t<0.0 || t>1.0 )
rgb1 = qRgba( c[0][0], c[0][1], c[0][2], qAlpha( rgb1 ) );
}
+/*!
+ Mixes colors of pixmap points with other color
+ \param t - part parameter
+ \param pix - pixmap to be processed
+ \param col - other color
+*/
void SalomeStyle::mix( const double t, QPixmap& pix, const QColor& col )
{
if( t<0.0 || t>1.0 )
pix = anImage;
}
+/*!
+ Converts pixmap to grayscale
+ \param pix - pixmap to be processed
+ \param k - factor (gray value after conversion will be multiplied on it and truncated by 255.0)
+*/
void SalomeStyle::toGrayscale( QPixmap& pix, double k )
{
QImage anImage = pix.convertToImage();
pix = anImage;
}
+/*!
+ Draws gradient filling
+ \param p - painter
+ \param r - rect
+ \param c1, c2 - two colors of gradient
+ \param d - direction of gradient
+ \param f - gradient function (maps co-ordinate to part parameter)
+*/
void SalomeStyle::drawGradient( QPainter* p, const QRect& r,
const QColor& c1, const QColor& c2,
const Direction d, gradient_func f ) const
p->restore();
}
+/*!
+ Draws primitive element
+ \param pe - type of primitive element
+ \param p - painter
+ \param r - rect
+ \param cg - group of colors
+ \param flags - is used to control how the PrimitiveElement is drawn
+ \param opt - can be used to control how various PrimitiveElements are drawn
+*/
void SalomeStyle::drawPrimitive( PrimitiveElement pe, QPainter* p, const QRect& r,
const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const
{
}
}
+/*!
+ Draws control element
+ \param element - type of control element
+ \param p - painter
+ \param widget - widget
+ \param r - rect
+ \param cg - group of colors
+ \param flags - is used to control how the element is drawn
+ \param opt - can be used to control how various elements are drawn
+*/
void SalomeStyle::drawControl( ControlElement element, QPainter* p, const QWidget* widget, const QRect& r,
const QColorGroup& cg, SFlags flags, const QStyleOption& opt ) const
{
}
}
+/*!
+ \return the sub-area for the widget in logical coordinates
+ \param subrect - type of sub area
+ \param w - widget
+*/
QRect SalomeStyle::subRect( SubRect subrect, const QWidget* w ) const
{
QRect r = PARENT_STYLE::subRect( subrect, w );
return r;
}
+/*!
+ Draws the ComplexControl
+ \param control - type of complex control element
+ \param p - painter
+ \param widget - widget
+ \param r - rect
+ \param cg - group of colors
+ \param flags, controls, active - is used to control how the element is drawn
+ \param opt - can be used to control how various elements are drawn
+*/
void SalomeStyle::drawComplexControl( ComplexControl control, QPainter* p, const QWidget* widget,
const QRect& r, const QColorGroup& cg, SFlags flags,
SCFlags controls, SCFlags active, const QStyleOption& opt ) const
}
}
+/*!
+ \return pixmap by type
+ \param st - type of pixmap
+ \param w - widget
+ \param opt - style option flags
+*/
QPixmap SalomeStyle::stylePixmap( StylePixmap st, const QWidget* w, const QStyleOption& opt ) const
{
switch ( st )
}
}
+/*!
+ \return the pixel size
+ \param pm - type of pixel metrics
+ \param widget - widget
+*/
int SalomeStyle::pixelMetric( PixelMetric pm, const QWidget* widget ) const
{
int ret = 0;
return ret;
}
+/*!
+ \return corrected title text
+ \param txt - title text
+ \param w - possible width
+ \param fm - font metrics
+*/
QString SalomeStyle::titleText( const QString& txt, const int W, const QFontMetrics& fm ) const
{
QString res = txt.stripWhiteSpace();
/*!
Class: SalomeStylePlugin [Internal]
- Descr: Plugin for Qt style mechanism
+ Constructor
*/
-
SalomeStylePlugin::SalomeStylePlugin()
{
}
+/*!
+ Destructor
+*/
SalomeStylePlugin::~SalomeStylePlugin()
{
}
+/*!
+ \return keys of styles of plugin
+*/
QStringList SalomeStylePlugin::keys() const
{
return QStringList() << "salome";
}
+/*!
+ \return just created style
+ \param str - style key
+*/
QStyle* SalomeStylePlugin::create( const QString& str )
{
if ( str == "salome" )
LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl
-CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
-CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
+CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS)
+CXXFLAGS += $(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) $(KERNEL_CXXFLAGS)
-LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) -L$(KERNEL_ROOT_DIR)/lib/salome -lSalomeNS -lOpUtil
+LDFLAGS += $(QT_MT_LIBS) -lsuit $(CAS_KERNEL) $(KERNEL_LDFLAGS) -lSalomeNS -lOpUtil
@CONCLUDE@
#include "ToolsGUI.h"
-//=======================================================================
-// name : GetVisibility
-// Purpose : Verify whether object is visible or not
-//=======================================================================
+/*!
+ \return true if object is visible
+*/
bool ToolsGUI::GetVisibility( _PTR(Study) theStudy,
_PTR(SObject) theObj,
void* theId )
return false;
}
-//=======================================================================
-// name : SetVisibility
-// Purpose : Set flag visibility of object
-//=======================================================================
+/*!
+ Set flag visibility of object
+ \param theStudy - study
+ \param theEntry - entry
+ \param theValue - flag visibility
+ \param theId - id
+*/
bool ToolsGUI::SetVisibility( _PTR(Study) theStudy,
const char* theEntry,
const bool theValue,
return false;
}
-
-
-
-
-
#define MARGIN_SIZE 11
#define MIN_EDIT_SIZE 250
-//=================================================================================
-// class : ToolsGUI_CatalogGeneratorDlg()
-// purpose : Constructor
-//=================================================================================
+/*!
+ Constructor
+*/
ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, const char* name )
: QDialog( parent, name, TRUE, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
{
updateButtonState();
}
-//=================================================================================
-// function : ~ToolsGUI_CatalogGeneratorDlg()
-// purpose : destructor
-//=================================================================================
+/*!
+ destructor
+*/
ToolsGUI_CatalogGeneratorDlg::~ToolsGUI_CatalogGeneratorDlg()
{
}
-//=================================================================================
-// function : getIdlFile()
-// purpose : gets IDL file name entered
-//=================================================================================
+/*!
+ \return IDL file name entered
+*/
QString ToolsGUI_CatalogGeneratorDlg::getIdlFile()
{
return myIdlEdit->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getXmlFile()
-// purpose : gets XML file name entered
-//=================================================================================
+/*!
+ \return XML file name entered
+*/
QString ToolsGUI_CatalogGeneratorDlg::getXmlFile()
{
return myXmlEdit->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getPngFile()
-// purpose : gets PNG file name entered
-//=================================================================================
+/*!
+ \return PNG file name entered
+*/
QString ToolsGUI_CatalogGeneratorDlg::getPngFile()
{
return myPngEdit->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getAuthor()
-// purpose : gets author
-//=================================================================================
+/*!
+ \return author
+*/
QString ToolsGUI_CatalogGeneratorDlg::getAuthor()
{
return myAuthorEdit->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getVersion()
-// purpose : gets version number
-//=================================================================================
+/*!
+ \return version number
+*/
QString ToolsGUI_CatalogGeneratorDlg::getVersion()
{
return myVersionEdit->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getCompName()
-// purpose : gets name of the component
-//=================================================================================
+/*!
+ \return name of the component
+*/
QString ToolsGUI_CatalogGeneratorDlg::getCompName()
{
return myCompName->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getCompUserName()
-// purpose : gets username of the component
-//=================================================================================
+/*!
+ \return username of the component
+*/
QString ToolsGUI_CatalogGeneratorDlg::getCompUserName()
{
return myCompUserName->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getCompType()
-// purpose : gets type of the component
-//=================================================================================
+/*!
+ \return type of the component
+*/
QString ToolsGUI_CatalogGeneratorDlg::getCompMultiStd()
{
return myCompMultiStd->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getComptype()
-// purpose : gets type of the component
-//=================================================================================
+
+/*!
+ \return type of the component
+*/
QString ToolsGUI_CatalogGeneratorDlg::getCompType()
{
return myCompType->text().stripWhiteSpace();
}
-//=================================================================================
-// function : getIdlPath()
-// purpose : gets IDL path of modules
-//=================================================================================
+/*!
+ \return IDL path of modules
+*/
QString ToolsGUI_CatalogGeneratorDlg::getIdlPath()
{
cout << "QAD_Desktop::getCatalogue() is not implemented!!";
*/
}
-//=================================================================================
-// function : onBrowseBtnClicked()
-// purpose : <...> (Browse) buttons slot
-//=================================================================================
+/*!
+ SLOT: called on Browse button click
+*/
void ToolsGUI_CatalogGeneratorDlg::onBrowseBtnClicked()
{
QPushButton* send = (QPushButton*)sender();
updateButtonState();
}
-//=================================================================================
-// function : updateButtonState()
-// purpose : Updates <OK> button's state
-//=================================================================================
+/*!
+ Updates <OK> button's state
+*/
void ToolsGUI_CatalogGeneratorDlg::updateButtonState()
{
myApplyBtn->setEnabled( !myIdlEdit->text().stripWhiteSpace().isEmpty() &&
!myXmlEdit->text().stripWhiteSpace().isEmpty() );
}
-//=================================================================================
-// function : onApply()
-// purpose : <Apply> button slot, performs IDL->XML conversion
-//=================================================================================
+/*!
+ <Apply> button slot, performs IDL->XML conversion
+*/
void ToolsGUI_CatalogGeneratorDlg::onApply()
{
QString IDLpath = getIdlPath();
class QLineEdit;
class QPushButton;
-//=================================================================================
-// class : ToolsGUI_CatalogGeneratorDlg
-// purpose :
-//=================================================================================
class Standard_EXPORT ToolsGUI_CatalogGeneratorDlg : public QDialog
{
Q_OBJECT
using namespace std;
+/*!
+ Constructor
+*/
ToolsGUI_HelpWindow::ToolsGUI_HelpWindow(QWidget* parent, const char* name )
: QMainWindow( parent, name, WType_TopLevel | WDestructiveClose )
{
#define SPACING_SIZE 6
#define MIN_SPIN_WIDTH 100
+/*!
+ Constructor
+*/
ToolsGUI_IntervalWindow::ToolsGUI_IntervalWindow ( QWidget* parent )
- : QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose )
+: QDialog( parent, "ToolsGUI_IntervalWindow" , true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose )
{
BEGIN_OF("ToolsGUI_IntervalWindow constructor")
setCaption( tr( "Refresh Interval" ) );
END_OF("ToolsGUI_IntervalWindow constructor")
}
+
+/*!
+ Destructor
+*/
ToolsGUI_IntervalWindow::~ToolsGUI_IntervalWindow() {}
-/*
+
+/*!
Sets start interval size
*/
void ToolsGUI_IntervalWindow::setValue(const int size)
mySpinBox->setValue(size);
}
-/*
- Gets interval size
+/*!
+ \return interval size
*/
int ToolsGUI_IntervalWindow::getValue()
{
return mySpinBox->value();
}
-/*
- gets a pointer to myButtonOk
+/*!
+ \return a pointer to myButtonOk
*/
QPushButton* ToolsGUI_IntervalWindow::Ok()
{
return myButtonOk;
}
-/*
- gets a pointer to myButtonCancel
+/*!
+ \return a pointer to myButtonCancel
*/
QPushButton* ToolsGUI_IntervalWindow::Cancel()
{
a.append( BOLD( QString::number( int( c_info.uid ) ) ) );
a.append( QString( " )<br> " ) + tr( "in directory" ) + QString( " " ));
a.append( BOLD( c_info.cdir ) );
-
+
+ time_t aTime;
a.append( QString( "<br>" ) + tr( "begins" ) + QString( " " ) );
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
a.append( BOLD( t1 ) );
delete [] t1;
if (c_info.tc_hello != 0 )
{
- char * t2 = (char * )duplicate(ctime(&c_info.tc_hello));
+ aTime = time_t(c_info.tc_hello);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
a.append( tr( "last signal" ) + QString(" : ") );
a.append( BOLD( t2 ) );
}
if ((c_info.tc_end - c_info.difftime) != 0)
{
- char * t3 = (char * )duplicate(ctime(&c_info.tc_end));
+ aTime = time_t(c_info.tc_end);
+ char * t3 = (char * )duplicate(ctime(&aTime));
t3 [strlen(t3) -1 ] = ' ';
a.append( tr( "ends" ) + QString( " " ) );
a.append( BOLD( t3 ) );
_history->clear();
try
{
+ time_t aTime;
_serverhistory = _VarComponents->history();
for (CORBA::ULong i=0; i<_serverhistory->length(); i++)
{
ASSERT( c_info.name!=NULL);
QString a;
a.setNum(int(c_info.pid));
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
- char * t2 = (char * )duplicate(ctime(&c_info.tc_end));
+ aTime = time_t(c_info.tc_end);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
QListViewItem * item = new QListViewItem(_history, QString(c_info.name),\
a, QString(c_info.pwname), QString(c_info.machine), \
_clients->clear();
try
{
+ time_t aTime;
_serverclients = _VarComponents->getall();
for (CORBA::ULong i=0; i<_serverclients->length(); i++)
{
ASSERT( c_info.name!=NULL);
QString a;
a.setNum(int(c_info.pid));
- char * t1 = (char * )duplicate(ctime(&c_info.tc_start));
+ aTime = time_t(c_info.tc_start);
+ char * t1 = (char * )duplicate(ctime(&aTime));
t1 [strlen(t1) -1 ] = ' ';
- char * t2 = (char * )duplicate(ctime(&c_info.tc_hello));
+ aTime = time_t(c_info.tc_hello);
+ char * t2 = (char * )duplicate(ctime(&aTime));
t2 [strlen(t2) -1 ] = ' ';
QListViewItem * item = new QListViewItem(_clients, QString(c_info.name),\
a, QString(c_info.pwname), QString(c_info.machine), \
END_OF("slotSelectRefresh");
}
+/*!
+ SLOT: called when IntervalWindow's OK button is clicked
+*/
void ToolsGUI_RegWidget::slotIntervalOk()
{
BEGIN_OF("slotIntervalOk");
+# Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
# File : Makefile.in
# Author : Vladimir Klyachin (OCN)
# Module : VTKViewer
@COMMENCE@
# header files
-EXPORT_HEADERS= VTKViewer_Actor.h \
- VTKViewer_CellRectPicker.h \
+EXPORT_HEADERS= \
+ VTKViewer.h \
+ VTKViewer_CellLocationsArray.h \
+ VTKViewer_Actor.h \
VTKViewer_ExtractUnstructuredGrid.h \
VTKViewer_ConvexTool.h \
VTKViewer_Filter.h \
VTKViewer_GeometryFilter.h \
VTKViewer_AppendFilter.h \
VTKViewer_Algorithm.h \
- VTKViewer.h \
VTKViewer_InteractorStyle.h \
VTKViewer_PassThroughFilter.h \
- VTKViewer_RectPicker.h \
VTKViewer_RenderWindow.h \
VTKViewer_RenderWindowInteractor.h \
VTKViewer_ShrinkFilter.h \
PO_FILES = \
VTKViewer_images.po \
- VTKViewer_msg_en.po \
- VTKViewerM_images.po \
- VTKViewerM_msg_en.po
-
+ VTKViewer_msg_en.po
+
# Libraries targets
LIB = libVTKViewer.la
-LIB_SRC= VTKViewer_Actor.cxx \
- VTKViewer_CellRectPicker.cxx \
- VTKViewer_ExtractUnstructuredGrid.cxx \
- VTKViewer_Filter.cxx \
- VTKViewer_GeometryFilter.cxx \
- VTKViewer_AppendFilter.cxx \
- VTKViewer_InteractorStyle.cxx \
- VTKViewer_PassThroughFilter.cxx \
- VTKViewer_RectPicker.cxx \
- VTKViewer_RenderWindow.cxx \
- VTKViewer_RenderWindowInteractor.cxx \
- VTKViewer_ShrinkFilter.cxx \
- VTKViewer_Transform.cxx \
- VTKViewer_TransformFilter.cxx \
- VTKViewer_Trihedron.cxx \
- VTKViewer_Utilities.cxx \
- VTKViewer_VectorText.cxx \
- VTKViewer_ViewManager.cxx \
- VTKViewer_ViewModel.cxx \
- VTKViewer_ConvexTool.cxx \
- VTKViewer_ViewWindow.cxx
+LIB_SRC= \
+ VTKViewer_CellLocationsArray.cxx \
+ VTKViewer_Actor.cxx \
+ VTKViewer_ExtractUnstructuredGrid.cxx \
+ VTKViewer_Filter.cxx \
+ VTKViewer_GeometryFilter.cxx \
+ VTKViewer_AppendFilter.cxx \
+ VTKViewer_InteractorStyle.cxx \
+ VTKViewer_PassThroughFilter.cxx \
+ VTKViewer_RenderWindow.cxx \
+ VTKViewer_RenderWindowInteractor.cxx \
+ VTKViewer_ShrinkFilter.cxx \
+ VTKViewer_Transform.cxx \
+ VTKViewer_TransformFilter.cxx \
+ VTKViewer_Trihedron.cxx \
+ VTKViewer_Utilities.cxx \
+ VTKViewer_VectorText.cxx \
+ VTKViewer_ViewManager.cxx \
+ VTKViewer_ViewModel.cxx \
+ VTKViewer_ConvexTool.cxx \
+ VTKViewer_ViewWindow.cxx
LIB_MOC = \
- VTKViewer_RenderWindow.h \
- VTKViewer_RenderWindowInteractor.h \
- VTKViewer_ViewManager.h \
- VTKViewer_ViewModel.h \
- VTKViewer_ViewWindow.h
+ VTKViewer_RenderWindow.h \
+ VTKViewer_RenderWindowInteractor.h \
+ VTKViewer_ViewManager.h \
+ VTKViewer_ViewModel.h \
+ VTKViewer_ViewWindow.h
BIN = VTKViewer
CPPFLAGS+=$(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES)
-LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL)
+LDFLAGS+=$(VTK_LIBS) $(QT_MT_LIBS) $(CAS_KERNEL) -lqtx -lsuit
-LDFLAGSFORBIN=$(LDFLAGS) -lqtx -lsuit
+LDFLAGSFORBIN=$(LDFLAGS)
@CONCLUDE@
\ No newline at end of file
//
// See http://www.salome-platform.org/
//
+
+#ifndef VTKVIEWER_H
+#define VTKVIEWER_H
+
#ifdef WNT
-#ifdef VTKVIEWER_EXPORTS
-#define VTKVIEWER_EXPORT __declspec( dllexport )
+# ifdef VTKVIEWER_EXPORTS
+# define VTKVIEWER_EXPORT __declspec( dllexport )
+# else
+# define VTKVIEWER_EXPORT __declspec( dllimport )
+# endif
#else
-#define VTKVIEWER_EXPORT __declspec( dllimport )
+# define VTKVIEWER_EXPORT
#endif
-#else
-#define VTKVIEWER_EXPORT
+
+#include <vtkSystemIncludes.h>
+
+#if !defined(vtkFloatingPointType)
+# define vtkFloatingPointType vtkFloatingPointType
+ typedef float vtkFloatingPointType;
+#endif
+
#endif
int VTKViewer_LINE_WIDTH = 3;
-//----------------------------------------------------------------------------
vtkStandardNewMacro(VTKViewer_Actor);
-
-//----------------------------------------------------------------------------
+/*!
+ Constructor
+*/
VTKViewer_Actor
::VTKViewer_Actor():
myIsHighlighted(false),
myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
}
-
-//----------------------------------------------------------------------------
+/*!
+ Destructor
+*/
VTKViewer_Actor
::~VTKViewer_Actor()
{
myProperty->Delete();
}
-
-//----------------------------------------------------------------------------
+/*!
+ \return name
+*/
const char*
VTKViewer_Actor
::getName()
return myName.c_str();
}
+/*!
+ Sets name
+ \param theName - new name
+*/
void
VTKViewer_Actor
::setName(const char* theName)
myName = theName;
}
-
-//----------------------------------------------------------------------------
+/*!
+ To publish the actor an all its internal devices
+*/
void
VTKViewer_Actor
::AddToRender(vtkRenderer* theRenderer)
theRenderer->AddActor(this);
}
+/*!
+ To remove the actor an all its internal devices
+*/
void
VTKViewer_Actor
::RemoveFromRender(vtkRenderer* theRenderer)
theRenderer->RemoveActor(this);
}
+/*!
+ Used to obtain all dependent actors
+*/
void
VTKViewer_Actor
::GetChildActors(vtkActorCollection*)
{}
-
-//----------------------------------------------------------------------------
+/*!
+ Apply view transformation
+ \param theTransform - view transformation
+*/
void
VTKViewer_Actor
::SetTransform(VTKViewer_Transform* theTransform)
}
+/*!
+ To insert some additional filters and then sets the given #vtkMapper
+*/
void
VTKViewer_Actor
::SetMapper(vtkMapper* theMapper)
InitPipeLine(theMapper);
}
+/*!
+ Initialization
+*/
void
VTKViewer_Actor
::InitPipeLine(vtkMapper* theMapper)
Superclass::SetMapper(theMapper);
}
-
-//----------------------------------------------------------------------------
+/*!
+ Renders actor
+*/
void
VTKViewer_Actor
::Render(vtkRenderer *ren, vtkMapper* m)
{
+ if(vtkDataSet* aDataSet = GetInput()){
+ static vtkFloatingPointType PERCENTS_OF_DETAILS = 0.50;
+ vtkIdType aNbOfPoints = vtkIdType(aDataSet->GetNumberOfPoints()*PERCENTS_OF_DETAILS);
+ if(aNbOfPoints > 0)
+ SetNumberOfCloudPoints(aNbOfPoints);
+ }
+
if(myIsResolveCoincidentTopology){
int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
- float aFactor, aUnit;
+ vtkFloatingPointType aFactor, aUnit;
vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnit);
vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
}
}
-
+/*!
+ Set ResolveCoincidentTopology flag
+ \param theIsResolve - new flag value
+*/
void
VTKViewer_Actor
::SetResolveCoincidentTopology(bool theIsResolve)
myIsResolveCoincidentTopology = theIsResolve;
}
+/*!
+ Set polygon offset parameters
+ \param factor, units - Opengl polygon offset parameters
+*/
void
VTKViewer_Actor
-::SetPolygonOffsetParameters(float factor, float units)
+::SetPolygonOffsetParameters(vtkFloatingPointType factor,
+ vtkFloatingPointType units)
{
myPolygonOffsetFactor = factor;
myPolygonOffsetUnits = units;
}
+/*!
+ Get polygon offset parameters
+ \param factor, units - Opengl polygon offset parameters
+*/
void
VTKViewer_Actor
-::GetPolygonOffsetParameters(float& factor, float& units)
+::GetPolygonOffsetParameters(vtkFloatingPointType& factor,
+ vtkFloatingPointType& units)
{
factor = myPolygonOffsetFactor;
units = myPolygonOffsetUnits;
}
-
-//----------------------------------------------------------------------------
-float
+/*!
+ \return shrink factor
+*/
+vtkFloatingPointType
VTKViewer_Actor
::GetShrinkFactor()
{
return 1.0;
}
+/*!
+ \return true if the actor is shrunkable
+*/
bool
VTKViewer_Actor
::IsShrunkable()
return false;
}
+/*!
+ \return true if the actor is shrunk
+*/
bool
VTKViewer_Actor
::IsShrunk()
return false;
}
+/*!
+ Insert shrink filter into pipeline
+*/
void
VTKViewer_Actor
::SetShrink()
{}
+/*!
+ Remove shrink filter from pipeline
+*/
void
VTKViewer_Actor
::UnShrink()
{}
-
-//----------------------------------------------------------------------------
+/*!
+ Allows to get initial #vtkDataSet
+*/
vtkDataSet*
VTKViewer_Actor
::GetInput()
return myPassFilter.front()->GetOutput();
}
-
+/*!
+ To calculatate last modified time
+*/
unsigned long int
VTKViewer_Actor
::GetMTime()
return mTime;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Set representation (VTK_SURFACE, VTK_POINTS, VTK_WIREFRAME and so on)
+ param theMode - new mode
+*/
void
VTKViewer_Actor
::SetRepresentation(int theMode)
switch(myRepresentation){
case VTK_POINTS :
case VTK_SURFACE :
- myProperty->DeepCopy(GetProperty());
+ myProperty->SetAmbient(GetProperty()->GetAmbient());
+ myProperty->SetDiffuse(GetProperty()->GetDiffuse());
+ myProperty->SetSpecular(GetProperty()->GetSpecular());
+ break;
}
+
switch(theMode){
case VTK_POINTS :
case VTK_SURFACE :
- GetProperty()->DeepCopy(myProperty);
+ GetProperty()->SetAmbient(myProperty->GetAmbient());
+ GetProperty()->SetDiffuse(myProperty->GetDiffuse());
+ GetProperty()->SetSpecular(myProperty->GetSpecular());
break;
default:
GetProperty()->SetAmbient(1.0);
GetProperty()->SetDiffuse(0.0);
GetProperty()->SetSpecular(0.0);
}
+
switch(theMode){
case 3 :
myGeomFilter->SetInside(true);
myGeomFilter->SetInside(false);
break;
}
+
myRepresentation = theMode;
}
+/*!
+ \return current representation mode
+*/
int
VTKViewer_Actor
::GetRepresentation()
return myRepresentation;
}
-
-//----------------------------------------------------------------------------
+/*!
+ Maps VTK index of a node to corresponding object index
+*/
int
VTKViewer_Actor
::GetNodeObjId(int theVtkID)
return theVtkID;
}
-float*
+/*!
+ Get coordinates of a node for given object index
+*/
+vtkFloatingPointType*
VTKViewer_Actor
::GetNodeCoord(int theObjID)
{
return GetInput()->GetPoint(theObjID);
}
+/*!
+ Get corresponding #vtkCell for given object index
+*/
vtkCell*
VTKViewer_Actor
::GetElemCell(int theObjID)
return GetInput()->GetCell(theObjID);
}
+/*!
+ Maps VTK index of a cell to corresponding object index
+*/
int
VTKViewer_Actor
::GetElemObjId(int theVtkID)
}
-//=================================================================================
-// function : GetObjDimension
-// purpose : Return object dimension.
-// Virtual method shoulb be redifined by derived classes
-//=================================================================================
+/*!
+ \return object dimension. Virtual method should be redifined by derived classes
+*/
int
VTKViewer_Actor
::GetObjDimension( const int theObjId )
return 0;
}
-
+/*!
+ Infinitive means actor without size (point for example),
+ which is not taken into account in calculation of boundaries of the scene
+*/
void
VTKViewer_Actor
::SetInfinitive(bool theIsInfinite)
myIsInfinite = theIsInfinite;
}
-
+/*!
+ \return infinive flag
+*/
bool
VTKViewer_Actor
::IsInfinitive()
{
- static float MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT;
+ if(myIsInfinite)
+ return true;
- if(myIsInfinite || GetLength() < MIN_DISTANCE)
+ static vtkFloatingPointType MAX_DISTANCE = 0.9*VTK_LARGE_FLOAT;
+ vtkFloatingPointType aBounds[6];
+ GetBounds(aBounds);
+ for(int i = 0; i < 6; i++)
+ if(fabs(aBounds[i]) > MAX_DISTANCE)
+ return true;
+
+ static vtkFloatingPointType MIN_DISTANCE = 1.0/VTK_LARGE_FLOAT;
+ if(GetLength() < MIN_DISTANCE)
return true;
- else
- return false;
+
+ return false;
}
-
-float*
+/*!
+ \return current bounding box
+*/
+vtkFloatingPointType*
VTKViewer_Actor
::GetBounds()
{
}
+/*!
+ \return current bounding box
+*/
void
VTKViewer_Actor
-::GetBounds(float theBounds[6])
+::GetBounds(vtkFloatingPointType theBounds[6])
{
Superclass::GetBounds(theBounds);
}
-//----------------------------------------------------------------------------
bool
VTKViewer_Actor
::IsSetCamera() const
void
VTKViewer_Actor
-::SetSize( const float )
+::SetSize( const vtkFloatingPointType )
{}
::SetCamera( vtkCamera* )
{}
-//----------------------------------------------------------------------------
+
void
VTKViewer_Actor
-::SetOpacity(float theOpacity)
+::SetOpacity(vtkFloatingPointType theOpacity)
{
myOpacity = theOpacity;
GetProperty()->SetOpacity(theOpacity);
}
-float
+vtkFloatingPointType
VTKViewer_Actor
::GetOpacity()
{
}
+/*!
+ Change color
+*/
void
VTKViewer_Actor
-::SetColor(float r,float g,float b)
+::SetColor(vtkFloatingPointType r,
+ vtkFloatingPointType g,
+ vtkFloatingPointType b)
{
GetProperty()->SetColor(r,g,b);
}
+/*!
+ Change color
+*/
void
VTKViewer_Actor
-::SetColor(const float theRGB[3])
+::SetColor(const vtkFloatingPointType theRGB[3])
{
SetColor(theRGB[0],theRGB[1],theRGB[2]);
}
+/*!
+ Get color
+*/
void
VTKViewer_Actor
-::GetColor(float& r,float& g,float& b)
+::GetColor(vtkFloatingPointType& r,
+ vtkFloatingPointType& g,
+ vtkFloatingPointType& b)
{
- float aColor[3];
+ vtkFloatingPointType aColor[3];
GetProperty()->GetColor(aColor);
r = aColor[0];
g = aColor[1];
}
-//----------------------------------------------------------------------------
+/*!
+ \return display mode
+*/
int
VTKViewer_Actor
::getDisplayMode()
return myDisplayMode;
}
+/*!
+ Change display mode
+*/
void
VTKViewer_Actor
::setDisplayMode(int theMode)
}
-//----------------------------------------------------------------------------
+/*!
+ \return true if the descendant of the VTKViewer_Actor will implement its own highlight or not
+*/
bool
VTKViewer_Actor
::hasHighlight()
return false;
}
+/*!
+ \return true if the VTKViewer_Actor is already highlighted
+*/
bool
VTKViewer_Actor
::isHighlighted()
return myIsHighlighted;
}
+/*!
+ Set preselection mode
+*/
void
VTKViewer_Actor
::SetPreSelected(bool thePreselect)
myIsPreselected = thePreselect;
}
-
-//----------------------------------------------------------------
+/*!
+ Just to update visibility of the highlight devices
+*/
void
VTKViewer_Actor
::highlight(bool theIsHighlight)
//! Change opacity
virtual
void
- SetOpacity(float theOpacity);
+ SetOpacity(vtkFloatingPointType theOpacity);
//! Get current opacity
virtual
- float
+ vtkFloatingPointType
GetOpacity();
//! Change color
virtual
void
- SetColor(float r,float g,float b);
+ SetColor(vtkFloatingPointType r,
+ vtkFloatingPointType g,
+ vtkFloatingPointType b);
//! Get current color
virtual
void
- GetColor(float& r,float& g,float& b);
+ GetColor(vtkFloatingPointType& r,
+ vtkFloatingPointType& g,
+ vtkFloatingPointType& b);
//! Change color
virtual
void
- SetColor(const float theRGB[3]);
+ SetColor(const vtkFloatingPointType theRGB[3]);
//----------------------------------------------------------------------------
// For selection mapping purpose
//! Get coordinates of a node for given object index
virtual
- float*
+ vtkFloatingPointType*
GetNodeCoord(int theObjID);
//! Maps VTK index of a cell to corresponding object index
//! To calcualte current bounding box
virtual
- float*
+ vtkFloatingPointType*
GetBounds();
//! To calcualte current bounding box
void
- GetBounds(float bounds[6]);
+ GetBounds(vtkFloatingPointType bounds[6]);
//----------------------------------------------------------------------------
virtual
virtual
void
- SetSize( const float );
+ SetSize( const vtkFloatingPointType );
virtual
void
//! Set ResolveCoincidentTopology parameters
void
- SetPolygonOffsetParameters(float factor, float units);
+ SetPolygonOffsetParameters(vtkFloatingPointType factor,
+ vtkFloatingPointType units);
//! Get current ResolveCoincidentTopology parameters
void
- GetPolygonOffsetParameters(float& factor, float& units);
+ GetPolygonOffsetParameters(vtkFloatingPointType& factor,
+ vtkFloatingPointType& units);
virtual
void
//----------------------------------------------------------------------------
//! Get current shrink factor
virtual
- float
+ vtkFloatingPointType
GetShrinkFactor();
//! Is the actor is shrunkable
protected:
//----------------------------------------------------------------------------
bool myIsResolveCoincidentTopology;
- float myPolygonOffsetFactor;
- float myPolygonOffsetUnits;
+ vtkFloatingPointType myPolygonOffsetFactor;
+ vtkFloatingPointType myPolygonOffsetUnits;
std::string myName;
- float myOpacity;
+ vtkFloatingPointType myOpacity;
int myDisplayMode;
bool myIsInfinite;
}
-//==================================================================
-// function: DoMapping
-// purpose :
-//==================================================================
void
VTKViewer_AppendFilter
::DoMapping()
}
}
-//---------------------------------------------------------------
namespace
{
inline
}
-//---------------------------------------------------------------
vtkIdType
VTKViewer_AppendFilter
::GetCellOutputID(vtkIdType theInputID,
}
-//---------------------------------------------------------------
namespace
{
void
}
-//---------------------------------------------------------------
void
VTKViewer_AppendFilter
::GetCellInputID(vtkIdType theOutputID,
}
-//---------------------------------------------------------------
void
VTKViewer_AppendFilter
::MakeOutput()
+// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#ifndef VTKVIEWER_APPENDFILTER_H
#define VTKVIEWER_APPENDFILTER_H
--- /dev/null
+// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File :
+// Author :
+// Module :
+// $Header$
+
+#include "VTKViewer_CellLocationsArray.h"
+
+#include <vtkObjectFactory.h>
+
+vtkStandardNewMacro(VTKViewer_CellLocationsArray);
--- /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/
+//
+
+#ifndef VTKVIEWER_CELLLOCATIONS_H
+#define VTKVIEWER_CELLLOCATIONS_H
+
+#include "VTKViewer.h"
+
+#if (VTK_MAJOR_VERSION >= 4) && (VTK_MINOR_VERSION >= 4)
+# include <vtkIdTypeArray.h>
+# define TCellLocationsArray vtkIdTypeArray
+#else
+# include <vtkIntArray.h>
+# define TCellLocationsArray vtkIntArray
+#endif
+
+struct VTKVIEWER_EXPORT VTKViewer_CellLocationsArray : TCellLocationsArray
+{
+ static VTKViewer_CellLocationsArray* New();
+
+ vtkTypeMacro(VTKViewer_CellLocationsArray,TCellLocationsArray);
+};
+
+#undef TCellLocationsArray
+
+#endif
#include "VTKViewer_ConvexTool.h"
-#include <vtkUnstructuredGrid.h>
-#include <vtkTriangle.h>
-#include <vtkConvexPointSet.h>
-#include <vtkUnstructuredGridWriter.h>
-#include <vtkMath.h>
-#include <vtkSmartPointer.h>
-
#include <set>
-#include <iterator>
-#include <algorithm>
-#include <math.h>
-
-typedef vtkUnstructuredGrid TInput;
+#include <map>
-typedef std::set<vtkIdType> TUIDS; // unique ids
-typedef std::map<vtkIdType,TUIDS> TPTOIDS; // id points -> unique ids
-
-namespace CONVEX_TOOL
-{
- // all pairs
- typedef std::pair<vtkIdType,vtkIdType> TPair;
- typedef std::set<TPair> TSet;
-
- void
- WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName)
- {
- vtkUnstructuredGridWriter* aWriter = vtkUnstructuredGridWriter::New();
- aWriter->SetFileName(theFileName.c_str());
- aWriter->SetInput(theDataSet);
- aWriter->Write();
- aWriter->Delete();
- }
+#include <vtkUnstructuredGrid.h>
+#include <vtkGeometryFilter.h>
+#include <vtkDelaunay3D.h>
+#include <vtkGenericCell.h>
+#include <vtkPolyData.h>
+#include <vtkCellData.h>
+#include <vtkPoints.h>
+#include <vtkIdList.h>
+#include <vtkCell.h>
+#include <vtkPlane.h>
+#include <vtkMath.h>
-static float FACE_ANGLE_TOLERANCE=1.5;
-#define EPS 1.0e-38
-#define EPS_T 1.0e-3
-
-#ifdef _DEBUG_
- static int MYDEBUG = 0;
- static int MYDEBUG_REMOVE = 0;
-#else
- static int MYDEBUG = 0;
- static int MYDEBUG_REMOVE = 0;
-#endif
-
-/*! \fn static void GetCenter(TInput* theGrid,TCell theptIds,float *center)
- * \brief Calculation of geometry center.
- * \param theGrid - TInput cell.
- * \param theptIds - point ids.
- * \retval center - output array[3] with coordinates of geometry center.
- */
-static void GetCenter(vtkPoints* thePoints,float center[3])
+namespace
{
- float p[3];
- center[0] = center[1] = center[2] = 0.0;
+ typedef std::vector<vtkIdType> TConnectivities;
- int numPts = thePoints->GetNumberOfPoints();
- if (numPts == 0) return;
-
- // get the center of the cell
- for (int i = 0; i < numPts; i++)
+ struct TPolygon
{
- thePoints->GetPoint(i, p);
- for (int j = 0; j < 3; j++)
+ TConnectivities myConnectivities;
+ vtkFloatingPointType myOrigin[3];
+ vtkFloatingPointType myNormal[3];
+ TPolygon(const TConnectivities& theConnectivities,
+ vtkFloatingPointType theOrigin[3],
+ vtkFloatingPointType theNormal[3]):
+ myConnectivities(theConnectivities)
{
- center[j] += p[j];
+ myOrigin[0] = theOrigin[0];
+ myOrigin[1] = theOrigin[1];
+ myOrigin[2] = theOrigin[2];
+
+ myNormal[0] = theNormal[0];
+ myNormal[1] = theNormal[1];
+ myNormal[2] = theNormal[2];
}
- }
- for (int j = 0; j < 3; j++)
- {
- center[j] /= numPts;
- }
+ };
+
+ typedef std::vector<TPolygon> TPolygons;
}
-/*! \fn static void ReverseIds(TCell &theIds)
- * \brief Reverse ids.
- * \param theIds - points ids.
- * \retval theIds - example input:(1,2,3,4) -> output:(4,3,2,1)
- */
-static void ReverseIds(TCell &theIds)
+/*!
+ Constructor
+*/
+VTKViewer_Triangulator
+::VTKViewer_Triangulator():
+ myInput(NULL),
+ myCellId(-1),
+ myShowInside(-1),
+ myAllVisible(-1),
+ myCellsVisibility(NULL),
+ myCellIds(vtkIdList::New())
+{}
+
+
+/*!
+ Destructor
+*/
+VTKViewer_Triangulator
+::~VTKViewer_Triangulator()
{
- int i;
- vtkIdType tmp;
- vtkIdType npts=theIds.size();
-
- for(i=0;i<(npts/2);i++){
- tmp = theIds[i];
- theIds[i] = theIds[npts-i-1];
- theIds[npts-i-1] = tmp;
- }
+ myCellIds->Delete();
}
-/*! \fn void GetFriends(const TPTOIDS p2faces,const TCellArray f2points,TPTOIDS& face2face_output)
- * \brief Caclulation of connected faces (faceId -> (faceId1,faceId2, ...))
- * \param p2faces - point to faces ids map.
- * \param f2points - faces to points ids map.
- * \retval face2face_output - faces to faces ids map.
- */
-void GetFriends(const TPTOIDS p2faces,const TCellArray f2points,TPTOIDS& face2face_output)
-{
- TCellArray::const_iterator f2pIter = f2points.begin();
- for( ; f2pIter!=f2points.end() ; f2pIter++ ){
- vtkIdType faceId = f2pIter->first;
- TCell face_points = f2pIter->second;
- int nb_face_points = face_points.size();
-
- vtkIdType id1;
- vtkIdType id2;
- TPTOIDS::const_iterator faces1;
- TPTOIDS::const_iterator faces2;
-
- id1 = face_points[0];
- faces1 = p2faces.find(id1);
-
- TUIDS output_faces;
-
- for(int i=1 ; i<nb_face_points ; i++ ){
- id2 = face_points[i];
+bool
+VTKViewer_Triangulator
+::Execute(vtkUnstructuredGrid *theInput,
+ vtkCellData* thInputCD,
+ vtkIdType theCellId,
+ int theShowInside,
+ int theAllVisible,
+ const char* theCellsVisibility,
+ vtkPolyData *theOutput,
+ vtkCellData* theOutputCD,
+ int theStoreMapping,
+ std::vector<vtkIdType>& theVTK2ObjIds,
+ bool theIsCheckConvex)
+{
+ myInput = theInput;
+ myCellId = theCellId;
+ myShowInside = theShowInside;
+ myAllVisible = theAllVisible;
+ myCellsVisibility = theCellsVisibility;
- faces2 = p2faces.find(id2);
-
- std::set_intersection(faces1->second.begin(), faces1->second.end(), faces2->second.begin(), faces2->second.end(),
- std::inserter(output_faces,output_faces.begin()));
-
- id1 = id2;
- faces1 = faces2;
- }
- id1 = face_points[0];
- faces1 = p2faces.find(id1);
- std::set_intersection(faces1->second.begin(), faces1->second.end(), faces2->second.begin(), faces2->second.end(),
- std::inserter(output_faces,output_faces.begin()));
-
- output_faces.erase(faceId); // erase the face id for which we found friends
+ vtkPoints *aPoints = InitPoints();
+ vtkIdType aNumPts = GetNbOfPoints();
+ //cout<<"Triangulator - aNumPts = "<<aNumPts<<"\n";
- if(MYDEBUG){
- cout << "fId[" << faceId <<"]: ";
- std::copy(output_faces.begin(), output_faces.end(), std::ostream_iterator<vtkIdType>(cout, " "));
- cout << endl;
+ if(aNumPts == 0)
+ return true;
+
+ // To calculate the bary center of the cell
+ vtkFloatingPointType aCellCenter[3] = {0.0, 0.0, 0.0};
+ {
+ vtkFloatingPointType aPntCoord[3];
+ for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+ aPoints->GetPoint(GetPointId(aPntId),aPntCoord);
+ //cout<<"\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}\n";
+ aCellCenter[0] += aPntCoord[0];
+ aCellCenter[1] += aPntCoord[1];
+ aCellCenter[2] += aPntCoord[2];
}
-
- face2face_output[faceId] = output_faces;
+ aCellCenter[0] /= aNumPts;
+ aCellCenter[1] /= aNumPts;
+ aCellCenter[2] /= aNumPts;
}
-}
-/*! \fn bool IsConnectedFacesOnOnePlane( TInput* theGrid,vtkIdType theFId1, vtkIdType theFId2,TUIDS FpIds1, TUIDS FpIds2 )
- * \brief Check is connected faces on one plane.
- * \param theGrid - TInput
- * \param theFId1 - id of first face
- * \param theFId2 - id of second face
- * \param FpIds1 - first face points ids.
- * \param FpIds2 - second face points ids.
- * \return TRUE if two faces on one plane, else FALSE.
- */
-bool IsConnectedFacesOnOnePlane( TInput* theGrid,
- vtkIdType theFId1, vtkIdType theFId2,
- TUIDS FpIds1, TUIDS FpIds2 )
-{
- bool status = false;
- TUIDS common_ids;
- std::set_intersection(FpIds1.begin(), FpIds1.end(), FpIds2.begin(), FpIds2.end(),
- std::inserter(common_ids,common_ids.begin()));
-
- /* Number of common ids = 2 (A1,A2)
-
-
- _ _ _ _ _ _ _ _ _ vectors:
- | \ / | v1 {A2,A1}
- \ / v2 {A1,B1}
- | | A2 | v3 {A1,C1}
- |
- | | |
- |
- | | A1 |
- / \
- |_ _ _ _ _/ \_ _ _ _ _|
- B2 B1 C1 C2
-
- */
- TUIDS::iterator common_iter = common_ids.begin();
- if(common_ids.size() == 2){
- TUIDS::iterator loc_id1_0 = FpIds1.find(*(common_iter));
- common_iter++;
- TUIDS::iterator loc_id1_1 = FpIds1.find(*(common_iter));
-
- TUIDS::iterator loc_id2_0 = FpIds1.begin();
- TUIDS::iterator loc_id2_1 = FpIds2.begin();
-
- vtkIdType A1 = *loc_id1_0;
- vtkIdType A2 = *loc_id1_1;
- vtkIdType B1;
- vtkIdType C1;
-
- for(;loc_id2_0!=FpIds1.end();loc_id2_0++)
- if(*loc_id2_0 != A1 && *loc_id2_0!= A2){
- B1 = *loc_id2_0;
- break;
- }
- for(;loc_id2_1!=FpIds2.end();loc_id2_1++)
- if(*loc_id2_1 != A1 && *loc_id2_1!= A2){
- C1 = *loc_id2_1;
- break;
- }
- if(MYDEBUG) cout <<endl;
- if(MYDEBUG) cout << "FId_1="<<theFId1<<" FId_2="<<theFId2<<endl;
- if(MYDEBUG) cout << " A1="<<A1<<" A2="<<A2<<" B1="<<B1<<" C1="<<C1<<" ->";
- float *p[4];
- float v1[3],v2[3],v3[3];
- p[0] = theGrid->GetPoint(A1);
- p[1] = theGrid->GetPoint(A2);
- p[2] = theGrid->GetPoint(B1);
- p[3] = theGrid->GetPoint(C1);
-
- for(int i=0;i<3;i++){
- v1[i] = p[1][i] - p[0][i];
- v2[i] = p[2][i] - p[0][i];
- v3[i] = p[3][i] - p[0][i];
- }
-
-
- float vec_b1[3];
- vtkMath::Cross(v2,v1,vec_b1);
- float vec_b2[3];
- vtkMath::Cross(v1,v3,vec_b2);
+ vtkFloatingPointType aCellLength = GetCellLength();
+ int aNumFaces = GetNumFaces();
- float b1 = vtkMath::Norm(vec_b1);
+ static vtkFloatingPointType EPS = 1.0E-2;
+ vtkFloatingPointType aDistEps = aCellLength * EPS;
+ //cout<<"\taCellLength = "<<aCellLength<<"; aDistEps = "<<aDistEps<<"\n";
- float b2 = vtkMath::Norm(vec_b2);
- float aCos = vtkMath::Dot(vec_b1,vec_b2)/(b1*b2);
-
- float angle=90.0;
- angle = aCos>=1.0 ? 0.0 : 180*acosf(aCos)/vtkMath::Pi();
-
- if( angle <= FACE_ANGLE_TOLERANCE)
- status = true;
- if (MYDEBUG){
- for(int k=0;k<4;k++){
- cout << " (";
- for(int j=0;j<2;j++){
- cout << p[k][j] << ",";
- }
- cout << p[k][2] << ") ";
- }
- if(status) cout << "angle="<<angle<<" status="<<status<<endl;
- }
-
- } else if (common_ids.size() >2){
- // not implemented yet
- if(MYDEBUG) cout << "Warning! VTKViewer_ConvexTool::IsConnectedFacesOnOnePlane()";
- } else {
- // one or no connection ... continue
- }
+ // To initialize set of points that belong to the cell
+ typedef std::set<vtkIdType> TPointIds;
+ TPointIds anInitialPointIds;
+ for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++)
+ anInitialPointIds.insert(GetPointId(aPntId));
- return status;
-}
-
-/*! \fn void GetAllFacesOnOnePlane( TPTOIDS theFaces, vtkIdType faceId,TUIDS &new_faces, TCell &new_faces_v2 )
- * \brief Calculate faces which on one plane.
- * \param theFaces -
- * \param faceId -
- * \param new_faces -
- * \param new_faces_v2 -
- */
-void GetAllFacesOnOnePlane( TPTOIDS theFaces, vtkIdType faceId,
- TUIDS &new_faces, TCell &new_faces_v2 )
-{
- if (new_faces.find(faceId) != new_faces.end()) return;
+ // To initialize set of points by face that belong to the cell and backward
+ typedef std::set<vtkIdType> TFace2Visibility;
+ TFace2Visibility aFace2Visibility;
- new_faces.insert(new_faces.begin(),faceId);
- new_faces_v2.push_back(faceId);
-
- TPTOIDS::const_iterator aIter1 = theFaces.find(faceId);
- if(aIter1!=theFaces.end()){
- TUIDS::const_iterator aIter2 = (aIter1->second).begin();
- for(;aIter2!=(aIter1->second).end();aIter2++){
- if (new_faces.find(*aIter2) != new_faces.end()) continue;
- GetAllFacesOnOnePlane(theFaces,*aIter2,
- new_faces,new_faces_v2); // recurvise
- }
- }
- return;
-}
+ typedef std::set<TPointIds> TFace2PointIds;
+ TFace2PointIds aFace2PointIds;
-/*! \fn void GetSumm(TCell v1,TCell v2,TCell &output)
- * \brief Gluing two faces (gluing points ids)
- * \param v1 - first face
- * \param v2 - second face
- * \param output - output face.
- */
-void GetSumm(TCell v1,TCell v2,TCell &output)
-{
- output.clear();
-
- if(MYDEBUG) cout << "========================================="<<endl;
- if(MYDEBUG) cout << "v1:";
- if(MYDEBUG) std::copy(v1.begin(), v1.end(), std::ostream_iterator<vtkIdType>(cout, " "));
- if(MYDEBUG) cout << "\tv2:";
- if(MYDEBUG) std::copy(v2.begin(), v2.end(), std::ostream_iterator<vtkIdType>(cout, " "));
- if(MYDEBUG) cout << endl;
-
- TUIDS v1_set;
- std::copy(v1.begin(), v1.end(), std::inserter(v1_set,v1_set.begin()));
- TUIDS v2_set;
- std::copy(v2.begin(), v2.end(), std::inserter(v2_set,v2_set.begin()));
- TUIDS tmpIntersection;
- std::set_intersection(v1_set.begin(),v1_set.end(),v2_set.begin(),v2_set.end(), std::inserter(tmpIntersection,tmpIntersection.begin()));
- if(MYDEBUG) std::copy(tmpIntersection.begin(),tmpIntersection.end(), std::ostream_iterator<vtkIdType>(cout, " "));
- if(MYDEBUG) cout << endl;
-
- if(tmpIntersection.size() < 2)
- if(MYDEBUG) cout << __FILE__ << "[" << __LINE__ << "]: Warning ! Wrong ids" << endl;
-
- TCell::iterator v1_iter = v1.begin();
-
- for(;v1_iter!=v1.end();v1_iter++){
-
- vtkIdType curr_id = *v1_iter;
-
- output.push_back(curr_id);
+ for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
+ vtkCell* aFace = GetFace(aFaceId);
- if(tmpIntersection.find(curr_id) != tmpIntersection.end()){
- TCell::iterator v1_iter_tmp;
- v1_iter_tmp = v1_iter;
- v1_iter++;
-
- if(v1_iter==v1.end()) v1_iter=v1.begin();
-
- curr_id = *v1_iter;
-
- if(tmpIntersection.find(curr_id) != tmpIntersection.end()){
- TCell::iterator v2_iter = v2.begin();
- for(;v2_iter!=v2.end();v2_iter++){
- vtkIdType v2_id = *v2_iter;
- if(tmpIntersection.find(v2_id) == tmpIntersection.end())
- output.push_back(v2_id);
- }
- }
-
- v1_iter = v1_iter_tmp;
- curr_id = *v1_iter;
+ GetCellNeighbors(theCellId, aFace, myCellIds);
+ if((!myAllVisible && !myCellsVisibility[myCellIds->GetId(0)]) ||
+ myCellIds->GetNumberOfIds() <= 0 || myShowInside)
+ {
+ TPointIds aPointIds;
+ vtkIdList *anIdList = aFace->PointIds;
+ aPointIds.insert(anIdList->GetId(0));
+ aPointIds.insert(anIdList->GetId(1));
+ aPointIds.insert(anIdList->GetId(2));
+ aFace2PointIds.insert(aPointIds);
+ aFace2Visibility.insert(aFaceId);
}
}
- if(MYDEBUG) cout << "Result: " ;
- if(MYDEBUG) std::copy(output.begin(),output.end(),std::ostream_iterator<vtkIdType>(cout, " "));
- if(MYDEBUG) cout << endl;
-}
-
-static void GetAndRemoveIdsOnOneLine(vtkPoints* points,
- TUIDS input_points_ids,
- TUIDS input_two_points_ids,
- TUIDS& out_two_points_ids,
- TUIDS& removed_points_ids){
- if (MYDEBUG_REMOVE) cout << EPS <<endl;
- float P[3][3];
- vtkIdType current_points_ids[2];
- if(MYDEBUG_REMOVE)
- if(input_two_points_ids.size()!=2) cout << "Error. Must be two ids in variable input_two_points_ids="<<input_two_points_ids.size()<<endl;
- TUIDS::const_iterator aInPointsIter = input_two_points_ids.begin();
- for(int i=0;i<2 && aInPointsIter!=input_two_points_ids.end();aInPointsIter++,i++){
- current_points_ids[i] = *aInPointsIter;
- if (MYDEBUG_REMOVE) cout << " " << *aInPointsIter;
- }
- if (MYDEBUG_REMOVE) cout << endl;
- bool iscurrent_points_changed = false;
- points->GetPoint(current_points_ids[0],P[0]);
- points->GetPoint(current_points_ids[1],P[1]);
- TUIDS::iterator aPointsIter = input_points_ids.begin();
- for(;aPointsIter!=input_points_ids.end();aPointsIter++){
- if(iscurrent_points_changed){
- points->GetPoint(current_points_ids[0],P[0]);
- points->GetPoint(current_points_ids[1],P[1]);
- iscurrent_points_changed = false;
- if (MYDEBUG_REMOVE)
- cout << " " << current_points_ids[0] << " " << current_points_ids[1] << endl;
- }
- // check: is point on line input_two_points_ids
- points->GetPoint(*aPointsIter,P[2]);
- if (MYDEBUG_REMOVE) {
- cout << "\t" << current_points_ids[0] << ":"<<P[0][0]<<","<<P[0][1]<<","<<P[0][2]<<endl;
- cout << "\t" << current_points_ids[1] << ":"<<P[1][0]<<","<<P[1][1]<<","<<P[1][2]<<endl;
- cout << "\t" << *aPointsIter << ":"<<P[2][0]<<","<<P[2][1]<<","<<P[2][2]<<endl;
- }
-
- // x-x1=(x2-x1)*t -> coeff[0][0] = (x-x1), coeff[0][1] = x2-x1
- // y-y1=(y2-y1)*t -> coeff[1][0] = (y-y1), coeff[1][1] = y2-y1
- // z-z1=(z2-z1)*t -> coeff[2][0] = (z-z1), coeff[2][1] = z2-z1
- float coeff[3][2];
- for(int i=0;i<3;i++){
- coeff[i][0] = P[2][i]-P[0][i];
- coeff[i][1] = P[1][i]-P[0][i];
- }
- bool isok_coord[3];
- bool isok = true;
- float t[3];
- for(int i=0;i<3;i++){
- isok_coord[i] = false;
- if( fabs(coeff[i][0]) <= EPS && fabs(coeff[i][1]) <= EPS) {
- isok_coord[i] = true;
- continue;
- }
- if( fabs(coeff[i][1]) <= EPS && fabs(coeff[i][0]) > EPS) {isok = false;t[i]=1.0/EPS;break;}
- t[i] = (coeff[i][0])/(coeff[i][1]);
- }
- for(int i=0;i<3;i++)
- if (MYDEBUG_REMOVE)
- cout << __LINE__ << " "
- << coeff[i][0] << ","<<coeff[i][1]
- <<" t="<<t[i]<<" isok_coord="<<isok_coord[i]<<endl;
- if(!isok) continue;
-
- if (!isok_coord[0] && !isok_coord[1]){
- if (fabs(t[0]-t[1]) <= EPS_T) isok = true;
- else isok = false;
- }
- if (MYDEBUG_REMOVE) cout << __LINE__ << " 1000 " << isok << endl;
- if(!isok) continue;
- if (!isok_coord[1] && !isok_coord[2]){
- if (fabs(t[1] - t[2]) <= EPS_T) isok = true;
- else isok = false;
- }
- if (MYDEBUG_REMOVE) cout << __LINE__ << " 2000 " << isok << endl;
- if(!isok) continue;
- if (!isok_coord[0] && !isok_coord[2]){
- if (fabs(t[0] - t[2]) <= EPS_T) isok = true;
- else isok = false;
- }
- if (MYDEBUG_REMOVE) cout << __LINE__ << " 3000 " << isok<<endl;
- if(!isok) continue;
-
- float param[3]; // parametric coord for P[0],P[1],P[2] <--->t[0],t[1],t[2]
- // anilize bounds of line
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++)
- if(!isok_coord[j]) param[i] = (P[i][j]-P[0][j])/(P[1][j]-P[0][j]);
- }
- if (MYDEBUG_REMOVE) cout << "Params: " << param[0] << "," << param[1] << "," << param[2] << endl;
- vtkIdType imax,imin;
- float min,max;
- for(vtkIdType i=0;i<3;i++)
- if(!isok_coord[i]){
- min = param[0];imin=0;
- max = param[0];imax=0;
- break;
- }
- for(vtkIdType i=0;i<3;i++){
- if(min > param[i]) {min = param[i]; imin=i;}
- if(max < param[i]) {max = param[i]; imax=i;}
- }
- if (MYDEBUG_REMOVE)
- cout << "\t min="<<min<<" max="<<max<<" - "<<"imin="<<imin<<" imax="<<imax<<endl;
- // imin - index of left point
- // imax - index of right point
-
- // add id to removed point
- vtkIdType rem_id,id1,id2;
- for(vtkIdType i=0;i<3;i++)
- if (i!=imin && i!=imax) {rem_id = i; break;}
-
- if(rem_id == 0) {
- rem_id = current_points_ids[0];
- id1=current_points_ids[1];
- id2=*aPointsIter;
- }
- else if (rem_id == 1) {
- rem_id = current_points_ids[1];
- id1=current_points_ids[0];
- id2=*aPointsIter;
- }
- else if (rem_id == 2) {
- rem_id = *aPointsIter;
- id1=current_points_ids[0];
- id2=current_points_ids[1];
- }
- if (MYDEBUG_REMOVE)
- cout << " " << current_points_ids[0] <<","<<current_points_ids[1]<<"---->"<<id1<<","<<id2<<endl;
- if((current_points_ids[0] == id1 && current_points_ids[1] == id2) ||
- (current_points_ids[0] == id2 && current_points_ids[1] == id1))
- {}
- else {
- iscurrent_points_changed = true;
- current_points_ids[0] = id1;
- current_points_ids[1] = id2;
- }
-
- removed_points_ids.insert(rem_id);
- }
- out_two_points_ids.insert(current_points_ids[0]);
- out_two_points_ids.insert(current_points_ids[1]);
-}
-
-static vtkSmartPointer<vtkConvexPointSet> RemoveAllUnneededPoints(vtkConvexPointSet* convex){
- vtkSmartPointer<vtkConvexPointSet> out = vtkConvexPointSet::New();
-
- TUIDS two_points,input_points,out_two_points_ids,removed_points_ids,loc_removed_points_ids;
- vtkIdList* aPointIds = convex->GetPointIds();
- int numIds = aPointIds->GetNumberOfIds();
- if (numIds<2) return out;
- TSet good_point_ids;
- TSet aLists[numIds-2];
- for(int i=0;i<numIds-2;i++){
- for(int j=i+1;j<numIds-1;j++){
- TPair aPair(i,j);
- aLists[i].insert(aPair);
- }
- }
- for(vtkIdType i=0;i<numIds-2;i++){
- TUIDS::iterator aRemIter=removed_points_ids.find(i);
- if(aRemIter!=removed_points_ids.end()) continue;
- TSet::iterator aPairIter=aLists[i].begin();
- loc_removed_points_ids.clear();
- out_two_points_ids.clear();
- input_points.clear();
- two_points.clear();
- for(;aPairIter!=aLists[i].end();aPairIter++){
- vtkIdType aFirId = (*aPairIter).first;
- vtkIdType aSecId = (*aPairIter).second;
- aRemIter=removed_points_ids.find(aSecId);
- if(aRemIter!=removed_points_ids.end()) continue;
- TPair aPair1(aFirId,aSecId);
- TPair aPair2(aSecId,aFirId);
- TSet::iterator aGoodIter=good_point_ids.find(aPair1);
- if(aGoodIter!=good_point_ids.end()) continue;
- aGoodIter=good_point_ids.find(aPair2);
- if(aGoodIter!=good_point_ids.end()) continue;
- two_points.insert(aFirId);
- two_points.insert(aSecId);
- if (MYDEBUG_REMOVE)
- cout << "\nInput: " << aFirId<<":"<<aPointIds->GetId(aFirId) << "," << aSecId <<":"<<aPointIds->GetId(aSecId)<< " --- ";
- for(vtkIdType k=aSecId+1;k<numIds;k++) {
- input_points.insert(k);
- if (MYDEBUG_REMOVE) cout << k<<":"<<aPointIds->GetId(k) << ",";
- }
- if (MYDEBUG_REMOVE) {
- cout << endl;
- cout << "\t";
- for(TUIDS::iterator aDelIter = loc_removed_points_ids.begin();aDelIter!=loc_removed_points_ids.end();aDelIter++)
- cout << *aDelIter<<",";
- cout << endl;
- }
- GetAndRemoveIdsOnOneLine(convex->Points,
- input_points,
- two_points,
- out_two_points_ids,
- loc_removed_points_ids);
- TUIDS::iterator aOutIter = out_two_points_ids.begin();
- vtkIdType aFirst=*aOutIter;aOutIter++;vtkIdType aSecond=*aOutIter;
- TPair aPair(aFirst,aSecond);
- good_point_ids.insert(aPair);
- if (MYDEBUG_REMOVE){
- cout << "Output: ";
- TUIDS::iterator aIter = out_two_points_ids.begin();
- for(;aIter!=out_two_points_ids.end();aIter++)
- cout << *aIter << ",";
- cout << " --- ";
- }
- TUIDS::iterator aDelIter = loc_removed_points_ids.begin();
- for(;aDelIter!=loc_removed_points_ids.end();aDelIter++){
- removed_points_ids.insert(*aDelIter);
- if (MYDEBUG_REMOVE) cout << *aDelIter << ",";
- }
- if (MYDEBUG_REMOVE) cout << endl;
- }
- }
- if (MYDEBUG_REMOVE) {
- cout << "============ Resultat ================" <<endl;
- cout << "Removed:";
- for(TUIDS::iterator aIter=removed_points_ids.begin();aIter!=removed_points_ids.end();aIter++)
- cout << *aIter << ",";
- cout << endl;
- }
-
- TUIDS result_ids,all_ids;
- for(vtkIdType i=0;i<numIds;i++) all_ids.insert(i);
- std::set_difference(all_ids.begin(),
- all_ids.end(),
- removed_points_ids.begin(),
- removed_points_ids.end(),
- std::inserter(result_ids,result_ids.begin()));
-
- out->Points->SetNumberOfPoints(result_ids.size());
- out->PointIds->SetNumberOfIds(result_ids.size());
- int aId=0;
- if(MYDEBUG_REMOVE) cout << "Result out:";
- for(TUIDS::iterator aIter=result_ids.begin();aIter!=result_ids.end();aIter++,aId++){
- float P[3];
- convex->Points->GetPoint(*aIter,P);
- out->Points->SetPoint(aId,P);
- out->PointIds->SetId(aId,aPointIds->GetId(*aIter));
- if (MYDEBUG_REMOVE) cout << *aIter << ":" << aPointIds->GetId(*aIter) << " , ";
- }
- if(MYDEBUG_REMOVE) cout << endl;
- out->Modified();
- out->Initialize();
-
- return out;
-}
-void GetPolygonalFaces(vtkUnstructuredGrid* theGrid,int cellId,TCellArray &outputCellArray)
-{
- if (theGrid->GetCellType(cellId) == VTK_CONVEX_POINT_SET){
- // get vtkCell type = VTK_CONVEX_POINT_SET
- if(vtkConvexPointSet* convex_in = static_cast<vtkConvexPointSet*>(theGrid->GetCell(cellId))){
- vtkSmartPointer<vtkConvexPointSet> convex = RemoveAllUnneededPoints(convex_in);
- TCellArray f2points;
- float convex_center[3]; // convex center point coorinat
- int aNbFaces = convex->GetNumberOfFaces();
- int numPts = convex->GetNumberOfPoints();
- if(MYDEBUG_REMOVE) cout << "aNbFaces="<<aNbFaces<<endl;
- if(MYDEBUG_REMOVE) cout << "numPts="<<numPts<<endl;
- TPTOIDS p2faces; // key=pointId , value facesIds set
-
- GetCenter(convex->Points,convex_center);
-
- for (vtkIdType faceId=0; faceId < aNbFaces; faceId++){
- vtkCell *aFace = convex->GetFace(faceId);
- int numFacePts = aFace->GetNumberOfPoints();
- TCell aIds;
-
- int i = 0;
- for(i=0;i<numFacePts;i++)
- aIds.push_back(aFace->GetPointId(i));
-
- float v_a[3],v_b[3],v_convex2face[3]; // vectors
- float *id_0,*id_1,*id_n;
- /*=============================================
- ,+- - - - _
- _ / id_n | v_b {id_0,id_n}
- v_b / _
- / | v_a {id_0,id_1}
- /
- / |
- + id_0
- \
- _ \ |
- v_a \
- \ id_1 |
- "+- - - -
-
- ============================================*/
- id_0 = theGrid->GetPoint(aIds[0]);
- id_1 = theGrid->GetPoint(aIds[1]);
- id_n = theGrid->GetPoint(aIds[numFacePts-1]);
-
- for(i=0;i<3;i++){
- v_a[i] = id_1[i] - id_0[i];
- v_b[i] = id_n[i] - id_0[i];
- v_convex2face[i] = id_0[i] - convex_center[i];
- }
+ ::TPolygons aPolygons;
- if (vtkMath::Determinant3x3(v_a,v_b,v_convex2face) < 0){
- ReverseIds(aIds);
- }
+ for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
+ if(aFace2Visibility.find(aFaceId) == aFace2Visibility.end())
+ continue;
- for(i=0;i<(int)aIds.size();i++){
- TUIDS &acell = p2faces[aIds[i]];
- acell.insert(faceId);
- }
-
- f2points[faceId] = aIds;
+ vtkCell* aFace = GetFace(aFaceId);
- }
-
- TPTOIDS face2face;
- GetFriends(p2faces,f2points,face2face);
+ vtkIdList *anIdList = aFace->PointIds;
+ vtkIdType aNewPts[3] = {anIdList->GetId(0), anIdList->GetId(1), anIdList->GetId(2)};
+
+ // To initialize set of points for the plane where the trinangle face belong to
+ TPointIds aPointIds;
+ aPointIds.insert(aNewPts[0]);
+ aPointIds.insert(aNewPts[1]);
+ aPointIds.insert(aNewPts[2]);
+
+ // To get know, if the points of the trinagle were already observed
+ bool anIsObserved = aFace2PointIds.find(aPointIds) == aFace2PointIds.end();
+ //cout<<"\taFaceId = "<<aFaceId<<"; anIsObserved = "<<anIsObserved;
+ //cout<<"; aNewPts = {"<<aNewPts[0]<<", "<<aNewPts[1]<<", "<<aNewPts[2]<<"}\n";
+
+ if(!anIsObserved){
+ // To get coordinates of the points of the traingle face
+ vtkFloatingPointType aCoord[3][3];
+ aPoints->GetPoint(aNewPts[0],aCoord[0]);
+ aPoints->GetPoint(aNewPts[1],aCoord[1]);
+ aPoints->GetPoint(aNewPts[2],aCoord[2]);
- TPTOIDS face2points;
+ // To calculate plane normal
+ vtkFloatingPointType aVector01[3] = { aCoord[1][0] - aCoord[0][0],
+ aCoord[1][1] - aCoord[0][1],
+ aCoord[1][2] - aCoord[0][2] };
- // copy TCellArray::f2points to TPTOIDS::face2points
- for(TCellArray::iterator f2points_iter=f2points.begin();
- f2points_iter!=f2points.end();
- f2points_iter++){
-
- TUIDS tmp;
- for(TCell::iterator points_iter=(f2points_iter->second).begin();
- points_iter!=(f2points_iter->second).end();
- points_iter++)
- tmp.insert(*points_iter);
-
- face2points[f2points_iter->first] = tmp;
- } // end copy
-
+ vtkFloatingPointType aVector02[3] = { aCoord[2][0] - aCoord[0][0],
+ aCoord[2][1] - aCoord[0][1],
+ aCoord[2][2] - aCoord[0][2] };
- TPTOIDS new_face2faces; // which connected and in one plane
+ // To calculate the normal for the triangle
+ vtkFloatingPointType aNormal[3];
+ vtkMath::Cross(aVector02,aVector01,aNormal);
- TPTOIDS::const_iterator aF2FIter = face2face.begin();
- for(;aF2FIter!=face2face.end();aF2FIter++){
- vtkIdType f_key = aF2FIter->first;
- TUIDS &faces = new_face2faces[f_key];
- //faces.insert(f_key);
- TUIDS f_friends = aF2FIter->second;
- TUIDS::const_iterator a_friends_iter = f_friends.begin();
- for(;a_friends_iter!=f_friends.end();a_friends_iter++){
- vtkIdType friend_id = *a_friends_iter;
- if( IsConnectedFacesOnOnePlane(theGrid,f_key,friend_id,
- (face2points.find(f_key))->second,
- (face2points.find(friend_id))->second)){
- faces.insert(friend_id);
- } // end if
-
- } // end a_friends_iter
- } // end aF2FIter
+ vtkMath::Normalize(aNormal);
- if(MYDEBUG)
+ // To calculate what points belong to the plane
+ // To calculate bounds of the point set
+ vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0};
{
- TPTOIDS::const_iterator new_face2face_iter = new_face2faces.begin();
- cout << "Connected faces and on plane:" << endl;
- for(;new_face2face_iter!=new_face2faces.end();new_face2face_iter++){
- cout << "Group ["<<new_face2face_iter->first<<"] :";
- TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
- for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++)
- cout << " " << *new_faces_iter ;
- cout << endl;
+ TPointIds::const_iterator anIter = anInitialPointIds.begin();
+ TPointIds::const_iterator anEndIter = anInitialPointIds.end();
+ for(; anIter != anEndIter; anIter++){
+ vtkFloatingPointType aPntCoord[3];
+ vtkIdType aPntId = *anIter;
+ aPoints->GetPoint(aPntId,aPntCoord);
+ vtkFloatingPointType aDist = vtkPlane::DistanceToPlane(aPntCoord,aNormal,aCoord[0]);
+ //cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
+ if(fabs(aDist) < aDistEps){
+ aPointIds.insert(aPntId);
+ aCenter[0] += aPntCoord[0];
+ aCenter[1] += aPntCoord[1];
+ aCenter[2] += aPntCoord[2];
+ }
}
+ int aNbPoints = aPointIds.size();
+ aCenter[0] /= aNbPoints;
+ aCenter[1] /= aNbPoints;
+ aCenter[2] /= aNbPoints;
}
- TPTOIDS output_newid2face;
- TCellArray output_newid2face_v2;
+ //To sinchronize orientation of the cell and its face
+ vtkFloatingPointType aVectorC[3] = { aCenter[0] - aCellCenter[0],
+ aCenter[1] - aCellCenter[1],
+ aCenter[2] - aCellCenter[2] };
+ vtkMath::Normalize(aVectorC);
+
+ vtkFloatingPointType aDot = vtkMath::Dot(aNormal,aVectorC);
+ //cout<<"\t\taNormal = {"<<aNormal[0]<<", "<<aNormal[1]<<", "<<aNormal[2]<<"}";
+ //cout<<"; aVectorC = {"<<aVectorC[0]<<", "<<aVectorC[1]<<", "<<aVectorC[2]<<"}\n";
+ //cout<<"\t\taDot = "<<aDot<<"\n";
+ if(aDot > 0){
+ aNormal[0] = -aNormal[0];
+ aNormal[1] = -aNormal[1];
+ aNormal[2] = -aNormal[2];
+ }
+
+ // To calculate the primary direction for point set
+ vtkFloatingPointType aVector0[3] = { aCoord[0][0] - aCenter[0],
+ aCoord[0][1] - aCenter[1],
+ aCoord[0][2] - aCenter[2] };
+ vtkMath::Normalize(aVector0);
+
+ //cout<<"\t\taCenter = {"<<aCenter[0]<<", "<<aCenter[1]<<", "<<aCenter[2]<<"}";
+ //cout<<"; aVector0 = {"<<aVector0[0]<<", "<<aVector0[1]<<", "<<aVector0[2]<<"}\n";
+
+ // To calculate the set of points by face those that belong to the plane
+ TFace2PointIds aRemoveFace2PointIds;
{
- TUIDS already_in;
- TUIDS already_in_tmp;
- int k=0;
- TPTOIDS::const_iterator new_face2face_iter = new_face2faces.begin();
- for(;new_face2face_iter!=new_face2faces.end();new_face2face_iter++){
- if(already_in.find(new_face2face_iter->first) != already_in.end())
- continue;
- if(new_face2face_iter->second.size() > 1)
- continue;
-
- TCell &tmp_v2 = output_newid2face_v2[k];
- tmp_v2.push_back(new_face2face_iter->first);
- already_in.insert(new_face2face_iter->first);
+ TFace2PointIds::const_iterator anIter = aFace2PointIds.begin();
+ TFace2PointIds::const_iterator anEndIter = aFace2PointIds.end();
+ for(; anIter != anEndIter; anIter++){
+ const TPointIds& anIds = *anIter;
+ TPointIds anIntersection;
+ std::set_intersection(aPointIds.begin(),aPointIds.end(),
+ anIds.begin(),anIds.end(),
+ std::inserter(anIntersection,anIntersection.begin()));
- TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
- for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++){
- if(already_in.find(*new_faces_iter) != already_in.end()) continue;
- already_in.insert(*new_faces_iter);
-
- already_in_tmp.clear();
- already_in_tmp.insert(new_face2face_iter->first);
-
- TUIDS &tmp = output_newid2face[k];
- GetAllFacesOnOnePlane(new_face2faces,*new_faces_iter,
- already_in_tmp,tmp_v2);
-
- for(TUIDS::const_iterator aIter=already_in_tmp.begin();
- aIter!=already_in_tmp.end();
- aIter++)
- {
- already_in.insert(*aIter);
- tmp.insert(*aIter);
- }
+ if(anIntersection == anIds){
+ aRemoveFace2PointIds.insert(anIds);
}
- k++;
}
}
- if(MYDEBUG) {
- cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
- {
- TPTOIDS::const_iterator new_face2face_iter = output_newid2face.begin();
- for(;new_face2face_iter!=output_newid2face.end();new_face2face_iter++){
- cout << "Group ["<<new_face2face_iter->first<<"] :";
- TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
- for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++)
- cout << " " << *new_faces_iter ;
- cout << endl;
- }
- }
- cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
- cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
- cout << "+++++++++++++++++++++++ ++ ++ ++++++++++++++++++++++++++++"<<endl;
- cout << "+++++++++++++++++++++++++ ++++++++++++++++++++++++++++++"<<endl;
- cout << "++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++"<<endl;
- {
- TCellArray::const_iterator new_face2face_iter = output_newid2face_v2.begin();
- for(;new_face2face_iter!=output_newid2face_v2.end();new_face2face_iter++){
- cout << "Group ["<<new_face2face_iter->first<<"] :";
- TCell::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
- for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++)
- cout << " " << *new_faces_iter ;
- cout << endl;
- }
+ // To remove from the set of points by face those that belong to the plane
+ {
+ TFace2PointIds::const_iterator anIter = aRemoveFace2PointIds.begin();
+ TFace2PointIds::const_iterator anEndIter = aRemoveFace2PointIds.end();
+ for(; anIter != anEndIter; anIter++){
+ const TPointIds& anIds = *anIter;
+ aFace2PointIds.erase(anIds);
}
}
- TCellArray output_new_face2ids;
-// {
-// TPTOIDS::const_iterator new_face2face_iter = output_newid2face.begin();
-// for(;new_face2face_iter!=output_newid2face.end();new_face2face_iter++){
-
-// vtkIdType new_faceId = new_face2face_iter->first;
-// TUIDS::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
-// vtkIdType fId0 = *new_faces_iter;
-// TCellArray::const_iterator pIds0_iter = f2points.find(fId0);
-// TCell pIds0 = pIds0_iter->second;
-// TCell &output = output_new_face2ids[new_faceId];
-// new_faces_iter++;
-// if(new_face2face_iter->second.size() > 2 ){}
-// for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++){
-
-// vtkIdType faceId = *new_faces_iter;
-// // find how much nodes in face (f2points)
-// TCellArray::const_iterator pIds_iter = f2points.find(faceId);
-// TCell pIds = pIds_iter->second;
-
-// GetSumm(pIds0,pIds,output);
-// pIds0 = output;
-
-// } // end new_faces_iter
-
-// } // new_face2face_iter
-// }
+ // To sort the planar set of the points accrding to the angle
{
- TCellArray::const_iterator new_face2face_iter = output_newid2face_v2.begin();
- for(;new_face2face_iter!=output_newid2face_v2.end();new_face2face_iter++){
+ typedef std::map<vtkFloatingPointType,vtkIdType> TSortedPointIds;
+ TSortedPointIds aSortedPointIds;
+
+ TPointIds::const_iterator anIter = aPointIds.begin();
+ TPointIds::const_iterator anEndIter = aPointIds.end();
+ for(; anIter != anEndIter; anIter++){
+ vtkFloatingPointType aPntCoord[3];
+ vtkIdType aPntId = *anIter;
+ aPoints->GetPoint(aPntId,aPntCoord);
+ vtkFloatingPointType aVector[3] = { aPntCoord[0] - aCenter[0],
+ aPntCoord[1] - aCenter[1],
+ aPntCoord[2] - aCenter[2] };
+ vtkMath::Normalize(aVector);
- vtkIdType new_faceId = new_face2face_iter->first;
- TCell::const_iterator new_faces_iter = (new_face2face_iter->second).begin();
- vtkIdType fId0 = *new_faces_iter;
- TCellArray::const_iterator pIds0_iter = f2points.find(fId0);
- TCell pIds0 = pIds0_iter->second;
- TCell &output = output_new_face2ids[new_faceId];
- new_faces_iter++;
- if(new_face2face_iter->second.size() == 1 ){
- TCellArray::const_iterator pIds_iter = f2points.find(fId0);
- TCell pIds = pIds_iter->second;
- output = pIds;
- continue;
+ vtkFloatingPointType aCross[3];
+ vtkMath::Cross(aVector,aVector0,aCross);
+ bool aGreaterThanPi = vtkMath::Dot(aCross,aNormal) < 0;
+ vtkFloatingPointType aCosinus = vtkMath::Dot(aVector,aVector0);
+ if(aCosinus > 1.0)
+ aCosinus = 1.0;
+ if(aCosinus < -1.0)
+ aCosinus = -1.0;
+ static vtkFloatingPointType a2Pi = 2.0 * vtkMath::Pi();
+ vtkFloatingPointType anAngle = acos(aCosinus);
+ //cout<<"\t\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}";
+ //cout<<"; aGreaterThanPi = "<<aGreaterThanPi<<"; aCosinus = "<<aCosinus<<"; anAngle = "<<anAngle<<"\n";
+ if(aGreaterThanPi){
+ anAngle = a2Pi - anAngle;
+ //cout<<"\t\t\t\tanAngle = "<<anAngle<<"\n";
}
- for(;new_faces_iter!=(new_face2face_iter->second).end();new_faces_iter++){
-
- vtkIdType faceId = *new_faces_iter;
- // find how much nodes in face (f2points)
- TCellArray::const_iterator pIds_iter = f2points.find(faceId);
- TCell pIds = pIds_iter->second;
-
- GetSumm(pIds0,pIds,output);
- pIds0 = output;
+ aSortedPointIds[anAngle] = aPntId;
+ }
- } // end new_faces_iter
-
- } // new_face2face_iter
+ if(!aSortedPointIds.empty()){
+ int aNumFacePts = aSortedPointIds.size();
+ ::TConnectivities aConnectivities(aNumFacePts);
+ TSortedPointIds::const_iterator anIter = aSortedPointIds.begin();
+ TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end();
+ for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){
+ vtkIdType aPntId = anIter->second;
+ aConnectivities[anId] = GetConnectivity(aPntId);
+ }
+ aPolygons.push_back(::TPolygon(aConnectivities,aCenter,aNormal));
+ }
}
-
- if(MYDEBUG) {
- cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
- cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
- cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
+ }
+ }
+
+ if(aPolygons.empty())
+ return true;
+
+ // To check, whether the polygons give a convex polyhedron or not
+ if(theIsCheckConvex){
+ int aNbPolygons = aPolygons.size();
+ for (int aPolygonId = 0; aPolygonId < aNbPolygons; aPolygonId++) {
+ ::TPolygon& aPolygon = aPolygons[aPolygonId];
+ vtkFloatingPointType* aNormal = aPolygon.myNormal;
+ vtkFloatingPointType* anOrigin = aPolygon.myOrigin;
+ //cout<<"\taPolygonId = "<<aPolygonId<<"\n";
+ //cout<<"\t\taNormal = {"<<aNormal[0]<<", "<<aNormal[1]<<", "<<aNormal[2]<<"}";
+ //cout<<"; anOrigin = {"<<anOrigin[0]<<", "<<anOrigin[1]<<", "<<anOrigin[2]<<"}\n";
+ for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
+ vtkFloatingPointType aPntCoord[3];
+ vtkIdType anId = GetPointId(aPntId);
+ aPoints->GetPoint(anId,aPntCoord);
+ vtkFloatingPointType aDist = vtkPlane::Evaluate(aNormal,anOrigin,aPntCoord);
+ //cout<<"\t\taPntId = "<<anId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
+ if(aDist < -aDistEps)
+ return false;
}
- outputCellArray = output_new_face2ids;//f2points;
}
- } else {
- // not implemented
}
+
+
+ // To pass resulting set of the polygons to the output
+ {
+ int aNbPolygons = aPolygons.size();
+ for (int aPolygonId = 0; aPolygonId < aNbPolygons; aPolygonId++) {
+ ::TPolygon& aPolygon = aPolygons[aPolygonId];
+ TConnectivities& aConnectivities = aPolygon.myConnectivities;
+ int aNbPoints = aConnectivities.size();
+ vtkIdType aNewCellId = theOutput->InsertNextCell(VTK_POLYGON,aNbPoints,&aConnectivities[0]);
+ if(theStoreMapping)
+ theVTK2ObjIds.push_back(theCellId);
+ theOutputCD->CopyData(thInputCD,theCellId,aNewCellId);
+ }
+ }
+
+ //cout<<"\tTriangulator - Ok\n";
+ return true;
}
+
+/*!
+ Constructor
+*/
+VTKViewer_OrderedTriangulator
+::VTKViewer_OrderedTriangulator():
+ myCell(vtkGenericCell::New())
+{}
+
+/*!
+ Destructor
+*/
+VTKViewer_OrderedTriangulator
+::~VTKViewer_OrderedTriangulator()
+{
+ myCell->Delete();
+}
+
+vtkPoints*
+VTKViewer_OrderedTriangulator
+::InitPoints()
+{
+ myInput->GetCell(myCellId,myCell);
+ return myInput->GetPoints();
+}
+
+vtkIdType
+VTKViewer_OrderedTriangulator
+::GetNbOfPoints()
+{
+ return myCell->GetNumberOfPoints();
+}
+
+vtkIdType
+VTKViewer_OrderedTriangulator
+::GetPointId(vtkIdType thePointId)
+{
+ return myCell->GetPointId(thePointId);
+}
+
+vtkFloatingPointType
+VTKViewer_OrderedTriangulator
+::GetCellLength()
+{
+ return sqrt(myCell->GetLength2());
+}
+
+vtkIdType
+VTKViewer_OrderedTriangulator
+::GetNumFaces()
+{
+ return myCell->GetNumberOfFaces();
+}
+
+vtkCell*
+VTKViewer_OrderedTriangulator
+::GetFace(vtkIdType theFaceId)
+{
+ return myCell->GetFace(theFaceId);
+}
+
+void
+VTKViewer_OrderedTriangulator
+::GetCellNeighbors(vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds)
+{
+ vtkIdList *anIdList = theFace->PointIds;
+ myInput->GetCellNeighbors(theCellId, anIdList, theCellIds);
+}
+
+vtkIdType
+VTKViewer_OrderedTriangulator
+::GetConnectivity(vtkIdType thePntId)
+{
+ return thePntId;
+}
+
+/*!
+ Constructor
+*/
+VTKViewer_DelaunayTriangulator
+::VTKViewer_DelaunayTriangulator():
+ myUnstructuredGrid(vtkUnstructuredGrid::New()),
+ myGeometryFilter(vtkGeometryFilter::New()),
+ myDelaunay3D(vtkDelaunay3D::New()),
+ myFaceIds(vtkIdList::New()),
+ myPoints(vtkPoints::New()),
+ myPolyData(NULL),
+ myPointIds(NULL)
+{
+ myDelaunay3D->SetInput(myUnstructuredGrid);
+ myGeometryFilter->SetInput(myDelaunay3D->GetOutput());
+}
+
+
+
+/*!
+ Destructor
+*/
+VTKViewer_DelaunayTriangulator
+::~VTKViewer_DelaunayTriangulator()
+{
+ myUnstructuredGrid->Delete();
+ myGeometryFilter->Delete();
+ myDelaunay3D->Delete();
+ myFaceIds->Delete();
+ myPoints->Delete();
+}
+
+
+vtkPoints*
+VTKViewer_DelaunayTriangulator
+::InitPoints()
+{
+ myUnstructuredGrid->Initialize();
+ myUnstructuredGrid->Allocate();
+ myUnstructuredGrid->SetPoints(myPoints);
+
+ vtkIdType aNumPts;
+ myInput->GetCellPoints(myCellId,aNumPts,myPointIds);
+ {
+ vtkFloatingPointType aPntCoord[3];
+ myPoints->SetNumberOfPoints(aNumPts);
+ vtkPoints *anInputPoints = myInput->GetPoints();
+ for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
+ anInputPoints->GetPoint(myPointIds[aPntId],aPntCoord);
+ myPoints->SetPoint(aPntId,aPntCoord);
+ }
+ }
+
+ myGeometryFilter->Update();
+ myPolyData = myGeometryFilter->GetOutput();
+
+ return myPoints;
+}
+
+vtkIdType
+VTKViewer_DelaunayTriangulator
+::GetNbOfPoints()
+{
+ return myPoints->GetNumberOfPoints();
+}
+
+vtkIdType
+VTKViewer_DelaunayTriangulator
+::GetPointId(vtkIdType thePointId)
+{
+ return thePointId;
+}
+
+vtkFloatingPointType
+VTKViewer_DelaunayTriangulator
+::GetCellLength()
+{
+ return myPolyData->GetLength();
+}
+
+vtkIdType
+VTKViewer_DelaunayTriangulator
+::GetNumFaces()
+{
+ return myPolyData->GetNumberOfCells();
+}
+
+vtkCell*
+VTKViewer_DelaunayTriangulator
+::GetFace(vtkIdType theFaceId)
+{
+ return myPolyData->GetCell(theFaceId);
+}
+
+void
+VTKViewer_DelaunayTriangulator
+::GetCellNeighbors(vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds)
+{
+ myFaceIds->Reset();
+ vtkIdList *anIdList = theFace->PointIds;
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(0)]);
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(1)]);
+ myFaceIds->InsertNextId(myPointIds[anIdList->GetId(2)]);
+
+ myInput->GetCellNeighbors(theCellId, myFaceIds, theCellIds);
+}
+
+
+vtkIdType
+VTKViewer_DelaunayTriangulator
+::GetConnectivity(vtkIdType thePntId)
+{
+ return myPointIds[thePntId];
}
#ifndef _VTKViewer_ConvexTool_H
#define _VTKViewer_ConvexTool_H
-#include <vtkUnstructuredGrid.h>
+#include "VTKViewer.h"
+
#include <vector>
-#include <map>
-typedef std::vector<vtkIdType> TCell; // ptsIds
-typedef std::map<vtkIdType,TCell> TCellArray; // CellId, TCell
+#include <vtkSystemIncludes.h>
+
+class vtkUnstructuredGrid;
+class vtkGeometryFilter;
+class vtkGenericCell;
+class vtkDelaunay3D;
+class vtkPolyData;
+class vtkCellData;
+class vtkPoints;
+class vtkIdList;
+class vtkCell;
+
+class VTKVIEWER_EXPORT VTKViewer_Triangulator
+{
+ public:
+ VTKViewer_Triangulator();
+
+ ~VTKViewer_Triangulator();
+
+ bool
+ Execute(vtkUnstructuredGrid *theInput,
+ vtkCellData* thInputCD,
+ vtkIdType theCellId,
+ int theShowInside,
+ int theAllVisible,
+ const char* theCellsVisibility,
+ vtkPolyData *theOutput,
+ vtkCellData* theOutputCD,
+ int theStoreMapping,
+ std::vector<vtkIdType>& theVTK2ObjIds,
+ bool theIsCheckConvex);
+
+ protected:
+ vtkIdList* myCellIds;
+
+ vtkUnstructuredGrid *myInput;
+ vtkIdType myCellId;
+ int myShowInside;
+ int myAllVisible;
+ const char* myCellsVisibility;
+
+ virtual
+ vtkPoints*
+ InitPoints() = 0;
+
+ virtual
+ vtkIdType
+ GetNbOfPoints() = 0;
+
+ virtual
+ vtkIdType
+ GetPointId(vtkIdType thePointId) = 0;
-/*! This package \namespace CONVEX_TOOL used for:
- * calculation of VTK_POLYGON cell array from VTK_TRIANGLE (triangulation)
- * of VTK_CONVEX_POINT_SET cell type.
- */
-namespace CONVEX_TOOL
+ virtual
+ vtkFloatingPointType
+ GetCellLength() = 0;
+
+ virtual
+ vtkIdType
+ GetNumFaces() = 0;
+
+ virtual
+ vtkCell*
+ GetFace(vtkIdType theFaceId) = 0;
+
+ virtual
+ void
+ GetCellNeighbors(vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds) = 0;
+
+ virtual
+ vtkIdType
+ GetConnectivity(vtkIdType thePntId) = 0;
+};
+
+
+class VTKVIEWER_EXPORT VTKViewer_OrderedTriangulator : public VTKViewer_Triangulator
{
- /*! \fn void CONVEX_TOOL::GetPolygonalFaces(vtkUnstructuredGrid* theCell,int cellId,TCellArray &outputCellArray)
- * \brief Main function.
- * \param theCell - vtkUnstructuredGrid cell pointer
- * \param cellId - id of cell type VTK_CONVEX_POINT_SET
- * \retval outputCellArray - output array with new cells types VTK_POLYGON
- */
- void
- WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName);
- void GetPolygonalFaces(vtkUnstructuredGrid* theCell,int cellId,TCellArray &outputCellArray);
-}
+ public:
+
+ VTKViewer_OrderedTriangulator();
+
+ ~VTKViewer_OrderedTriangulator();
+
+ protected:
+ vtkGenericCell *myCell;
+
+ virtual
+ vtkPoints*
+ InitPoints();
+
+ virtual
+ vtkIdType
+ GetNbOfPoints();
+
+ vtkIdType
+ GetPointId(vtkIdType thePointId);
+
+ virtual
+ vtkFloatingPointType
+ GetCellLength();
+
+ virtual
+ vtkIdType
+ GetNumFaces();
+
+ virtual
+ vtkCell*
+ GetFace(vtkIdType theFaceId);
+
+ virtual
+ void
+ GetCellNeighbors(vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds);
+
+ virtual
+ vtkIdType
+ GetConnectivity(vtkIdType thePntId);
+};
+
+
+class VTKVIEWER_EXPORT VTKViewer_DelaunayTriangulator : public VTKViewer_Triangulator
+{
+ public:
+
+ VTKViewer_DelaunayTriangulator();
+
+ ~VTKViewer_DelaunayTriangulator();
+
+ protected:
+ vtkUnstructuredGrid* myUnstructuredGrid;
+ vtkGeometryFilter* myGeometryFilter;
+ vtkDelaunay3D* myDelaunay3D;
+ vtkPolyData* myPolyData;
+ vtkIdType *myPointIds;
+ vtkIdList* myFaceIds;
+ vtkPoints* myPoints;
+
+ virtual
+ vtkPoints*
+ InitPoints();
+
+ virtual
+ vtkIdType
+ GetNbOfPoints();
+
+ vtkIdType
+ GetPointId(vtkIdType thePointId);
+
+ virtual
+ vtkFloatingPointType
+ GetCellLength();
+
+ virtual
+ vtkIdType
+ GetNumFaces();
+
+ virtual
+ vtkCell*
+ GetFace(vtkIdType theFaceId);
+
+ virtual
+ void
+ GetCellNeighbors(vtkIdType theCellId,
+ vtkCell* theFace,
+ vtkIdList* theCellIds);
+
+ virtual
+ vtkIdType
+ GetConnectivity(vtkIdType thePntId);
+};
+
#endif // _VTKViewer_ConvexTool_H
#include "VTKViewer_ExtractUnstructuredGrid.h"
-//#include "utilities.h"
+#include "VTKViewer_CellLocationsArray.h"
#include <vtkUnsignedCharArray.h>
#include <vtkUnstructuredGrid.h>
#include <vtkObjectFactory.h>
#include <vtkCellArray.h>
-#include <vtkIntArray.h>
#include <vtkIdList.h>
#include <vtkCell.h>
}
}
if((aNbElems = aConnectivity->GetNumberOfCells())){
- vtkIntArray* aCellLocationsArray = vtkIntArray::New();
+ VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New();
aCellLocationsArray->SetNumberOfComponents(1);
aCellLocationsArray->SetNumberOfTuples(aNbElems);
aConnectivity->InitTraversal();
}
}
if((aNbElems = aConnectivity->GetNumberOfCells())){
- vtkIntArray* aCellLocationsArray = vtkIntArray::New();
+ VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New();
aCellLocationsArray->SetNumberOfComponents(1);
aCellLocationsArray->SetNumberOfTuples(aNbElems);
aConnectivity->InitTraversal();
// $Header$
#include "VTKViewer_GeometryFilter.h"
+#include "VTKViewer_ConvexTool.h"
#include <vtkSmartPointer.h>
#include <vtkCellArray.h>
#include <vtkVoxel.h>
#include <vtkWedge.h>
-#include <vtkMath.h>
-#include <vtkPlane.h>
-#include <vtkDelaunay3D.h>
-#include <vtkGeometryFilter.h>
-
#include <algorithm>
#include <iterator>
#include <vector>
#endif
#endif
-#define USE_ROBUST_TRIANGULATION
+//#define USE_ROBUST_TRIANGULATION
-//----------------------------------------------------------------------------
vtkCxxRevisionMacro(VTKViewer_GeometryFilter, "$Revision$");
vtkStandardNewMacro(VTKViewer_GeometryFilter);
{}
-//----------------------------------------------------------------------------
void
VTKViewer_GeometryFilter
::Execute()
}
-//----------------------------------------------------------------------------
void
VTKViewer_GeometryFilter
::UnstructuredGridExecute()
vtkPolyData *output = this->GetOutput();
vtkPointData *outputPD = output->GetPointData();
-#ifdef USE_ROBUST_TRIANGULATION
- vtkUnstructuredGrid* anUnstructuredGrid = vtkUnstructuredGrid::New();
- vtkPoints* aDelaunayPoints = vtkPoints::New();
-
- vtkDelaunay3D* aDelaunay3D = vtkDelaunay3D::New();
- aDelaunay3D->SetInput(anUnstructuredGrid);
-
- vtkGeometryFilter* aGeometryFilter = vtkGeometryFilter::New();
- aGeometryFilter->SetInput(aDelaunay3D->GetOutput());
-#endif
+ VTKViewer_OrderedTriangulator anOrderedTriangulator;
+ VTKViewer_DelaunayTriangulator aDelaunayTriangulator;
vtkCellData *outputCD = output->GetCellData();
vtkGenericCell *cell = vtkGenericCell::New();
-
vtkIdList *cellIds = vtkIdList::New();
vtkIdList *faceIds = vtkIdList::New();
char *cellVis;
vtkIdType newCellId;
int faceId, *faceVerts, numFacePts;
- float *x;
+ vtkFloatingPointType *x;
int PixelConvert[4], aNewPts[VTK_CELL_SIZE];
// ghost cell stuff
unsigned char updateLevel = (unsigned char)(output->GetUpdateGhostLevel());
break;
case VTK_CONVEX_POINT_SET: {
- //cout<<"cellId = "<<cellId<<"\n";
-
- vtkIdType aNumPts;
- vtkPoints *aPoints;
-#ifdef USE_ROBUST_TRIANGULATION
- aPoints = aDelaunayPoints;
- anUnstructuredGrid->Initialize();
- anUnstructuredGrid->Allocate();
- anUnstructuredGrid->SetPoints(aDelaunayPoints);
-
- vtkIdType *aPts;
- input->GetCellPoints(cellId,aNumPts,aPts);
- {
- float aPntCoord[3];
- aDelaunayPoints->SetNumberOfPoints(aNumPts);
- vtkPoints *anInputPoints = input->GetPoints();
- for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
- anInputPoints->GetPoint(aPts[aPntId],aPntCoord);
- aDelaunayPoints->SetPoint(aPntId,aPntCoord);
- }
- }
-#else
- input->GetCell(cellId,cell);
- aPoints = input->GetPoints();
- aNumPts = cell->GetNumberOfPoints();
-#endif
- // To calculate the bary center of the cell
- float aCellCenter[3] = {0.0, 0.0, 0.0};
- {
- float aPntCoord[3];
- for (int aPntId = 0; aPntId < aNumPts; aPntId++) {
-#ifdef USE_ROBUST_TRIANGULATION
- aPoints->GetPoint(aPntId,aPntCoord);
-#else
- aPoints->GetPoint(cell->GetPointId(aPntId),aPntCoord);
-#endif
- //cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}\n";
- aCellCenter[0] += aPntCoord[0];
- aCellCenter[1] += aPntCoord[1];
- aCellCenter[2] += aPntCoord[2];
- }
- aCellCenter[0] /= aNumPts;
- aCellCenter[1] /= aNumPts;
- aCellCenter[2] /= aNumPts;
- }
-
-#ifdef USE_ROBUST_TRIANGULATION
- aGeometryFilter->Update();
- vtkPolyData* aPolyData = aGeometryFilter->GetOutput();
-
- float aCellLength = aPolyData->GetLength();
- int aNumFaces = aPolyData->GetNumberOfCells();
-#else
- float aCellLength = sqrt(cell->GetLength2());
- int aNumFaces = cell->GetNumberOfFaces();
-#endif
-
- static float EPS = 1.0E-5;
- float aDistEps = aCellLength * EPS;
-
- // To initialize set of points that belong to the cell
- typedef std::set<vtkIdType> TPointIds;
- TPointIds anInitialPointIds;
- for(vtkIdType aPntId = 0; aPntId < aNumPts; aPntId++){
-#ifdef USE_ROBUST_TRIANGULATION
- anInitialPointIds.insert(aPntId);
-#else
- anInitialPointIds.insert(cell->GetPointId(aPntId));
-#endif
- }
-
- // To initialize set of points by face that belong to the cell and backward
- typedef std::set<vtkIdType> TFace2Visibility;
- TFace2Visibility aFace2Visibility;
-
- typedef std::set<TPointIds> TFace2PointIds;
- TFace2PointIds aFace2PointIds;
-
- for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
-#ifdef USE_ROBUST_TRIANGULATION
- vtkCell* aFace = aPolyData->GetCell(aFaceId);
-#else
- vtkCell* aFace = cell->GetFace(aFaceId);
-#endif
- vtkIdList *anIdList = aFace->PointIds;
- aNewPts[0] = anIdList->GetId(0);
- aNewPts[1] = anIdList->GetId(1);
- aNewPts[2] = anIdList->GetId(2);
-
-#ifdef USE_ROBUST_TRIANGULATION
- faceIds->Reset();
- faceIds->InsertNextId(aPts[aNewPts[0]]);
- faceIds->InsertNextId(aPts[aNewPts[1]]);
- faceIds->InsertNextId(aPts[aNewPts[2]]);
- input->GetCellNeighbors(cellId, faceIds, cellIds);
-#else
- input->GetCellNeighbors(cellId, anIdList, cellIds);
-#endif
- if((!allVisible && !cellVis[cellIds->GetId(0)]) ||
- cellIds->GetNumberOfIds() <= 0 ||
- myShowInside)
- {
- TPointIds aPointIds;
- aPointIds.insert(aNewPts[0]);
- aPointIds.insert(aNewPts[1]);
- aPointIds.insert(aNewPts[2]);
-
- aFace2PointIds.insert(aPointIds);
- aFace2Visibility.insert(aFaceId);
- }
- }
-
- for (int aFaceId = 0; aFaceId < aNumFaces; aFaceId++) {
- if(aFace2Visibility.find(aFaceId) == aFace2Visibility.end())
- continue;
-
-#ifdef USE_ROBUST_TRIANGULATION
- vtkCell* aFace = aPolyData->GetCell(aFaceId);
-#else
- vtkCell* aFace = cell->GetFace(aFaceId);
-#endif
- vtkIdList *anIdList = aFace->PointIds;
- aNewPts[0] = anIdList->GetId(0);
- aNewPts[1] = anIdList->GetId(1);
- aNewPts[2] = anIdList->GetId(2);
-
- // To initialize set of points for the plane where the trinangle face belong to
- TPointIds aPointIds;
- aPointIds.insert(aNewPts[0]);
- aPointIds.insert(aNewPts[1]);
- aPointIds.insert(aNewPts[2]);
-
- // To get know, if the points of the trinagle were already observed
- bool anIsObserved = aFace2PointIds.find(aPointIds) == aFace2PointIds.end();
- //cout<<"\taFaceId = "<<aFaceId<<"; anIsObserved = "<<anIsObserved;
- //cout<<"; aNewPts = {"<<aNewPts[0]<<", "<<aNewPts[1]<<", "<<aNewPts[2]<<"}\n";
-
- if(!anIsObserved){
- // To get coordinates of the points of the traingle face
- float aCoord[3][3];
- aPoints->GetPoint(aNewPts[0],aCoord[0]);
- aPoints->GetPoint(aNewPts[1],aCoord[1]);
- aPoints->GetPoint(aNewPts[2],aCoord[2]);
-
- // To calculate plane normal
- float aVector01[3] = { aCoord[1][0] - aCoord[0][0],
- aCoord[1][1] - aCoord[0][1],
- aCoord[1][2] - aCoord[0][2] };
-
- float aVector02[3] = { aCoord[2][0] - aCoord[0][0],
- aCoord[2][1] - aCoord[0][1],
- aCoord[2][2] - aCoord[0][2] };
+ bool anIsOk = anOrderedTriangulator.Execute(input,
+ cd,
+ cellId,
+ myShowInside,
+ allVisible,
+ cellVis,
+ output,
+ outputCD,
+ myStoreMapping,
+ myVTK2ObjIds,
+ true);
+ if(!anIsOk)
+ aDelaunayTriangulator.Execute(input,
+ cd,
+ cellId,
+ myShowInside,
+ allVisible,
+ cellVis,
+ output,
+ outputCD,
+ myStoreMapping,
+ myVTK2ObjIds,
+ false);
- float aCross21[3];
- vtkMath::Cross(aVector02,aVector01,aCross21);
-
- vtkMath::Normalize(aCross21);
-
- // To calculate what points belong to the plane
- // To calculate bounds of the point set
- float aCenter[3] = {0.0, 0.0, 0.0};
- {
- TPointIds::const_iterator anIter = anInitialPointIds.begin();
- TPointIds::const_iterator anEndIter = anInitialPointIds.end();
- for(; anIter != anEndIter; anIter++){
- float aPntCoord[3];
- vtkIdType aPntId = *anIter;
- aPoints->GetPoint(aPntId,aPntCoord);
- float aDist = vtkPlane::DistanceToPlane(aPntCoord,aCross21,aCoord[0]);
- //cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}; aDist = "<<aDist<<"\n";
- if(fabs(aDist) < aDistEps){
- aPointIds.insert(aPntId);
- aCenter[0] += aPntCoord[0];
- aCenter[1] += aPntCoord[1];
- aCenter[2] += aPntCoord[2];
- }
- }
- int aNbPoints = aPointIds.size();
- aCenter[0] /= aNbPoints;
- aCenter[1] /= aNbPoints;
- aCenter[2] /= aNbPoints;
- }
-
- // To calculate the primary direction for point set
- float aVector0[3] = { aCoord[0][0] - aCenter[0],
- aCoord[0][1] - aCenter[1],
- aCoord[0][2] - aCenter[2] };
-
- //To sinchronize orientation of the cell and its face
- float aVectorC[3] = { aCenter[0] - aCellCenter[0],
- aCenter[1] - aCellCenter[1],
- aCenter[2] - aCellCenter[2] };
- vtkMath::Normalize(aVectorC);
-
- float aDot = vtkMath::Dot(aCross21,aVectorC);
- //cout<<"\t\taCross21 = {"<<aCross21[0]<<", "<<aCross21[1]<<", "<<aCross21[2]<<"}";
- //cout<<"; aVectorC = {"<<aVectorC[0]<<", "<<aVectorC[1]<<", "<<aVectorC[2]<<"}\n";
- //cout<<"\t\taDot = "<<aDot<<"\n";
- if(aDot > 0){
- aCross21[0] = -aCross21[0];
- aCross21[1] = -aCross21[1];
- aCross21[2] = -aCross21[2];
- }
-
- vtkMath::Normalize(aVector0);
-
- //cout<<"\t\taCenter = {"<<aCenter[0]<<", "<<aCenter[1]<<", "<<aCenter[2]<<"}";
- //cout<<"; aVector0 = {"<<aVector0[0]<<", "<<aVector0[1]<<", "<<aVector0[2]<<"}\n";
-
- // To calculate the set of points by face those that belong to the plane
- TFace2PointIds aRemoveFace2PointIds;
- {
- TFace2PointIds::const_iterator anIter = aFace2PointIds.begin();
- TFace2PointIds::const_iterator anEndIter = aFace2PointIds.end();
- for(; anIter != anEndIter; anIter++){
- const TPointIds& anIds = *anIter;
- TPointIds anIntersection;
- std::set_intersection(aPointIds.begin(),aPointIds.end(),
- anIds.begin(),anIds.end(),
- std::inserter(anIntersection,anIntersection.begin()));
-
- if(anIntersection == anIds){
- aRemoveFace2PointIds.insert(anIds);
- }
- }
- }
-
- // To remove from the set of points by face those that belong to the plane
- {
- TFace2PointIds::const_iterator anIter = aRemoveFace2PointIds.begin();
- TFace2PointIds::const_iterator anEndIter = aRemoveFace2PointIds.end();
- for(; anIter != anEndIter; anIter++){
- const TPointIds& anIds = *anIter;
- aFace2PointIds.erase(anIds);
- }
- }
-
- // To sort the planar set of the points accrding to the angle
- {
- typedef std::map<float,vtkIdType> TSortedPointIds;
- TSortedPointIds aSortedPointIds;
-
- TPointIds::const_iterator anIter = aPointIds.begin();
- TPointIds::const_iterator anEndIter = aPointIds.end();
- for(; anIter != anEndIter; anIter++){
- float aPntCoord[3];
- vtkIdType aPntId = *anIter;
- aPoints->GetPoint(aPntId,aPntCoord);
- float aVector[3] = { aPntCoord[0] - aCenter[0],
- aPntCoord[1] - aCenter[1],
- aPntCoord[2] - aCenter[2] };
- vtkMath::Normalize(aVector);
-
- float aCross[3];
- vtkMath::Cross(aVector,aVector0,aCross);
- bool aGreaterThanPi = vtkMath::Dot(aCross,aCross21) < 0;
- float aCosinus = vtkMath::Dot(aVector,aVector0);
- if(aCosinus > 1.0)
- aCosinus = 1.0;
- if(aCosinus < -1.0)
- aCosinus = -1.0;
- static float a2Pi = 2.0 * vtkMath::Pi();
- float anAngle = acos(aCosinus);
- //cout<<"\t\taPntId = "<<aPntId<<" {"<<aPntCoord[0]<<", "<<aPntCoord[1]<<", "<<aPntCoord[2]<<"}";
- //cout<<"; aGreaterThanPi = "<<aGreaterThanPi<<"; aCosinus = "<<aCosinus<<"; anAngle = "<<anAngle<<"\n";
- if(aGreaterThanPi)
- anAngle = a2Pi - anAngle;
- aSortedPointIds[anAngle] = aPntId;
- //cout<<"\t\t\tanAngle = "<<anAngle<<"\n";
- }
- if(!aSortedPointIds.empty()){
- aCellType = VTK_POLYGON;
- int numFacePts = aSortedPointIds.size();
- std::vector<vtkIdType> aConnectivities(numFacePts);
- TSortedPointIds::const_iterator anIter = aSortedPointIds.begin();
- TSortedPointIds::const_iterator anEndIter = aSortedPointIds.end();
- for(vtkIdType anId = 0; anIter != anEndIter; anIter++, anId++){
- vtkIdType aPntId = anIter->second;
-#ifdef USE_ROBUST_TRIANGULATION
- aConnectivities[anId] = aPts[aPntId];
-#else
- aConnectivities[anId] = aPntId;
-#endif
- }
- newCellId = output->InsertNextCell(aCellType,numFacePts,&aConnectivities[0]);
- if(myStoreMapping)
- myVTK2ObjIds.push_back(cellId);
- outputCD->CopyData(cd,cellId,newCellId);
- }
- }
- }
- }
-
break;
}
case VTK_TETRA: {
vtkDebugMacro(<<"Extracted " << input->GetNumberOfPoints() << " points,"
<< output->GetNumberOfCells() << " cells.");
-#ifdef USE_ROBUST_TRIANGULATION
- anUnstructuredGrid->Delete();
- aDelaunayPoints->Delete();
-
- aDelaunay3D->Delete();
- aGeometryFilter->Delete();
-#endif
-
cell->Delete();
cellIds->Delete();
}
-//----------------------------------------------------------------------------
void
VTKViewer_GeometryFilter
::SetInside(int theShowInside)
}
-//----------------------------------------------------------------------------
void
VTKViewer_GeometryFilter
::SetWireframeMode(int theIsWireframeMode)
}
-//----------------------------------------------------------------------------
void
VTKViewer_GeometryFilter
::SetStoreMapping(int theStoreMapping)
}
-//----------------------------------------------------------------------------
vtkIdType VTKViewer_GeometryFilter::GetElemObjId(int theVtkID){
if(myVTK2ObjIds.empty() || theVtkID > myVTK2ObjIds.size()) return -1;
#if defined __GNUC_2__
#include "VTKViewer_Actor.h"
#include "VTKViewer_Utilities.h"
#include "VTKViewer_Trihedron.h"
-#include "VTKViewer_RectPicker.h"
#include "VTKViewer_ViewWindow.h"
#include "VTKViewer_RenderWindow.h"
-#include "VTKViewer_CellRectPicker.h"
#include "VTKViewer_RenderWindowInteractor.h"
//#include "SALOME_Actor.h"
return anEdgeId;
}
*/
-//----------------------------------------------------------------------------
+
vtkStandardNewMacro(VTKViewer_InteractorStyle);
-//----------------------------------------------------------------------------
+
/*!Constructor.*/
VTKViewer_InteractorStyle::VTKViewer_InteractorStyle()
{
OnSelectionModeChanged();
}
-//----------------------------------------------------------------------------
+
/*!Destructor.*/
VTKViewer_InteractorStyle::~VTKViewer_InteractorStyle()
{
m_ViewWnd->RemoveActor(myPreSelectionActor);
}
-//----------------------------------------------------------------------------
+
/*!Set preselection properties.
*\param theRed - red color.
*\param theGreen - green color.
myPreSelectionActor->GetProperty()->SetPointSize(theWidth);
}
-//----------------------------------------------------------------------------
+
/*!Set render window interactor
*\param theInteractor - interactor.
*/
Superclass::SetInteractor(theInteractor);
}
-//----------------------------------------------------------------------------
+
/*!Set view window.
*\param theViewWnd - SALOME VTKViewer_ViewWindow
*/
myPreSelectionActor->Delete();
}
-//----------------------------------------------------------------------------
+
/*!Set GUI window.
*\param theWindow - QWidget window.
*/
myGUIWindow = theWindow;
}
-//----------------------------------------------------------------------------
-/*!Set triedron.
+
+/*!Set trihedron.
*\param theTrihedron - SALOME VTKViewer_Trihedron
*/
void VTKViewer_InteractorStyle::setTriedron(VTKViewer_Trihedron* theTrihedron){
m_Trihedron = theTrihedron;
}
-//----------------------------------------------------------------------------
/*!Rotate camera.
*\param dx -
*\param dy -
myGUIWindow->update();
}
-//----------------------------------------------------------------------------
void VTKViewer_InteractorStyle::PanXY(int x, int y, int oldX, int oldY)
{
TranslateView(x, y, oldX, oldY);
}
-//----------------------------------------------------------------------------
/*! Move the position of the camera along the direction of projection. (dx,dy)*/
void VTKViewer_InteractorStyle::DollyXY(int dx, int dy)
{
myGUIWindow->update();
}
-//----------------------------------------------------------------------------
-/*!*/
void VTKViewer_InteractorStyle::SpinXY(int x, int y, int oldX, int oldY)
{
vtkCamera *cam;
}
-//----------------------------------------------------------------------------
/*!On mouse move event.
*\param ctrl - CTRL (not used)
*\param shift - SHIFT (on/off - integer 0/1)
}
-//----------------------------------------------------------------------------
/*!On Left button down event.
*\param ctrl - CTRL (on/off - integer 0/1)
*\param shift - SHIFT (on/off - integer 0/1)
}
-//----------------------------------------------------------------------------
/*!On left button up event.
*\param ctrl - CTRL (not used)
*\param shift - SHIFT (on/off - integer 0/1)
}
-//----------------------------------------------------------------------------
/*!On left button up event.
*\param ctrl - CTRL (on/off - integer 0/1)
*\param shift - SHIFT (on/off - integer 0/1)
}
-//----------------------------------------------------------------------------
/*!On middle button up event.
*\param ctrl - CTRL (not used)
*\param shift - SHIFT (on/off - integer 0/1)
}
-//----------------------------------------------------------------------------
/*!On right button down event.
*\param ctrl - CTRL (on/off - integer 0/1)
*\param shift - SHIFT (on/off - integer 0/1)
}
}
-//----------------------------------------------------------------------------
/*!On right button up event.
*\param ctrl - CTRL (not used)
*\param shift - SHIFT (on/off - integer 0/1)
}
}
-//----------------------------------------------------------------------------
-/** @name XPM - x pixmaps. */
+/*! @name XPM - x pixmaps. */
//@{
/*!Image Zoom cursor*/
const char* imageZoomCursor[] = {
"................................"};
//@}
-//----------------------------------------------------------------------------
/*! Loads cursors for viewer operations - zoom, pan, etc...*/
void VTKViewer_InteractorStyle::loadCursors()
{
}
-//----------------------------------------------------------------------------
/*! event filter - controls mouse and keyboard events during viewer operations*/
bool VTKViewer_InteractorStyle::eventFilter(QObject* object, QEvent* event)
{
}
-//----------------------------------------------------------------------------
/*! starts Zoom operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startZoom()
{
}
-//----------------------------------------------------------------------------
/*! starts Pan operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startPan()
{
qApp->installEventFilter(this);
}
-//----------------------------------------------------------------------------
/*! starts Rotate operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startRotate()
{
}
-//----------------------------------------------------------------------------
/*! starts Spin operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startSpin()
{
-//----------------------------------------------------------------------------
/*! starts Fit Area operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startFitArea()
{
}
-//----------------------------------------------------------------------------
/*!View fit all.*/
void VTKViewer_InteractorStyle::ViewFitAll() {
int aTriedronWasVisible = false;
}
-//----------------------------------------------------------------------------
/*! starts Global Panning operation (e.g. through menu command)*/
void VTKViewer_InteractorStyle::startGlobalPan()
{
}
-//----------------------------------------------------------------------------
/*!\retval TRUE if needs redrawing*/
bool VTKViewer_InteractorStyle::needsRedrawing()
{
}
-//----------------------------------------------------------------------------
/*! fits viewer contents to rectangle
*\param left - left side
*\param top - top side
}
-//----------------------------------------------------------------------------
/*! starts viewer operation (!internal usage!)*/
void VTKViewer_InteractorStyle::startOperation(int operation)
{
}
-//----------------------------------------------------------------------------
/*! sets proper cursor for window when viewer operation is activated*/
void VTKViewer_InteractorStyle::setCursor(const int operation)
{
}
-//----------------------------------------------------------------------------
/*! called when viewer operation started (!put necessary initialization here!)*/
void VTKViewer_InteractorStyle::onStartOperation()
{
}
-//----------------------------------------------------------------------------
/*! called when viewer operation finished (!put necessary post-processing here!)*/
void VTKViewer_InteractorStyle::onFinishOperation()
{
void VTKViewer_InteractorStyle::TranslateView(int toX, int toY, int fromX, int fromY)
{
vtkCamera *cam = this->CurrentRenderer->GetActiveCamera();
- double viewFocus[4], focalDepth, viewPoint[3];
- float newPickPoint[4], oldPickPoint[4], motionVector[3];
+ vtkFloatingPointType viewFocus[4], focalDepth, viewPoint[3];
+ vtkFloatingPointType newPickPoint[4], oldPickPoint[4], motionVector[3];
cam->GetFocalPoint(viewFocus);
this->ComputeWorldToDisplay(viewFocus[0], viewFocus[1],
viewFocus[2], viewFocus);
focalDepth = viewFocus[2];
- this->ComputeDisplayToWorld(double(toX), double(toY),
+ this->ComputeDisplayToWorld(vtkFloatingPointType(toX), vtkFloatingPointType(toY),
focalDepth, newPickPoint);
- this->ComputeDisplayToWorld(double(fromX),double(fromY),
+ this->ComputeDisplayToWorld(vtkFloatingPointType(fromX),vtkFloatingPointType(fromY),
focalDepth, oldPickPoint);
// camera motion is reversed
const int left, const int top,
const int right, const int bottom)
{
- float* aBounds = theActor->GetBounds();
- float aMin[3], aMax[3];
+ vtkFloatingPointType* aBounds = theActor->GetBounds();
+ vtkFloatingPointType aMin[3], aMax[3];
ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin);
ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax);
if (aMin[0] > aMax[0]) {
- float aBuf = aMin[0];
+ vtkFloatingPointType aBuf = aMin[0];
aMin[0] = aMax[0];
aMax[0] = aBuf;
}
if (aMin[1] > aMax[1]) {
- float aBuf = aMin[1];
+ vtkFloatingPointType aBuf = aMin[1];
aMin[1] = aMax[1];
aMax[1] = aBuf;
}
const int left, const int top,
const int right, const int bottom)
{
- float* aBounds = theCell->GetBounds();
- float aMin[3], aMax[3];
+ vtkFloatingPointType* aBounds = theCell->GetBounds();
+ vtkFloatingPointType aMin[3], aMax[3];
ComputeWorldToDisplay(aBounds[0], aBounds[2], aBounds[4], aMin);
ComputeWorldToDisplay(aBounds[1], aBounds[3], aBounds[5], aMax);
if (aMin[0] > aMax[0]) {
- float aBuf = aMin[0];
+ vtkFloatingPointType aBuf = aMin[0];
aMin[0] = aMax[0];
aMax[0] = aBuf;
}
if (aMin[1] > aMax[1]) {
- float aBuf = aMin[1];
+ vtkFloatingPointType aBuf = aMin[1];
aMin[1] = aMax[1];
aMax[1] = aBuf;
}
}
/*!Checks: is given point \a thePoint in rectangle*/
-bool VTKViewer_InteractorStyle::IsInRect(float* thePoint,
- const int left, const int top,
- const int right, const int bottom)
+bool VTKViewer_InteractorStyle::IsInRect(vtkFloatingPointType* thePoint,
+ const int left, const int top,
+ const int right, const int bottom)
{
- float aPnt[3];
+ vtkFloatingPointType aPnt[3];
ComputeWorldToDisplay(thePoint[0], thePoint[1], thePoint[2], aPnt);
return ((aPnt[0]>left) && (aPnt[0]<right) && (aPnt[1]>bottom) && (aPnt[1]<top));
bool IsInRect(vtkCell* theCell,
const int left, const int top,
const int right, const int bottom);
- bool IsInRect(float* thePoint,
+ bool IsInRect(vtkFloatingPointType* thePoint,
const int left, const int top,
const int right, const int bottom);
int State;
- float MotionFactor;
- float RadianToDegree; // constant: for conv from deg to rad
+ vtkFloatingPointType MotionFactor;
+ vtkFloatingPointType RadianToDegree; // constant: for conv from deg to rad
double myScale;
VTKViewer_Actor *myPreViewActor, *myPreSelectionActor, *mySelectedActor;
using namespace std;
-//----------------------------------------------------------------------------
+
vtkStandardNewMacro(VTKViewer_RectPicker);
-//----------------------------------------------------------------------------
+
/*!Constructor. Do nothing*/
VTKViewer_RectPicker::VTKViewer_RectPicker()
{
}
-//----------------------------------------------------------------------------
+
/*!Perform pick operation with selection rectangle provided. Normally the
* first two values for the selection top-left and right-bottom points are
* x-y pixel coordinate, and the third value is =0.
return result;
}
-//----------------------------------------------------------------------------
+
/*! Bounding box intersection with hexahedron. Origin[4][4] starts the ray from corner points,
* dir[4][3] is the vector components of the ray in the x-y-z directions.
* (Notes: the intersection ray dir[4][3] is NOT normalized.)
return inside;
}
-//----------------------------------------------------------------------------
/*! Position of point relative to hexahedron. p1[4][4] is the corner points of top face,
* p2[4][4] is the corner points of bottom face.
* \retval The method returns a non-zero value, if the point is inside.
return inside;
}
-//----------------------------------------------------------------------------
float VTKViewer_RectPicker::IntersectWithHex(float p1[4][4], float p2[4][4], float tol,
vtkAssemblyPath *path, vtkProp3D *prop3D,
vtkAbstractMapper3D *mapper)
void VTKViewer_RenderWindow::onChangeBackgroundColor()
{
//float red, green, blue;
- float backint[3];
+ vtkFloatingPointType backint[3];
vtkRendererCollection * theRenderers = myRW->GetRenderers();
theRenderers->InitTraversal();
myPointPicker->Delete();
}
+/*!
+ Print interactor to stream
+ \param os - stream
+ \param indent
+*/
void VTKViewer_RenderWindowInteractor::PrintSelf(ostream& os, vtkIndent indent)
{
vtkRenderWindowInteractor::PrintSelf(os, indent) ;
vtkRenderWindowInteractor::SetInteractorStyle(theInteractor);
}
-
-/*
-void VTKViewer_RenderWindowInteractor::SetSelectionMode(Selection_Mode theMode)
-{
- myCellActor->SetVisibility(false);
- myEdgeActor->SetVisibility(false);
- myPointActor->SetVisibility(false);
-
- switch(theMode){
- case ActorSelection:
- this->SetPicker(myBasicPicker);
- break;
- case NodeSelection:
- this->SetPicker(myPointPicker);
- break;
- case CellSelection:
- case EdgeSelection:
- case FaceSelection:
- case VolumeSelection:
- case EdgeOfCellSelection:
- this->SetPicker(myCellPicker);
- break;
- }
-
- myInteractorStyle->OnSelectionModeChanged();
-}
-*/
-
/*!Sets selection properties.
*\param theRed - red component of color
*\param theGreen - green component of color
return 1 ;
}
-/**@see CreateTimer(int )
- *\retval 1
+/*!
+ \sa CreateTimer(int )
+ \retval 1
*/
int VTKViewer_RenderWindowInteractor::DestroyTimer(void)
{
emit RenderWindowModified();
}
+/*!
+ default key press event (empty implementation)
+*/
void VTKViewer_RenderWindowInteractor::KeyPressed(QKeyEvent *event)
{
/// NOT_IMPLEMENTED
TUpdateActor theFun)
{
(*theFun)(theMapIndex,theMapActor,theActor);
- float aPos[3];
+ vtkFloatingPointType aPos[3];
theMapActor->GetPosition(aPos);
theActor->SetPosition(aPos);
}
int i, j, numIds, abort=0;
vtkIdType cellId, numCells, numPts;
vtkIdType oldId, newId;
- float center[3], *p, pt[3];
+ vtkFloatingPointType center[3], *p, pt[3];
vtkPointData *pd, *outPD;;
vtkIdList *ptIds, *newPtIds;
vtkDataSet *input= this->GetInput();
vtkUnstructuredGrid *output = this->GetOutput();
vtkIdType tenth;
- float decimal;
+ vtkFloatingPointType decimal;
vtkDebugMacro(<<"Shrinking cells");
Bounds[1] = Bounds[3] = Bounds[5] = -VTK_LARGE_FLOAT;
}
-float*
+/*!
+ \return bounding box
+*/
+vtkFloatingPointType*
VTKViewer_UnScaledActor
::GetBounds()
{
void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer)
{
if(theRenderer){
- float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}};
+ vtkFloatingPointType P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}};
theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]);
theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]);
- float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+
- (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+
- (P[1][2]-P[0][2])*(P[1][2]-P[0][2]));
+ vtkFloatingPointType aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+
+ (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+
+ (P[1][2]-P[0][2])*(P[1][2]-P[0][2]));
int* aSize = theRenderer->GetRenderWindow()->GetSize();
- float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1]));
+ vtkFloatingPointType aWinDiag = sqrt(vtkFloatingPointType(aSize[0]*aSize[0]+aSize[1]*aSize[1]));
vtkDataSet* aDataSet = GetMapper()->GetInput();
- float aLength = aDataSet->GetLength();
- float aPrecision = 1.0E-3;
- float anOldScale = GetScale()[0];
- float aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1]));
+ aDataSet->Update();
+ vtkFloatingPointType aLength = aDataSet->GetLength();
+ vtkFloatingPointType aPrecision = 1.0E-3;
+ vtkFloatingPointType anOldScale = GetScale()[0];
+ vtkFloatingPointType aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(vtkFloatingPointType(aSize[0])/vtkFloatingPointType(aSize[1]));
if(fabs(aScale - anOldScale)/aScale > aPrecision){
SetScale(aScale);
}
vtkFollower::Render(theRenderer);
}
+/*!
+ Constructor
+*/
VTKViewer_Axis::VTKViewer_Axis()
{
/*! \li Initialize the Line pipe-line representation*/
myVisibility = VTKViewer_Trihedron::eOn;
}
+/*!
+ Destructor
+*/
VTKViewer_Axis::~VTKViewer_Axis()
{
/*! \li Destroy of the Label pipe-line representation */
myLineSource->Delete();
}
+/*! Add to renderer
+ * \param theRenderer - vtkRenderer pointer
+ */
void VTKViewer_Axis::AddToRender(vtkRenderer* theRenderer){
/*! \li Order of the calls are important*/
theRenderer->AddActor(myLineActor);
theRenderer->AddActor(myArrowActor);
}
+/*! Remove actor of acis from \a theRenderer which are in myPresent.
+ * \param theRenderer - vtkRenderer pointer
+ */
void VTKViewer_Axis::RemoveFromRender(vtkRenderer* theRenderer){
/*! \li Order of the calls are important*/
theRenderer->RemoveActor(myLineActor);
theRenderer->RemoveActor(myArrowActor);
}
+/*! Sets visibility for all Axis to \a theVis*/
void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis)
{
switch(theVis){
myVisibility = theVis;
}
-//****************************************************************
+/*! Set camera for myLabelActor
+ */
void VTKViewer_Axis::SetCamera(vtkCamera* theCamera){
myLabelActor->SetCamera(theCamera);
}
+/*! Sets \a theProperty for actors: myLineActor,myLabelActor,myArrowActor
+ */
void VTKViewer_Axis::SetProperty(vtkProperty* theProperty){
myLabelActor->SetProperty(theProperty);
myArrowActor->SetProperty(theProperty);
myLineActor->SetProperty(theProperty);
}
-void VTKViewer_Axis::SetSize(float theSize)
+/*! Set size of VTKViewer_Axis
+ */
+void VTKViewer_Axis::SetSize(vtkFloatingPointType theSize)
{
- float aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize};
+ vtkFloatingPointType aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize};
myLineSource->SetPoint2(aPosition);
myArrowActor->SetPosition(0.0,0.0,0.0);
vtkStandardNewMacro(VTKViewer_Trihedron);
+/*!
+ Constructor
+*/
VTKViewer_Trihedron::VTKViewer_Trihedron()
{
myPresent = vtkActorCollection::New();
myAxis[0] = VTKViewer_XAxis::New();
myAxis[1] = VTKViewer_YAxis::New();
myAxis[2] = VTKViewer_ZAxis::New();
- static float aSize = 100;
+ static vtkFloatingPointType aSize = 100;
SetSize(aSize);
}
+/*!
+ Destructor
+*/
VTKViewer_Trihedron::~VTKViewer_Trihedron()
{
myPresent->RemoveAllItems();
myAxis[i]->Delete();
}
-void VTKViewer_Trihedron::SetSize(float theSize)
+/*! Set size of axes
+ */
+void VTKViewer_Trihedron::SetSize(vtkFloatingPointType theSize)
{
mySize = theSize;
for(int i = 0; i < 3; i++)
myAxis[i]->SetSize(theSize);
}
+/*! Set visibility of axes
+ */
void VTKViewer_Trihedron::SetVisibility(TVisibility theVis)
{
for(int i = 0; i < 3; i++)
myAxis[i]->SetVisibility(theVis);
}
+/*!
+ \return visibility of first axis
+*/
VTKViewer_Trihedron::TVisibility VTKViewer_Trihedron::GetVisibility()
{
return myAxis[0]->GetVisibility();
}
+/*! Add to render all Axis
+ * \param theRenderer - vtkRenderer pointer
+ */
void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer)
{
vtkCamera* aCamera = theRenderer->GetActiveCamera();
}
}
+/*! Remove all actors from \a theRenderer which are in myPresent.
+ * \param theRenderer - vtkRenderer pointer
+ */
void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer)
{
myPresent->InitTraversal();
myAxis[i]->RemoveFromRender(theRenderer);
}
+/*! Return count of visible actors.
+ * \param theRenderer - vtkRenderer pointer
+ */
int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer)
{
//TVisibility aVis = GetVisibility();
/*!Create new instance of VTKViewer_UnScaledActor.*/
static VTKViewer_UnScaledActor *New();
- virtual float* GetBounds();
+ virtual vtkFloatingPointType* GetBounds();
virtual void SetSize(int theSize);
virtual void Render(vtkRenderer *theRenderer);
VTKViewer_UnScaledActor* ArrowActor;
};
-//****************************************************************
/*!This class provide support trihedron object in vtk viewer.*/
class VTKVIEWER_EXPORT VTKVIEWER_EXPORT VTKViewer_Trihedron : public vtkObject
{
static VTKViewer_Trihedron *New();
/*!Sets size of trihedron.
- * \param theSize - float value
+ * \param theSize - vtkFloatingPointType value
*/
- virtual void SetSize(float theSize);
+ virtual void SetSize(vtkFloatingPointType theSize);
/*! Get size of trihedron.
- * \retval mySize - float value
+ * \retval mySize - vtkFloatingPointType value
*/
- virtual float GetSize() { return mySize;}
+ virtual vtkFloatingPointType GetSize() { return mySize;}
enum TVisibility{eOff, eOn, eOnlyLineOn};
VTKViewer_Axis* myAxis[3];
/*! Common size for trihedron, for each axis.*/
- float mySize;
+ vtkFloatingPointType mySize;
};
-//****************************************************************
/*!The base class for concreate Axis.
* Its only duty is to give correct initialization and destruction
* of its pipe-lines
/*! Set size of VTKViewer_Axis
*/
- virtual void SetSize(float theSize);
+ virtual void SetSize(vtkFloatingPointType theSize);
/*! Get label actor.
* \retval Return myLabelActor.
/*! \var myRot[3]
* Orientation vector
*/
- float myDir[3], myRot[3];
+ vtkFloatingPointType myDir[3], myRot[3];
/*! VTKViewer_LineActor actor pointer
*/
//
// See http://www.salome-platform.org/
//
+
+#include "VTKViewer_Utilities.h"
#include "VTKViewer_Actor.h"
+#include <algorithm>
+
// VTK Includes
#include <vtkMath.h>
#include <vtkCamera.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
-#include "VTKViewer_Utilities.h"
+using namespace std;
-/*!@see vtkRenderer::ResetCamera(float bounds[6]) method*/
-void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint)
+/*!@see vtkRenderer::ResetCamera(vtkFloatingPointType bounds[6]) method*/
+void
+ResetCamera(vtkRenderer* theRenderer,
+ int theUsingZeroFocalPoint)
{
if(!theRenderer)
return;
if(!aCamera)
return;
- float aBounds[6];
+ vtkFloatingPointType aBounds[6];
int aCount = ComputeVisiblePropBounds(theRenderer,aBounds);
if(theUsingZeroFocalPoint || aCount){
- static float MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT;
+ static vtkFloatingPointType MIN_DISTANCE = 1.0 / VTK_LARGE_FLOAT;
- float aLength = aBounds[1]-aBounds[0];
+ vtkFloatingPointType aLength = aBounds[1]-aBounds[0];
aLength = max((aBounds[3]-aBounds[2]),aLength);
aLength = max((aBounds[5]-aBounds[4]),aLength);
if(aLength < MIN_DISTANCE)
return;
- float aWidth =
+ vtkFloatingPointType aWidth =
sqrt((aBounds[1]-aBounds[0])*(aBounds[1]-aBounds[0]) +
(aBounds[3]-aBounds[2])*(aBounds[3]-aBounds[2]) +
(aBounds[5]-aBounds[4])*(aBounds[5]-aBounds[4]));
if(aWidth < MIN_DISTANCE)
return;
- double aViewPlaneNormal[3];
+ vtkFloatingPointType aViewPlaneNormal[3];
aCamera->GetViewPlaneNormal(aViewPlaneNormal);
- float aCenter[3] = {0.0, 0.0, 0.0};
+ vtkFloatingPointType aCenter[3] = {0.0, 0.0, 0.0};
if(!theUsingZeroFocalPoint){
aCenter[0] = (aBounds[0] + aBounds[1])/2.0;
aCenter[1] = (aBounds[2] + aBounds[3])/2.0;
}
aCamera->SetFocalPoint(aCenter[0],aCenter[1],aCenter[2]);
- double aViewAngle = aCamera->GetViewAngle();
- float aDistance = 2.0*aWidth/tan(aViewAngle*vtkMath::Pi()/360.0);
+ vtkFloatingPointType aViewAngle = aCamera->GetViewAngle();
+ vtkFloatingPointType aDistance = 2.0*aWidth/tan(aViewAngle*vtkMath::Pi()/360.0);
// check view-up vector against view plane normal
- double aViewUp[3];
+ vtkFloatingPointType aViewUp[3];
aCamera->GetViewUp(aViewUp);
if(fabs(vtkMath::Dot(aViewUp,aViewPlaneNormal)) > 0.999)
aCamera->SetViewUp(-aViewUp[2], aViewUp[0], aViewUp[1]);
// find size of the window
int* aWinSize = theRenderer->GetSize();
if(aWinSize[0] < aWinSize[1])
- aWidth *= float(aWinSize[1])/float(aWinSize[0]);
+ aWidth *= vtkFloatingPointType(aWinSize[1])/vtkFloatingPointType(aWinSize[0]);
if(theUsingZeroFocalPoint)
aWidth *= sqrt(2.0);
}
/*! Compute the bounds of the visible props*/
-int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6])
+int
+ComputeVisiblePropBounds(vtkRenderer* theRenderer,
+ vtkFloatingPointType theBounds[6])
{
- float *bounds;
- int aCount=0;
+ int aCount = 0;
theBounds[0] = theBounds[2] = theBounds[4] = VTK_LARGE_FLOAT;
theBounds[1] = theBounds[3] = theBounds[5] = -VTK_LARGE_FLOAT;
// loop through all props
vtkActorCollection* aCollection = theRenderer->GetActors();
aCollection->InitTraversal();
- while (vtkActor* prop = aCollection->GetNextActor()) {
+ while (vtkActor* aProp = aCollection->GetNextActor()) {
// if it's invisible, or has no geometry, we can skip the rest
- if ( prop->GetVisibility() )
- {
- if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(prop))
- if(anActor->IsInfinitive()) continue;
- bounds = prop->GetBounds();
- // make sure we haven't got bogus bounds
- if ( bounds != NULL &&
- bounds[0] > -VTK_LARGE_FLOAT && bounds[1] < VTK_LARGE_FLOAT &&
- bounds[2] > -VTK_LARGE_FLOAT && bounds[3] < VTK_LARGE_FLOAT &&
- bounds[4] > -VTK_LARGE_FLOAT && bounds[5] < VTK_LARGE_FLOAT )
- {
- aCount++;
-
- if (bounds[0] < theBounds[0])
- {
- theBounds[0] = bounds[0];
- }
- if (bounds[1] > theBounds[1])
- {
- theBounds[1] = bounds[1];
- }
- if (bounds[2] < theBounds[2])
- {
- theBounds[2] = bounds[2];
- }
- if (bounds[3] > theBounds[3])
- {
- theBounds[3] = bounds[3];
- }
- if (bounds[4] < theBounds[4])
- {
- theBounds[4] = bounds[4];
- }
- if (bounds[5] > theBounds[5])
- {
- theBounds[5] = bounds[5];
- }
- }//not bogus
+ if(aProp->GetVisibility() && aProp->GetMapper()){
+ if(VTKViewer_Actor* anActor = VTKViewer_Actor::SafeDownCast(aProp))
+ if(anActor->IsInfinitive())
+ continue;
+
+ vtkFloatingPointType *aBounds = aProp->GetBounds();
+ static vtkFloatingPointType MAX_DISTANCE = 0.9*VTK_LARGE_FLOAT;
+ // make sure we haven't got bogus bounds
+ if ( aBounds != NULL &&
+ aBounds[0] > -MAX_DISTANCE && aBounds[1] < MAX_DISTANCE &&
+ aBounds[2] > -MAX_DISTANCE && aBounds[3] < MAX_DISTANCE &&
+ aBounds[4] > -MAX_DISTANCE && aBounds[5] < MAX_DISTANCE )
+ {
+ aCount++;
+
+ theBounds[0] = min(aBounds[0],theBounds[0]);
+ theBounds[2] = min(aBounds[2],theBounds[2]);
+ theBounds[4] = min(aBounds[4],theBounds[4]);
+
+ theBounds[1] = max(aBounds[1],theBounds[1]);
+ theBounds[3] = max(aBounds[3],theBounds[3]);
+ theBounds[5] = max(aBounds[5],theBounds[5]);
+
+ }//not bogus
}
}
return aCount;
}
-/*!@see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method*/
-void ResetCameraClippingRange(vtkRenderer* theRenderer)
+/*!@see vtkRenderer::ResetCameraClippingRange(vtkFloatingPointType bounds[6]) method*/
+void
+ResetCameraClippingRange(vtkRenderer* theRenderer)
{
if(!theRenderer || !theRenderer->VisibleActorCount()) return;
}
// Find the plane equation for the camera view plane
- double vn[3];
+ vtkFloatingPointType vn[3];
anActiveCamera->GetViewPlaneNormal(vn);
- double position[3];
+ vtkFloatingPointType position[3];
anActiveCamera->GetPosition(position);
- float bounds[6];
+ vtkFloatingPointType bounds[6];
theRenderer->ComputeVisiblePropBounds(bounds);
- double center[3];
+ vtkFloatingPointType center[3];
center[0] = (bounds[0] + bounds[1])/2.0;
center[1] = (bounds[2] + bounds[3])/2.0;
center[2] = (bounds[4] + bounds[5])/2.0;
- double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
+ vtkFloatingPointType width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
(bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
(bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
- double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) +
+ vtkFloatingPointType distance = sqrt((position[0]-center[0])*(position[0]-center[0]) +
(position[1]-center[1])*(position[1]-center[1]) +
(position[2]-center[2])*(position[2]-center[2]));
- float range[2] = {distance - width/2.0, distance + width/2.0};
+ vtkFloatingPointType range[2] = {distance - width/2.0, distance + width/2.0};
// Do not let the range behind the camera throw off the calculation.
if (range[0] < 0.0) range[0] = 0.0;
}
/*!Compute trihedron size.*/
-bool ComputeTrihedronSize( vtkRenderer* theRenderer,double& theNewSize,
- const double theSize, const float theSizeInPercents )
+bool
+ComputeTrihedronSize( vtkRenderer* theRenderer,
+ vtkFloatingPointType& theNewSize,
+ const vtkFloatingPointType theSize,
+ const vtkFloatingPointType theSizeInPercents )
{
// calculating diagonal of visible props of the renderer
- float bnd[ 6 ];
+ vtkFloatingPointType bnd[ 6 ];
if ( ComputeVisiblePropBounds( theRenderer, bnd ) == 0 )
{
bnd[ 1 ] = bnd[ 3 ] = bnd[ 5 ] = 100;
bnd[ 0 ] = bnd[ 2 ] = bnd[ 4 ] = 0;
}
- float aLength = 0;
+ vtkFloatingPointType aLength = 0;
aLength = bnd[ 1 ]-bnd[ 0 ];
aLength = max( ( bnd[ 3 ] - bnd[ 2 ] ),aLength );
aLength = max( ( bnd[ 5 ] - bnd[ 4 ] ),aLength );
- static float EPS_SIZE = 5.0E-3;
+ static vtkFloatingPointType EPS_SIZE = 5.0E-3;
theNewSize = aLength * theSizeInPercents / 100.0;
// if the new trihedron size have sufficient difference, then apply the value
#ifndef VTKVIEWER_UTILITIES_H
#define VTKVIEWER_UTILITIES_H
-#include <VTKViewer.h>
+#include "VTKViewer.h"
class vtkRenderer;
-VTKVIEWER_EXPORT extern void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint = false);
-VTKVIEWER_EXPORT extern int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]);
-VTKVIEWER_EXPORT extern void ResetCameraClippingRange(vtkRenderer* theRenderer);
-VTKVIEWER_EXPORT extern bool ComputeTrihedronSize(vtkRenderer* theRenderer, double& theNewSize,
- const double theSize, const float theSizeInPercents);
+VTKVIEWER_EXPORT
+extern
+void
+ResetCamera(vtkRenderer* theRenderer,
+ int theUsingZeroFocalPoint = false);
-#ifndef max
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif
+VTKVIEWER_EXPORT
+extern
+int
+ComputeVisiblePropBounds(vtkRenderer* theRenderer,
+ vtkFloatingPointType theBounds[6]);
-#ifndef min
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
+VTKVIEWER_EXPORT
+extern
+void
+ResetCameraClippingRange(vtkRenderer* theRenderer);
+VTKVIEWER_EXPORT
+extern
+bool
+ComputeTrihedronSize(vtkRenderer* theRenderer,
+ vtkFloatingPointType& theNewSize,
+ const vtkFloatingPointType theSize,
+ const vtkFloatingPointType theSizeInPercents);
#endif
newPolys->Delete();
}
+/*!
+ Print text to stream
+ \param os - stream
+ \param indent
+*/
void VTKViewer_VectorText::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os,indent);
::ResetCamera(myRenderer,true);
if(aTriedronIsVisible) myTrihedron->VisibilityOn();
else myTrihedron->VisibilityOff();
- static float aCoeff = 3.0;
+ static vtkFloatingPointType aCoeff = 3.0;
aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale());
Repaint();
}
/*!Returns background of the viewport*/
QColor VTKViewer_ViewWindow::backgroundColor() const
{
- float backint[3];
+ vtkFloatingPointType backint[3];
if ( myRenderer ) {
myRenderer->GetBackground( backint );
return QColor(int(backint[0]*255), int(backint[1]*255), int(backint[2]*255));
int aVisibleNum = myTrihedron->GetVisibleActorCount(myRenderer);
if(aVisibleNum){
// calculating diagonal of visible props of the renderer
- float bnd[6];
+ vtkFloatingPointType bnd[6];
myTrihedron->VisibilityOff();
::ComputeVisiblePropBounds(myRenderer,bnd);
myTrihedron->VisibilityOn();
- float aLength = 0;
+ vtkFloatingPointType aLength = 0;
static bool CalcByDiag = false;
if(CalcByDiag){
aLength = sqrt((bnd[1]-bnd[0])*(bnd[1]-bnd[0])+
aLength = max((bnd[5]-bnd[4]),aLength);
}
- static float aSizeInPercents = 105;
+ static vtkFloatingPointType aSizeInPercents = 105;
QString aSetting;// = SUIT_CONFIG->getSetting("Viewer:TrihedronSize");
if(!aSetting.isEmpty()) aSizeInPercents = aSetting.toFloat();
- static float EPS_SIZE = 5.0E-3;
- float aSize = myTrihedron->GetSize();
- float aNewSize = aLength*aSizeInPercents/100.0;
+ static vtkFloatingPointType EPS_SIZE = 5.0E-3;
+ vtkFloatingPointType aSize = myTrihedron->GetSize();
+ vtkFloatingPointType aNewSize = aLength*aSizeInPercents/100.0;
// if the new trihedron size have sufficient difference, then apply the value
if(fabs(aNewSize-aSize) > aSize*EPS_SIZE || fabs(aNewSize-aSize) > aNewSize*EPS_SIZE){
myTrihedron->SetSize(aNewSize);
return retStr;
}
-/* The method restors visual parameters of this view from a formated string
+/*! The method restors visual parameters of this view from a formated string
*/
void VTKViewer_ViewWindow::setVisualParameters( const QString& parameters )
{
+++ /dev/null
-# VISU VISUGUI : GUI of VISU component
-#
-# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File :
-# Module :
-
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
-"PO-Revision-Date: 2005-05-10 15:20+0400\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
-
-msgid "ICON_SVTK_SCALING"
-msgstr "view_scaling.png"
-
-msgid "ICON_GRADUATED_AXES"
-msgstr "view_graduated_axes.png"
+++ /dev/null
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-02-22 16:56:46 CET\n"
-"PO-Revision-Date: 2005-06-27 12:38+0400\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
-#: SVTK_NonIsometricDlg.cxx
-
-msgid "SVTK_NonIsometricDlg::MEN_SCALING"
-msgstr "Scaling"
-
-msgid "SVTK_NonIsometricDlg::O&K"
-msgstr ""
-
-msgid "SVTK_NonIsometricDlg::&Apply"
-msgstr ""
-
-msgid "SVTK_NonIsometricDlg::&Cancel"
-msgstr ""
-
-msgid "SVTK_NonIsometricDlg::&Reset"
-msgstr ""
-
-msgid "SVTK_NonIsometricDlg::DLG_TITLE"
-msgstr "Scaling"
-
-msgid "SVTK_NonIsometricDlg::LBL_X"
-msgstr "X :"
-
-msgid "SVTK_NonIsometricDlg::LBL_Y"
-msgstr "Y :"
-
-msgid "SVTK_NonIsometricDlg::LBL_Z"
-msgstr "Z :"
-
-msgid "SVTK_MainWindow::MNU_SVTK_SCALING"
-msgstr "Scaling"
-
-msgid "SVTK_MainWindow::DSC_SVTK_SCALING"
-msgstr "Scaling"
-
-msgid "SVTK_FontWidget::ARIAL"
-msgstr "Arial"
-
-msgid "SVTK_FontWidget::COURIER"
-msgstr "Courier"
-
-msgid "SVTK_FontWidget::TIMES"
-msgstr "Times"
-
-msgid "SVTK_FontWidget::BOLD"
-msgstr "Bold"
-
-msgid "SVTK_FontWidget::ITALIC"
-msgstr "Italic"
-
-msgid "SVTK_FontWidget::SHADOW"
-msgstr "Shadow"
-
-msgid "SVTK_CubeAxesDlg::CAPTION"
-msgstr "Graduated axes"
-
-msgid "SVTK_CubeAxesDlg::X_AXIS"
-msgstr "X axis"
-
-msgid "SVTK_CubeAxesDlg::Y_AXIS"
-msgstr "Y axis"
-
-msgid "SVTK_CubeAxesDlg::Z_AXIS"
-msgstr "Z axis"
-
-msgid "SVTK_CubeAxesDlg::IS_VISIBLE"
-msgstr "Is visible"
-
-msgid "SVTK_AxisWidget::AXIS_NAME"
-msgstr "Axis name"
-
-msgid "SVTK_AxisWidget::IS_VISIBLE"
-msgstr "Is visible"
-
-msgid "SVTK_AxisWidget::NAME"
-msgstr "Name"
-
-msgid "SVTK_AxisWidget::FONT"
-msgstr "Font"
-
-msgid "SVTK_AxisWidget::LABELS"
-msgstr "Labels"
-
-msgid "SVTK_AxisWidget::NUMBER"
-msgstr "Number"
-
-msgid "SVTK_AxisWidget::OFFSET"
-msgstr "Offset"
-
-msgid "SVTK_AxisWidget::TICK_MARKS"
-msgstr "Tick marks"
-
-msgid "SVTK_AxisWidget::LENGTH"
-msgstr "Length"
-
-msgid "SVTK_MainWindow::MNU_SVTK_GRADUATED_AXES"
-msgstr "Graduated axes"
-
-msgid "SVTK_MainWindow::DSC_SVTK_GRADUATED_AXES"
-msgstr "Graduated axes"
\ No newline at end of file
msgid "ERROR"
msgstr "Error"
-msgid "BUT_OK"
-msgstr "Ok"
-
msgid "VTKViewer_Viewer::MEN_DUMP_VIEW"
msgstr "Dump view..."